activiti入门系列文章10

您所在的位置:网站首页 activiti启动流程并完成第一个任务 activiti入门系列文章10

activiti入门系列文章10

2023-09-15 06:29| 来源: 网络整理| 查看: 265

在Activiti流程设计中,为了使流程展示的更加完善,经常会将流程图的第一步任务设计成“提交任务”,例如:

 申请人启动流程后,流程就会到达“提交任务”,而“提交任务”的办理人还是该申请人,这个时候就需要通过代码跳过(自动处理)该任务节点,让流程流转到下一任务节点。有三种方法可以处理这个问题。

第一种方式:在启动流程后,获取当前流程实例申请人的待办任务,并执行当前流程实例的下一步任务

Task task = null; TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned(empId).active(); List todoList = query.list();//获取申请人的待办任务列表 for (Task tmp : todoList) { if(tmp.getProcessInstanceId().equals(processInstance.getId())){ task = tmp;//获取当前流程实例,当前申请人的待办任务 break; } } variables.put(ProcessConstants.KEY_DEPT_LEADER_ID, employeeId);//设置下一步办理人的流程变量 taskService.complete(task.getId(),variables);

第二种方式:使用监听器处理(activiti5推荐)

spring配置文件

... ...

java:

public class ProxyUserTaskBpmnParseHandler implements BpmnParseHandler { private static Logger logger = LoggerFactory.getLogger(ProxyUserTaskBpmnParseHandler.class); private String taskListenerId; private boolean useDefaultUserTaskParser; public void parse(BpmnParse bpmnParse, BaseElement baseElement) { if (!(baseElement instanceof UserTask)) { return; } if (useDefaultUserTaskParser) { new UserTaskParseHandler().parse(bpmnParse, baseElement); } UserTask userTask = (UserTask) baseElement; logger.info("bpmnParse : {}, userTask : {}", bpmnParse, userTask); TaskDefinition taskDefinition = (TaskDefinition) bpmnParse.getCurrentActivity().getProperty(UserTaskParseHandler.PROPERTY_TASK_DEFINITION); this.configEvent(taskDefinition, bpmnParse, TaskListener.EVENTNAME_CREATE); this.configEvent(taskDefinition, bpmnParse, TaskListener.EVENTNAME_ASSIGNMENT); this.configEvent(taskDefinition, bpmnParse, TaskListener.EVENTNAME_COMPLETE); this.configEvent(taskDefinition, bpmnParse, TaskListener.EVENTNAME_DELETE); } public void configEvent(TaskDefinition taskDefinition, BpmnParse bpmnParse, String eventName) { ActivitiListener activitiListener = new ActivitiListener(); activitiListener.setEvent(eventName); activitiListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); activitiListener.setImplementation("#{" + taskListenerId + "}"); taskDefinition.addTaskListener(eventName, bpmnParse.getListenerFactory().createDelegateExpressionTaskListener(activitiListener)); } public Collection


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3