add 测试流程
This commit is contained in:
@@ -40,6 +40,13 @@ public class ProcessApprovalRecord {
|
||||
@ApiModelProperty(value = "任务名称")
|
||||
private String taskName;
|
||||
|
||||
/**
|
||||
* 父任务id
|
||||
*/
|
||||
@TableField(value = "parent_task_id")
|
||||
@ApiModelProperty(value = "父任务id")
|
||||
private String parentTaskId;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
|
||||
@@ -12,6 +12,7 @@ import lombok.Getter;
|
||||
public enum ProcessTypeEnum {
|
||||
|
||||
|
||||
DEMO("测试流程",0, "com.jero.modules.activiti.process.demo.service.ProcessDemoService","/workCenter/StandardEntryOrChangeProcess","/workCenter/StandardEntryOrChangeProcess"),
|
||||
FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbEntryChangeServiceImpl","/workCenter/StandardEntryOrChangeProcess","/workCenter/StandardEntryOrChangeProcess"),
|
||||
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl","/workCenter/StandardConsultationProcess","/workCenter/StandardConsultationProcess"),
|
||||
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService","/workCenter/ProjectComplianceEvaluationProcess","/workCenter/ProjectComplianceEvaluationProcess"),
|
||||
|
||||
+38
-11
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.api.dto.message.HiworkTodoAdd;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.activiti.common.ActivitiCommon;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
@@ -22,12 +23,14 @@ import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.delegate.event.ActivitiEvent;
|
||||
import org.activiti.engine.delegate.event.ActivitiEventListener;
|
||||
import org.activiti.engine.delegate.event.impl.ActivitiEntityEventImpl;
|
||||
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
|
||||
import org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl;
|
||||
import org.activiti.engine.impl.persistence.entity.TaskEntity;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
@@ -84,6 +87,10 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
String processInstanceId = execution.getProcessInstanceId();
|
||||
String processDefinitionId = execution.getProcessDefinitionId();
|
||||
ExecutionEntityImpl parent = execution.getParent();
|
||||
String mainInstanceId = (String) execution.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
if (mainInstanceId != null){
|
||||
return;
|
||||
}
|
||||
String name = parent.getProcessDefinitionName();
|
||||
//新增流程总表信息(剩余的内容在启动流程时填充)
|
||||
ProcessAll processAll = new ProcessAll();
|
||||
@@ -114,20 +121,21 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class);
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
|
||||
log.info("execution.getActivityId() = " + execution.getActivityId());
|
||||
|
||||
String id = delegateTask.getId();
|
||||
String name = delegateTask.getName();
|
||||
String processInstanceId = delegateTask.getProcessInstanceId();
|
||||
Date createTime = delegateTask.getCreateTime();
|
||||
String assignee = delegateTask.getAssignee();
|
||||
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
|
||||
String processDefinitionId = delegateTask.getProcessDefinitionId();
|
||||
Map<String, Object> variables = delegateTask.getVariables();
|
||||
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + variables);
|
||||
log.info("execution.getActivityId() = " + execution.getActivityId());
|
||||
//判断是否需要创建待办
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
@@ -140,10 +148,17 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
return;
|
||||
}
|
||||
}
|
||||
String mainInstanceId = (String) variables.get(ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
String processInstanceId = mainInstanceId != null ? mainInstanceId : delegateTask.getProcessInstanceId();
|
||||
|
||||
String parentInstanceId = (String) variables.get(ActivitiCommon.PARENT_INSTANCE_ID);
|
||||
String parentTaskId = (String) variables.get(ActivitiCommon.PARENT_TASK_ID);
|
||||
//新增待审批记录
|
||||
ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord();
|
||||
approvalRecord.setTaskId(id);
|
||||
approvalRecord.setTaskName(name);
|
||||
//approvalRecord.setMainInstanceId(mainInstanceId != null ? mainInstanceId : processInstanceId);
|
||||
approvalRecord.setParentTaskId(parentTaskId);
|
||||
approvalRecord.setProcessInstanceId(processInstanceId);
|
||||
approvalRecord.setUserId(assignee);
|
||||
approvalRecord.setOriginUserId(assignee);
|
||||
@@ -273,10 +288,11 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
if (isFirstNodeTask(approvalRecord)) {
|
||||
approvalRecord.setCreateTime(DateUtil.offsetSecond(createTime, -1));
|
||||
}
|
||||
|
||||
String mainInstanceId = (String) variables.get(ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
String processInstanceId = mainInstanceId != null ? mainInstanceId : delegateTask.getProcessInstanceId();
|
||||
recordService.updateById(approvalRecord);
|
||||
//更新最新完成任务时间
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(delegateTask.getProcessInstanceId());
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
LambdaUpdateWrapper<ProcessAll> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(ProcessAll::getId,processAll.getId());
|
||||
updateWrapper.set(ProcessAll::getCompletedTaskTime,date);
|
||||
@@ -301,8 +317,9 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
|
||||
//流程信息
|
||||
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
|
||||
|
||||
String processInstanceId = execution.getProcessInstanceId();
|
||||
//根据mainInstanceId是否存在判断是否子流程
|
||||
String mainInstanceId = (String) execution.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
|
||||
String processInstanceId = mainInstanceId != null ? mainInstanceId : execution.getProcessInstanceId();
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
Date createTime = processAll.getCreateTime();
|
||||
DateTime date = DateUtil.date();
|
||||
@@ -315,6 +332,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
wrapper.set(ProcessAll::getEndTime, date);
|
||||
wrapper.set(ProcessAll::getOverTime, between.toString());
|
||||
processAllService.update(wrapper);
|
||||
//如果有父id,判断所有子流程是否都完成,如果都完成,那么父流程的任务开始流转
|
||||
String parentInstanceId = (String) execution.getVariable(ActivitiCommon.PARENT_INSTANCE_ID);
|
||||
String parentTaskId = (String) execution.getVariable(ActivitiCommon.PARENT_TASK_ID);
|
||||
if (StringUtils.isNotBlank(parentTaskId)){
|
||||
int i = processAllService.countByParentTaskId(parentTaskId);
|
||||
if (i == 0){
|
||||
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
|
||||
taskService.complete(parentTaskId);
|
||||
}
|
||||
}
|
||||
log.info("id = " + execution.getId());
|
||||
log.info("name = " + execution.getName());
|
||||
log.info("taskEntity.getActivityName() = " + execution.getActivityName());
|
||||
|
||||
+6
@@ -65,6 +65,12 @@ public class ProcessDraft implements Serializable {
|
||||
@ApiModelProperty(value = "流程类型")
|
||||
private String prcName;
|
||||
|
||||
/**
|
||||
* 主流程实例id
|
||||
*/
|
||||
@ApiModelProperty(value="主流程实例id")
|
||||
private String mainInstanceId;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
|
||||
+4
@@ -22,5 +22,9 @@ public class ProcessDefinitionKey {
|
||||
public static final String PROJECT_NOT_MET = "project-not-met";
|
||||
//项目合规评估流程
|
||||
public static final String PROJECT_STANDARD = "standard-assessment";
|
||||
//demo流程
|
||||
public static final String DEMO_MAIN = "demo_main";
|
||||
public static final String DEMO_JDR = "demo_jdr";
|
||||
public static final String DEMO_CXFF = "demo_cxff";
|
||||
|
||||
}
|
||||
|
||||
+2
@@ -20,6 +20,8 @@ public interface IProcessHandleService {
|
||||
**/
|
||||
String startProcess(ProcessInfoVO processInfoVO);
|
||||
|
||||
String startChildrenProcess(ProcessInfoVO processInfoVO);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/6 11:56
|
||||
|
||||
+43
-1
@@ -89,6 +89,10 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
String processDefinitionId = basicProcessInfoDTO.getProcessDefinitionId(); // 流程定义id
|
||||
// 根据流程定义id启动流程
|
||||
Map<String, Object> variables = setProcessVariables(userInfoMap);
|
||||
Map<String, Object> processVariables = processInfoVO.getProcessVariables();
|
||||
if (processVariables != null){
|
||||
variables.putAll(processVariables);
|
||||
}
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables);
|
||||
|
||||
String processInstanceId = processInstance.getId(); // 流程实例id
|
||||
@@ -156,6 +160,44 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
|
||||
return processInstanceId;
|
||||
}
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/2 17:04
|
||||
* @Description: 启动子流程
|
||||
**/
|
||||
@Override
|
||||
public String startChildrenProcess(ProcessInfoVO processInfoVO) {
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); // 流程信息
|
||||
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap(); // 用户变量map
|
||||
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); // 流程审批信息
|
||||
// 删除自己的草稿
|
||||
String draftId = processInfoVO.getDraftId();
|
||||
if (StringUtils.isNotBlank(draftId)) {
|
||||
processDraftService.removeById(draftId);
|
||||
}
|
||||
String processDefinitionId = basicProcessInfoDTO.getProcessDefinitionId(); // 流程定义id
|
||||
// 根据流程定义id启动流程
|
||||
Map<String, Object> variables = setProcessVariables(userInfoMap);
|
||||
Map<String, Object> processVariables = processInfoVO.getProcessVariables();
|
||||
if (processVariables != null){
|
||||
variables.putAll(processVariables);
|
||||
}
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables);
|
||||
String processInstanceId = processInstance.getId(); // 流程实例id
|
||||
// 根据流程实例id更新流程总表
|
||||
basicProcessInfoDTO.setProcessInstanceId(processInstanceId);
|
||||
updateProcessAll(processInfoVO);
|
||||
|
||||
// 保存选人信息
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
|
||||
|
||||
log.info("================================启动子流程=================================");
|
||||
log.info("流程定义id: {}", processDefinitionId);
|
||||
log.info("流程实例id: {}", processInstanceId);
|
||||
log.info("=======================================================================");
|
||||
|
||||
return processInstanceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
@@ -332,7 +374,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
ProcessDTO processDTO = new ProcessDTO();
|
||||
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
String processInstanceId = task.getProcessInstanceId();
|
||||
String processInstanceId = processApprovalRecord.getProcessInstanceId();
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||
Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
|
||||
|
||||
@@ -56,5 +56,10 @@ public class ProcessInfoVO<T> implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty(value="保存来源(1:待办 2:草稿 3:初始信息)")
|
||||
private String saveSource;
|
||||
/**
|
||||
* 流程变量
|
||||
*/
|
||||
@ApiModelProperty(value="流程变量")
|
||||
private Map<String, Object> processVariables;
|
||||
|
||||
}
|
||||
|
||||
@@ -415,4 +415,16 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
|
||||
processAllLambdaQueryWrapper.eq(ProcessAll::getProcessInstanceId, prcId);
|
||||
remove(processAllLambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询未完成的子任务数量
|
||||
* @param parentTaskId
|
||||
* @return
|
||||
*/
|
||||
public int countByParentTaskId(String parentTaskId){
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getParentTaskId,parentTaskId);
|
||||
wrapper.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.INCOMPLETE.getValue());
|
||||
return approvalRecordService.count(wrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,13 @@
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
|
||||
<bpmn:process id="demo_main" isExecutable="true">
|
||||
<bpmn:userTask id="bszgjldxf_1" name="主解读人分批下发" activiti:assignee="${mainInterpreter}">
|
||||
<bpmn:incoming>Flow_1g6zc95</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0m3rvt8</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0hbqlad</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_06h9ihd</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:startEvent id="Event_087v97x">
|
||||
<bpmn:outgoing>Flow_1g6zc95</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0xdvtnf</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1g6zc95" sourceRef="Event_087v97x" targetRef="bszgjldxf_1" />
|
||||
<bpmn:sequenceFlow id="Flow_06h9ihd" sourceRef="bszgjldxf_1" targetRef="Gateway_16tlx8e" />
|
||||
<bpmn:inclusiveGateway id="Gateway_16tlx8e">
|
||||
<bpmn:incoming>Flow_06h9ihd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0m3rvt8</bpmn:outgoing>
|
||||
@@ -23,80 +21,98 @@
|
||||
<bpmn:incoming>Flow_0wenf4n</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0aofle0</bpmn:outgoing>
|
||||
</bpmn:inclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0aofle0" sourceRef="Gateway_16gkwe2" targetRef="hz" />
|
||||
<bpmn:endEvent id="Event_1qezy8k">
|
||||
<bpmn:incoming>Flow_04r2zel</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_04r2zel" sourceRef="hz" targetRef="Event_1qezy8k" />
|
||||
<bpmn:userTask id="hz" name="主解读人汇总" activiti:assignee="${mainInterpreter}">
|
||||
<bpmn:extensionElements />
|
||||
<bpmn:incoming>Flow_0aofle0</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_04r2zel</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:task id="autoTask" name="自动处理任务">
|
||||
<bpmn:sequenceFlow id="Flow_0y71vm8" sourceRef="Gateway_16tlx8e" targetRef="autoTask_1" />
|
||||
<bpmn:sequenceFlow id="Flow_0wenf4n" sourceRef="autoTask_1" targetRef="Gateway_16gkwe2" />
|
||||
<bpmn:sequenceFlow id="Flow_06h9ihd" sourceRef="bszgjldxf_1" targetRef="Gateway_16tlx8e" />
|
||||
<bpmn:sequenceFlow id="Flow_0aofle0" sourceRef="Gateway_16gkwe2" targetRef="hz" />
|
||||
<bpmn:sequenceFlow id="Flow_0xdvtnf" sourceRef="Event_087v97x" targetRef="Activity_1yryhh6" />
|
||||
<bpmn:userTask id="Activity_1yryhh6" name="初始节点" activiti:assignee="${mainInterpreter}">
|
||||
<bpmn:incoming>Flow_0xdvtnf</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0hbqlad</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0hbqlad" sourceRef="Activity_1yryhh6" targetRef="bszgjldxf_1" />
|
||||
<bpmn:userTask id="autoTask_1" name="自动处理任务" activiti:assignee="123">
|
||||
<bpmn:extensionElements>
|
||||
<activiti:taskListener class="com.jero.modules.activiti.process.demo.listener.ProcessDemoCreateListener" event="create" />
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0y71vm8</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0wenf4n</bpmn:outgoing>
|
||||
</bpmn:task>
|
||||
<bpmn:sequenceFlow id="Flow_0y71vm8" sourceRef="Gateway_16tlx8e" targetRef="autoTask" />
|
||||
<bpmn:sequenceFlow id="Flow_0wenf4n" sourceRef="autoTask" targetRef="Gateway_16gkwe2" />
|
||||
</bpmn:userTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="demo_main">
|
||||
<bpmndi:BPMNShape id="BPMNShape_12sl6br" bpmnElement="Event_087v97x">
|
||||
<dc:Bounds x="158" y="182" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_183drsv_di" bpmnElement="Gateway_16tlx8e">
|
||||
<dc:Bounds x="405" y="175" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_046cr29_di" bpmnElement="autoTask">
|
||||
<dc:Bounds x="530" y="160" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
<dc:Bounds x="595" y="175" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0x09ket_di" bpmnElement="bszgjldxf_1">
|
||||
<dc:Bounds x="250" y="160" width="100" height="80" />
|
||||
<dc:Bounds x="440" y="160" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1uxo9oh_di" bpmnElement="hz">
|
||||
<dc:Bounds x="830" y="160" width="100" height="80" />
|
||||
<dc:Bounds x="1020" y="160" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1qezy8k_di" bpmnElement="Event_1qezy8k">
|
||||
<dc:Bounds x="1032" y="182" width="36" height="36" />
|
||||
<dc:Bounds x="1222" y="182" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1rveos3_di" bpmnElement="Gateway_16gkwe2">
|
||||
<dc:Bounds x="715" y="175" width="50" height="50" />
|
||||
<dc:Bounds x="905" y="175" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_12sl6br" bpmnElement="Event_087v97x">
|
||||
<dc:Bounds x="152" y="182" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_139i2h1_di" bpmnElement="Activity_1yryhh6">
|
||||
<dc:Bounds x="270" y="160" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_00ctp9s_di" bpmnElement="autoTask_1">
|
||||
<dc:Bounds x="720" y="160" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95">
|
||||
<di:waypoint x="194" y="200" />
|
||||
<di:waypoint x="250" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_06h9ihd_di" bpmnElement="Flow_06h9ihd">
|
||||
<di:waypoint x="350" y="200" />
|
||||
<di:waypoint x="405" y="200" />
|
||||
<di:waypoint x="540" y="200" />
|
||||
<di:waypoint x="595" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0m3rvt8_di" bpmnElement="Flow_0m3rvt8">
|
||||
<di:waypoint x="430" y="175" />
|
||||
<di:waypoint x="430" y="100" />
|
||||
<di:waypoint x="300" y="100" />
|
||||
<di:waypoint x="300" y="160" />
|
||||
<di:waypoint x="620" y="175" />
|
||||
<di:waypoint x="620" y="100" />
|
||||
<di:waypoint x="490" y="100" />
|
||||
<di:waypoint x="490" y="160" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="324" y="82" width="83" height="14" />
|
||||
<dc:Bounds x="514" y="82" width="83" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0aofle0_di" bpmnElement="Flow_0aofle0">
|
||||
<di:waypoint x="765" y="200" />
|
||||
<di:waypoint x="830" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_04r2zel_di" bpmnElement="Flow_04r2zel">
|
||||
<di:waypoint x="930" y="200" />
|
||||
<di:waypoint x="1032" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0y71vm8_di" bpmnElement="Flow_0y71vm8">
|
||||
<di:waypoint x="455" y="200" />
|
||||
<di:waypoint x="530" y="200" />
|
||||
<di:waypoint x="645" y="200" />
|
||||
<di:waypoint x="720" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0wenf4n_di" bpmnElement="Flow_0wenf4n">
|
||||
<di:waypoint x="630" y="200" />
|
||||
<di:waypoint x="715" y="200" />
|
||||
<di:waypoint x="820" y="200" />
|
||||
<di:waypoint x="905" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0hbqlad_di" bpmnElement="Flow_0hbqlad">
|
||||
<di:waypoint x="370" y="200" />
|
||||
<di:waypoint x="440" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0aofle0_di" bpmnElement="Flow_0aofle0">
|
||||
<di:waypoint x="955" y="200" />
|
||||
<di:waypoint x="1020" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_04r2zel_di" bpmnElement="Flow_04r2zel">
|
||||
<di:waypoint x="1120" y="200" />
|
||||
<di:waypoint x="1222" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0xdvtnf_di" bpmnElement="Flow_0xdvtnf">
|
||||
<di:waypoint x="188" y="200" />
|
||||
<di:waypoint x="270" y="200" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
<bpmn:outgoing>Flow_0bf22p9</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:userTask id="jdrtxjdxx" name="解读人填写解读信息" activiti:assignee="${interpreter}">
|
||||
<bpmn:extensionElements>
|
||||
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:extensionElements />
|
||||
<bpmn:incoming>Flow_0bf22p9</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0l0nol7</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
@@ -23,17 +21,24 @@
|
||||
<bpmn:outgoing>Flow_15yh4zu</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0l0nol7" sourceRef="jdrtxjdxx" targetRef="Gateway_0i2ua7z" />
|
||||
<bpmn:sequenceFlow id="Flow_1l70pxs" sourceRef="Gateway_0i2ua7z" targetRef="zjdrsh" />
|
||||
<bpmn:task id="autoTask" name="自动处理任务">
|
||||
<bpmn:incoming>Flow_15yh4zu</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1u81jlq</bpmn:outgoing>
|
||||
</bpmn:task>
|
||||
<bpmn:sequenceFlow id="Flow_15yh4zu" sourceRef="Gateway_0i2ua7z" targetRef="autoTask" />
|
||||
<bpmn:sequenceFlow id="Flow_1u81jlq" sourceRef="autoTask" targetRef="Event_16oojsf" />
|
||||
<bpmn:sequenceFlow id="Flow_1l70pxs" sourceRef="Gateway_0i2ua7z" targetRef="zjdrsh">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_15yh4zu" sourceRef="Gateway_0i2ua7z" targetRef="autoTask_2">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1u81jlq" sourceRef="autoTask_2" targetRef="Event_16oojsf" />
|
||||
<bpmn:userTask id="zjdrsh" name="主解读人审核" activiti:assignee="${mainInterpreter}">
|
||||
<bpmn:incoming>Flow_1l70pxs</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_14abzg6</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="autoTask_2" name="自动处理任务" activiti:assignee="123">
|
||||
<bpmn:extensionElements>
|
||||
<activiti:taskListener class="com.jero.modules.activiti.process.demo.listener.ProcessDemoCreateListener" event="create" />
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_15yh4zu</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1u81jlq</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="demo_jdr">
|
||||
@@ -50,14 +55,13 @@
|
||||
<bpmndi:BPMNShape id="Gateway_0i2ua7z_di" bpmnElement="Gateway_0i2ua7z" isMarkerVisible="true">
|
||||
<dc:Bounds x="425" y="92" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_18xeyda_di" bpmnElement="autoTask">
|
||||
<dc:Bounds x="520" y="190" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0jo12jv_di" bpmnElement="zjdrsh">
|
||||
<dc:Bounds x="520" y="77" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_149lmej_di" bpmnElement="autoTask_2">
|
||||
<dc:Bounds x="520" y="190" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_0bf22p9_di" bpmnElement="Flow_0bf22p9">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="280" y="117" />
|
||||
|
||||
@@ -21,18 +21,21 @@
|
||||
<bpmn:endEvent id="Event_1qezy8k">
|
||||
<bpmn:incoming>Flow_0aofle0</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:task id="autoTask" name="自动处理任务">
|
||||
<bpmn:incoming>Flow_0y71vm8</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0wenf4n</bpmn:outgoing>
|
||||
</bpmn:task>
|
||||
<bpmn:sequenceFlow id="Flow_1g6zc95" sourceRef="Event_087v97x" targetRef="bszgjldxf_1" />
|
||||
<bpmn:sequenceFlow id="Flow_0m3rvt8" name="未分配数量大于0" sourceRef="Gateway_16tlx8e" targetRef="bszgjldxf_1">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${unallocatedQuantity > 0}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_06h9ihd" sourceRef="bszgjldxf_1" targetRef="Gateway_16tlx8e" />
|
||||
<bpmn:sequenceFlow id="Flow_0y71vm8" sourceRef="Gateway_16tlx8e" targetRef="autoTask" />
|
||||
<bpmn:sequenceFlow id="Flow_0wenf4n" sourceRef="autoTask" targetRef="Gateway_16gkwe2" />
|
||||
<bpmn:sequenceFlow id="Flow_0y71vm8" sourceRef="Gateway_16tlx8e" targetRef="autoTask_3" />
|
||||
<bpmn:sequenceFlow id="Flow_0wenf4n" sourceRef="autoTask_3" targetRef="Gateway_16gkwe2" />
|
||||
<bpmn:sequenceFlow id="Flow_0aofle0" sourceRef="Gateway_16gkwe2" targetRef="Event_1qezy8k" />
|
||||
<bpmn:userTask id="autoTask_3" name="自动处理任务" activiti:assignee="123">
|
||||
<bpmn:extensionElements>
|
||||
<activiti:taskListener class="com.jero.modules.activiti.process.demo.listener.ProcessDemoCreateListener" event="create" />
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0y71vm8</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0wenf4n</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="demo_cxff">
|
||||
@@ -43,10 +46,6 @@
|
||||
<bpmndi:BPMNShape id="BPMNShape_12sl6br" bpmnElement="Event_087v97x">
|
||||
<dc:Bounds x="170" y="182" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_046cr29_di" bpmnElement="autoTask">
|
||||
<dc:Bounds x="542" y="160" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_183drsv_di" bpmnElement="Gateway_16tlx8e">
|
||||
<dc:Bounds x="425" y="175" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
@@ -56,6 +55,9 @@
|
||||
<bpmndi:BPMNShape id="Event_1qezy8k_di" bpmnElement="Event_1qezy8k">
|
||||
<dc:Bounds x="812" y="182" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_080g1p0_di" bpmnElement="autoTask_3">
|
||||
<dc:Bounds x="542" y="160" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95">
|
||||
<di:waypoint x="206" y="200" />
|
||||
<di:waypoint x="260" y="200" />
|
||||
|
||||
Reference in New Issue
Block a user