Activiti工作流会签与获取下一节点任务信息
2017-09-11 08:15
162 查看
2018-03-29问题描述:会签节点选择2个审核人只能看到一条代办任务。解决办法:Sequential设置为false即可。(true 串行 false 并行)activiti 工作流会签时为所有的都审批通过才可进入下一环节:1.编写监听类public class MyTaksListener implements TaskListener {
public void notify(DelegateTask delegateTask) {
System.out.println("delegateTask.getEventName() = " + delegateTask.getEventName()); //添加会签的人员,以下所有的都审批通过才可进入下一环节 List<String> assigneeList = new ArrayList<String>();
assigneeList.add("wangba");
assigneeList.add("wangjiu");
delegateTask.setVariable("publicityList",assigneeList);
}
}
4000
2.“员工请假申请”中添加此监听类
3.“项目组长审批”中
[b]isSequential=false时,表示的并行执行,即该节点下的多条任务可以同时执行。
activiti:collection:用于执行该会签环节的参与参与的人,此处是使用的一个名叫publicityList的流程变量
[/b]
4.项目组长审批时,通过taskAssignee来获取个人任务total = taskService.createTaskQuery().taskAssignee(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数 // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化 taskList = taskService.createTaskQuery() // 根据用户id查询 .taskAssignee(userId) // 根据任务名称查询 .taskNameLike("%" + s_name + "%") // 返回带分页的结果集合 .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());activiti 工作流多人审批时若一人通过也可进入下一环节:1.编写监听类public class MangerTaskHandlerCandidateUsers implements TaskListener{ public void notify(DelegateTask delegateTask) { //添加审批的人员,以下任何一人通过即可进入下一环节 String[] empLoyees = {"wangba","wangjiu"}; delegateTask.addCandidateUsers(Arrays.asList(empLoyees)); }}2.“项目组长审批”中
3.项目组长审批时,通过taskCandidateUser来获取个人任务total = taskService.createTaskQuery().taskCandidateUser(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数 // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化 taskList = taskService.createTaskQuery() // 根据用户id查询 .taskCandidateUser(userId) // 根据任务名称查询 .taskNameLike("%" + s_name + "%") // 返回带分页的结果集合 .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());1.在当前节点获取下一节点的信息(通过TaskId)/** * 根据实例编号查找下一个任务节点 * * @param String * procInstId :实例编号 * @return */ @RequestMapping("/backTaskTab") public TaskDefinition backTaskTab(String taskId) { Task task = taskService.createTaskQuery() // 创建任务查询 .taskId(taskId) // 根据任务id查询 .singleResult(); String procInstId = task.getProcessInstanceId(); // 流程标示 String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId) .singleResult().getProcessDefinitionId(); ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(processDefinitionId); // 执行实例 ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery() .processInstanceId(procInstId).singleResult(); // 当前实例的执行到哪个节点 String activitiId = execution.getActivityId(); // 获得当前任务的所有节点 List<ActivityImpl> activitiList = def.getActivities(); for(ActivityImpl a:activitiList) {if(activitiId.equals(a.getId())) { List<PvmTransition> outTransitions=a.getOutgoingTransitions();for(PvmTransition tr : outTransitions){ PvmActivity ac = tr.getDestination(); // 获取线路的终点节点(下一节点)String nextId = ac.getId(); }} } }2.在当前节点获取下一节点的信息(通过ProcessDefinitionId)public String startApply(HttpServletResponse response, String leaveId) throws Exception {//使用流程定义ID获取所有节点,该Id可以通过多种方式获得,//如通过ProcessDefinitionQuery可以查询一个ProcessDefinition对象,Task对象中也包含List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()//创建流程定义查询.orderByProcessDefinitionVersion().desc()//.list();String str = null;for(ProcessDefinition pd : list){ProcessDefinition processDefinition = list.get(0);str= processDefinition.getId();}BpmnModel model = repositoryService.getBpmnModel(str);if(model != null) { Collection<FlowElement> flowElements = model.getMainProcess().getFlowElements(); for(FlowElement e : flowElements) { System.out.println("flowelement id:" + e.getId() + " name:" + e.getName() + " class:" + e.getClass().toString()); } }
public void notify(DelegateTask delegateTask) {
System.out.println("delegateTask.getEventName() = " + delegateTask.getEventName()); //添加会签的人员,以下所有的都审批通过才可进入下一环节 List<String> assigneeList = new ArrayList<String>();
assigneeList.add("wangba");
assigneeList.add("wangjiu");
delegateTask.setVariable("publicityList",assigneeList);
}
}
4000
2.“员工请假申请”中添加此监听类
3.“项目组长审批”中
[b]isSequential=false时,表示的并行执行,即该节点下的多条任务可以同时执行。
activiti:collection:用于执行该会签环节的参与参与的人,此处是使用的一个名叫publicityList的流程变量
[/b]
activiti:elementVariable:此处表示的是每一个分支都有一个名叫publicity的流程变量,和上方的activiti:assignee结合以上几个字段的解释可以参照下面这篇文章:http://www.wangchao.net.cn/it/detail_132191.html
4.项目组长审批时,通过taskAssignee来获取个人任务total = taskService.createTaskQuery().taskAssignee(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数 // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化 taskList = taskService.createTaskQuery() // 根据用户id查询 .taskAssignee(userId) // 根据任务名称查询 .taskNameLike("%" + s_name + "%") // 返回带分页的结果集合 .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());activiti 工作流多人审批时若一人通过也可进入下一环节:1.编写监听类public class MangerTaskHandlerCandidateUsers implements TaskListener{ public void notify(DelegateTask delegateTask) { //添加审批的人员,以下任何一人通过即可进入下一环节 String[] empLoyees = {"wangba","wangjiu"}; delegateTask.addCandidateUsers(Arrays.asList(empLoyees)); }}2.“项目组长审批”中
3.项目组长审批时,通过taskCandidateUser来获取个人任务total = taskService.createTaskQuery().taskCandidateUser(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数 // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化 taskList = taskService.createTaskQuery() // 根据用户id查询 .taskCandidateUser(userId) // 根据任务名称查询 .taskNameLike("%" + s_name + "%") // 返回带分页的结果集合 .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());1.在当前节点获取下一节点的信息(通过TaskId)/** * 根据实例编号查找下一个任务节点 * * @param String * procInstId :实例编号 * @return */ @RequestMapping("/backTaskTab") public TaskDefinition backTaskTab(String taskId) { Task task = taskService.createTaskQuery() // 创建任务查询 .taskId(taskId) // 根据任务id查询 .singleResult(); String procInstId = task.getProcessInstanceId(); // 流程标示 String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId) .singleResult().getProcessDefinitionId(); ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) .getDeployedProcessDefinition(processDefinitionId); // 执行实例 ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery() .processInstanceId(procInstId).singleResult(); // 当前实例的执行到哪个节点 String activitiId = execution.getActivityId(); // 获得当前任务的所有节点 List<ActivityImpl> activitiList = def.getActivities(); for(ActivityImpl a:activitiList) {if(activitiId.equals(a.getId())) { List<PvmTransition> outTransitions=a.getOutgoingTransitions();for(PvmTransition tr : outTransitions){ PvmActivity ac = tr.getDestination(); // 获取线路的终点节点(下一节点)String nextId = ac.getId(); }} } }2.在当前节点获取下一节点的信息(通过ProcessDefinitionId)public String startApply(HttpServletResponse response, String leaveId) throws Exception {//使用流程定义ID获取所有节点,该Id可以通过多种方式获得,//如通过ProcessDefinitionQuery可以查询一个ProcessDefinition对象,Task对象中也包含List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()//创建流程定义查询.orderByProcessDefinitionVersion().desc()//.list();String str = null;for(ProcessDefinition pd : list){ProcessDefinition processDefinition = list.get(0);str= processDefinition.getId();}BpmnModel model = repositoryService.getBpmnModel(str);if(model != null) { Collection<FlowElement> flowElements = model.getMainProcess().getFlowElements(); for(FlowElement e : flowElements) { System.out.println("flowelement id:" + e.getId() + " name:" + e.getName() + " class:" + e.getClass().toString()); } }
相关文章推荐
- activiti中有任务id,获取当前流程节点的信息
- activiti 配置节点 连线信息获取
- ZTree 获取节点信息
- Visual Studio 2010 MFC实现tracert,提示icmp包超时,无法获取中间节点信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 获取HDFS集群上所有节点名称信息
- 饿了么项目---7、ref属性注册节点信息,并获取DOM节点(1)
- jquery zTree树开发实例之点击树节点获取节点信息显示到表格中
- [DevExpress]获取TreeListNode选中节点全部路径信息
- 提交任务的时候获取切片split信息的流程
- google map 两中方式 绘制可编辑多边形 并获取节点坐标信息
- 线程池类,线程管理器:创建线程,执行任务,销毁线程,获取线程基本信息
- c# 获取根节点的属性信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 游戏任务成就体系的实现(八):用户获取任务信息逻辑组
- No Such Object available on this agent at this OID !!获取不到节点信息
- Java如何从XML文件中获取节点信息的代码解析 Document方法
- 任务拦信息的获取
- outlook 处理请求的任务时出错,请复查下列错误表以获取详细信息。
- Android通过异步任务获取天气信息