update 流程处理
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ alter table act_ru_deadletter_job comment = '运行时死信作业表';
|
||||
alter table act_ru_event_subscr comment = '运行时事件表';
|
||||
alter table act_ru_execution comment = '运行时流程执行实例表';
|
||||
alter table act_ru_identitylink comment = '运行时用户关系信息,存储任务节点与参与者的相关信息表';
|
||||
alter table act_ru_integration comment = '运行时积分表';
|
||||
-- alter table act_ru_integration comment = '运行时积分表';
|
||||
alter table act_ru_job comment = '运行时作业表';
|
||||
alter table act_ru_suspended_job comment = '运行时挂起的定时作业表';
|
||||
alter table act_ru_task comment = '运行时任务表';
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
DROP TABLE IF EXISTS laws_process_node_origin;
|
||||
create table laws_process_node_origin
|
||||
(
|
||||
id varchar(36) not null primary key comment '主键id',
|
||||
process_definition_id varchar(64) comment '流程定义id',
|
||||
node_name varchar(50) comment '节点名称',
|
||||
node_type varchar(50) comment '节点类型',
|
||||
xml_node_id varchar(50) comment 'xml节点Id',
|
||||
xml_source_ref varchar(50) comment 'xml来源节点id',
|
||||
xml_target_ref varchar(50) comment 'xml目标节点id',
|
||||
is_approval_node tinyint(4) comment '是否审批节点',
|
||||
is_can_deleted tinyint(4) comment '是否可删除',
|
||||
sort tinyint(4) comment '排序',
|
||||
create_by varchar(36) comment '创建人',
|
||||
create_time datetime comment '创建时间',
|
||||
update_by varchar(36) comment '更新人',
|
||||
update_time datetime comment '更新时间',
|
||||
sys_code varchar(64) comment '所属部门'
|
||||
) comment = '流程节点_来源';
|
||||
|
||||
create table laws_process_node
|
||||
(
|
||||
id varchar(36) not null primary key comment '主键id',
|
||||
create_by varchar(36) comment '创建人',
|
||||
create_time datetime(0) comment '创建时间',
|
||||
update_by varchar(36) comment '更新人',
|
||||
update_time datetime(0) comment '更新时间',
|
||||
sys_code varchar(64) comment '所属部门',
|
||||
replaced varchar(50) comment '代替标准',
|
||||
replaced_by varchar(50) comment '被代替标准',
|
||||
type int(1) comment '类型(1-代替、2-引用)'
|
||||
) comment = '流程节点';
|
||||
|
||||
create table laws_process_node_link
|
||||
(
|
||||
id varchar(36) not null primary key comment '主键id',
|
||||
process_node_id varchar(36) comment '流程节点id',
|
||||
type int(1) comment '类型(1-用户、2-部门)',
|
||||
user_depart_id varchar(36) comment '用户id,部门id)'
|
||||
) comment = '流程节点';
|
||||
@@ -1,34 +1,56 @@
|
||||
package com.jero.modules.activiti.config;
|
||||
|
||||
import com.jero.modules.activiti.service.impl.image.ICustomProcessDiagramGenerator;
|
||||
import org.activiti.engine.ProcessEngineConfiguration;
|
||||
import org.activiti.engine.impl.form.DoubleFormType;
|
||||
import org.activiti.engine.impl.history.HistoryLevel;
|
||||
import org.activiti.spring.SpringProcessEngineConfiguration;
|
||||
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-05 17:53
|
||||
*/
|
||||
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
|
||||
@Autowired
|
||||
@Configuration
|
||||
public class ActivitiConfig {
|
||||
@Resource
|
||||
private ICustomProcessDiagramGenerator customProcessDiagramGenerator;
|
||||
@Autowired
|
||||
private DoubleFormType doubleFormType;
|
||||
private DataSource dataSource;
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
/**
|
||||
* 解決工作流生成图片乱码问题
|
||||
* 初始化配置
|
||||
*
|
||||
* @param processEngineConfiguration
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
|
||||
int[] result = {};
|
||||
processEngineConfiguration.setActivityFontName("宋体");
|
||||
processEngineConfiguration.setAnnotationFontName("宋体");
|
||||
processEngineConfiguration.setLabelFontName("宋体");
|
||||
processEngineConfiguration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
||||
@Bean
|
||||
public SpringProcessEngineConfiguration processEngineConfiguration() {
|
||||
SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
|
||||
// 执行工作流对应的数据源
|
||||
configuration.setDataSource(dataSource);
|
||||
// 是否自动创建流程引擎表
|
||||
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
|
||||
configuration.setAsyncExecutorActivate(false);
|
||||
// 流程历史等级
|
||||
configuration.setHistoryLevel(HistoryLevel.FULL);
|
||||
// 流程图字体
|
||||
configuration.setActivityFontName("宋体");
|
||||
configuration.setAnnotationFontName("宋体");
|
||||
configuration.setLabelFontName("宋体");
|
||||
configuration.setTransactionManager(transactionManager);
|
||||
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
||||
return configuration;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,10 +10,7 @@ import io.swagger.annotations.ApiParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.BpmnModel;
|
||||
import org.activiti.bpmn.model.FlowElement;
|
||||
import org.activiti.bpmn.model.UserTask;
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.repository.Deployment;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.activiti.engine.repository.ProcessDefinitionQuery;
|
||||
@@ -23,8 +20,6 @@ import org.activiti.engine.task.TaskQuery;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -73,9 +68,11 @@ public class AController {
|
||||
.key(name)
|
||||
.name(name)
|
||||
.deploy();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 4、输出部署信息
|
||||
Map<String, String> map = new HashMap<>();
|
||||
|
||||
@@ -110,22 +107,28 @@ public class AController {
|
||||
processDefinitionQuery.processDefinitionNameLike(processDefinitionName);
|
||||
}
|
||||
|
||||
List<ProcessDefinition> processDefinitionList = processDefinitionQuery.list();
|
||||
|
||||
for (ProcessDefinition processDefinition : processDefinitionList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
String deploymentId = processDefinition.getDeploymentId();
|
||||
Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
|
||||
map.put("processDefinition", BeanUtil.beanToMap(processDefinition));
|
||||
map.put("deployment", deployment.toString());
|
||||
allList.add(map);
|
||||
List<ProcessDefinition> processDefinitionList = processDefinitionQuery
|
||||
.orderByProcessDefinitionVersion().asc()
|
||||
.list();
|
||||
//定义有序map,相同的key,添加map值后,后面的会覆盖前面的值
|
||||
Map<String,ProcessDefinition> processDefinitionMap = new LinkedHashMap<>();
|
||||
//遍历相同的key,替换最新的值
|
||||
for(ProcessDefinition pd : processDefinitionList){
|
||||
processDefinitionMap.put(pd.getKey(), pd);
|
||||
}
|
||||
for (ProcessDefinition processDefinition : processDefinitionMap.values()) {
|
||||
//String deploymentId = processDefinition.getDeploymentId();
|
||||
//Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
|
||||
//map.put("processDefinition", BeanUtil.beanToMap(processDefinition));
|
||||
allList.add(BeanUtil.beanToMap(processDefinition));
|
||||
}
|
||||
return Result.OK(allList);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/start")
|
||||
public Result<Map<String, String>> start(@RequestParam(value = "key", required = false) String key) {
|
||||
@PostMapping("/start")
|
||||
public Result<Map<String, String>> start(@RequestBody Map<String,Object> map) {
|
||||
String key = map.get("key").toString();
|
||||
// 1、创建ProcessEngine
|
||||
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
||||
// 2、获取RunTimeService
|
||||
@@ -135,17 +138,17 @@ public class AController {
|
||||
|
||||
// 3、根据流程定义Id启动流程
|
||||
ProcessInstance processInstance = runtimeService
|
||||
.startProcessInstanceByKey(key, vars);
|
||||
.startProcessInstanceByKey(key, map);
|
||||
|
||||
// 输出内容
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("流程Id:", processInstance.getDeploymentId());
|
||||
map.put("流程定义id:", processInstance.getProcessDefinitionId());
|
||||
map.put("流程实例id:", processInstance.getId());
|
||||
map.put("当前活动Id:", processInstance.getActivityId());
|
||||
Map<String, String> map1 = new HashMap<>();
|
||||
map1.put("流程Id:", processInstance.getDeploymentId());
|
||||
map1.put("流程定义id:", processInstance.getProcessDefinitionId());
|
||||
map1.put("流程实例id:", processInstance.getId());
|
||||
map1.put("当前活动Id:", processInstance.getActivityId());
|
||||
|
||||
|
||||
return Result.OK(map);
|
||||
return Result.OK(map1);
|
||||
}
|
||||
|
||||
@GetMapping("/getTaskList")
|
||||
@@ -172,17 +175,18 @@ public class AController {
|
||||
return Result.OK(resut);
|
||||
}
|
||||
|
||||
@GetMapping("/complete")
|
||||
public Result<Object> complete(@RequestParam(value = "taskId") String taskId) {
|
||||
Map<String, Object> vars = new HashMap<>();
|
||||
List<String> otherDrafterList = new ArrayList<>();
|
||||
otherDrafterList.add("zhangsan");
|
||||
otherDrafterList.add("lisi");
|
||||
otherDrafterList.add("wangwu");
|
||||
vars.put("leaderList", otherDrafterList);
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("status", 2);
|
||||
taskService.complete(taskId, map, vars);
|
||||
@PostMapping("/complete")
|
||||
public Result<Object> complete(@RequestBody Map<String,Object> map) {
|
||||
String taskId = map.get("taskId").toString();
|
||||
//Map<String, Object> vars = new HashMap<>();
|
||||
//List<String> otherDrafterList = new ArrayList<>();
|
||||
//otherDrafterList.add("zhangsan");
|
||||
//otherDrafterList.add("lisi");
|
||||
//otherDrafterList.add("wangwu");
|
||||
//vars.put("leaderList", otherDrafterList);
|
||||
//Map<String, Object> map = new HashMap<>();
|
||||
//map.put("status", 2);
|
||||
taskService.complete(taskId, map);
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@@ -212,6 +216,12 @@ public class AController {
|
||||
return processService.addTask(taskId, assignee);
|
||||
}
|
||||
|
||||
@GetMapping("/getNodeList")
|
||||
public Object getNodeList(String processDefinitionId) {
|
||||
processService.getNodeList(processDefinitionId);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@GetMapping(value = "/readResource")
|
||||
@ApiOperation(value = "获取实时流程图", notes = "获取实时流程图,输出跟踪流程信息")
|
||||
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
package com.jero.modules.activiti.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*流程节点_来源
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-25 15:17
|
||||
*/
|
||||
@ApiModel(description = "流程节点_来源")
|
||||
@Data
|
||||
@TableName(value = "laws_process_node_origin")
|
||||
public class LawsProcessNodeOrigin {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 流程定义id
|
||||
*/
|
||||
@TableField(value = "process_definition_id")
|
||||
@ApiModelProperty(value = "流程定义id")
|
||||
private String processDefinitionId;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
@TableField(value = "node_name")
|
||||
@ApiModelProperty(value = "节点名称")
|
||||
private String nodeName;
|
||||
|
||||
/**
|
||||
* 节点类型
|
||||
*/
|
||||
@TableField(value = "node_type")
|
||||
@ApiModelProperty(value = "节点类型")
|
||||
private String nodeType;
|
||||
|
||||
/**
|
||||
* xml节点Id
|
||||
*/
|
||||
@TableField(value = "xml_node_id")
|
||||
@ApiModelProperty(value = "xml节点Id")
|
||||
private String xmlNodeId;
|
||||
|
||||
/**
|
||||
* xml来源节点id
|
||||
*/
|
||||
@TableField(value = "xml_source_ref")
|
||||
@ApiModelProperty(value = "xml来源节点id")
|
||||
private String xmlSourceRef;
|
||||
|
||||
/**
|
||||
* xml目标节点id
|
||||
*/
|
||||
@TableField(value = "xml_target_ref")
|
||||
@ApiModelProperty(value = "xml目标节点id")
|
||||
private String xmlTargetRef;
|
||||
|
||||
/**
|
||||
* 是否审批节点
|
||||
*/
|
||||
@TableField(value = "is_approval_node")
|
||||
@ApiModelProperty(value = "是否审批节点")
|
||||
private Integer isApprovalNode;
|
||||
|
||||
/**
|
||||
* 是否可删除
|
||||
*/
|
||||
@TableField(value = "is_can_deleted")
|
||||
@ApiModelProperty(value = "是否可删除")
|
||||
private Integer isCanDeleted;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@TableField(value = "sort")
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(value = "create_by")
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(value = "create_time")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
@TableField(value = "update_by")
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(value = "update_time")
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 所属部门
|
||||
*/
|
||||
@TableField(value = "sys_code")
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysCode;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.LawsProcessNodeOrigin;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-25 15:02
|
||||
*/
|
||||
public interface LawsProcessNodeOriginMapper extends BaseMapper<LawsProcessNodeOrigin> {
|
||||
int insertList(@Param("list")List<LawsProcessNodeOrigin> list);
|
||||
|
||||
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.LawsProcessNodeOriginMapper">
|
||||
<sql id="Base_Column_List">
|
||||
id,
|
||||
process_definition_id,
|
||||
node_name,
|
||||
node_type,
|
||||
xml_node_id,
|
||||
xml_source_ref,
|
||||
xml_target_ref,
|
||||
is_approval_node,
|
||||
is_can_deleted,
|
||||
sort,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
sys_code
|
||||
</sql>
|
||||
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.entity.LawsProcessNodeOrigin">
|
||||
<result column="id" property="id"/>
|
||||
<result column="process_definition_id" property="processDefinitionId"/>
|
||||
<result column="node_name" property="nodeName"/>
|
||||
<result column="node_type" property="nodeType"/>
|
||||
<result column="xml_node_id" property="xmlNodeId"/>
|
||||
<result column="xml_source_ref" property="xmlSourceRef"/>
|
||||
<result column="xml_target_ref" property="xmlTargetRef"/>
|
||||
<result column="is_approval_node" property="isApprovalNode"/>
|
||||
<result column="is_can_deleted" property="isCanDeleted"/>
|
||||
<result column="sort" property="sort"/>
|
||||
<result column="create_by" property="createBy"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_by" property="updateBy"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="sys_code" property="sysCode"/>
|
||||
</resultMap>
|
||||
|
||||
<!--auto generated by MybatisCodeHelper on 2023-09-25-->
|
||||
<insert id="insertList">
|
||||
INSERT INTO laws_process_node_origin(
|
||||
id,
|
||||
process_definition_id,
|
||||
node_name,
|
||||
node_type,
|
||||
xml_node_id,
|
||||
xml_source_ref,
|
||||
xml_target_ref,
|
||||
is_approval_node,
|
||||
is_can_deleted,
|
||||
sort,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
sys_code
|
||||
)VALUES
|
||||
<foreach collection="list" item="element" index="index" separator=",">
|
||||
(
|
||||
#{element.id},
|
||||
#{element.processDefinitionId},
|
||||
#{element.nodeName},
|
||||
#{element.nodeType},
|
||||
#{element.xmlNodeId},
|
||||
#{element.xmlSourceRef},
|
||||
#{element.xmlTargetRef},
|
||||
#{element.isApprovalNode},
|
||||
#{element.isCanDeleted},
|
||||
#{element.sort},
|
||||
#{element.createBy},
|
||||
#{element.createTime},
|
||||
#{element.updateBy},
|
||||
#{element.updateTime},
|
||||
#{element.sysCode}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -10,4 +10,6 @@ public interface ProcessService {
|
||||
Object addTask(String taskId, String assignee);
|
||||
|
||||
void readResource(String pProcessInstanceId, HttpServletResponse response) throws Exception;
|
||||
|
||||
void getNodeList(String processDefinitionId);
|
||||
}
|
||||
|
||||
+193
-31
@@ -1,9 +1,17 @@
|
||||
package com.jero.modules.activiti.service.impl;
|
||||
import java.util.Date;
|
||||
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.config.WorkflowConstants;
|
||||
import com.jero.modules.activiti.entity.ActGeBytearray;
|
||||
import com.jero.modules.activiti.entity.LawsProcessNodeOrigin;
|
||||
import com.jero.modules.activiti.mapper.ActGeBytearrayMapper;
|
||||
import com.jero.modules.activiti.mapper.LawsProcessNodeOriginMapper;
|
||||
import com.jero.modules.activiti.service.ProcessService;
|
||||
import com.jero.modules.activiti.service.impl.image.ICustomProcessDiagramGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -61,28 +69,38 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
private ManagementService managementService;
|
||||
@Resource
|
||||
private ActGeBytearrayMapper actGeBytearrayMapper;
|
||||
|
||||
@Resource
|
||||
private LawsProcessNodeOriginMapper processNodeOriginMapper;
|
||||
@Override
|
||||
public Object addTask(String taskId, String assignee) {
|
||||
// 1、创建ProcessEngine
|
||||
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
|
||||
final TaskService taskService = processEngine.getTaskService();
|
||||
final RepositoryService repositoryService = processEngine.getRepositoryService();
|
||||
Task userTask = taskService.createTaskQuery()
|
||||
.taskId(taskId)
|
||||
// .taskAssignee(assignee)
|
||||
.singleResult();
|
||||
|
||||
final BpmnModel bpmnModel = repositoryService.getBpmnModel(userTask.getProcessDefinitionId());
|
||||
public Object addTask(String processDefinitionId, String assignee) {
|
||||
final BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
|
||||
Process process = bpmnModel.getMainProcess();
|
||||
process.removeFlowElement("add");//移除最终节点连线
|
||||
process.removeFlowElement("sequenceFlow-5d7e3faa-6c00-4010-8485-fe79c286448b");//移除最终节点连线
|
||||
process.removeFlowElement("sequenceFlow-aba52ded-835d-4863-b303-1b9771ae93cf");//移除最终节点连线
|
||||
process.addFlowElement(createSequenceFlow("Activity_0m576ex", "Event_17e1txx"));//新增节点 于原节点连线
|
||||
/*process.removeFlowElement("Flow_0stcykp");//移除最终节点连线
|
||||
process.addFlowElement(createUserTask("add", "First task", "fred"));//新增节点
|
||||
process.addFlowElement(createSequenceFlow("Activity_0m576ex", "add"));//新增节点 于原节点连线
|
||||
process.addFlowElement(createSequenceFlow("add", "Event_17e1txx"));//新增节点 于原节点连线*/
|
||||
Collection<FlowElement> flowElements = process.getFlowElements();
|
||||
for (FlowElement flowElement : flowElements) {
|
||||
if (flowElement instanceof UserTask) {
|
||||
UserTask userTask = (UserTask)flowElement;
|
||||
System.out.println(userTask.getId() + ":" + userTask.getName());
|
||||
}
|
||||
if (flowElement instanceof SequenceFlow) {
|
||||
SequenceFlow sequenceFlow = (SequenceFlow)flowElement;
|
||||
System.out.println(sequenceFlow.getId() + ":" + sequenceFlow.getName());
|
||||
}
|
||||
if (flowElement instanceof ExclusiveGateway) {
|
||||
ExclusiveGateway gateway = (ExclusiveGateway)flowElement;
|
||||
System.out.println(gateway.getId() + ":" + gateway.getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//process.removeFlowElement("add");//移除最终节点连线
|
||||
//process.removeFlowElement("sequenceFlow-5d7e3faa-6c00-4010-8485-fe79c286448b");//移除最终节点连线
|
||||
//process.removeFlowElement("sequenceFlow-aba52ded-835d-4863-b303-1b9771ae93cf");//移除最终节点连线
|
||||
//process.addFlowElement(createSequenceFlow("Activity_0m576ex", "Event_17e1txx"));//新增节点 于原节点连线
|
||||
//process.removeFlowElement("Flow_0stcykp");//移除最终节点连线
|
||||
//process.addFlowElement(createUserTask("First task", "fred"));//新增节点
|
||||
//process.addFlowElement(createSequenceFlow("Activity_0m576ex", "add"));//新增节点 于原节点连线
|
||||
//process.addFlowElement(createSequenceFlow("add", "Event_17e1txx"));//新增节点 于原节点连线
|
||||
//重新绘画图形
|
||||
BpmnAutoLayout bpmnAutoLayout = new BpmnAutoLayout(bpmnModel);
|
||||
bpmnAutoLayout.execute();
|
||||
@@ -92,22 +110,21 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
//清除缓存
|
||||
ProcessEngineConfigurationImpl configuration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
|
||||
DeploymentManager deploymentManager = configuration.getDeploymentManager();
|
||||
deploymentManager.getProcessDefinitionCache().remove(userTask.getProcessDefinitionId());
|
||||
deploymentManager.getProcessDefinitionCache().remove(processDefinitionId);
|
||||
|
||||
// String xmlContenxt = new String(bytes);
|
||||
List<ActGeBytearray> actGeBytearrayList = actGeBytearrayMapper.getActGeBytearrayList(userTask.getProcessDefinitionId());
|
||||
actGeBytearrayList = actGeBytearrayList.stream().filter(item -> item.getName().endsWith(".bpmn")).peek(item -> {
|
||||
item.setBytes(bytes);
|
||||
}).collect(Collectors.toList());
|
||||
if (ObjectUtils.isNotEmpty(actGeBytearrayList)) {
|
||||
actGeBytearrayMapper.updateById(actGeBytearrayList.get(0));
|
||||
}
|
||||
// List<ActGeBytearray> actGeBytearrayList = actGeBytearrayMapper.getActGeBytearrayList(userTask.getProcessDefinitionId());
|
||||
// actGeBytearrayList = actGeBytearrayList.stream().filter(item -> item.getName().endsWith(".bpmn")).peek(item -> {
|
||||
// item.setBytes(bytes);
|
||||
// }).collect(Collectors.toList());
|
||||
// if (ObjectUtils.isNotEmpty(actGeBytearrayList)) {
|
||||
// actGeBytearrayMapper.updateById(actGeBytearrayList.get(0));
|
||||
// }
|
||||
return null;
|
||||
}
|
||||
protected static UserTask createUserTask(String id, String name, String assignee) {
|
||||
protected static UserTask createUserTask(String name, String assignee) {
|
||||
UserTask userTask = new UserTask();
|
||||
userTask.setName(name);
|
||||
userTask.setId(id);
|
||||
userTask.setId("Activity_"+UUID.randomUUID());
|
||||
userTask.setAssignee(assignee);
|
||||
return userTask;
|
||||
}
|
||||
@@ -116,9 +133,18 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
SequenceFlow flow = new SequenceFlow();
|
||||
flow.setSourceRef(from);
|
||||
flow.setTargetRef(to);
|
||||
flow.setId("Flow_"+ UUID.randomUUID());
|
||||
return flow;
|
||||
}
|
||||
|
||||
protected static ExclusiveGateway createGateway(List<SequenceFlow> incomingFlows, List<SequenceFlow> outgoingFlows) {
|
||||
ExclusiveGateway gateway = new ExclusiveGateway();
|
||||
gateway.setId("Gateway_"+ UUID.randomUUID());
|
||||
gateway.setIncomingFlows(incomingFlows);
|
||||
gateway.setOutgoingFlows(outgoingFlows);
|
||||
return gateway;
|
||||
}
|
||||
|
||||
private List<String> getHighLightedFlows(BpmnModel bpmnModel, ProcessDefinitionEntity processDefinitionEntity, List<HistoricActivityInstance> historicActivityInstances) {
|
||||
// 高亮流程已发生流转的线id集合
|
||||
List<String> highLightedFlowIds = new ArrayList<>();
|
||||
@@ -228,6 +254,142 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getNodeList(String processDefinitionId) {
|
||||
final BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
|
||||
Process process = bpmnModel.getMainProcess();
|
||||
Collection<FlowElement> flowElements = process.getFlowElements();
|
||||
List<LawsProcessNodeOrigin> processNodeOriginList = new ArrayList<>();
|
||||
int sort = 1;
|
||||
List<String> gatewayIdList = new ArrayList<>();
|
||||
processNodeOriginList = handlerLawsProcessNodeOrigin(flowElements,sort,gatewayIdList,processDefinitionId);
|
||||
//for (FlowElement flowElement : flowElements) {
|
||||
// LawsProcessNodeOrigin processNodeOrigin = new LawsProcessNodeOrigin();
|
||||
//
|
||||
// String nodeName = processNodeOrigin.getNodeName();
|
||||
// String nodeType = processNodeOrigin.getNodeType();
|
||||
// String xmlNodeId = processNodeOrigin.getXmlNodeId();
|
||||
// String xmlSourceRef = processNodeOrigin.getXmlSourceRef();
|
||||
// String xmlTargetRef = processNodeOrigin.getXmlTargetRef();
|
||||
// if (flowElement instanceof UserTask) {
|
||||
// UserTask userTask = (UserTask)flowElement;
|
||||
// nodeType = "userTask";
|
||||
// nodeName = userTask.getName();
|
||||
// xmlNodeId = userTask.getId();
|
||||
// }else
|
||||
// if (flowElement instanceof SequenceFlow) {
|
||||
// SequenceFlow sequenceFlow = (SequenceFlow)flowElement;
|
||||
// nodeType = "sequenceFlow";
|
||||
// nodeName = sequenceFlow.getName();
|
||||
// xmlNodeId = sequenceFlow.getId();
|
||||
// xmlSourceRef = sequenceFlow.getSourceRef();
|
||||
// xmlTargetRef = sequenceFlow.getTargetRef();
|
||||
// }else
|
||||
// if (flowElement instanceof ExclusiveGateway) {
|
||||
// ExclusiveGateway gateway = (ExclusiveGateway)flowElement;
|
||||
// nodeType = "gateway";
|
||||
// nodeName = gateway.getName();
|
||||
// xmlNodeId = gateway.getId();
|
||||
// gatewayIdList.add(xmlNodeId);
|
||||
// }else
|
||||
// if (flowElement instanceof SubProcess) {
|
||||
// SubProcess subProcess = (SubProcess)flowElement;
|
||||
// Collection<FlowElement> flowElements1 = subProcess.getFlowElements();
|
||||
//
|
||||
// nodeType = "subProcess";
|
||||
// nodeName = subProcess.getName();
|
||||
// xmlNodeId = subProcess.getId();
|
||||
// gatewayIdList.add(xmlNodeId);
|
||||
// }else {
|
||||
// continue;
|
||||
// }
|
||||
// processNodeOrigin.setProcessDefinitionId(processDefinitionId);
|
||||
// processNodeOrigin.setNodeName(nodeName);
|
||||
// processNodeOrigin.setNodeType(nodeType);
|
||||
// processNodeOrigin.setXmlNodeId(xmlNodeId);
|
||||
// processNodeOrigin.setXmlSourceRef(xmlSourceRef);
|
||||
// processNodeOrigin.setXmlTargetRef(xmlTargetRef);
|
||||
// processNodeOrigin.setSort(sort++);
|
||||
// processNodeOrigin.setIsApprovalNode(YesOrNoEnum.NO.getInteger());
|
||||
// processNodeOrigin.setIsCanDeleted(YesOrNoEnum.NO.getInteger());
|
||||
// processNodeOriginList.add(processNodeOrigin);
|
||||
//}
|
||||
List<String> approvalNodeIdList = processNodeOriginList.stream()
|
||||
.filter(item -> gatewayIdList.contains(item.getXmlTargetRef()))
|
||||
.map(LawsProcessNodeOrigin::getXmlSourceRef)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (LawsProcessNodeOrigin processNodeOrigin : processNodeOriginList) {
|
||||
String xmlNodeId = processNodeOrigin.getXmlNodeId();
|
||||
if (approvalNodeIdList.contains(xmlNodeId) ){
|
||||
processNodeOrigin.setIsApprovalNode(YesOrNoEnum.YES.getInteger());
|
||||
}
|
||||
}
|
||||
processNodeOriginMapper.insertList(processNodeOriginList);
|
||||
}
|
||||
|
||||
private List<LawsProcessNodeOrigin> handlerLawsProcessNodeOrigin(
|
||||
Collection<FlowElement> flowElements,
|
||||
int sort,
|
||||
List<String> gatewayIdList,
|
||||
String processDefinitionId) {
|
||||
List<LawsProcessNodeOrigin> processNodeOriginList = new ArrayList<>();
|
||||
for (FlowElement flowElement : flowElements) {
|
||||
LawsProcessNodeOrigin processNodeOrigin = new LawsProcessNodeOrigin();
|
||||
|
||||
String nodeName = processNodeOrigin.getNodeName();
|
||||
String nodeType = processNodeOrigin.getNodeType();
|
||||
String xmlNodeId = processNodeOrigin.getXmlNodeId();
|
||||
String xmlSourceRef = processNodeOrigin.getXmlSourceRef();
|
||||
String xmlTargetRef = processNodeOrigin.getXmlTargetRef();
|
||||
if (flowElement instanceof UserTask) {
|
||||
UserTask userTask = (UserTask) flowElement;
|
||||
nodeType = "userTask";
|
||||
nodeName = userTask.getName();
|
||||
xmlNodeId = userTask.getId();
|
||||
} else if (flowElement instanceof SequenceFlow) {
|
||||
SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
|
||||
nodeType = "sequenceFlow";
|
||||
nodeName = sequenceFlow.getName();
|
||||
xmlNodeId = sequenceFlow.getId();
|
||||
xmlSourceRef = sequenceFlow.getSourceRef();
|
||||
xmlTargetRef = sequenceFlow.getTargetRef();
|
||||
} else if (flowElement instanceof ExclusiveGateway) {
|
||||
ExclusiveGateway gateway = (ExclusiveGateway) flowElement;
|
||||
nodeType = "gateway";
|
||||
nodeName = gateway.getName();
|
||||
xmlNodeId = gateway.getId();
|
||||
gatewayIdList.add(xmlNodeId);
|
||||
} else if (flowElement instanceof SubProcess) {
|
||||
SubProcess subProcess = (SubProcess) flowElement;
|
||||
Collection<FlowElement> flowElements1 = subProcess.getFlowElements();
|
||||
List<LawsProcessNodeOrigin> processNodeOrigins = handlerLawsProcessNodeOrigin(flowElements1, sort, gatewayIdList, processDefinitionId);
|
||||
processNodeOriginList.addAll(processNodeOrigins);
|
||||
nodeType = "subProcess";
|
||||
nodeName = subProcess.getName();
|
||||
xmlNodeId = subProcess.getId();
|
||||
} else if (flowElement instanceof EndEvent) {
|
||||
EndEvent endEvent = (EndEvent) flowElement;
|
||||
nodeType = "endEvent";
|
||||
nodeName = endEvent.getName();
|
||||
xmlNodeId = endEvent.getId();
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
processNodeOrigin.setProcessDefinitionId(processDefinitionId);
|
||||
processNodeOrigin.setNodeName(nodeName);
|
||||
processNodeOrigin.setNodeType(nodeType);
|
||||
processNodeOrigin.setXmlNodeId(xmlNodeId);
|
||||
processNodeOrigin.setXmlSourceRef(xmlSourceRef);
|
||||
processNodeOrigin.setXmlTargetRef(xmlTargetRef);
|
||||
processNodeOrigin.setSort(sort++);
|
||||
processNodeOrigin.setIsApprovalNode(YesOrNoEnum.NO.getInteger());
|
||||
processNodeOrigin.setIsCanDeleted(YesOrNoEnum.NO.getInteger());
|
||||
processNodeOriginList.add(processNodeOrigin);
|
||||
}
|
||||
return processNodeOriginList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程图像,已执行节点和流程线高亮显示
|
||||
*/
|
||||
|
||||
@@ -1,178 +0,0 @@
|
||||
package com.jero.modules.activiti.util;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import org.dom4j.*;
|
||||
import org.dom4j.io.OutputFormat;
|
||||
import org.dom4j.io.SAXReader;
|
||||
import org.dom4j.io.XMLWriter;
|
||||
import org.dom4j.tree.AbstractAttribute;
|
||||
import org.dom4j.tree.DefaultAttribute;
|
||||
import org.dom4j.tree.DefaultElement;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 14:21
|
||||
* 备注 camunda 和 activiti xml 互相转换
|
||||
* 参数
|
||||
*/
|
||||
public class ConversionUtil {
|
||||
public static void main(String[] args) {
|
||||
File file1 = new File("E:\\Data\\Downloads\\sign.bpmn");
|
||||
camundaToActiviti(file1,true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 14:22
|
||||
* 备注 判断文件名字是否是xml,不是xml转换为xml
|
||||
* 参数
|
||||
*/
|
||||
public static File isXml(File file) {
|
||||
// 判断是否为null
|
||||
String name = FileUtil.mainName(file);
|
||||
String parent = file.getParent();
|
||||
boolean bpmn = FileUtil.pathEndsWith(file, "bpmn");
|
||||
if (bpmn) {
|
||||
//转换为xml
|
||||
File xmlFile = FileUtil.file(parent, name + ".xml");
|
||||
File copy = FileUtil.copy(file, xmlFile, true);
|
||||
return copy;
|
||||
}
|
||||
return file;
|
||||
}
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 15:57
|
||||
* 备注 属性转换
|
||||
* 参数 [file, flag camunda->activiti=true activiti->camunda=false]
|
||||
*/
|
||||
public static void camundaToActiviti(File file, Boolean flag) {
|
||||
//判断文件后缀名是否正确
|
||||
try {
|
||||
File xml = isXml(file);
|
||||
//转换为文档
|
||||
SAXReader reader = new SAXReader();
|
||||
// 转换为Document
|
||||
Document doc = reader.read(xml);
|
||||
//获取根节点
|
||||
Element rootElement = doc.getRootElement();
|
||||
//获取命名空间
|
||||
//flag camunda->activiti=true activiti->camunda=false
|
||||
NamespaceHandler(rootElement, flag);
|
||||
//处理userTask
|
||||
Element process = rootElement.element("process");
|
||||
List<Element> userTask = process.elements("userTask");
|
||||
CamundaTag[] values = CamundaTag.values();
|
||||
if (!CollectionUtils.isEmpty(userTask)) {
|
||||
for (CamundaTag value : values) {
|
||||
userTask(userTask, value, flag);
|
||||
}
|
||||
//处理监听
|
||||
userTaskListener(userTask, flag);
|
||||
}
|
||||
//保存文档
|
||||
saveDocument(doc, file);
|
||||
} catch (DocumentException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 17:45
|
||||
* 备注 处理命名空间
|
||||
* 参数 [rootElement, flag]
|
||||
*/
|
||||
public static void NamespaceHandler(Element rootElement, Boolean flag) {
|
||||
NamespaceName camundaNamespace = NamespaceName.camunda;
|
||||
NamespaceName activitiNamespace = NamespaceName.activiti;
|
||||
Namespace activiti = rootElement.getNamespaceForPrefix(flag ? camundaNamespace.getName() : activitiNamespace.getName());
|
||||
if (activiti != null) {
|
||||
//删除camunda命名空间
|
||||
rootElement.remove(activiti);
|
||||
//添加activiti命名空间
|
||||
Namespace namespace = new Namespace(flag ? activitiNamespace.getName() : camundaNamespace.getName(), flag ? activitiNamespace.getUrl() : camundaNamespace.getUrl());
|
||||
rootElement.add(namespace);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 15:36
|
||||
* 备注 userTask 参数转换
|
||||
* 参数 [userTask 要处理的集合, camundaTag 要处理的参数类型, flag camunda->activiti=true activiti->camunda=false]
|
||||
*/
|
||||
public static void userTask(List<Element> userTask, CamundaTag camundaTag, Boolean flag) {
|
||||
for (Element element : userTask) {
|
||||
Attribute assignee = element.attribute(camundaTag.getAttribute());
|
||||
if (assignee != null) {
|
||||
element.remove(assignee);
|
||||
AbstractAttribute abstractAttribute = new AbstractAttribute() {
|
||||
@Override
|
||||
public QName getQName() {
|
||||
QName qName = new QName(flag ? camundaTag.getActivitiName() : camundaTag.getCamundaName());
|
||||
return qName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return assignee.getValue();
|
||||
}
|
||||
};
|
||||
element.add(abstractAttribute);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 15:36
|
||||
* 备注 userTask 参数转换
|
||||
* 参数 [userTask 要处理的集合, camundaTag 要处理的参数类型, flag camunda->activiti=true activiti->camunda=false]
|
||||
*/
|
||||
public static void userTaskListener(List<Element> userTask, Boolean flag) {
|
||||
CamundaTag listener = CamundaTag.taskListener;
|
||||
for (Element element : userTask) {
|
||||
Element extensionElements = element.element("extensionElements");
|
||||
if (extensionElements!=null){
|
||||
//是否有监听
|
||||
Element taskListener = extensionElements.element(listener.getAttribute());
|
||||
if (taskListener!=null){
|
||||
//获取节点所有参数
|
||||
List<Attribute> attributes = taskListener.attributes();
|
||||
DefaultElement defaultElement = new DefaultElement(flag?listener.getActivitiName():listener.getCamundaName());
|
||||
//将参数拷贝到新的节点
|
||||
for (Attribute attribute : attributes) {
|
||||
DefaultAttribute defaultAttribute = new DefaultAttribute(attribute.getName(), attribute.getValue());
|
||||
defaultElement.add(defaultAttribute);
|
||||
}
|
||||
//删除原有节点
|
||||
extensionElements.remove(taskListener);
|
||||
//添加新构建的节点
|
||||
extensionElements.add(defaultElement);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 作者 CG
|
||||
* 时间 2021/4/12 15:45
|
||||
* 备注 文档保存
|
||||
* 参数 [document, xmlFile]
|
||||
*/
|
||||
public static void saveDocument(Document document, File xmlFile) throws IOException {
|
||||
Writer osWrite = new OutputStreamWriter(new FileOutputStream(xmlFile));//创建输出流
|
||||
OutputFormat format = OutputFormat.createPrettyPrint(); //获取输出的指定格式
|
||||
format.setEncoding("UTF-8");//设置编码 ,确保解析的xml为UTF-8格式
|
||||
XMLWriter writer = new XMLWriter(osWrite, format);//XMLWriter 指定输出文件以及格式
|
||||
writer.write(document);//把document写入xmlFile指定的文件(可以为被解析的文件或者新创建的文件)
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,22 +4,21 @@
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0ln2zen</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0ln2zen" sourceRef="StartEvent_1" targetRef="Activity_0v98tow" />
|
||||
<bpmn:sequenceFlow id="Flow_0ln2zen" sourceRef="StartEvent_1" targetRef="Activity_0v98tow"/>
|
||||
<bpmn:userTask id="Activity_0v98tow" name="创建出差申请单">
|
||||
<bpmn:incoming>Flow_0ln2zen</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1dmfby6</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1dmfby6" sourceRef="Activity_0v98tow" targetRef="Activity_1d2la4l" />
|
||||
<bpmn:userTask id="Activity_1d2la4l" name="部门经理审批">
|
||||
<bpmn:incoming>Flow_1dmfby6</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0hkyh3o</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0hkyh3o" sourceRef="Activity_1d2la4l" targetRef="Activity_1dz3u0m" />
|
||||
<bpmn:sequenceFlow id="Flow_0hkyh3o" sourceRef="Activity_1d2la4l" targetRef="sid-7e61e8d8-6fdd-44f2-bcce-d958a01ccdd6"/>
|
||||
<bpmn:userTask id="Activity_1dz3u0m" name="总经理审批">
|
||||
<bpmn:incoming>Flow_0hkyh3o</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0iw6bki</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0iw6bki" sourceRef="Activity_1dz3u0m" targetRef="Activity_0m576ex" />
|
||||
<bpmn:sequenceFlow id="Flow_0iw6bki" sourceRef="Activity_1dz3u0m" targetRef="Activity_0m576ex"/>
|
||||
<bpmn:userTask id="Activity_0m576ex" name="财务审批">
|
||||
<bpmn:incoming>Flow_0iw6bki</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0stcykp</bpmn:outgoing>
|
||||
@@ -27,51 +26,75 @@
|
||||
<bpmn:endEvent id="Event_17e1txx">
|
||||
<bpmn:incoming>Flow_0stcykp</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0stcykp" sourceRef="Activity_0m576ex" targetRef="Event_17e1txx" />
|
||||
<bpmn:sequenceFlow id="Flow_0stcykp" sourceRef="Activity_0m576ex" targetRef="Event_17e1txx"/>
|
||||
<exclusiveGateway xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" id="sid-7e61e8d8-6fdd-44f2-bcce-d958a01ccdd6"/>
|
||||
<sequenceFlow xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" id="sid-c3dde41e-b30f-46ba-b24d-cb2a0c347331" sourceRef="Activity_0v98tow" targetRef="Activity_1d2la4l"/>
|
||||
<sequenceFlow xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" id="sid-b8145ac3-c476-4c31-b13a-930ed131c96c" sourceRef="sid-7e61e8d8-6fdd-44f2-bcce-d958a01ccdd6" targetRef="Activity_1dz3u0m">
|
||||
<conditionExpression xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="tFormalExpression"/>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" id="sid-ffd9ede1-5cb5-4db2-a5f2-cc3951f7ea6d" sourceRef="sid-7e61e8d8-6fdd-44f2-bcce-d958a01ccdd6" targetRef="Activity_0v98tow">
|
||||
<conditionExpression xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="tFormalExpression"/>
|
||||
</sequenceFlow>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_17bj7d9">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||
<dc:Bounds x="69.0" y="104.0" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1m8g93w_di" bpmnElement="Activity_0v98tow">
|
||||
<dc:Bounds x="270" y="77" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
<dc:Bounds x="160.0" y="82.0" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_16f180l_di" bpmnElement="Activity_1d2la4l">
|
||||
<dc:Bounds x="430" y="77" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
<dc:Bounds x="320.0" y="82.0" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_01vt5l3_di" bpmnElement="Activity_1dz3u0m">
|
||||
<dc:Bounds x="590" y="77" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
<dc:Bounds x="590.0" y="82.0" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0k1zkgx_di" bpmnElement="Activity_0m576ex">
|
||||
<dc:Bounds x="750" y="77" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
<dc:Bounds x="750.0" y="82.0" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_17e1txx_di" bpmnElement="Event_17e1txx">
|
||||
<dc:Bounds x="912" y="99" width="36" height="36" />
|
||||
<dc:Bounds x="912.0" y="104.0" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_0ln2zen_di" bpmnElement="Flow_0ln2zen">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="270" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1dmfby6_di" bpmnElement="Flow_1dmfby6">
|
||||
<di:waypoint x="370" y="117" />
|
||||
<di:waypoint x="430" y="117" />
|
||||
<di:waypoint x="105.0" y="122.0"/>
|
||||
<di:waypoint x="160.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0hkyh3o_di" bpmnElement="Flow_0hkyh3o">
|
||||
<di:waypoint x="530" y="117" />
|
||||
<di:waypoint x="590" y="117" />
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="420.0" y="122.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="452.5" y="122.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="485.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0iw6bki_di" bpmnElement="Flow_0iw6bki">
|
||||
<di:waypoint x="690" y="117" />
|
||||
<di:waypoint x="750" y="117" />
|
||||
<di:waypoint x="690.0" y="122.0"/>
|
||||
<di:waypoint x="750.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0stcykp_di" bpmnElement="Flow_0stcykp">
|
||||
<di:waypoint x="850" y="117" />
|
||||
<di:waypoint x="912" y="117" />
|
||||
<di:waypoint x="850.0" y="122.0"/>
|
||||
<di:waypoint x="912.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="shape-85ce903d-a4e4-469a-93bb-2fb7321e41bf" bpmnElement="sid-7e61e8d8-6fdd-44f2-bcce-d958a01ccdd6">
|
||||
<omgdc:Bounds xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" x="485.0" y="102.0" width="40.0" height="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="edge-3493898d-891e-408f-96fe-81d806172ffa" bpmnElement="sid-c3dde41e-b30f-46ba-b24d-cb2a0c347331">
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="260.0" y="122.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="320.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-d9c4f54c-8a02-4d33-879d-d6829bd0f579" bpmnElement="sid-b8145ac3-c476-4c31-b13a-930ed131c96c">
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="525.0" y="122.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="557.5" y="122.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="590.0" y="122.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="edge-4063bffe-b884-4991-b347-42feb72f73ff" bpmnElement="sid-ffd9ede1-5cb5-4db2-a5f2-cc3951f7ea6d">
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="505.0" y="142.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="504.99997" y="245.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="355.0" y="245.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="225.0" y="245.0"/>
|
||||
<omgdi:waypoint xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" x="225.0" y="155.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
|
||||
@@ -0,0 +1,491 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" 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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:activiti="http://activiti.org/bpmn" id="Definitions_1dx83c4" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.13.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.19.0">
|
||||
<bpmn:process id="Process_17bj7d9" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0ln2zen</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0ln2zen" sourceRef="StartEvent_1" targetRef="Activity_0v98tow"/>
|
||||
<bpmn:userTask id="Activity_0v98tow" name="填写基本信息,在线编辑,分发其他起草人" activiti:assignee="${mainDrafter}">
|
||||
<bpmn:incoming>Flow_0ln2zen</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1dmfby6</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1dmfby6" sourceRef="Activity_0v98tow" targetRef="Activity_1d2la4l"/>
|
||||
<bpmn:sequenceFlow id="Flow_0hkyh3o" sourceRef="Activity_1d2la4l" targetRef="Activity_1dz3u0m"/>
|
||||
<bpmn:userTask id="Activity_1dz3u0m" name="主起草人汇总" activiti:assignee="${mainDrafter}">
|
||||
<bpmn:incoming>Flow_0hkyh3o</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0dlfvoz</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0iw6bki</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_0m576ex" name="标准化审批" activiti:candidateGroups="bjhGroup">
|
||||
<bpmn:incoming>Flow_0iw6bki</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0rw7rph</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0iw6bki" name="" sourceRef="Activity_1dz3u0m" targetRef="Activity_0m576ex"/>
|
||||
<bpmn:userTask id="Activity_1d2la4l" name="其他起草人线下填写,上传" activiti:assignee="${assignee}">
|
||||
<bpmn:extensionElements>
|
||||
<activiti:taskListener class="com.jero.modules.activiti.config.MultiInstanceTaskHandler" event="complete"/>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1dmfby6</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0hkyh3o</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="${assigneeList}" activiti:elementVariable="assignee">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_0vz4kbb">
|
||||
<bpmn:incoming>Flow_0rw7rph</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0dlfvoz</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_07x6x68</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0rw7rph" sourceRef="Activity_0m576ex" targetRef="Gateway_0vz4kbb"/>
|
||||
<bpmn:sequenceFlow id="Flow_0dlfvoz" name="驳回" sourceRef="Gateway_0vz4kbb" targetRef="Activity_1dz3u0m">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_07x6x68" name="通过" sourceRef="Gateway_0vz4kbb" targetRef="Activity_1qhpnpa">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:userTask id="Activity_1qhpnpa" name="评分人评分">
|
||||
<bpmn:incoming>Flow_07x6x68</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1gc5b6z</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_1siuksf" name="标准化确认是否开启征求意见" activiti:candidateGroups="bjhGroup">
|
||||
<bpmn:incoming>Flow_1gc5b6z</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0lxhrf3</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0s3et9m</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1gc5b6z" sourceRef="Activity_1qhpnpa" targetRef="Activity_1siuksf"/>
|
||||
<bpmn:exclusiveGateway id="Gateway_04sf5vu">
|
||||
<bpmn:incoming>Flow_0s3et9m</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1yn3bo0</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_1ts1npj</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0s3et9m" sourceRef="Activity_1siuksf" targetRef="Gateway_04sf5vu"/>
|
||||
<bpmn:sequenceFlow id="Flow_1yn3bo0" name="不开启" sourceRef="Gateway_04sf5vu" targetRef="Activity_11uuyg0">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!open}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0lxhrf3" sourceRef="Activity_1hb9aun" targetRef="Activity_1siuksf"/>
|
||||
<bpmn:userTask id="Activity_1hb9aun" name="主起草人汇总" activiti:assignee="${mainDrafter}">
|
||||
<bpmn:incoming>Flow_02ojuiw</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0lxhrf3</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0114fp7" sourceRef="Activity_11uuyg0" targetRef="Activity_1seways"/>
|
||||
<bpmn:userTask id="Activity_1seways" name="其它起草人校对">
|
||||
<bpmn:incoming>Flow_0114fp7</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_15vlua6</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="otherDrafterList" activiti:elementVariable="otherDrafter">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_1l028rz" name="主管审批">
|
||||
<bpmn:incoming>Flow_1uaxx7p</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_02wh2wo</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics/>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1uaxx7p" name="通过" sourceRef="Gateway_0a6pmod" targetRef="Activity_1l028rz">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:exclusiveGateway id="Gateway_0a6pmod">
|
||||
<bpmn:incoming>Flow_15vlua6</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1uaxx7p</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_1k4inp1</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_15vlua6" sourceRef="Activity_1seways" targetRef="Gateway_0a6pmod"/>
|
||||
<bpmn:sequenceFlow id="Flow_1k4inp1" name="驳回" sourceRef="Gateway_0a6pmod" targetRef="Activity_11uuyg0">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:exclusiveGateway id="Gateway_07iwvx9">
|
||||
<bpmn:incoming>Flow_02wh2wo</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0v50urt</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0rkg4il</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_02wh2wo" sourceRef="Activity_1l028rz" targetRef="Gateway_07iwvx9"/>
|
||||
<bpmn:sequenceFlow id="Flow_0v50urt" name="通过" sourceRef="Gateway_07iwvx9" targetRef="Activity_0uxua0b">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0rkg4il" name="驳回" sourceRef="Gateway_07iwvx9" targetRef="Activity_11uuyg0">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:exclusiveGateway id="Gateway_18kluhj">
|
||||
<bpmn:incoming>Flow_1cg7p7q</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0jc597n</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_03b0vp0</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_1cg7p7q" sourceRef="Activity_0uxua0b" targetRef="Gateway_18kluhj"/>
|
||||
<bpmn:sequenceFlow id="Flow_0jc597n" name="通过" sourceRef="Gateway_18kluhj" targetRef="Activity_05pybsc">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_03b0vp0" name="驳回" sourceRef="Gateway_18kluhj" targetRef="Activity_11uuyg0">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:userTask id="Activity_05pybsc" name="主管部门的领导会签">
|
||||
<bpmn:incoming>Flow_0jc597n</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_093us1v</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics>
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_0uxua0b" name="标准化审批" activiti:candidateGroups="bjhGroup">
|
||||
<bpmn:incoming>Flow_0v50urt</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1cg7p7q</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_093us1v" sourceRef="Activity_05pybsc" targetRef="Activity_1yr56ac"/>
|
||||
<bpmn:userTask id="Activity_1yr56ac" name="总工程师批准">
|
||||
<bpmn:incoming>Flow_093us1v</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_09gf9nd</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_09gf9nd" sourceRef="Activity_1yr56ac" targetRef="Activity_0n0h60s"/>
|
||||
<bpmn:userTask id="Activity_0n0h60s" name="主起草人发布" activiti:assignee="${mainDrafter}">
|
||||
<bpmn:incoming>Flow_09gf9nd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0r1lb59</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_11uuyg0" name="主起草人上传会议纪要和参会人员" activiti:assignee="${mainDrafter}">
|
||||
<bpmn:incoming>Flow_1yn3bo0</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_1k4inp1</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0rkg4il</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_03b0vp0</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0114fp7</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:endEvent id="Event_0ke21ds">
|
||||
<bpmn:incoming>Flow_0r1lb59</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0r1lb59" sourceRef="Activity_0n0h60s" targetRef="Event_0ke21ds"/>
|
||||
<bpmn:subProcess id="Activity_0dbh708">
|
||||
<bpmn:incoming>Flow_1ts1npj</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_02ojuiw</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="departContactList" activiti:elementVariable="departContact">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
<bpmn:startEvent id="Event_1noqwjv">
|
||||
<bpmn:outgoing>Flow_1stk4cs</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:userTask id="Activity_04m430n" name="责任人填写征求意见">
|
||||
<bpmn:extensionElements/>
|
||||
<bpmn:incoming>Flow_14y4j6o</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1x9nrbh</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="responsiblePersonList" activiti:elementVariable="responsiblePerson">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_1ns6olf" name="部门联络人分发责任人" activiti:assignee="${departContact}">
|
||||
<bpmn:incoming>Flow_1stk4cs</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_14y4j6o</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_1riqzkp" name="部门联络人汇总数据" activiti:assignee="${departContact}">
|
||||
<bpmn:incoming>Flow_1x9nrbh</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0b6hwpr</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1jfhrkk</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_1ralk8e" name="责任人的主管审批">
|
||||
<bpmn:incoming>Flow_1jfhrkk</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0n3oqju</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="responsiblePersonSupervisorList" activiti:elementVariable="responsiblePersonSupervisor">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_0fczaih">
|
||||
<bpmn:incoming>Flow_0n3oqju</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0b6hwpr</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0xzqhwi</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_14y4j6o" sourceRef="Activity_1ns6olf" targetRef="Activity_04m430n"/>
|
||||
<bpmn:sequenceFlow id="Flow_1x9nrbh" sourceRef="Activity_04m430n" targetRef="Activity_1riqzkp"/>
|
||||
<bpmn:sequenceFlow id="Flow_0b6hwpr" name="驳回" sourceRef="Gateway_0fczaih" targetRef="Activity_1riqzkp">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1jfhrkk" sourceRef="Activity_1riqzkp" targetRef="Activity_1ralk8e"/>
|
||||
<bpmn:sequenceFlow id="Flow_0n3oqju" sourceRef="Activity_1ralk8e" targetRef="Gateway_0fczaih"/>
|
||||
<bpmn:endEvent id="Event_1b5p26u">
|
||||
<bpmn:incoming>Flow_0xzqhwi</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0xzqhwi" name="通过" sourceRef="Gateway_0fczaih" targetRef="Event_1b5p26u">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${!pass}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1stk4cs" sourceRef="Event_1noqwjv" targetRef="Activity_1ns6olf"/>
|
||||
</bpmn:subProcess>
|
||||
<bpmn:sequenceFlow id="Flow_1ts1npj" name="开启" sourceRef="Gateway_04sf5vu" targetRef="Activity_0dbh708">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${open}</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_02ojuiw" sourceRef="Activity_0dbh708" targetRef="Activity_1hb9aun"/>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_17bj7d9">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="102" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1m8g93w_di" bpmnElement="Activity_0v98tow">
|
||||
<dc:Bounds x="270" y="80" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_01vt5l3_di" bpmnElement="Activity_1dz3u0m">
|
||||
<dc:Bounds x="270" y="234" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0k1zkgx_di" bpmnElement="Activity_0m576ex">
|
||||
<dc:Bounds x="550" y="240" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_16f180l_di" bpmnElement="Activity_1d2la4l">
|
||||
<dc:Bounds x="440" y="80" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0vz4kbb_di" bpmnElement="Gateway_0vz4kbb" isMarkerVisible="true">
|
||||
<dc:Bounds x="705" y="255" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1oifyhb_di" bpmnElement="Activity_1qhpnpa">
|
||||
<dc:Bounds x="810" y="240" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_1ierpcl" bpmnElement="Activity_1siuksf">
|
||||
<dc:Bounds x="980" y="240" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_04sf5vu_di" bpmnElement="Gateway_04sf5vu" isMarkerVisible="true">
|
||||
<dc:Bounds x="1145" y="255" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0meshwh_di" bpmnElement="Activity_1hb9aun">
|
||||
<dc:Bounds x="1590" y="60" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_04b43yp_di" bpmnElement="Activity_1seways">
|
||||
<dc:Bounds x="440" y="490" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1rukkqw_di" bpmnElement="Activity_1l028rz">
|
||||
<dc:Bounds x="680" y="490" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0a6pmod_di" bpmnElement="Gateway_0a6pmod" isMarkerVisible="true">
|
||||
<dc:Bounds x="585" y="505" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_07iwvx9_di" bpmnElement="Gateway_07iwvx9" isMarkerVisible="true">
|
||||
<dc:Bounds x="825" y="505" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_18kluhj_di" bpmnElement="Gateway_18kluhj" isMarkerVisible="true">
|
||||
<dc:Bounds x="1065" y="505" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1xmao86_di" bpmnElement="Activity_05pybsc">
|
||||
<dc:Bounds x="1160" y="490" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1ksqzhd_di" bpmnElement="Activity_0uxua0b">
|
||||
<dc:Bounds x="920" y="490" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1nxdc8r_di" bpmnElement="Activity_1yr56ac">
|
||||
<dc:Bounds x="1160" y="610" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0p30sst_di" bpmnElement="Activity_0n0h60s">
|
||||
<dc:Bounds x="270" y="610" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_128yaxk_di" bpmnElement="Activity_11uuyg0">
|
||||
<dc:Bounds x="270" y="360" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0ke21ds_di" bpmnElement="Event_0ke21ds">
|
||||
<dc:Bounds x="179" y="632" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0dbh708_di" bpmnElement="Activity_0dbh708" isExpanded="true">
|
||||
<dc:Bounds x="1290.0" y="209.99997" width="820" height="300"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1noqwjv_di" bpmnElement="Event_1noqwjv">
|
||||
<dc:Bounds x="1312.0" y="271.99997" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0ci4vvt_di" bpmnElement="Activity_04m430n">
|
||||
<dc:Bounds x="1570.0" y="249.99997" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1k8uq9q_di" bpmnElement="Activity_1ns6olf">
|
||||
<dc:Bounds x="1400.0" y="249.99997" width="100" height="80"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_09v5428_di" bpmnElement="Activity_1riqzkp">
|
||||
<dc:Bounds x="1730.0" y="249.99997" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0w8za61_di" bpmnElement="Activity_1ralk8e">
|
||||
<dc:Bounds x="1910.0" y="249.99997" width="100" height="80"/>
|
||||
<bpmndi:BPMNLabel/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0fczaih_di" bpmnElement="Gateway_0fczaih" isMarkerVisible="true">
|
||||
<dc:Bounds x="1935.0" y="384.99997" width="50" height="50"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1b5p26u_di" bpmnElement="Event_1b5p26u">
|
||||
<dc:Bounds x="2052.0" y="391.99997" width="36" height="36"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_14y4j6o_di" bpmnElement="Flow_14y4j6o">
|
||||
<di:waypoint x="1500.0" y="289.99997"/>
|
||||
<di:waypoint x="1570.0" y="289.99997"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1x9nrbh_di" bpmnElement="Flow_1x9nrbh">
|
||||
<di:waypoint x="1670.0" y="289.99997"/>
|
||||
<di:waypoint x="1730.0" y="289.99997"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0b6hwpr_di" bpmnElement="Flow_0b6hwpr">
|
||||
<di:waypoint x="1935.0" y="409.99997"/>
|
||||
<di:waypoint x="1780.0" y="409.99997"/>
|
||||
<di:waypoint x="1780.0" y="329.99997"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1864" y="393" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1jfhrkk_di" bpmnElement="Flow_1jfhrkk">
|
||||
<di:waypoint x="1830.0" y="289.99997"/>
|
||||
<di:waypoint x="1910.0" y="289.99997"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0n3oqju_di" bpmnElement="Flow_0n3oqju">
|
||||
<di:waypoint x="1960.0" y="329.99997"/>
|
||||
<di:waypoint x="1960.0" y="384.99997"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0xzqhwi_di" bpmnElement="Flow_0xzqhwi">
|
||||
<di:waypoint x="1985.0" y="409.99997"/>
|
||||
<di:waypoint x="2052.0" y="409.99997"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2010" y="392" width="22" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1stk4cs_di" bpmnElement="Flow_1stk4cs">
|
||||
<di:waypoint x="1348.0" y="289.99997"/>
|
||||
<di:waypoint x="1400.0" y="289.99997"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0ln2zen_di" bpmnElement="Flow_0ln2zen">
|
||||
<di:waypoint x="215" y="120"/>
|
||||
<di:waypoint x="270" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1dmfby6_di" bpmnElement="Flow_1dmfby6">
|
||||
<di:waypoint x="370" y="120"/>
|
||||
<di:waypoint x="440" y="120"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0hkyh3o_di" bpmnElement="Flow_0hkyh3o">
|
||||
<di:waypoint x="490" y="160"/>
|
||||
<di:waypoint x="490" y="190"/>
|
||||
<di:waypoint x="320" y="190"/>
|
||||
<di:waypoint x="320" y="234"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0iw6bki_di" bpmnElement="Flow_0iw6bki">
|
||||
<di:waypoint x="370" y="280"/>
|
||||
<di:waypoint x="550" y="280"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0rw7rph_di" bpmnElement="Flow_0rw7rph">
|
||||
<di:waypoint x="650" y="280"/>
|
||||
<di:waypoint x="705" y="280"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0dlfvoz_di" bpmnElement="Flow_0dlfvoz">
|
||||
<di:waypoint x="730" y="305"/>
|
||||
<di:waypoint x="730" y="340"/>
|
||||
<di:waypoint x="330" y="340"/>
|
||||
<di:waypoint x="330" y="320"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="739" y="310" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_07x6x68_di" bpmnElement="Flow_07x6x68">
|
||||
<di:waypoint x="755" y="280"/>
|
||||
<di:waypoint x="810" y="280"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="761" y="262" width="22" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1gc5b6z_di" bpmnElement="Flow_1gc5b6z">
|
||||
<di:waypoint x="910" y="280"/>
|
||||
<di:waypoint x="980" y="280"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0s3et9m_di" bpmnElement="Flow_0s3et9m">
|
||||
<di:waypoint x="1080" y="280"/>
|
||||
<di:waypoint x="1145" y="280"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1yn3bo0_di" bpmnElement="Flow_1yn3bo0">
|
||||
<di:waypoint x="1170" y="306"/>
|
||||
<di:waypoint x="1170" y="380"/>
|
||||
<di:waypoint x="370" y="380"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1174" y="322" width="32" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0lxhrf3_di" bpmnElement="Flow_0lxhrf3">
|
||||
<di:waypoint x="1590" y="100"/>
|
||||
<di:waypoint x="1030" y="100"/>
|
||||
<di:waypoint x="1030" y="240"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0114fp7_di" bpmnElement="Flow_0114fp7">
|
||||
<di:waypoint x="320" y="440"/>
|
||||
<di:waypoint x="320" y="530"/>
|
||||
<di:waypoint x="440" y="530"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1uaxx7p_di" bpmnElement="Flow_1uaxx7p">
|
||||
<di:waypoint x="635" y="530"/>
|
||||
<di:waypoint x="680" y="530"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="647" y="512" width="22" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_15vlua6_di" bpmnElement="Flow_15vlua6">
|
||||
<di:waypoint x="540" y="530"/>
|
||||
<di:waypoint x="585" y="530"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1k4inp1_di" bpmnElement="Flow_1k4inp1">
|
||||
<di:waypoint x="610" y="505"/>
|
||||
<di:waypoint x="610" y="410"/>
|
||||
<di:waypoint x="370" y="410"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="615" y="455" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_02wh2wo_di" bpmnElement="Flow_02wh2wo">
|
||||
<di:waypoint x="780" y="530"/>
|
||||
<di:waypoint x="825" y="530"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0v50urt_di" bpmnElement="Flow_0v50urt">
|
||||
<di:waypoint x="875" y="530"/>
|
||||
<di:waypoint x="920" y="530"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="887" y="512" width="22" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0rkg4il_di" bpmnElement="Flow_0rkg4il">
|
||||
<di:waypoint x="850" y="505"/>
|
||||
<di:waypoint x="850" y="410"/>
|
||||
<di:waypoint x="370" y="410"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="855" y="455" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1cg7p7q_di" bpmnElement="Flow_1cg7p7q">
|
||||
<di:waypoint x="1020" y="530"/>
|
||||
<di:waypoint x="1065" y="530"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0jc597n_di" bpmnElement="Flow_0jc597n">
|
||||
<di:waypoint x="1115" y="530"/>
|
||||
<di:waypoint x="1160" y="530"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1127" y="512" width="22" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_03b0vp0_di" bpmnElement="Flow_03b0vp0">
|
||||
<di:waypoint x="1090" y="505"/>
|
||||
<di:waypoint x="1090" y="410"/>
|
||||
<di:waypoint x="370" y="410"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1095" y="455" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_093us1v_di" bpmnElement="Flow_093us1v">
|
||||
<di:waypoint x="1210" y="570"/>
|
||||
<di:waypoint x="1210" y="610"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_09gf9nd_di" bpmnElement="Flow_09gf9nd">
|
||||
<di:waypoint x="1160" y="650"/>
|
||||
<di:waypoint x="370" y="650"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0r1lb59_di" bpmnElement="Flow_0r1lb59">
|
||||
<di:waypoint x="270" y="650"/>
|
||||
<di:waypoint x="215" y="650"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1ts1npj_di" bpmnElement="Flow_1ts1npj">
|
||||
<di:waypoint x="1195" y="280"/>
|
||||
<di:waypoint x="1290.0" y="279.99997"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1228" y="262" width="21" height="14"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_02ojuiw_di" bpmnElement="Flow_02ojuiw">
|
||||
<di:waypoint x="1640.0" y="209.99997"/>
|
||||
<di:waypoint x="1640" y="140"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
||||
Reference in New Issue
Block a user