备注:本文只摘抄片段整项目源代码待全部整理完毕再提供代码下载。
(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;
}