activiti根据人员获取到任务

备注:本文只摘抄片段整项目源代码待全部整理完毕再提供代码下载。

(1),页面根据人员请求获取任务

			<form action="<%=childPath %>/process/getTaskByAssigneeUser" method="post">
                <input type="hidden" name="form_name" value="YYG_QING_JIA_PROCESS_KEY" />

                业务主键1:<input name="bussiness_key" type="text" value="1" /> <br />
                当前任务人:<input type="text" name="user" value="zhansan" />

                <input type="submit" value="是zhansan的任务" />
			</form>

(2),activiti引擎根据人员获取任务

    /**
     * 获取拟稿人(配置在流程设计器中代理人)
     * @param params
     * @return 2023-01-05
     */
    @RequestMapping(value = "/getTaskByAssigneeUser", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> getTaskByAssigneeUser(@RequestParam Map<String, Object> params, HttpServletRequest request2 ) {

        String processKey = params.get("form_name").toString();
        String bussinessKey = params.get("bussiness_key").toString();
        String user = params.get("user").toString();
        // 根据流程键字符串获取到流程定义对象
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processKey).latestVersion().singleResult();
        ProcessInstance processInstance = null;
        // 根据流程定义id和业务主键串获取到流程实例集
        List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).processInstanceBusinessKey(bussinessKey).active().list();
        for(ProcessInstance processInstanceItm : processInstanceList){
            if(!processInstanceItm.isEnded()) {
                processInstance = processInstanceItm;
                break;
            }
        }
        if(processInstance != null) {
            Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).taskAssignee(user).singleResult();
            System.out.println("获取到任务:"+ task.getName());
        } else {
            System.out.println("没有获取到任务");
        }
        return params;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti获取所有的审批人信息,可以通过以下步骤: 1. 在流程定义文件中,定义一个候选人组(Candidate Group)或候选人(Candidate User),用于表示需要进行审批的人员。 2. 在流程实例启动后,查询当前任务的所有候选人或候选人组。 3. 根据具体的业务需求,选择一个或多个候选人或候选人组,作为实际的审批人。 以下是一个示例代码,用于获取当前任务的所有候选人信息: ```java // 获取当前任务 Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); // 获取当前任务的所有候选人 List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId()); // 遍历所有候选人 for (IdentityLink identityLink : identityLinks) { if (identityLink.getGroupId() != null) { // 如果是候选人组,则获取该组中的所有用户 List<User> users = identityService.createUserQuery().memberOfGroup(identityLink.getGroupId()).list(); for (User user : users) { System.out.println("候选人组:" + identityLink.getGroupId() + ",审批人:" + user.getId()); } } else if (identityLink.getUserId() != null) { // 如果是候选人,则直接获取该用户信息 User user = identityService.createUserQuery().userId(identityLink.getUserId()).singleResult(); System.out.println("候选人:" + user.getId()); } } ``` 在上述代码中,首先获取当前任务的所有候选人信息(包括候选人组和候选人),然后遍历所有候选人,根据不同的类型(候选人组或候选人),获取对应的用户信息,并输出审批人信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值