Activiti工作流之个人任务分配模式

本文详细介绍了Activiti流程引擎中的三种任务分配方法:固定分配、表达式分配及监听器分配。固定分配直接在bpmn配置中指定负责人;表达式分配利用UEL表达式动态设置assignee;监听器分配则在特定事件触发时自定义任务负责人。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.固定分配

在进行业务流程建模时指定固定的任务负责人。

在 properties 视图中,填写 Assignee 项为任务负责人

 

由于固定分配方式,任务只管一步一步执行任务,执行到每一个任务将按照 bpmn 的配置去分配任务负责人。

2.表达式分配

(1)UEL表达式

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

UEL-value定义如下:

 

assignee这个变量是activiti的一个流程变量

 

holiday 也是 activiti 的一个流程变量。holiday.assignee 表示通过调用 user 的 getter 方法获取值。

(2)使用流程变量分配任务

/**
 *  启动流程实例,动态设置assignee
 */
public class AssigneeUEL {
​
​
    public static void main(String[] args) {
        //1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
​
        //2.得到RuntimeService对象
        RuntimeService runtimeService = processEngine.getRuntimeService();
​
       //3.设置assignee的取值   用户可以在界面上设置流程的执行人
        Map<String,Object> map = new HashMap<>();
        map.put("assignee0","张三丰");
        map.put("assignee1","张无忌");
        map.put("assignee2","金毛狮王");
​
        //4.启动流程实例,同时还要设置流程定义的assignee的值
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday3", map);
​
        //5.输出
        System.out.println(processEngine.getName());
​
    }
}

(3)注意事项

由于使用了表达式分配,必须保证在任务执行过程表达式执行成功,比如:

某个任务使用了表达式${order.price > 100 && order.price < 250},当执行该任务时必须保证 order 在流程变量中存在,否则 activiti 异常。

3.监听器分配

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

任务相当事件包括:

 

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

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

public class MyTaskListener implements TaskListener { 
    @Override
    public void notify(DelegateTask delegateTask) { 
        //这里指定任务负责人 
        delegateTask.setAssignee("张三");
    }   
​​​​​​​}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值