目录
第一种:固定分配
固定分配指
在进行业务流程建模时指定固定的任务负责人(再具体环节上指定具体的用户,一旦环节负责人员变更则需要重新编辑)
![](https://i-blog.csdnimg.cn/blog_migrate/061c29edfb27b5a038134a4719d0df5f.png)
第二种:UEL表达式分配
Activiti
使用
UEL
表达式,
UEL
是
java EE6
规范的一部分,
UEL
(
Unified Expression Language
)即
统一表达式语言,activiti
支持两个
UEL
表达式:
UEL-value
和
UEL-method
。
- UEL-method 方式如下
userBean
是
spring
容器中的一个
bean
,表示调用该
bean
的
getUserId()
方法。
- UEL-method 与 UEL-value 结合
再比如: ${ldapService.findManagerForEmployee(emp)}
ldapService
是
spring
容器的一个
bean
,
findManagerForEmployee
是该
bean
的一个方法,
emp
是
activiti 流程变量,emp
作为参数传到
ldapService.findManagerForEmployee
方法中。
- 其它
表达式支持解析基础类型、
bean
、
list
、
array
和
map,也可作为条件判断如下:
${order.price > 100 && order.price < 250}
第三种:使用监听器分配(用的少)
1)任务监听器是发生对应的任务相关事件时执行自定义 java 逻辑 或表达式。
任务相当事件包括:
- Create:任务创建后触发
- Assignment:任务分配后触发
- Delete:任务完成后触发
- All:所有事件发生都触发
2)定义任务监听类,且类必须实现
org.activiti.engine.delegate.TaskListener
接口。
public class MyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
//这里指定任务负责人
delegateTask.setAssignee("张三");
} }
代码中设置流程变量时机
在启动流程实例时设置流程变量,如下:
//流程实例的启动
@Test
public void testprocessstart(){
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//创建流程启动对象
RuntimeService runtimeService = processEngine.getRuntimeService();
String processDefinitionKey = "myProcess";
String businessKey = "1";
//设置流程变量
//在启动流程实例时设置流程变量
//定义流程变量为每个流程中的每个环节分配负责人
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("dept_assign", "张三");
variables.put("leader_assign", "李四");
//设置流程变量assignee
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey, variables);
System.out.println("活动id"+ processInstance.getActivityId());
System.out.println("实例id"+ processInstance.getProcessInstanceId());
}