1. 分配任务负责人

1.1 固定分配

在进行业务流程建模时指定固定的任务负责人,在 properties 视图中,填写 Assignee 项为任务负责人。(实际业务中很少使用)
截屏20200209 18.28.32.png

2. UEL表达式

Activiti 使用 UEL 表达式, UEL 是 java EE6 规范的一部分,UEL(Unified Expression Language)即统一表达式语言, activiti 支持两个 UEL 表达式: UEL-value 和 UEL-method。

2.1 UEL-value

<!--UEL-value: user是一个流程变量 -->
<userTask activiti:assignee="${user}" activiti:exclusive="true" id="_3" name="申请人提交申请"/>
 
<!--UEL-value: user 是一个流程变量对象, user.assignee 表示通过调用 user 的 getter 方法获取值  -->
<userTask activiti:assignee="${user.assignee}" activiti:exclusive="true" id="_3" name="申请人提交申请"/>

2.2 UEL-method

${userService.findUserById(userId)}

userService 是 spring 容器的一个 bean, findUserById 是该 bean 的一个方法, userId 是流程变量。

表达式支持解析基础类型、 bean、 list、 array 和 map,也可作为条件判断。
如下:
${order.price > 100 && order.price < 250}

3. 监听器分配

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

说明:
Create:任务创建后触发
Assignment:任务分配后触发
Delete:任务完成后触发
All:所有事件发生都触发

定义任务监听类,且类必须实现org.activiti.engine.delegate.TaskListener接口

package com.activiti.example;

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

public class MyTaskListener  implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        delegateTask.setAssignee("pippen");
    }
}

4. 程序中动态指定办理人代码

User user = new User();
        user.setDeptId("lipeng");
        user.setAccId("zhangxin");
        user.setBranch("mww");
        user.setChief("luowei");
        Map<String, Object> map = new HashMap<>();
        map.put("user", user);
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(
                        "ys-work", 
                        "19940818", map
                );
        System.out.println("流程启动:" + processInstance.getBusinessKey());
打赏
支付宝 微信
上一篇 下一篇