activiti 快速入门--排他网关(3)

例如我们有这么个需求,也就是请假大于等于3天的不仅需要经理审批还需要总经理审批,小于3天的直接由经理审批就可以了,

具体实现如下:

1.      在前面原有基础上进行修改,修改bpmn流程图,添加多一个task以及gateway->ExclusiveGateway:

 

点击链接线,设置main cogfig ->condition:

       线上的字在general->name填上就可以了

2        重新部署下流程图,开启流程,然后提交申请:

 

public void completeTask(){

        Map<String,Object>map = newHashMap<String,Object>();

        map.put("user", "cwh");

        map.put("day",3);//对应流程图中的condition ${day}

        StringtaskId = "37505";

        processEngine.getTaskService().complete(taskId,map);//完成任务

        System.out.println("完成任务,任务ID"+taskId);

}

 map.put("day",3)//对应流程图中的condition ${day}
我们提交一个请假天数为3的,那么正确的话流程会这么走 经理审批->总经理审批->结束

3        经理审批:

 

   /**

     * 经理审批

     */

    @Test

    public void completeTask1(){

        Map<String,Object>map = newHashMap<String,Object>();

        Stringtaskid = "45005";

        map.put("user", "caiwenhao");

        TaskServicetaskService = processEngine.getTaskService();

        processEngine.getTaskService().complete(taskid,map);//完成任务

        System.out.println("完成任务,任务ID"+taskid);

    }


经理审批提交后将进入排他网关,如果经理审批后提交到的是总经理审批那么流程正确

运行后查看数据库task表发现确实到了总经理审批:


4    总经理审批

首先查找下上面分配给总经理‘caiwenhao’的任务

 

 然后提交任务:

 

  /**

     * 总经理审批

     */

    @Test

    public void completeTask2(){

        TaskServicetaskService = processEngine.getTaskService();

        Stringtaskid = "47503";

        processEngine.getTaskService().complete(taskid);//完成任务

        System.out.println("完成任务,任务ID"+taskid);

}

运行后则流程结束

posted @ 2016-11-01 16:44  menco  阅读(22)  评论(0)    收藏  举报