使用BPMN引擎实现商店结账流程的案例总结

随着时间的推移,一家国际商业公司现有的商店结账系统变得越来越复杂,该公司管理层决定启动一个项目来实施基于现代技术的新系统。

系统的背景是什么?

  • 主要是 Java 和 TypeScript
  • 微服务
  • 内部客户和用户距离不近

由于旧的商店结账系统有很多复杂且不透明的流程,因此团队决定使用一些技术来深入了解正在运行的流程。他们选择使用一种支持图形流程模型的工具,以提供对正在运行的流程的洞察。这应该有助于理解系统并提高可维护性。因为他们知道竞争对手使用相同的技术构建了在线结帐,所以决定使用 BPMN 引擎。这使得任何人都可以在可视化编辑器中定义业务流程,并让引擎执行底层数据表示。

唯一的程序化任务是具体 BPMN 任务的实现。

问题
在项目开始时,第一个结果很快就交付了。但随着微服务数量的增加和一些需求(例如活动会话的自动注销),每个冲刺的开发速度都会变慢。主要原因是 BPMN 引擎并不打算成为具有大量循环步骤的会话存储或状态机,但项目却这样使用了它。与此相反,被用作榜样的竞争对手有一个线性结帐流程,BPMN 引擎是注定的。但即使没有这些知识,查看定义正在运行的结帐流程的 BPMN 图也会发现这个流程是混乱的。不幸的是,所有关于该架构替代方案的讨论都没有取得任何成果,因为一些利益相关者对使用 BPMN 引擎的想法非常执着,并针对所有理性争论为其辩护。

造成了什么不好的后果?
第一个结果是无法再取得任何进展,因为大多数功能无法在 BPMN 引擎内实现。此外,大部分时间都花在修复当前流程和向客户端传输数据上。此外,一名团队成员离开了该项目,因为他看不到任何更好的、更适合问题的解决方案的可能性,因为讨论不是基于技术优点,而是基于情感依恋。