09给任务指定办理人的方式

1、流程图

 
 

 

 

2、分配我的任务的方式

一、直接指定办理人

 

 

 

说明:这样分配办理人不够灵活,由于项目开发中任务的办理人不要放置在XML当中实际开发中办理人是不固定的。

二、使用流程变量指定办理人

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);

    }ide

三、使用类指定办理人(使用监听器指定办理人)

做用:当任务到达相应的节点时,会触发监听,让监听器去指定下个任务的办理人。this

3.1 建立监听器类(实现TaskListener接口)

//监听器
public class TaskListenerImpl implements TaskListener {

    @Override
    public void notify(DelegateTask delegateTask) {
        System.out.println("流程到了指定节点");
        delegateTask.setAssignee("李四");
    }
}

3.2 流程图的变化

设置第二个节点的办理人为空:

 

 

 
为第二个节点添加监听器:
 

 

 

流程运行到此节点以后,会触发监听器,为此节点设置办理人。

四、总结

我的任务及三种分配方式:blog

    1,在taskProcess.bpmn中直接写 assignee=“张三丰"接口

    2,在taskProcess.bpmn中写 assignee=“#{userID}”,变量的值要是String的。ip

         使用流程变量指定办理人开发

    3,使用TaskListener接口,要使类实现该接口,在类中定义,部署

         delegateTask.setAssignee(assignee);// 指定我的任务的办理人get

     使用任务ID和办理人从新指定办理人:input

     processEngine.getTaskService().setAssignee(taskId, userId);it

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。