以编程方式访问远程 Camunda 服务

时间:2021-07-28 14:26:10

标签: spring-boot events remote-server camunda business-process-management

我有一个 Camunda BPM 平台的远程服务器安装(使用 Camunda BPM 平台 Helm Chart - https://github.com/camunda-community-hub/camunda-helm/tree/main/charts/camunda-bpm-platform 安装)。它按预期工作,虽然我是 BPM 的新手,但我已经能够成功地尝试一些工作流程和示例。

我现在正在尝试远程连接到它并注册抛出的事件。我一直在关注 https://docs.camunda.org/manual/7.15/reference/bpmn20/events/signal-events/,但是我不知道如何获得 runtimeService 的句柄。除了使用 REST API 之外,还有其他方法可以连接到远程 Camunda 服务吗?我试过使用 camunda-bpm-spring-boot-starter-external-task-client 但没有 RuntimeService 被初始化。也许我缺少一些特定于远程的配置,但到目前为止我还没有在文档中找到任何内容。基于 https://camunda.com/best-practices/deciding-about-your-stack/ 我理解这应该是可能的 - 但是,我发现的所有示例都涉及嵌入式服务。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

CAMUNDA 提供一个 Java API 和一个 REST API。此外,还有官方或社区客户端库,它们都依赖于 REST API。 Java API 仅适用于部署在 CAMUNDA JVM 中的代码。

要从 JVM 外部与引擎交互,您必须使用 REST API。端点以资源命名,而不是以 Java API 服务命名。因此,您不会在 REST API 上找到 RuntimeService 端点,但您会找到 RuntimeService 提供的所有功能,例如从 process-definition 开始。

如果您不想在 CAMUNDA JVM 中部署代码,那么最好使用 external task pattern 完成服务集成。如果您想使用 Java,尤其是新的 Spring Boot Starter for external task clients 使用起来很有趣。如果您更喜欢其他语言,请查看https://github.com/camunda/awesome-camunda-external-clients

不幸的是,目前还没有信号事件的外部实现类型。 Ootb 您可以使用信号事件在同一环境中的不同 BPMN 进程之间进行 1:n 通信。如果您想将信号发送到外部事件总线,那么您需要一次性将此功能添加到同一个 JVM。以下是 Azure 事件总线的示例:https://github.com/camunda-consulting/code/tree/master/snippets/engine-plugin-signal-to-azure-eventhub。 SQS 或其他替代方案的实现看起来非常相似。

如果您需要修改容器映像以包含自定义代码,那么您可以将自己的 jar 添加到例如CAMUNDA RUN Docker 镜像如下所示:https://github.com/rob2universe/bpmrun-add-to-dockerimg 或者您可以基于 Spring Boot Starter 构建自己的映像,如下所示:https://github.com/rob2universe/camunda-aks