当前位置 博文首页 > qi95719的博客:activiti 候选人:(候选组)流程设计:

    qi95719的博客:activiti 候选人:(候选组)流程设计:

    作者:[db:作者] 时间:2021-08-08 10:16

    候选人:可以设置多个执行,但是真正执行的只有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

    在人事部审批节点也是要先签收后办理;

    已办理任务查询没有什么特殊的,按常规查询即可


    cs