4

为什么我们需要像 Uber 的 Cadence 或 Camunda 或 Activiti 这样的特殊软件?如果它只是一系列任务,那么为什么我们不能直接编写代码呢?我试图阅读 Camunda 和 Cadence 的文档,但无法进入。我公司想用。考虑过它的高级开发人员似乎无法/不会解释他为什么要使用它或在哪里使用它。

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

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

4

2 回答 2

10

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

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

现在去“只编码”它以使其具有可扩展性和容错性(例如,在执行 task2 时防止进程失败),并且对于任何这些任务实现的长时间停机都是健壮的。我敢打赌,你的代码将是一团乱七八糟的回调和数据库调用。

临时工作流允许编写这样的代码并使其容错而无需任何大的修改。

于 2019-11-18T22:44:56.553 回答
8

可能需要一本书来回答这个问题。几个方面:

  • 业务与 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

于 2019-11-19T08:41:51.983 回答