Commit fc10f2ca by 啦啦啦

提交新代码

parent 4ddb5748
......@@ -28,18 +28,6 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
......
package com.bbd.bpm.controller;
import com.google.common.collect.Maps;
import org.activiti.engine.*;
import org.activiti.engine.form.FormProperty;
import org.activiti.engine.form.TaskFormData;
import org.activiti.engine.impl.form.DateFormType;
import org.activiti.engine.impl.form.StringFormType;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
/**
* 启动类
*/
public class DemoMain {
private static Logger logger = LoggerFactory.getLogger(DemoMain.class);
public static void main(String[] args) throws ParseException {
logger.info("启动我们的程序");
//创建流程引擎
ProcessEngine processEngine = getProcessEngine();
//部署流程定义文件
ProcessDefinition processDefinition = getProcessDefinition(processEngine);
//启动运行流程
ProcessInstance processInstance=getProcessInstance(processEngine, processDefinition);
//处理流程任务
processTask(processEngine, processInstance);
logger.info("结束我们的程序");
}
private static void processTask(ProcessEngine processEngine, ProcessInstance processInstance) throws ParseException {
Scanner scanner = new Scanner(System.in);
while (processInstance!=null && !processInstance.isEnded()){
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().list();
logger.info("待处理人任务数量[{}]",list.size());
for (Task task:list) {
logger.info("待处理人任务[{}]",task.getName());
HashMap<String, Object> map = getMap(processEngine, scanner, task);
//提交表单
taskService.complete(task.getId(),map);
processInstance = processEngine.getRuntimeService().
createProcessInstanceQuery().
processInstanceId(processInstance.getId()).
singleResult();
}
}
scanner.close();
}
private static HashMap<String, Object> getMap(ProcessEngine processEngine, Scanner scanner, Task task) throws ParseException {
FormService formService = processEngine.getFormService();
TaskFormData taskFormData = formService.getTaskFormData(task.getId());
//获取属性表单
List<FormProperty> formProperties = taskFormData.getFormProperties();
HashMap<String, Object> map = Maps.newHashMap();
for (FormProperty property : formProperties) {
String line = null;
if(StringFormType.class.isInstance(property.getType())){
logger.info("请输入{} ?",property.getName());
line = scanner.nextLine();
map.put(property.getId(),line);
}else if(DateFormType.class.isInstance(property.getType())){
logger.info("请输入{} ? 格式(yyyy-MM-dd)",property.getName());
line = scanner.nextLine();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(line);
map.put(property.getId(),date);
}else{
logger.info("类型暂不支持{}",property.getType());
}
logger.info("你输入的内容是[{}]",line);
}
return map;
}
private static ProcessInstance getProcessInstance(ProcessEngine processEngine, ProcessDefinition processDefinition) {
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId());
logger.info("启动流程[{}]",processInstance.getProcessDefinitionKey());
return processInstance;
}
private static ProcessDefinition getProcessDefinition(ProcessEngine processEngine) {
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
deploymentBuilder.addClasspathResource("second_approve.bpmn20.xml");
Deployment deployment = deploymentBuilder.deploy();
String deploymentId = deployment.getId();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
logger.info("流程定义文件[{}],流程id[{}]",processDefinition.getName(),processDefinition.getId() );
return processDefinition;
}
private static ProcessEngine getProcessEngine() {
ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
ProcessEngine processEngine = cfg.buildProcessEngine();
String name = processEngine.getName();
String version=processEngine.VERSION;
logger.info("流程引擎名称[{}],版本[{}]",name,version);
return processEngine;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration>
<configuration scan="true" scanPeriod="30 minutes" debug="false">
<!-- 日志存储根路径 -->
<!--<property name="log.dir.root" value="/data/vulcan/logs/web-platform" />-->
<!-- 控制台输出日志 -->
<appender name="INFO" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="utf-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<!-- 出错日志 appender -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.dir.root}/error/sys-error-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 180天 -->
<maxHistory>180</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 访问日志 appender -->
<appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.dir.root}/access/sys-access-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 180天 -->
<maxHistory>180</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 下面配置一些第三方包的日志过滤级别 -->
<logger name="org.springframework" level="INFO"/>
<logger name="org.mybatis" level="INFO" />
<logger name="com.github.abel533" level="INFO" />
<logger name="tk.mybatis" level="INFO" />
<root level="INFO">
<appender-ref ref="INFO" />
<appender-ref ref="ACCESS" />
<appender-ref ref="ERROR" />
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="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">
<process id="second_approve" name="二级审批流程" isExecutable="true">
<startEvent id="startEvent" name="开始"></startEvent>
<userTask id="submitForm" name="填写审批信息">
<extensionElements>
<activiti:formProperty id="message" name="申请信息" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="name" name="申请人名称" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="submitTime" name="提交时间" type="date" datePattern="yyyy-MM-dd" required="true"></activiti:formProperty>
<activiti:formProperty id="submitType" name="确认申请" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="submitForm"></sequenceFlow>
<exclusiveGateway id="decideSubmit" name="提交OR取消"></exclusiveGateway>
<userTask id="tl_approve" name="主管审批">
<extensionElements>
<activiti:formProperty id="tlApprove" name="主管审批结果" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="tlMessage" name="主管备注" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<exclusiveGateway id="decideTLApprove" name="主管审批校验"></exclusiveGateway>
<sequenceFlow id="flow4" sourceRef="tl_approve" targetRef="decideTLApprove"></sequenceFlow>
<userTask id="hr_approve" name="人事审批">
<extensionElements>
<activiti:formProperty id="hrApprove" name="人事审批结果" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="hrMessage" name="人事备注" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<exclusiveGateway id="decideHRApprove" name="人事审批校验"></exclusiveGateway>
<sequenceFlow id="flow6" sourceRef="hr_approve" targetRef="decideHRApprove"></sequenceFlow>
<endEvent id="EndEvent" name="结束"></endEvent>
<sequenceFlow id="flow7" sourceRef="decideHRApprove" targetRef="EndEvent">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${hrApprove=="y" || hrApprove=="Y"}]]></conditionExpression>
</sequenceFlow>
<endEvent id="endEventCancel" name="取消"></endEvent>
<sequenceFlow id="flow10" sourceRef="decideHRApprove" targetRef="submitForm">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${hrApprove=="n" || hrApprove=="N"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow11" sourceRef="decideSubmit" targetRef="endEventCancel">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${submitType=="n" || submitType=="n"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow12" sourceRef="decideSubmit" targetRef="tl_approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${submitType=="y" || submitType=="Y"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow13" sourceRef="submitForm" targetRef="decideSubmit"></sequenceFlow>
<sequenceFlow id="flow14" sourceRef="decideTLApprove" targetRef="submitForm">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${tlApprove=="n" || tlApprove=="N"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow15" sourceRef="decideTLApprove" targetRef="hr_approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${tlApprove=="y" || tlApprove=="Y"}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_second_approve">
<bpmndi:BPMNPlane bpmnElement="second_approve" id="BPMNPlane_second_approve">
<bpmndi:BPMNShape bpmnElement="startEvent" id="BPMNShape_startEvent">
<omgdc:Bounds height="35.0" width="35.0" x="40.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="submitForm" id="BPMNShape_submitForm">
<omgdc:Bounds height="55.0" width="105.0" x="120.0" y="160.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideSubmit" id="BPMNShape_decideSubmit">
<omgdc:Bounds height="40.0" width="40.0" x="270.0" y="168.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="tl_approve" id="BPMNShape_tl_approve">
<omgdc:Bounds height="55.0" width="105.0" x="355.0" y="161.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideTLApprove" id="BPMNShape_decideTLApprove">
<omgdc:Bounds height="40.0" width="40.0" x="505.0" y="169.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="hr_approve" id="BPMNShape_hr_approve">
<omgdc:Bounds height="55.0" width="105.0" x="590.0" y="162.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideHRApprove" id="BPMNShape_decideHRApprove">
<omgdc:Bounds height="40.0" width="40.0" x="740.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent" id="BPMNShape_EndEvent">
<omgdc:Bounds height="35.0" width="35.0" x="825.0" y="173.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endEventCancel" id="BPMNShape_endEventCancel">
<omgdc:Bounds height="35.0" width="35.0" x="390.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="75.0" y="187.0"></omgdi:waypoint>
<omgdi:waypoint x="120.0" y="187.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
<omgdi:waypoint x="460.0" y="188.0"></omgdi:waypoint>
<omgdi:waypoint x="505.0" y="189.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
<omgdi:waypoint x="695.0" y="189.0"></omgdi:waypoint>
<omgdi:waypoint x="740.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
<omgdi:waypoint x="780.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="825.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10">
<omgdi:waypoint x="780.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="760.0" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="758.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="480.0" y="99.0"></omgdi:waypoint>
<omgdi:waypoint x="328.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="160.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11">
<omgdi:waypoint x="290.0" y="208.0"></omgdi:waypoint>
<omgdi:waypoint x="290.0" y="257.0"></omgdi:waypoint>
<omgdi:waypoint x="390.0" y="257.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12">
<omgdi:waypoint x="310.0" y="188.0"></omgdi:waypoint>
<omgdi:waypoint x="355.0" y="188.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13">
<omgdi:waypoint x="225.0" y="187.0"></omgdi:waypoint>
<omgdi:waypoint x="270.0" y="188.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14">
<omgdi:waypoint x="525.0" y="209.0"></omgdi:waypoint>
<omgdi:waypoint x="524.0" y="290.0"></omgdi:waypoint>
<omgdi:waypoint x="356.0" y="291.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="290.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="215.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15">
<omgdi:waypoint x="545.0" y="189.0"></omgdi:waypoint>
<omgdi:waypoint x="590.0" y="189.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="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">
<process id="second_approve" name="二级审批流程" isExecutable="true">
<startEvent id="startEvent" name="开始"></startEvent>
<userTask id="submitForm" name="填写审批信息">
<extensionElements>
<activiti:formProperty id="message" name="申请信息" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="name" name="申请人名称" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="submitTime" name="提交时间" type="date" datePattern="yyyy-MM-dd" required="true"></activiti:formProperty>
<activiti:formProperty id="submitType" name="确认申请" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="submitForm"></sequenceFlow>
<exclusiveGateway id="decideSubmit" name="提交OR取消"></exclusiveGateway>
<userTask id="tl_approve" name="主管审批">
<extensionElements>
<activiti:formProperty id="tlApprove" name="主管审批结果" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="tlMessage" name="主管备注" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<exclusiveGateway id="decideTLApprove" name="主管审批校验"></exclusiveGateway>
<sequenceFlow id="flow4" sourceRef="tl_approve" targetRef="decideTLApprove"></sequenceFlow>
<userTask id="hr_approve" name="人事审批">
<extensionElements>
<activiti:formProperty id="hrApprove" name="人事审批结果" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="hrMessage" name="人事备注" type="string" required="true"></activiti:formProperty>
</extensionElements>
</userTask>
<exclusiveGateway id="decideHRApprove" name="人事审批校验"></exclusiveGateway>
<sequenceFlow id="flow6" sourceRef="hr_approve" targetRef="decideHRApprove"></sequenceFlow>
<endEvent id="EndEvent" name="结束"></endEvent>
<sequenceFlow id="flow7" sourceRef="decideHRApprove" targetRef="EndEvent">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${hrApprove=="y" || hrApprove=="Y"}]]></conditionExpression>
</sequenceFlow>
<endEvent id="endEventCancel" name="取消"></endEvent>
<sequenceFlow id="flow10" sourceRef="decideHRApprove" targetRef="submitForm">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${hrApprove=="n" || hrApprove=="N"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow11" sourceRef="decideSubmit" targetRef="endEventCancel">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${submitType=="n" || submitType=="N"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow12" sourceRef="decideSubmit" targetRef="tl_approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${submitType=="y" || submitType=="Y"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow13" sourceRef="submitForm" targetRef="decideSubmit"></sequenceFlow>
<sequenceFlow id="flow14" sourceRef="decideTLApprove" targetRef="submitForm">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${tlApprove=="n" || tlApprove=="N"}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow15" sourceRef="decideTLApprove" targetRef="hr_approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${tlApprove=="y" || tlApprove=="Y"}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_second_approve">
<bpmndi:BPMNPlane bpmnElement="second_approve" id="BPMNPlane_second_approve">
<bpmndi:BPMNShape bpmnElement="startEvent" id="BPMNShape_startEvent">
<omgdc:Bounds height="35.0" width="35.0" x="40.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="submitForm" id="BPMNShape_submitForm">
<omgdc:Bounds height="55.0" width="105.0" x="120.0" y="160.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideSubmit" id="BPMNShape_decideSubmit">
<omgdc:Bounds height="40.0" width="40.0" x="270.0" y="168.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="tl_approve" id="BPMNShape_tl_approve">
<omgdc:Bounds height="55.0" width="105.0" x="355.0" y="161.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideTLApprove" id="BPMNShape_decideTLApprove">
<omgdc:Bounds height="40.0" width="40.0" x="505.0" y="169.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="hr_approve" id="BPMNShape_hr_approve">
<omgdc:Bounds height="55.0" width="105.0" x="590.0" y="162.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="decideHRApprove" id="BPMNShape_decideHRApprove">
<omgdc:Bounds height="40.0" width="40.0" x="740.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent" id="BPMNShape_EndEvent">
<omgdc:Bounds height="35.0" width="35.0" x="825.0" y="173.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endEventCancel" id="BPMNShape_endEventCancel">
<omgdc:Bounds height="35.0" width="35.0" x="390.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="75.0" y="187.0"></omgdi:waypoint>
<omgdi:waypoint x="120.0" y="187.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
<omgdi:waypoint x="460.0" y="188.0"></omgdi:waypoint>
<omgdi:waypoint x="505.0" y="189.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
<omgdi:waypoint x="695.0" y="189.0"></omgdi:waypoint>
<omgdi:waypoint x="740.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
<omgdi:waypoint x="780.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="825.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10">
<omgdi:waypoint x="780.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="760.0" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="758.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="480.0" y="99.0"></omgdi:waypoint>
<omgdi:waypoint x="328.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="98.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="160.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11">
<omgdi:waypoint x="290.0" y="208.0"></omgdi:waypoint>
<omgdi:waypoint x="290.0" y="257.0"></omgdi:waypoint>
<omgdi:waypoint x="390.0" y="257.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12">
<omgdi:waypoint x="310.0" y="188.0"></omgdi:waypoint>
<omgdi:waypoint x="355.0" y="188.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13">
<omgdi:waypoint x="225.0" y="187.0"></omgdi:waypoint>
<omgdi:waypoint x="270.0" y="188.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14">
<omgdi:waypoint x="525.0" y="209.0"></omgdi:waypoint>
<omgdi:waypoint x="524.0" y="290.0"></omgdi:waypoint>
<omgdi:waypoint x="356.0" y="291.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="290.0"></omgdi:waypoint>
<omgdi:waypoint x="172.0" y="215.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15">
<omgdi:waypoint x="545.0" y="189.0"></omgdi:waypoint>
<omgdi:waypoint x="590.0" y="189.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment