09给任务指定办理人的方式
程序员文章站
2022-04-19 23:41:53
一、流程图 二、分配个人任务的方式 1、直接指定办理人 说明:这样分配办理人不够灵活,因为项目开发中任务的办理人不要放置在XML当中实际开发中办理人是不固定的。 2、使用流程变量指定办理人 2.1 流程图中的设置 说明:在Activiti中#{username}和${username}的意义是一样的 ......
一、流程图
二、分配个人任务的方式
1、直接指定办理人
说明:这样分配办理人不够灵活,因为项目开发中任务的办理人不要放置在xml当中实际开发中办理人是不固定的。
2、使用流程变量指定办理人
2.1 流程图中的设置
说明:在activiti中#{username}和${username}的意义是一样的。
2.2 流程运行
//部署流程
@test
public void bushu() {
inputstream inputstream = this.getclass().getresourceasstream("taskman.zip");
zipinputstream zipinputstream = new zipinputstream(inputstream);
repositoryservice repositoryservice = processengine.getrepositoryservice();
deployment deploy = repositoryservice.createdeployment().name("请假流程")
.addzipinputstream(zipinputstream).deploy();
system.out.println("部署成功:部署id"+deploy.getid());
}
//启动流程,在启动时就带入办理人的流程变量
@test
public void startprocess() {
runtimeservice runtimeservice = processengine.getruntimeservice();
map<string,object> vars = new hashmap<string,object>();
vars.put("username", "张三");
processinstance processinstance = runtimeservice.startprocessinstancebykey("myprocess",vars);
system.out.println("流程启动成功,流程实例id为:"+processinstance.getid());
}
//任务查询
@test
public void findtask() {
taskservice taskservice = processengine.gettaskservice();
task task = taskservice.createtaskquery().taskassignee("张三").singleresult();
system.out.println("张三的任务id:"+task.getid());//张三的任务id:2505
}
//完成任务,并制定下一任务办理人
@test
public void dotask() {
taskservice taskservice = processengine.gettaskservice();
map<string,object> vars = new hashmap<string,object>();
vars.put("username", "李四");
taskservice.complete("2505",vars);
}
3、使用类指定办理人(使用监听器指定办理人)
作用:当任务到达相应的节点时,会触发监听,让监听器去指定下个任务的办理人。
3.1 创建监听器类(实现tasklistener接口)
//监听器
public class tasklistenerimpl implements tasklistener {
@override
public void notify(delegatetask delegatetask) {
system.out.println("流程到了指定节点");
delegatetask.setassignee("李四");
}
}
3.2 流程图的变化
设置第二个节点的办理人为空:
为第二个节点添加监听器:
流程运行到此节点之后,会触发监听器,为此节点设置办理人。
4、总结
个人任务及三种分配方式:
1,在taskprocess.bpmn中直接写 assignee=“张三丰"
2,在taskprocess.bpmn中写 assignee=“#{userid}”,变量的值要是string的。
使用流程变量指定办理人
3,使用tasklistener接口,要使类实现该接口,在类中定义,
delegatetask.setassignee(assignee);// 指定个人任务的办理人
使用任务id和办理人重新指定办理人:
processengine.gettaskservice().setassignee(taskid, userid);
上一篇: ___枚举帮助类及_如何使用
下一篇: 10组任务