Activiti可以用于微服务编排吗?

问题描述

我有多个微服务。每个微服务都有REST端点。 我想编排微服务以创建工作流。 Activiti可能吗?无需编写任何代码就可以吗?

假设每个微服务都获得一些输入并返回一些输出(可以用作下一个微服务的输入),Activiti可以提供一种将输出一个微服务直接传递到另一个微服务的方法吗?

解决方法

与大多数其他BPM平台一样,

Activiti当然可以用于微服务编排。但是有很多警告。 长时间运行的微服务(即不会立即返回结果)可能会阻止BPM流程,这可能不理想,服务可能需要身份验证并 有时,微服务会将结果放置在存储库或队列中,而BPM流程需要使用服务任务将其提取。 在以下Camunda博客文章中,有一篇不错的文章讨论了同步与异步调用:https://camunda.com/blog/2013/11/bpmn-service-synchronous-asynchronous/

尽管这是Camunda帖子,但Activiti可以轻松处理相同的模式。

另一个问题是您是否可以在不编写代码的情况下做到这一点。答案是取决于。同步ReST调用的最琐碎的编排可能无需编写代码即可处理,但是一旦开始使用异步服务,则结果可能不会放入ReST响应中,或者长期运行的服务调用,或者即使服务调用包含其他内容之外,基本身份验证,则可能需要编写一些Java Delegate服务任务。

,

是的,任何处理引擎都可以这种方式使用。您很可能为数据映射/连接器编写了一些粘合代码。

使用BPMN2流程引擎覆盖业务流程部分的好处包括,例如ootb支持:

  • 状态管理和长期运行的流程/数据的持久性
  • 版本(!)
  • 重试和错误处理
  • 用于在发生问题时修改状态和日期的工具
  • 超时,并行执行(如有必要)
  • 业务流程的可扩展性
  • 图形过程模型
  • 审核线索
  • 基于BPMN 2模型的监视工具中的端到端可见性
  • 能够包含用于更复杂规则的业务规则任务(DMN)
  • 推拉式通信模式与异步通信的组合
  • 通过BPMN 2进行业务IT调整
  • 支持各种BPMN 2事件
  • 标准化(技能,安全性,软件质量,功能)...

这是有关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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...