与 Camunda 流程引擎的通信

Posted

技术标签:

【中文标题】与 Camunda 流程引擎的通信【英文标题】:Communication with Camunda process engine 【发布时间】:2020-09-22 08:57:21 【问题描述】:

外部服务可以使用以下代码从 Camunda 流程引擎接收消息。客户端是否定期轮询 Camunda 进程引擎以获取消息?

ExternalTaskClient client = ExternalTaskClient.create().baseUrl(“http://localhost:8080/engine-rest”)
.asyncResponseTimeout(10000)
.build();
client.subscribe(“AdlDMNOtherClient”).lockDuration(1000)…

【问题讨论】:

【参考方案1】:

它使用“长轮询”,因此它不会打开新请求,而是尽可能长时间地保持单个连接,请参阅https://github.com/camunda/camunda-external-task-client-java/blob/master/examples/order-handling/src/main/java/org/camunda/bpm/App.java

因此,如果您的问题是:“我的代码是否会在创建新任务时自动得到通知”,答案是肯定的。 如果您的问题是:我会有很多 HTTP 请求吗,答案是否定的,通常不会。

【讨论】:

谢谢 Jan。我假设如果 asyncResponseTimeout 到达连接,那么它会创建一个新的 HTTP 连接。在这个模型中,外部任务如何共享一个变量给流程引擎?【参考方案2】:

是的。架构、交互模式(包括长轮询)以及将错误或结果传达回流程引擎的方式在此处通过一些图表进行了描述:

https://docs.camunda.org/manual/latest/user-guide/process-engine/external-tasks/

这里:

https://docs.camunda.org/manual/latest/user-guide/ext-client/

【讨论】:

以上是关于与 Camunda 流程引擎的通信的主要内容,如果未能解决你的问题,请参考以下文章

流程引擎Camunda开发记录(一)

流程引擎之Camunda开发记录(七)从中间节点开启实例

流程引擎Camunda开发记录(二)上

流程引擎之Camunda开发记录(三)

流程引擎之Camunda开发记录(六)流程部署的四种方法

基于camunda开源流程引擎如何实现会签及会签原理解析