自动活动
自动活动是指在流程执行期间由系统或应用程序自动执行的活动。自动活动通常不需要人工干预,而是由流程引擎执行。在自动活动中我们有多种调用逻辑,如:赋值操作、逻辑流调用、运算逻辑调用、EOS服务调用和REST服务调用。自动活动在执行过程中很有可能会出错,我们提供了多种异常处理机制,如:异常回滚、忽略异常、进入异常状态,等待人工干预和自动路由到其他活动,活动终止。
# 1 调用逻辑
# 1.1 赋值操作
引擎会将"赋值操作"中的"值"赋给"变量"。相当于是去修改相关数据。
赋值配置中包含"变量类别"、"变量"、"值"、"值类别"这4部分信息,下表是对它们的说明:
名称 说明 变量类别 变量类型有业务变量和相关数据两种 变量 填写变量内容,类型为业务变量时,点击输入区旁的业务变量选择对话框进行选择 值 填写值内容,类型为业务变量时,点击输入区旁的业务变量选择对话框进行选择 值类别 右值的类别,类别有常量、业务变量、相关数据三种
# 1.2 逻辑流
引擎会调用配置的逻辑流,具体逻辑流开发可参考服务设计。
注:如果开发的逻辑流与流程引擎是一个进程时才可以使用,如果是两个进程则使用EOS服务。
逻辑流配置动作、参数,如下表所示。
配置项 配置说明 动作 选择一个定义好的逻辑流,可以编辑动作的url,用于添加应用。 参数配置表 服务需要的参数,不能修改参数个数以及数据类型,可以通过刷新更新参数列表。
# 1.3 运算逻辑
引擎会调用配置的运算逻辑,运算逻辑只能高开开发,重新打包之后才能选择到。
注:如果开发的运算逻辑与流程引擎是一个进程时才可以使用。
运算逻辑需要配置动作、参数,如下表所示。
配置项 配置说明 动作 选择一个定义好的运算逻辑,基础构件库中所有的构件都是运算构件。 参数配置表 服务需要的参数,不能修改参数个数以及数据类型,可以通过刷新更新参数列表。
# 1.4 EOS服务
EOS服务活动图元用于调用一个外部EOS服务的接口。接口的输入参数和返回值支持SDO数据格式,即对于输入参数可以传入一个DataObject对象,或者DataObject的Xpath(如:order/orderID),或一个基本类型变量,返回值则可以得到的是一个DataObject对象或一个基本类型,支持多返回值。
注:使用EOS服务必须使用EOS服务图元。
# 1.5 REST服务
REST服务活动图元用于调用一个外部Rest服务的接口。接口的输入参数和返回值支持SDO数据格式,即对于输入参数可以传入一个DataObject对象,或者DataObject的Xpath(如:order/orderID),或一个基本类型变量,返回值则可以得到的是一个DataObject对象或一个基本类型。仅支持单个返回值,可以将返回值封装为ResponseEntity对象。
注:使用EOS服务必须使用REST服务图元。
# 2 异常处理
自动活动在执行过程中很有可能会出错,我们提供了多种异常处理机制,如:异常回滚、忽略异常、进入异常状态,等待人工干预和自动路由到其他活动,活动终止。
# 2.1 异常回滚
自动活动配置的逻辑出错直接回滚异常,回滚到上个事务分割点。
# 2.2 忽略异常
自动活动配置的逻辑出错忽略异常,自动活动完成,继续执行后继动作。默认配置。
# 2.3 进入异常状态,等待人工干预
自动活动出错进入异常状态不继续流转;用户可以在管理监控端的"流程实例管理/活动实例监控/应用异常处理"页面,选择执行"重新启动活动"、"单步回退,并且终止当前活动",或"路由到其它活动,并且终止当前活动",如下图所示。
# 2.4 自动路由到其他活动,活动终止
自动活动出错,直接根据配置跳转到下一个活动,当前自动活动终止。通过点击<浏览>按钮选择跳转的活动,如下图所示。
说明
上面描述的第1、2两种异常处理策略对应的"事务策略"可以是"Join"或"Suspend";第3、4两种异常处理策略只能在"事务策略"为"Suspend"的情况下使用; "调用方式"为"异步"时,"事务策略"只能为"Suspend"。
# 3 触发事件
自动活动的触发事件和人工活动的触发事件基本一样,仅仅是触发时机有所不同。因此在这里仅描述一下自动活动的触发时机,其余参见人工活动的触发事件。
触发时机:
- 活动启动前:表示指定的事件在活动实例启动前触发,此时活动实例处于"待启动"状态,并没有工作项产生;
- 活动启动后:表示指定的事件在活动实例启动后触发;
- 活动完成前:表示指定的事件在活动实例完成前触发;
- 活动完成后:表示指定的事件在活动实例完成后触发;
- 活动恢复后:表示指定的事件在活动实例恢复某个挂起后触发;
- 活动挂起后:表示指定的事件在活动实例被挂起后触发。
# 4 回退触发事件
回退触发事件可以参考人工活动的回退触发事件
# 5 启动策略
启动策略表示在流程实例运行过程中,当流程实例流转至此活动时,该活动将以何种方式启动。
# 5.1 直接运行
只要当前活动的前驱活动执行完,并且当前活动满足启动条件,即可转入"运行"状态。这是"启动策略"的默认配置。
# 5.2 待激活
当前活动的前驱活动执行完后不管当前活动是否满足启动条件,都将转入"待激活"状态。直到外界调用activateActivityInstance方法才能激活该活动。
# 5.3 由规则逻辑返回值确定
在当前活动满足启动条件的前提下,由一个逻辑的返回值来确定是否启动该活动,一个规则逻辑的动作可以是一个服务、一个逻辑流,或一个运算逻辑。 规定这种逻辑的返回值必须是"0"、"1"、"true"或"false"。 当规则逻辑的返回值是"1"或"true"时,当前活动转入"运行"状态;当规则逻辑的返回值是"0"或"false"时,当前活动转入"待激活"状态。