BPMN与流程编程的比较

8

简短问题

流程编程能否取代BPMN?还是它们是不同的工具,适用于不同的情况。如果可以,请举例说明。谢谢。


更长的故事

最近我一直在尝试在Javascript中创建BPMN实现。在旧日子里,我会使用Java上的Camunda,现在我想尝试一些新东西。我转向BPMN的原因是代码逻辑将变得非常复杂,使用可视化表示将更容易维护和编辑。

Javascript上的BPMN:我发现了https://www.npmjs.com/package/bpmn,可以做到我想要的,但在测试时似乎不支持并行网关的异步操作。此外,每周下载次数为26(非常低)。

Flow:进一步的研究揭示了基于流程的编程,它允许我绘制流程图来构建工作应用程序。例如Node-Red、Slang、NoFlow等,而且也似乎是异步的。

关于流程编程的问题:使用FBP似乎是异步的,并且有一个漂亮的逻辑图表表示,可以进行维护。我研究了一下,越来越困惑,因为有很多FBP的实现,并且有些是由第三方供应商提供和绑定的(例如:https://developer.getflow.com/)。而且很多人正在宣传它们用于IoT的使用。 我能否将其作为较大应用程序的一部分集成使用,而不需要任何运行时的第三方依赖项?我能否像在Java中使用Camunda BPMN一样使用它?

参考文献: 基于流程的编程 https://www.quora.com/Will-visual-flowchart-programming-be-better-than-coding https://en.wikipedia.org/wiki/Flow-based_programming

2个回答

1
我之前使用Node-RED做了几个集成,但在了解Camunda和Zeebe之前,我遇到了复杂流程的问题。由于连线来回穿梭,它们很难阅读和管理——想象一下从电子商务导入订单并通过REST API将其导出到ERP:检查订单是否存在,检查它是发票还是收据,检查客户是否存在,检查客户地址是否相同,检查交付地址是否相同,检查电话号码是否匹配,检查...然后处理每一个if),即使我试图尽可能简单地描述每个节点。

有些情况下,你可以只使用NR,有些情况下,它会与Camunda/Zeebe(两者都有NR客户端)很好地配合使用。

需要强调的重要一点是,在同时使用两者时,你将保持代码清晰、易读、易于调试和理解。

正如你所说,每个工作在不同的抽象层次上,两者互补。


从经验来看,好的评论。我同意,后来我意识到NodeRed更适合物联网编程,并且在业务流程映射方面涉及了过多的细节。 - JackDev

0

经过使用 NoFlo (https://noflojs.org/) 及其 IDE (FlowHub/NoFlo-UI),以及 NodeRed (https://nodered.org/) 的体验,我开始感觉基于流程的编程 (FBP) 更像是一种替代编程方式,相比 BPMN 更加细粒度。

例如,NodeRed 的这个教程 (https://www.youtube.com/watch?v=f5o4tIz2Zzc),主持人向我们展示了如何构建一个应用程序,从 Twitter 中读取数据并将其保存到数据库中。在 NodeRed 服务器后台运行时,所有的编程都只是你所看到的图形和嵌入的所有配置,而图形的节点则是诸如从 Twitter 中读取、格式化输入、打印输出、保存到数据库等操作。

相比之下,我发现 BPMN 更高级和抽象,它可能会将“读取、格式化和打印 Twitter 文章”组合成一个活动,并由活动调用的底层类来实现细节。

话虽如此,我发现仍然存在一定程度的模糊,因为在nodeRed中可以添加功能节点或在noflo中自定义节点,通过编程语言可以完成许多任务。

欢迎提供更多反馈。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接