7

简短的问题

基于流的编程可以取代 BPMN 的功能吗?或者它们是针对不同情况的不同工具。如果是这样,例子会很棒。谢谢。


更长的故事

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

javascript 上的 BPMN:我遇到了我想要的https://www.npmjs.com/package/bpmn,但是在运行并行门时测试似乎不是异步的。此外,每周下载次数为 26(非常低)。

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

围绕基于流的编程的问题:对于 FBP,它似乎是异步的,并且有一个很好的逻辑图表表示并且可以维护。我调查了它,因为 FBP 的实现太多了,并且提供了一些并与 3rd 方供应商绑定(即: https ://developer.getflow.com/) ,所以我越来越困惑。其中很多都被宣传为与物联网一起使用。我是否可以将它集成为更大的应用程序的一部分,而无需任何运行时第 3 方依赖项?我可以像在 java 中使用 Camunda BPMN 一样使用它吗?

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

4

2 回答 2

1

我很少与 Node-RED 集成,在我了解 Camunda 和 Zeebe 之前,我遇到了复杂流程的问题。它们很难阅读和管理,因为电线来回走动 - 想象从电子商务导入订单并通过 REST API 将其导出到 ERP:检查订单是否存在,检查是否是发票或收据,检查客户是否存在,检查客户地址是否同样,检查收货地址是否相同,检查电话号码是否匹配,检查是否......然后处理每个if),即使我试图尽可能简单地描述每个节点。

在某些情况下,您可以单独使用 NR,在某些情况下,它可以与 Camunda/Zeebe(两者都有 NR 客户端)一起使用。

重要的是要强调 - 当同时使用这两种方法时,您将保持代码干净、可读且易于调试和理解。

正如您所说,每部作品都有不同的抽象层次,两者相得益彰。

于 2019-10-30T09:56:27.833 回答
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 中自定义自己的节点,它可以通过编程语言做很多事情。

更多反馈表示赞赏。

于 2019-01-04T04:46:21.197 回答