BPMN与基于流的编程

时间:2018-12-27 02:59:05

标签: javascript node.js bpmn camunda flow-based-programming

简短问题

基于流程的编程可以代替BPMN吗?还是针对不同情况的不同工具。如果是这样,例子将是很好的。谢谢。


更长的故事

最近我一直在尝试用Javascript创建BPMN实现。在过去,我会在Java上使用Camunda,现在我想尝试一些新的东西。我之所以选择BPMN,是因为代码的逻辑是如此复杂,使用可视化表示可以更轻松地进行维护和编辑。

基于javascript的BPMN:我遇到了https://www.npmjs.com/package/bpmn,它确实可以做到,但是经过测试,在运行并行门时似乎不是异步的。另外,每周下载次数为26(非常低)。

流程:进一步的研究揭示了基于流程的编程,它使我能够绘制流程图来构建可运行的应用程序。例如Node-Red,Slang,NoFlow。而且似乎也是异步的。

有关基于流的编程的问题:对于FBP,它似乎是异步的,并且具有很好的逻辑图表示形式并且可以维护。我调查了一下,由于FBP的实现如此之多,并且提供了某些实现并将其绑定到第三方供应商(例如:https://developer.getflow.com/),我一去不复返。而且,其中许多都被宣传用于物联网。 我是否可以将其集成为大型应用程序的一部分,而没有任何运行时第三方依赖性?我可以像在Java中使用Camunda BPMN一样使用它吗?

参考: Flow Based Programming https://www.quora.com/Will-visual-flowchart-programming-be-better-than-coding https://en.wikipedia.org/wiki/Flow-based_programming

2 个答案:

答案 0 :(得分:1)

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

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

要强调的重点是-两者都使用时,您将使代码保持整洁,易读且易于调试和理解。

正如你所说,每一个抽象层次的作品,都是相辅相成的。

答案 1 :(得分:0)

使用其IDE(FlowHub / NoFlo-UI)和NodeRed(https://noflojs.org/)来完成NoFlo(https://nodered.org/)之后。我开始觉得基于流程的编程(FBP)更像是编程的替代方法,并且与BPMN相比更加细化。

这个例子就是NodeRed(https://www.youtube.com/watch?v=f5o4tIz2Zzc)教程,在此教程中,主机将带我们指导如何构建从Twitter读取并保存到数据库的App。在运行NodeRed服务器的情况下,所有编程就是您看到的图形,并且嵌入了所有配置,图形的节点包括诸如从twitter读取,格式输入,打印输出,保存到数据库等内容。

在我发现BPMN更高级和抽象的地方,它可以将“阅读,格式化和打印Twitter文章”组合成一个活动,而该活动将调用由底层类实现的细节。

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

感谢更多反馈。