前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作流引擎之activiti任务监听器

工作流引擎之activiti任务监听器

作者头像
lyb-geek
发布2018-07-26 09:58:13
2.9K0
发布2018-07-26 09:58:13
举报
文章被收录于专栏:Linyb极客之路

任务监听器可以在发生对应的任务相关事件时执行自定义java逻辑 或表达式。

任务监听器只能添加到流程定义中的用户任务中。 注意它必须定义在BPMN 2.0 extensionElements的子元素中, 并使用activiti命名空间,因为任务监听器是activiti独有的结构。

代码语言:javascript
复制
<userTask id="myTask" name="My Task" >  <extensionElements>    <activiti:taskListener event="create" class="org.activiti.MyTaskCreateListener" />  </extensionElements></userTask>

任务监听器支持以下属性:

  • event(必选):任务监听器会被调用的任务类型。可能的类型为:
    • create:任务创建并设置所有属性后触发。
    • assignment:任务分配给一些人时触发。 当流程到达userTask, assignment事件 会在create事件之前发生。 这样的顺序似乎不自然,但是原因很简单:当获得create时间时, 我们想获得任务的所有属性,包括执行人。
    • complete:当任务完成,并尚未从运行数据中删除时触发。
  • class:必须调用的代理类。这个类必须实现org.activiti.engine.impl.pvm.delegate.TaskListener接口。 public class MyTaskCreateListener implements TaskListener { public void notify(DelegateTask delegateTask) { // Custom logic goes here }} 可以使用属性注入把流程变量或执行传递给代理类。注意代理类的实例是在部署时创建的(和activiti中其他类代理的情况一样),这意味着所有流程实例都会共享同一个实例。
  • expression:(无法同时与class属性一起使用):指定事件发生时执行的表达式。可以把DelegateTask对象和事件名称(使用task.eventName)作为参数传递给调用的对象。 <activiti:taskListener event="create" expression="${myObject.callMethod(task, task.eventName)}" />
  • delegateExpression可以指定一个表达式,解析一个实现了TaskListener接口的对象,这与服务任务一致。 <activiti:taskListener event="create" delegateExpression="${myTaskListenerBean}" />
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档