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

Access remote Camunda service programmatically

我有一个 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/ however I am stumped as to how I can get a handle to runtimeService. Other than using the REST API is there another way to connect to a remote Camunda service? I've tried using the camunda-bpm-spring-boot-starter-external-task-client but no RuntimeService gets initialized. Perhaps I'm missing some remote-specific configuration but I have not found anything in the documentation so far. Based on https://camunda.com/best-practices/deciding-about-your-stack/ 我知道这应该是可能的 - 但是,我发现的所有示例都涉及嵌入式服务。感谢您的帮助!

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

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

开始

如果您不想在 CAMUNDA JVM 中部署代码,那么最好使用 external task pattern. If you want to use Java, especially the new Spring Boot Starter for external task clients is fun to work with. If you prefer other languages, check out 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 或其他替代方案的实现看起来非常相似。

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