“用户任务”节点可以设置监听器。
监听器分为执行监听器(execution listener)和任务监听器(task listener)。
执行监听器(execution listener)可以在流程执行中发生特定的事件时,执行外部Java代码或计算表达式。Smartbi流程允许在用户任务节点上配置执行监听器。
执行监听器包含下列属性:
事件类型(必填):触发执行监听器的事件类型。可用的事件有:
开始:当流程流转到当前节点后触发执行监听器
结束:当流程离开当前节点后触发执行监听器。
def bar = "BAR"; // 局部变量
foo = "FOO";// 将变量放入执行上下文
execution.setVariable("var1", "test"); // 设置执行实例变量
流程引擎提供了一些内部上下文变量,可用于表达式和脚本中。
变量 | Java类型 | 语境 |
---|---|---|
execution | DelegateExecution | 在BPMN执行上下文中可用,例如服务任务,执行侦听器或序列流。 |
task | DelegateTask | 在任务上下文(如任务侦听器)中可用。 |
流程引擎提供了一些内部上下文功能,可用于表达式和脚本中。
功能 | 返回类型 | 描述 |
---|---|---|
currentUser() | String | 返回当前已认证用户的用户标识,或者当前null 没有用户通过认证。 |
now() | Date | 以Java Date对象的形式返回当前日期。 |
dateTime() | DateTime | 返回当前日期的Joda-Time DateTime对象。 有关所有可用功能,请参阅 Joda-Time文档。 |
任务监听器(task listener)用于在特定的任务相关事件发生时,执行自定义的Java逻辑或表达式。任务监听器只能在流程定义中作为用户任务的子元素。在Smartbi流程中,任务可以理解为待办。
任务监听器包含下列属性:
事件类型(必填):触发任务监听器的任务事件类型。可用的事件有:
创建:当任务已经创建,并且所有任务参数都已经设置时触发。
分配:当任务已经指派给某人时触发。请注意:当流程执行到达用户任务时,在触发create事件之前,会首先触发assignment事件。这顺序看起来不太自然,但是有实际原因的:当收到create事件时,我们通常希望能看到任务的所有参数,包括办理人。
完成:当任务已经完成,从运行时数据中删除前触发。
删除:在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发。
参考资料:
执行监听器
任务监听器
扩展包示例: