我没有工作流程,工作流程自动化或工作流程编排

时间:2019-11-18 04:44:12

标签: architecture workflow activiti camunda cadence-workflow

为什么我们需要诸如Uber的Cadence或Camunda或Activiti之类的特殊软件?如果这只是一系列任务,那么为什么我们不能只编写代码呢?我试图阅读Camunda和Cadence的文档,但无法理解。我公司想用。考虑过该问题的高级开发人员似乎无法/不会解释为什么要在何处使用它。

我发现他们设置工作流程的代码/方式非常不直观。有人请帮忙。

该项目是使用Java和Spring Boot开发的。

2 个答案:

答案 0 :(得分:4)

“仅编写代码”是什么意思?好的,让我们看下面的代码:

String r1 = task1(someArg);
String r2 = task2(r1);
if (r2.equals("foo")) {
   sleep(Duration.ofHours(5));
   task3(r2);
} else {
   task4(r2);
}

现在就去进行编码,使其具有可伸缩性和容错性(例如,在执行task2时可防止流程故障),并且对于任何这些任务实现的长时间停机都具有强大的功能。我敢打赌,您的代码会在回车和数据库调用中引起混乱。

Uber Cadence Workflow允许编写此类代码,并且无需进行大量修改即可使其具有容错性。

答案 1 :(得分:4)

回答问题可能需要一本书。一些方面:

  • 业务与IT之间的通信 您无法向业务显示代码,但是人们可以理解BPMN图。至少基本的符号集非常直观(http://bpmn.io/https://www.omg.org/spec/BPMN/2.0/About-BPMN/#documents) 。您将从哪里开始向业务分析师解释编码工作流的逻辑?以及如何将有关业务规则的反馈转换为代码?
    如果需求不能很好地转换到目标系统中,那么您将获得额外的迭代和工作量。 BPMN图可以由流程引擎解释,因此与业务部门讨论的运营流程和执行的流程之间不会存在不匹配。

  • 灵活性/关注点分离 流程模型反映了业务逻辑,并允许您将其与代码分开。通过不将其隐藏在代码中,业务逻辑将变得更易于理解(请参见上一段)和进行更改。也可以单独进行版本控制。流程逻辑和其他代码的生命周期通常非常不同。更快地更改IT系统意味着提高了业务敏捷性。

  • 透明度 工作流引擎ootb监视状态并收集所有(通常是强制性的)审核数据。 我们在哪里执行特定的流程?为什么没有进展? 谁执行了哪一步?什么时候?它花了多少时间?哪些数据已更改? 根据这些数据,您可以生成报告(过去12个月中银行帐户开设过程的平均处理时间?)和分析(有失去客户的风险?)

  • 您必须编程的标准化功能 您会开发自己的数据库吗?不,那您为什么要开发自己的工作流程管理? 状态管理,工作分配(用户,角色,组),任务和数据的权限概念,审计信息的日志记录,错误处理,重试,标准报告等..

我可以继续,但这应该可以给您一个想法。进一步的阅读可能是:

https://thenewstack.io/5-workflow-automation-use-cases-you-might-not-have-considered/

https://blog.bernd-ruecker.com/the-microservice-workflow-automation-cheat-sheet-fc0a80dc25aa

https://www.ecosia.org/search?q=why+workflow+engines