为什么我们需要像Uber的Cadence、Camunda或Activiti这样的特殊软件?如果它只是一个任务序列,那么为什么我们不能直接对它进行编码呢?我试着读了卡蒙达和凯蒂丝的文档,但就是读不进去。我的公司想要使用。考虑过它的高级开发人员似乎不能/不会解释他想要使用它的原因或位置。
我发现他们设置工作流的代码/方式非常不直观。谁来帮帮忙。
该项目是使用Java和Spring Boot开发的。
发布于 2019-11-19 06:44:57
你说的“直接编码”是什么意思?好的,让我们看一下下面的代码:
String r1 = task1(someArg);
String r2 = task2(r1);
if (r2.equals("foo")) {
sleep(Duration.ofHours(5));
task3(r2);
} else {
task4(r2);
}现在开始对它进行“编码”,使其具有可伸缩性和容错性(例如,在执行task2时防止进程故障),并且对于任何这些任务实现的长时间停机都是健壮的。我敢打赌,你的代码会把回调和数据库调用弄得乱七八糟。
Temporal Workflow允许编写这样的代码,并使其具有容错能力,而无需进行任何大的修改。
发布于 2019-11-19 16:41:52
这可能需要一本书来回答这个问题。几个方面:
业务和IT之间的
您不能向企业显示代码,但人们可以理解BPMN图。至少基本的符号集是相当直观的(http://bpmn.io/或https://www.omg.org/spec/BPMN/2.0/About-BPMN/#documents)。您将从哪里开始向业务分析师解释您编码的工作流的逻辑?您如何将有关业务规则的反馈转换为代码?
如果需求没有很好地转换到目标系统中,那么您就会得到额外的迭代和工作。BPMN图可以由流程引擎解释,因此在与业务讨论的操作流程和执行的流程之间不存在不匹配。
流程模型反映了业务逻辑,并允许您将其与代码分开。通过不将其隐藏在代码中,业务逻辑变得更容易理解(参见上一段)和更改。它也可以独立地进行版本化。业务规则、流程逻辑和其他(例如集成)代码的生命周期经常非常不同。更快地更改IT系统意味着提高业务敏捷性。
工作流引擎ootb监视状态并收集所有(经常是强制的)审计数据。我们在特定的流程执行中处于什么位置?为什么它没有进展?谁在什么时候执行了哪一步?花了多长时间?更改了哪些数据?
基于这些数据,您可以生成报告(过去12个月内您的银行开户过程的平均处理时间?)和分析(在给定特定circumstances?)的情况下有流失客户的风险
你必须编程的
你会开发你自己的数据库吗?不,那你为什么要开发自己的工作流管理呢?状态管理、工作分配(用户、角色、组)、任务和数据的权限概念、审计信息记录、错误处理、线程管理、重试、标准报告、....
我可以继续讲下去,但这应该会给你一个概念。进一步的读取可能是:
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://stackoverflow.com/questions/58908079
复制相似问题