(一)activiti流程图用流程变量设置节点执行人
Activiti 使用 UEL 表达式, UEL 是 java EE6 规范的一部分, UEL(Unified Expression Language)即统一表达式语言, activiti 支持两个 UEL 表达式: UEL-value 和 UEL-method。
(二)方法调用赋值
${userService.findUserById(userId)}
userService 是 spring 容器的一个 bean, findUserById 是该 bean 的一个方法, userId 是流程变量。
(三)监听器分配
任务监听器是发生对应的任务相关事件时执行自定义java逻辑或表达式。
Create:任务创建后触发
Assignment:任务分配后触发
Delete:任务完成后触发
All:所有事件发生都触发
定义任务监听类,且类必须实现org.activiti.engine.delegate.TaskListener接口
packagecom.activiti.example;importorg.activiti.engine.delegate.DelegateTask;importorg.activiti.engine.delegate.TaskListener;public class MyTaskListener implementsTaskListener {
@Overridepublic voidnotify(DelegateTask delegateTask) {
delegateTask.setAssignee("灭霸");
}
}
(四)程序中动态指定任务实例执行人代码
/*** 启动一个实例,动态设置设置assignee*/@Testpublic voidstartProcessInstance() {//设置assignee,map键对应配置中的变量名
Map map=new HashMap<>();
map.put("user1","张三");
map.put("user2","李四");
map.put("user3","王五");//启动流程实例,同时还要设置流程定义的assignee的值
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1", map);
}