已经使用基于数据流的用于业务流程建模的编程工具(webMethods和Tibco),我看到了一个它们的主要功能是能够对会话和工作流进行建模。但是,对于大多数物联网项目而言,这些工具相当庞大,因此,如果可以使用Node-Red完成类似的工作,那就太好了。
后续问题,以防Node-Red不支持此功能,是否有一些简单的工具支持会话流的图形化建模?
#1 楼
答案是否定的。node-red中的流非常静态,没有概念在第一个请求进入时实例化流,因此每个请求可能有一个流实例。 。
也没有会话的内置概念,它使您可以将流经流的消息与会话相关联。
但是,您可以相对轻松地构造这些自己动手做。 Node-red提供了流和全局状态的概念,可使用
flow
和global
对象进行访问,请参阅https://nodered.org/docs/writing-functions#storing-data。您要做的就是将cookie发送给客户端,然后将传入请求与保存的全局或流状态显式关联。然后,您可以基于保存的会话状态编写“会话感知”的代码。这在功能节点上效果很好,但是您会遇到一些内置节点的问题,这些节点会执行速率限制或拆分和合并消息等操作,因为它们通常不了解会话概念。在比萨示例,您将在流或全局上下文中维护订单状态,并根据Cookie值访问相应订单的状态。
#2 楼
简短的答案是肯定的,至少是根据此功能请求:为“有状态”会话定义约定#63
此请求已关闭提交,表明已添加基于会话令牌的Web套接字节点。
评论
这是一个有用的功能,在某种程度上与我所关注的内容相关,但并不完全相同。我所说的会话实际上是定义流(或BPM世界中的模型)的启动实例。此实例化流的生存期未链接到任何单个请求或传输会话。如果可以的话,可以将其视为状态转换图,尽管在我所看到的实现中没有那么形式化。
–克里斯·斯坦巴赫
17年9月19日在18:25
评论
我不确定这是否有帮助; groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw@MatsK不确定。如果您单击此链接,您将看到来自BPM工具的一些人为的示例流程。查看流程中的“比萨供应商”部分,您会看到三个输入事件/请求:收到的订单,状态请求(我的比萨饼在哪里?)和付款。这些请求有助于推进具有独立于任何单个请求的生命周期的流程。
@MatsK与物联网更相关的示例是,例如,烟雾检测器,它在检测到烟雾时开始流动。流程中的第一个动作(节点)是发出声音警报,但此后流程可以有几种不同的方式。如果在给定时间内收到用户取消警报的请求,则声音警报停止,流程结束。如果没有收到取消请求,或者触发了另一个烟雾探测器,则将采取进一步的措施(例如,SMS所有者,拨打紧急服务电话)。