1. 程式人生 > >activiti 候選人:(候選組)流程設計:

activiti 候選人:(候選組)流程設計:

候選人:可以設定多個執行,但是真正執行的只有1個,只要有人簽收之後,其他人的代簽收任務將會沒有這些任務:即只要有人簽收任務,其他人的任務就直接被刪除(隱式的刪除)

流程設計


人事部審批節點候選人:zzz,xxx

部署流程後:流程定義ID:候選人:1:85004

查詢節點執行人(包括候選人和候選組):act_hi_identitylink

啟動流程: 

    public voidstartprocessByKey(String key){

        Stringapplyuser ="zyq";

        identityService.setAuthenticatedUserId(applyuser

);

        Map<String,Object>variables = new HashMap();//設定流程變數

        variables.put("applyUserId","qwer");

        variables.put("applyTitle","test_請假申請流程");

        variables.put("applyTime","7");

        variables.put("applyCtreateTime",new Date());

        variables.put("applyReason","休假");

        //設定候選人:上級領導審批

        Listlist =new ArrayList();

        list.add("zzz");

        list.add("xxx");

        variables.put("managerIds",list);

        ProcessInstanceprocessInstance = runtimeService.startProcessInstanceByKey(key,variables);

    Tasktask = taskService.createTaskQuery().processInstanceId(processInstance

.getId()).singleResult();

    System.out.println(task.getAssignee());

    }

這時流程表中:

正在執行的變數:

正在執行的任務:(歷史表中也一樣)


查詢候選人任務:taskCandidateUser/taskCandidateOrAssigned

   List<Task> list = taskService.createTaskQuery().taskCandidateUser(assignee).

                orderByTaskCreateTime().desc().list();//查詢所擁有的候選任務

List<Task> list =taskService.createTaskQuery().taskCandidateOrAssigned(assignee)

                .orderByTaskCreateTime().desc().list();//查詢所擁有的個人&候選任務

辦理候選任務

首先要領取任務:

taskService.claim(taskId, assignee);

taskService.complete(taskId,variables);

例如:xxx 簽收辦理了

    public void mytaskClaimAComplete(String taskId,String assignee){

        taskService.claim(taskId, assignee);

        Map<String,Object>variables = new HashMap();//設定流程變數

        variables.put("managerCheckResult", "同意");

        variables.put("managerCheckreason","可用年休假");

        variables.put("managerTime",new Date());

        taskService.complete(taskId,variables);

        }

歷史任務表:

上級領導審批人:assingee: xxx

在人事部審批節點也是要先簽收後辦理;

已辦理任務查詢沒有什麼特殊的,按常規查詢即可