我正在尝试在Camunda中创建自定义REST API。我的Camunda应用程序是独立的,我想创建一个自定义REST API来完成任务并发送响应。
我创建了一个单独的REST项目来创建一个端点,外部应用程序可以调用它来完成任务并获得响应。
https://github.com/harish2610/camunda-custom-rest/tree/master/camunda_rest_endpoint/src/main/java/com/camunda/custom/rest/endpoint
当我运行这个项目时,我得到以下错误。
com.camunda.custom.rest.endpoint.service.TaskCompletionService中的字段引擎需要类型为“org.camunda.bpm.engine.ProcessEngine”的Bean,但找不到该Bean。
我有另一个项目,其中我有Camunda独立应用程序,我希望我的自定义REST端点能够执行此项目下定义的工作流任务:
https://github.com/harish2610/camunda-custom-rest/tree/master/my-project/src/main/java/com/example/workflow
我的REST端点应该看起来像这样:
http://localhost:8088/engine-rest/api/completeTask
我的问题是:
1.在Camunda中构建自定义REST API端点是否可行?
1.如果是这样,我如何将我的REST项目和Camunda项目集成在一起,以便它们一起工作并给予响应。
请让我知道我在方法上做错了什么?或者有没有更好的方法在Camunda中创建自定义休息端点?
这是我尝试从postman触发API的方式。
谢谢
1条答案
按热度按时间rt4zxlrg1#
A)自定义REST API需要使用流程引擎。只有当它与流程引擎在同一个Spring上下文中运行时,它才能这样做。目前,您有两个完整的独立Sping Boot 项目。你可以用不同的方式解决这个问题。
Camunda和Spring使用不同的框架来公开REST服务。Camunda使用标准的JAX-RS实现,因此它也可以在没有Spring的情况下工作。Spring使用Spring MVC提供的自己的实现(参见Difference between JAX-RS and Spring Rest)
在本例中,我使用了一个Maven多模块项目,并使用自定义服务https://github.com/rob2universe/camunda-custom-rest-endpoint/tree/main扩展了Camunda JAX-RS REST API
但是,如果您正在编写自定义Facade,则可能根本不打算向客户端公开Camunda REST API。在这种情况下,最好将您的自定义服务放在单独的上下文中,这样您就只能公开该上下文,而不允许从外部访问Camunda REST API。