当执行到达抛出信号事件
时,引擎向系统内部发出一个信号,信号发出后事件结束,流程沿后继路线继续执行。
该事件到达后会在WFC_TASK创建一个类型为throwEvent
、EXT1
为signal
的记录。被正常触发后,状态标记为complete
归档到历史表。
同一个信号可以有多个subscriber(订阅者)
抛出的信号可以被信号开始事件(Signal Start Event)、中间捕获信号事件(Signal Intermediate Catch Event)、边界信号事件(Signal Boundary Interrputing Event)订阅处理。
信号
设置要抛出的信号,并确保信号变量名与订阅信号的事件名一致。作为进阶设置,可以通过数据映射
对抛出的业务数据(payload
)进行值映射。
定义信号变量 | 将抛出的信号数据初始化给当前流程 |
---|---|
要抛出信号,首先在该流程属性的
信号
中定义信号变量名,目前信号变量支持BO Structure类数据结构
关联规则
一个可选的进阶匹配规则。当抛出的信号名相同时,如果规则不匹配则忽略该信号的处理。
例如,订阅到名为CRM-Order
且匹配规则值为vip
的信号,匹配并完成该类事件任务。
也可以使用以下代码直接向订阅事件发送信号
//传播一个名为CRM-Order的信号,当匹配捕获规则为vip时完成该中断的任务,并继续向下执行
SDK.getTaskAPI().signalEventReceived("CRM-Order", "vip", null);
//初始化指定BO Structure的OrderNo数据项
Map<String, Object> payload = new HashMap<>();
payload.put("OrderNo", "009");
SDK.getTaskAPI().signalEventReceived("CRM-Order", "vip", payload);