分支节点
分支节点是URule Pro当中提供的一种可实现规则流多条并行的节点,通过这个节点,可以根据当前节点下流出连线数量,将当前规则流实现拆分成若干条子的规则流实例并行运行,根据这一特性,分支节点下至少要有两条流出的连线才有意义。
在决策流实例流转到分支节点时,分支节点会根据其下流出的连接线数量将主的实例拆分成与连线对应的若干个子实例,以并行方式继续运行产生的多个流实例。
分支节点出入连接线如下表所示:
流入的连接线数量 | 流出的连接线数量 |
---|---|
1~n | 1~n |
默认情况下,分支节点会将主流程拆分成若干子流程执行,在实际执行的时候还是在一个线程内先后执行各个分支。
在分支节点上有一个名为“启用多线程”的属性,默认情况下,如果不设置该属性,那么它的值为“系统默认”,这时将采用系统中定义的名为urule.flowForkMultiThread参数的值,由这个参数值来决定当前分支下是否采用多线程运行, urule.flowForkMultiThread参数值默认为false,也就是不开启多线程运行。
如果希望其下所有子分支以多线程形式并行,那么可以选中当前分支节点,将其“启用多线程”属性设置为“是”,或者将urule.flowForkMultiThread参数设置值为true,这样引擎在执行到分支节点时会在不同的线程中执行其下各个分支,这对于各个分支业务逻辑不相关的业务,同时各个分支执行比较耗时,通过这样的配置让分支在不同线程里执行,所以可以明显提高系统执行性能。
需要注意的是分支节点的“启用多线程”属性值为“系统默认”时采用的是名为urule.flowForkMultiThread参数的值,否则就会覆盖这个全局参数的值,由当前分支节点自主决定是否开启多线程。
注意,当设置了参数urule.flowForkMultiThread=true 或配置了分支节点的“启用多线程”属性值为“是”时,分支节点下必须要添加一个聚合节点,将所有分支连接到聚合节点上,否则执行会出现错误。
注意:一般情况下,我们不推荐启用多线程,因为多线程开启后需要处理很多问题,无形中增加了运行的复杂度,所以不推荐开启多线程。