子逻辑流
# 1 子逻辑流图元介绍
在逻辑流中支持调用其它逻辑流,作为其子逻辑流。通过逻辑流调用逻辑流可实现更大范围内逻辑流的组装。
# 2 使用介绍
# 2.1 适用场景
场景一:
在逻辑流中,若某段业务操作在多个流程中重复出现,可将其创建为一个独立的逻辑流。在其他逻辑流中,可以通过子逻辑流调用的方式来复用该业务操作,以提高效率和代码复用性。
场景二:
在复杂的逻辑流中,当存在多段业务操作导致流程变得繁琐时,可以采用模块化设计理念。将这些独立的业务操作提炼出来,创建为独立的子逻辑流。在主逻辑流中,通过调用这些子逻辑流来执行相应的业务操作。以此来提高其可读性和可维护性,使得整个逻辑流更加清晰简洁。
# 2.2 子逻辑流输入参数与返回值
在逻辑流图元中选择子逻辑流后,子逻辑流的输入参数与返回值将自动呈现,以便进行参数传递和结果获取。可以将当前逻辑流的变量值作为输入参数传递给被调用的子逻辑流,以便子逻辑流能够根据这些参数执行业务操作。同时,可以使用当前逻辑流的变量或返回值来接收子逻辑流计算的结果返回值,实现流程之间的数据交互和逻辑整合。
在设置子逻辑流参数与返回值信息时,传入的值的类别要与子逻辑流的参数与返回值类型对应。值类别有三种,分别为:
(1)常量:常量表示当前参数值是String字符串。传递方式仅支持"传值"。
(2)变量:当前逻辑流中定义的变量参数。变量的传递方式支持"传值"和"传引用"2种。
a.传值:当前变量需要支持序列化或者实现了clone接口;
b.传引用:相当于两者指向同一个对象,如果对象发生了变化,两者都能体现出来。
(3)表达式:表达式必须符合Java规范,可以使用不同数据区来获取数据,可以使用已经定义的变量。传递方式同变量。
示例一:如何向子逻辑流传递参数?
在主逻辑流中,将名为project
的实体对象作为参数传递给子逻辑流,以便子逻辑流能够访问并操作该实体对象的属性。
首先需要在子逻辑流中定义一个与主逻辑流同数据类型的实体参数project
,用于接收主逻辑流中传递的参数,再使用赋值图元对其实体对象中的属性进行修改。
在主逻辑流中选择调用该子逻辑流并传递project参数,值类别为变量,传递方式为传引用。
最后可在子逻辑流中开启断掉调试来查看数据传递的流向。
子逻辑流接收到主逻辑流传递实体对象project
的值后,通过赋值图元完成赋值操作。
示例二:主逻辑流如何获取子逻辑流返回参数?
首先需要在子逻辑流中定义一个返回值参数isSuccess
,数据类型为String,并在赋值图元中为其赋值。
在主逻辑流中定义一个返回值参数isSuccess
,数据类型为String;在主逻辑流中选择调用该子逻辑流并使用isSuccess参数来接受返回值,值类别为变量。
最后可在主逻辑流中开启断掉调试来查看数据传递的流向。
主逻辑流执行子逻辑流之前,参数isSuccess
为空,执行之后,参数isSuccess
被成功赋值。
# 2.3 异步调用子逻辑流
如果在开发应用系统的时候,不需要维持同步的情形,可以选用异步调用的方式来调用子逻辑流。 设置子逻辑流为异步调用,在逻辑流属性设置中选择高级选项卡,调用方式选择异步调用即可。
在异步调用方式下,逻辑流的返回值会被忽略。异步调用会启动另外一个线程(tomcat服务器),或者通过JMS的方式来执行当前的逻辑。 同时在异步方式下,按照引用传递的变量不会同步到主线程中。
# 2.4 事务传播方式
在逻辑流中调用一个子逻辑流时,可以为子逻辑流设置事务传播方式,支持Join和Suspend两种方式(默认为join)。
(1)Join:表示子逻辑流的事务加入到父逻辑流的事务中。
(2)Suspend:表示以挂起方式调用子逻辑流。
如果父逻辑流有事务,子逻辑流会挂起外部事务,在子逻辑流内部单独启用一个事务。该参数和"接受外部事务传递"参数相关。