【发布时间】:2021-02-15 17:57:39
【问题描述】:
我有多个微服务。每个微服务都有 REST 端点。 我想编排微服务来创建工作流。 Activiti可以吗?不写代码可以吗?
假设每个微服务获得一些输入并返回一些输出(可以用作下一个微服务的输入),Activiti 是否可以提供一种将输出从一个微服务直接传递到另一个微服务的方法?
【问题讨论】:
标签: microservices activiti orchestration
我有多个微服务。每个微服务都有 REST 端点。 我想编排微服务来创建工作流。 Activiti可以吗?不写代码可以吗?
假设每个微服务获得一些输入并返回一些输出(可以用作下一个微服务的输入),Activiti 是否可以提供一种将输出从一个微服务直接传递到另一个微服务的方法?
【问题讨论】:
标签: microservices activiti orchestration
Activiti 与大多数其他 BPM 平台一样,当然可以用于微服务编排。但是有很多警告。 长时间运行的微服务(即不立即返回结果)可能会阻塞 BPM 流程,这可能并不理想,服务可能需要身份验证和 其他时候,微服务会将结果放入存储库或队列中,BPM 流程需要使用服务任务来获取这些结果。 以下 Camunda 博客文章中有一篇很好的文章讨论了同步调用与异步调用:https://camunda.com/blog/2013/11/bpmn-service-synchronous-asynchronous/
虽然这是一篇 Camunda 帖子,但 Activiti 可以轻松处理相同的模式。
你的另一个问题是你是否可以在不编写代码的情况下做到这一点。答案是视情况而定。最简单的同步 ReST 调用编排可能无需编写代码就可以处理,但是一旦您开始使用异步服务,结果可能不会放入 ReST 响应中,或者长时间运行的服务调用,或者即使服务调用具有其他内容基本身份验证,那么您可能需要编写一些 Java Delegate 服务任务。
【讨论】:
是的,任何流程引擎都可以以这种方式使用。您很可能会为数据映射/连接器编写一些胶水代码。
使用 BPMN2 流程引擎覆盖编排部分的好处包括例如 ootb 支持:
这是一篇关于 WHY 的精彩相关文章: https://blog.bernd-ruecker.com/3-common-pitfalls-in-microservice-integration-and-how-to-avoid-them-3f27a442cd07
这是关于使用流程引擎时的重要设计考虑:https://blog.bernd-ruecker.com/the-microservice-workflow-automation-cheat-sheet-fc0a80dc25aa
【讨论】: