Commit f5d46ada by weiguanying

flowable工作流引擎预研--自动化汇款demo开发代码提交

parent 759fffc5
package com.example.flowable;
package com.cn.brilliance.flowable;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
......
package com.cn.brilliance.flowable.automate.check;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoCheckFailServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("messageSending")) ) {
//delegateExecution.setVariable("messageSending","自动化复核服务");
log.info("办结!");
}
}
}
package com.cn.brilliance.flowable.automate.check;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoCheckServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("autoTimeSpan"))) {
delegateExecution.setVariable("autoCheck", "true");
log.info("自动化检查服务ok");
}
}
}
package com.cn.brilliance.flowable.automate.check;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class CompletedServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("false".equals(delegateExecution.getVariable("autoCheck")) ) {
delegateExecution.setVariable("autoCheckFailMsg","自动化复核服务");
log.info(delegateExecution.getVariable("autoCheckFailMsg") + "失败落人工" + "发送短信");
}
}
}
package com.cn.brilliance.flowable.automate.check;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class MessageSendServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("secAuthCheck"))) {
delegateExecution.setVariable("messageSending", "true");
log.info("报文发送ok");
}
}
}
package com.cn.brilliance.flowable.automate.check;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class SecAuthCheckServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("autoCheck"))) {
delegateExecution.setVariable("secAuthCheck", "true");
log.info("二级授权检查ok");
}
}
}
package com.cn.brilliance.flowable.automate.handling.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoHandingCheckServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("autoHanding"))) {
delegateExecution.setVariable("autoHandingCheck", "true");
log.info("自动经办核验ok");
}
}
}
package com.cn.brilliance.flowable.automate.handling.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoHandingFailServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("false".equals(delegateExecution.getVariable("autoHandingCheck"))) {
delegateExecution.setVariable("autoHandingFailMsg", "自动化经办检核服务");
log.info(delegateExecution.getVariable("autoHandingFailMsg") + "失败转人工");
log.info("发送短信");
} else if
("false".equals(delegateExecution.getVariable("autoHandingSave"))) {
delegateExecution.setVariable("autoHandingFailMsg", "自动化经办存盘服务");
log.info(delegateExecution.getVariable("autoHandingFailMsg") + "失败转人工");
log.info("发送短信");
}
}
}
package com.cn.brilliance.flowable.automate.handling.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoHandingSaveServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("autoHandingCheck"))) {
delegateExecution.setVariable("autoHandingSave", "true");
log.info("交易存盘服务ok");
}
}
}
package com.cn.brilliance.flowable.automate.handling.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoHandingServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("autoTimeSpan"))) {
delegateExecution.setVariable("autoHanding", "true");
log.info("自动经办数据适配ok");
}
}
}
package com.cn.brilliance.flowable.automate.message.model;
import lombok.Data;
@Data
public class MessageVo {
private String successFlag;
}
package com.cn.brilliance.flowable.automate.message.service;
import com.cn.brilliance.flowable.automate.message.model.MessageVo;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* 来报处理服务组件
*/
@Component
@Slf4j
public class MessageProcessingServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
MessageVo vo = new MessageVo();
vo.setSuccessFlag("true");
delegateExecution.setVariable("messageProcess","true");
log.info("来报处理");
}
}
package com.cn.brilliance.flowable.automate.message.service;
import com.cn.brilliance.flowable.automate.message.model.MessageVo;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* 来报处理服务组件
*/
@Component
@Slf4j
public class MessageServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
MessageVo vo = new MessageVo();
vo.setSuccessFlag("true");
delegateExecution.setVariable("message","true");
log.info("短信发送");
}
}
package com.cn.brilliance.flowable.automate.rule.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoAccessFailServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("false".equals(delegateExecution.getVariable("autoAccess")) ) {
delegateExecution.setVariable("autoAccessFailMsg","自动化准入服务");
log.info(delegateExecution.getVariable("autoAccessFailMsg") + "失败落人工");
}
if ("false".equals(delegateExecution.getVariable("autoTimeSpan")) ) {
delegateExecution.setVariable("autoAccessFailMsg","自动化时段判断");
log.info(delegateExecution.getVariable("autoAccessFailMsg") + "失败落人工");
}
}
}
package com.cn.brilliance.flowable.automate.rule.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoAccessServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
if ("true".equals(delegateExecution.getVariable("messageProcess")) && "yes".equals(delegateExecution.getVariable("work"))) {
delegateExecution.setVariable("autoAccess", "true");
log.info("自动化准入服务ok");
} else if ("no".equals(delegateExecution.getVariable("work"))){
delegateExecution.setVariable("autoAccess", "false");
log.info("自动化准入服务失败!");
}
}
}
package com.cn.brilliance.flowable.automate.rule.service;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Flowable工作流业务规则服务
*/
@Component
@Slf4j
public class AutoTimeSpanServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution delegateExecution) {
String timeString = getTimeForMM();
if ("true".equals(delegateExecution.getVariable("autoAccess")) ) {
if ( "偶数".equals(timeString)){
delegateExecution.setVariable("autoTimeSpan", "true");
log.info("当前时间分钟数为偶数");
log.info("自动化时段判断ok");
}
if ( "奇数".equals(timeString)){
delegateExecution.setVariable("autoTimeSpan", "false");
log.info("当前时间分钟数为奇数");
log.info("自动化时段判断失败");
}
} else {
delegateExecution.setVariable("autoTimeSpan", "false");
log.info("自动化时段判断失败!");
}
}
private String getTimeForMM(){
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("mm");
int num = Integer.parseInt(sdf.format(d));
String result = (num%2==0)?"偶数":"奇数";
return result;
}
}
package com.example.flowable.config;
package com.cn.brilliance.flowable.config;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.spring.boot.EngineConfigurationConfigurer;
......
package com.cn.brilliance.flowable.controller;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
@RestController
@RequestMapping(value = "auto")
public class AutomatedController {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private ProcessEngine processEngine;
/**
* 添加报信用卡申请流程
*/
@RequestMapping(value = "add", method = RequestMethod.GET)
public String addExpense(
) {
//启动流程并传入启动流程id
HashMap<String, Object> map = new HashMap<>();
map.put("work", "yes");
map.put("money", "yes");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("automatedRemittanceOrchestration", map);
return "提交成功.流程Id为:" + processInstance.getId();
}
}
\ No newline at end of file
package com.example.flowable.controller;
package com.cn.brilliance.flowable.controller;
import org.flowable.engine.*;
import org.flowable.engine.runtime.ProcessInstance;
......
package com.example.flowable.controller;
package com.cn.brilliance.flowable.controller;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.*;
......
package com.example.flowable.taskHandler;
package com.cn.brilliance.flowable.taskHandler;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
......
package com.example.flowable.taskHandler;
package com.cn.brilliance.flowable.taskHandler;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
......
package com.example.flowable;
package com.cn.brilliance.flowable.taskHandler;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
......
package com.example.flowable;
package com.cn.brilliance.flowable.taskHandler;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
......
<?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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
<process id="CreditCard" name="creditcard" isExecutable="true">
<documentation>信用卡申请规则扭转</documentation>
<startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
<exclusiveGateway id="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" name="信用卡发放准入规则网关"></exclusiveGateway>
<sequenceFlow id="sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" sourceRef="startEvent1" targetRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D"></sequenceFlow>
<serviceTask id="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" name="征信判断服务" flowable:class="com.example.flowable.ServiceTask1"></serviceTask>
<endEvent id="sid-FF25E057-8353-4897-82E8-E6AA566D1519" name="不发卡"></endEvent>
<serviceTask id="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" name="信用卡金额判断服务" flowable:class="com.example.flowable.ServiceTask2"></serviceTask>
<endEvent id="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC" name="发信用卡"></endEvent>
<sequenceFlow id="sid-320CC5D6-D191-4E85-8035-6F45618E9166" name="有工作" sourceRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" targetRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${work=='yes'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" name="无工作" sourceRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<documentation>如果申请人既没房也没车,同时学历为本科以上,并且月薪少于2000,同时之前没有信用卡的,那么不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${work=='no'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-99143761-DC5A-42FA-980C-083205108F9F" name="征信不通过" sourceRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<documentation>没房也没车大专以下月薪少于5000不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${credit=='no'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-44D3689F-796E-47FD-B732-D89A02343ACA" name="工资低于2000" sourceRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${salary<=2000}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-0040323B-4A7C-433A-959F-0C3D134981F9" name="征信通过" sourceRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" targetRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC">
<documentation>没房也没车大专以下月薪少于5000不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${credit=='yes'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" name="工资大于2000" sourceRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" targetRef="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${salary>2000 and grantCard=='yes'}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_CreditCard">
<bpmndi:BPMNPlane bpmnElement="CreditCard" id="BPMNPlane_CreditCard">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" id="BPMNShape_sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D">
<omgdc:Bounds height="40.0" width="40.0" x="255.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" id="BPMNShape_sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D">
<omgdc:Bounds height="80.0" width="100.0" x="450.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-FF25E057-8353-4897-82E8-E6AA566D1519" id="BPMNShape_sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<omgdc:Bounds height="28.0" width="28.0" x="360.0" y="270.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" id="BPMNShape_sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC">
<omgdc:Bounds height="80.0" width="100.0" x="645.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC" id="BPMNShape_sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC">
<omgdc:Bounds height="28.0" width="28.0" x="840.0" y="156.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" id="BPMNEdge_sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5">
<omgdi:waypoint x="129.94999695909908" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="192.5" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="192.5" y="170.5"></omgdi:waypoint>
<omgdi:waypoint x="255.5" y="170.5"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-320CC5D6-D191-4E85-8035-6F45618E9166" id="BPMNEdge_sid-320CC5D6-D191-4E85-8035-6F45618E9166" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="294.48805220881326" y="170.45758928571425"></omgdi:waypoint>
<omgdi:waypoint x="450.0" y="170.11124721603562"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-0040323B-4A7C-433A-959F-0C3D134981F9" id="BPMNEdge_sid-0040323B-4A7C-433A-959F-0C3D134981F9" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="549.9499999999803" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="645.0" y="170.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-99143761-DC5A-42FA-980C-083205108F9F" id="BPMNEdge_sid-99143761-DC5A-42FA-980C-083205108F9F" flowable:sourceDockerX="50.0" flowable:sourceDockerY="79.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="500.0" y="209.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="500.0" y="232.0"></omgdi:waypoint>
<omgdi:waypoint x="374.0" y="232.0"></omgdi:waypoint>
<omgdi:waypoint x="374.0" y="270.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-44D3689F-796E-47FD-B732-D89A02343ACA" id="BPMNEdge_sid-44D3689F-796E-47FD-B732-D89A02343ACA" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="695.0" y="209.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="695.0" y="284.0"></omgdi:waypoint>
<omgdi:waypoint x="387.9499192832599" y="284.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" id="BPMNEdge_sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="744.9499999999605" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="840.0" y="170.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" id="BPMNEdge_sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="275.5" y="189.44165933098594"></omgdi:waypoint>
<omgdi:waypoint x="275.5" y="284.0"></omgdi:waypoint>
<omgdi:waypoint x="360.0" y="284.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:flowable="http://flowable.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.flowable.org/processdef">
<process id="Expense" name="ExpenseProcess" isExecutable="true">
<documentation>报销流程</documentation>
<startEvent id="start" name="开始"></startEvent>
<userTask id="fillTask" name="出差报销" flowable:assignee="${taskUser}">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
<![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<exclusiveGateway id="judgeTask"></exclusiveGateway>
<userTask id="directorTak" name="经理审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.ManagerTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<userTask id="bossTask" name="老板审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.BossTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<endEvent id="end" name="结束"></endEvent>
<sequenceFlow id="directorNotPassFlow" name="驳回" sourceRef="directorTak" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossNotPassFlow" name="驳回" sourceRef="bossTask" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow1" sourceRef="start" targetRef="fillTask"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="fillTask" targetRef="judgeTask"></sequenceFlow>
<sequenceFlow id="judgeMore" name="大于500元" sourceRef="judgeTask" targetRef="bossTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money > 500}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossPassFlow" name="通过" sourceRef="bossTask" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="directorPassFlow" name="通过" sourceRef="directorTak" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="judgeLess" name="小于500元" sourceRef="judgeTask" targetRef="directorTak">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money <= 500}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_Expense">
<bpmndi:BPMNPlane bpmnElement="Expense" id="BPMNPlane_Expense">
<bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
<omgdc:Bounds height="30.0" width="30.0" x="285.0" y="135.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="fillTask" id="BPMNShape_fillTask">
<omgdc:Bounds height="80.0" width="100.0" x="405.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="judgeTask" id="BPMNShape_judgeTask">
<omgdc:Bounds height="40.0" width="40.0" x="585.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="directorTak" id="BPMNShape_directorTak">
<omgdc:Bounds height="80.0" width="100.0" x="735.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="bossTask" id="BPMNShape_bossTask">
<omgdc:Bounds height="80.0" width="100.0" x="555.0" y="255.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
<omgdc:Bounds height="28.0" width="28.0" x="771.0" y="281.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="315.0" y="150.0"></omgdi:waypoint>
<omgdi:waypoint x="405.0" y="150.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="505.0" y="150.16611295681062"></omgdi:waypoint>
<omgdi:waypoint x="585.4333333333333" y="150.43333333333334"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeLess" id="BPMNEdge_judgeLess">
<omgdi:waypoint x="624.5530726256983" y="150.44692737430168"></omgdi:waypoint>
<omgdi:waypoint x="735.0" y="150.1392757660167"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorNotPassFlow" id="BPMNEdge_directorNotPassFlow">
<omgdi:waypoint x="785.0" y="110.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="110.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossPassFlow" id="BPMNEdge_bossPassFlow">
<omgdi:waypoint x="655.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="771.0" y="295.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeMore" id="BPMNEdge_judgeMore">
<omgdi:waypoint x="605.4340277777778" y="169.56597222222223"></omgdi:waypoint>
<omgdi:waypoint x="605.1384083044983" y="255.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorPassFlow" id="BPMNEdge_directorPassFlow">
<omgdi:waypoint x="785.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="281.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossNotPassFlow" id="BPMNEdge_bossNotPassFlow">
<omgdi:waypoint x="555.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
<process id="automatedRemittanceOrchestration" name="汇款自动化编排" isExecutable="true">
<documentation>汇款自动化编排</documentation>
<sequenceFlow id="sid-43FFCDDA-E337-4195-9F20-B1FAA5F7B4E3" sourceRef="sid-59F6D4A4-34C1-4A6B-A236-0F46E82F7E0A" targetRef="sid-8F7F6166-D9F8-400F-9D03-0589945770DE"></sequenceFlow>
<serviceTask id="sid-8F7F6166-D9F8-400F-9D03-0589945770DE" name="来报处理" flowable:class="com.cn.brilliance.flowable.automate.message.service.MessageProcessingServiceTask"></serviceTask>
<serviceTask id="sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E" name="自动化准入服务" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoAccessServiceTask"></serviceTask>
<serviceTask id="sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C" name="自动化时段判断" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoTimeSpanServiceTask"></serviceTask>
<serviceTask id="sid-E5A69443-60B1-45A5-904E-6F9874EAC42B" name="准入失败转人工" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoAccessFailServiceTask"></serviceTask>
<serviceTask id="sid-A17CD01C-5741-4B81-A06E-CE9DD36344D2" name="自动经办数据适配" flowable:class="com.cn.brilliance.flowable.automate.handling.service.AutoHandingServiceTask"></serviceTask>
<serviceTask id="sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5" name="自动经办检核
" flowable:class="com.cn.brilliance.flowable.automate.handling.service.AutoHandingCheckServiceTask"></serviceTask>
<serviceTask id="sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030" name="交易存盘服务" flowable:class="com.cn.brilliance.flowable.automate.handling.service.AutoHandingSaveServiceTask"></serviceTask>
<serviceTask id="sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C" name="自动失败转人工" flowable:class="com.cn.brilliance.flowable.automate.handling.service.AutoHandingFailServiceTask"></serviceTask>
<serviceTask id="sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA" name="自动化准入服务" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoAccessServiceTask"></serviceTask>
<serviceTask id="sid-6F01D079-3E2E-430E-8CE2-084823FAB83A" name="自动化时段判断" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoTimeSpanServiceTask"></serviceTask>
<serviceTask id="sid-D234DC6C-CC8A-4FE8-A8EE-D45ADBE495F8" name="准入失败转人工" flowable:class="com.cn.brilliance.flowable.automate.rule.service.AutoAccessFailServiceTask"></serviceTask>
<serviceTask id="sid-578AB81A-8265-4B15-BAD4-45F2E742161B" name="自动复核服务" flowable:class="com.cn.brilliance.flowable.automate.check.AutoCheckServiceTask"></serviceTask>
<serviceTask id="sid-BF24A14B-B83D-4557-8408-92A4F7C10384" name="二级授权检查" flowable:class="com.cn.brilliance.flowable.automate.check.SecAuthCheckServiceTask"></serviceTask>
<serviceTask id="sid-FF03AA78-9D1C-410D-BBD6-603DBC563809" name="报文发送" flowable:class="com.cn.brilliance.flowable.automate.check.MessageSendServiceTask"></serviceTask>
<serviceTask id="sid-3612AAA7-901B-475F-9A0C-8EA88057D03F" name="自动失败转人工" flowable:class="com.cn.brilliance.flowable.automate.check.AutoCheckFailServiceTask"></serviceTask>
<serviceTask id="sid-4F4456BC-AC99-4DDE-8E82-9ABC4D612F7C" name="短信发送" flowable:class="com.cn.brilliance.flowable.automate.message.service.MessageServiceTask"></serviceTask>
<serviceTask id="sid-2E2514D0-58DD-48DC-9152-4B6E87E2FE30" name="办结" flowable:class="com.cn.brilliance.flowable.automate.check.AutoCheckFailServiceTask"></serviceTask>
<serviceTask id="sid-B0FC3994-A100-4D36-BAB1-E708A92E0B9E" name="短信发送" flowable:class="com.cn.brilliance.flowable.automate.message.service.MessageServiceTask"></serviceTask>
<sequenceFlow id="sid-969AA4CB-D36F-4C29-B8C5-5434658FC231" sourceRef="sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C" targetRef="sid-B0FC3994-A100-4D36-BAB1-E708A92E0B9E"></sequenceFlow>
<sequenceFlow id="sid-A52663F1-B7D2-4618-9C26-7BCA0F2F242C" sourceRef="sid-8F7F6166-D9F8-400F-9D03-0589945770DE" targetRef="sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E"></sequenceFlow>
<startEvent id="sid-59F6D4A4-34C1-4A6B-A236-0F46E82F7E0A" flowable:formFieldValidation="true"></startEvent>
<sequenceFlow id="sid-0BAC268D-8D19-4737-9622-1564AD42C3D5" name="true" sourceRef="sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C" targetRef="sid-A17CD01C-5741-4B81-A06E-CE9DD36344D2">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoTimeSpan=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-4AE9EC29-6567-4245-B46C-6B98A6E3435F" name="true" sourceRef="sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E" targetRef="sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoAccess=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-F2359114-BEA4-4229-8AD7-1C5F8F6F989F" name="true" sourceRef="sid-A17CD01C-5741-4B81-A06E-CE9DD36344D2" targetRef="sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoHanding=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-624A59F5-479A-4757-B8CE-2A2532F88D3E" name="true" sourceRef="sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5" targetRef="sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoHandingCheck=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-8A8BEE71-2DDD-4003-A5BE-7F4DAB23E0D4" name="false" sourceRef="sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5" targetRef="sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoHandingCheck=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-3474A8F8-CF2D-4E11-92D6-6AAE3BBF9D57" sourceRef="sid-3612AAA7-901B-475F-9A0C-8EA88057D03F" targetRef="sid-4F4456BC-AC99-4DDE-8E82-9ABC4D612F7C"></sequenceFlow>
<sequenceFlow id="sid-0392F95E-52E7-4880-BD61-1ABCE0F4E496" name="true" sourceRef="sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA" targetRef="sid-6F01D079-3E2E-430E-8CE2-084823FAB83A">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoAccess=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-30FE90C5-FFCF-4A7E-8F80-1DB90BCFC7B3" name="true" sourceRef="sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030" targetRef="sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoHandingSave=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-29D3545A-1768-4410-9F10-9616AED61254" name="false" sourceRef="sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030" targetRef="sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoHandingSave=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-E7B5E20B-7D35-45E5-ACE5-7D074989E877" name="false" sourceRef="sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA" targetRef="sid-D234DC6C-CC8A-4FE8-A8EE-D45ADBE495F8">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoAccess=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-F8006DE4-B285-4B3B-965F-008DFBC688D2" name="false" sourceRef="sid-6F01D079-3E2E-430E-8CE2-084823FAB83A" targetRef="sid-D234DC6C-CC8A-4FE8-A8EE-D45ADBE495F8">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoTimeSpan=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-55288A89-6B7D-4255-A2EE-B3CAB82A25C6" name="true" sourceRef="sid-6F01D079-3E2E-430E-8CE2-084823FAB83A" targetRef="sid-578AB81A-8265-4B15-BAD4-45F2E742161B">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoTimeSpan=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-4BF397B8-08E5-4958-B146-3310E809E6E9" name="false" sourceRef="sid-578AB81A-8265-4B15-BAD4-45F2E742161B" targetRef="sid-3612AAA7-901B-475F-9A0C-8EA88057D03F">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoCheck=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-7AAABBE8-D522-4D1A-80CD-7CC0C63499C1" name="true" sourceRef="sid-578AB81A-8265-4B15-BAD4-45F2E742161B" targetRef="sid-BF24A14B-B83D-4557-8408-92A4F7C10384">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoCheck=='true'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-F39A167F-D87E-4048-9FDA-F98C479C34CF" sourceRef="sid-BF24A14B-B83D-4557-8408-92A4F7C10384" targetRef="sid-FF03AA78-9D1C-410D-BBD6-603DBC563809"></sequenceFlow>
<sequenceFlow id="sid-644BFD6C-5CD6-4B2A-BDDF-29DDC93B2BDE" name="false" sourceRef="sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E" targetRef="sid-E5A69443-60B1-45A5-904E-6F9874EAC42B">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoAccess=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-71AB1E27-5116-4785-AB1A-100ECC23487E" name="false" sourceRef="sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C" targetRef="sid-E5A69443-60B1-45A5-904E-6F9874EAC42B">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${autoTimeSpan=='false'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-CDFB3B87-5494-4A87-BE99-5CF89CFF0AB7" sourceRef="sid-FF03AA78-9D1C-410D-BBD6-603DBC563809" targetRef="sid-2E2514D0-58DD-48DC-9152-4B6E87E2FE30">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${messageSending=='true'}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_automatedRemittanceOrchestration">
<bpmndi:BPMNPlane bpmnElement="automatedRemittanceOrchestration" id="BPMNPlane_automatedRemittanceOrchestration">
<bpmndi:BPMNShape bpmnElement="sid-8F7F6166-D9F8-400F-9D03-0589945770DE" id="BPMNShape_sid-8F7F6166-D9F8-400F-9D03-0589945770DE">
<omgdc:Bounds height="74.0" width="76.0" x="129.040537519408" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E" id="BPMNShape_sid-D41BF92B-FDFC-4396-883B-3DB3DE272A3E">
<omgdc:Bounds height="74.0" width="75.99999999999997" x="243.74323753665956" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C" id="BPMNShape_sid-997EADE6-BF1F-49C1-9D09-6E2E78A8D99C">
<omgdc:Bounds height="74.0" width="76.0" x="387.121612558224" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-E5A69443-60B1-45A5-904E-6F9874EAC42B" id="BPMNShape_sid-E5A69443-60B1-45A5-904E-6F9874EAC42B">
<omgdc:Bounds height="74.0" width="76.0" x="301.0945875452853" y="286.7567500431289"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-A17CD01C-5741-4B81-A06E-CE9DD36344D2" id="BPMNShape_sid-A17CD01C-5741-4B81-A06E-CE9DD36344D2">
<omgdc:Bounds height="74.0" width="76.0" x="504.5000000000001" y="0.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5" id="BPMNShape_sid-0E7A1A52-6427-48A0-9F59-0A73B7A343D5">
<omgdc:Bounds height="74.0" width="76.0" x="559.1756625841014" y="131.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030" id="BPMNShape_sid-4F89E90A-B5A9-4793-9CA0-D778CEA94030">
<omgdc:Bounds height="74.0" width="76.0" x="716.8918751078222" y="131.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C" id="BPMNShape_sid-05F074EE-8FC4-441E-9DD8-62C947A66C8C">
<omgdc:Bounds height="74.0" width="76.0" x="555.0" y="285.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA" id="BPMNShape_sid-1B4A7D89-DF13-44DE-99FF-EC378BF2ADAA">
<omgdc:Bounds height="74.0" width="76.0" x="852.0" y="131.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-6F01D079-3E2E-430E-8CE2-084823FAB83A" id="BPMNShape_sid-6F01D079-3E2E-430E-8CE2-084823FAB83A">
<omgdc:Bounds height="74.0" width="76.00000000000011" x="960.6351126444819" y="129.040537519408"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-D234DC6C-CC8A-4FE8-A8EE-D45ADBE495F8" id="BPMNShape_sid-D234DC6C-CC8A-4FE8-A8EE-D45ADBE495F8">
<omgdc:Bounds height="74.0" width="76.0" x="852.0" y="286.7567500431289"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-578AB81A-8265-4B15-BAD4-45F2E742161B" id="BPMNShape_sid-578AB81A-8265-4B15-BAD4-45F2E742161B">
<omgdc:Bounds height="74.0" width="76.0" x="1132.689162670359" y="129.040537519408"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-BF24A14B-B83D-4557-8408-92A4F7C10384" id="BPMNShape_sid-BF24A14B-B83D-4557-8408-92A4F7C10384">
<omgdc:Bounds height="74.0" width="76.0" x="1204.3783501811413" y="286.7567500431289"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-FF03AA78-9D1C-410D-BBD6-603DBC563809" id="BPMNShape_sid-FF03AA78-9D1C-410D-BBD6-603DBC563809">
<omgdc:Bounds height="74.0" width="76.0" x="1204.3783501811413" y="405.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-3612AAA7-901B-475F-9A0C-8EA88057D03F" id="BPMNShape_sid-3612AAA7-901B-475F-9A0C-8EA88057D03F">
<omgdc:Bounds height="74.0" width="76.0" x="1016.5000000000002" y="286.7567500431289"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-4F4456BC-AC99-4DDE-8E82-9ABC4D612F7C" id="BPMNShape_sid-4F4456BC-AC99-4DDE-8E82-9ABC4D612F7C">
<omgdc:Bounds height="74.0" width="76.0" x="1016.5000000000002" y="405.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-2E2514D0-58DD-48DC-9152-4B6E87E2FE30" id="BPMNShape_sid-2E2514D0-58DD-48DC-9152-4B6E87E2FE30">
<omgdc:Bounds height="74.0" width="76.0" x="1204.3783501811413" y="540.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-B0FC3994-A100-4D36-BAB1-E708A92E0B9E" id="BPMNShape_sid-B0FC3994-A100-4D36-BAB1-E708A92E0B9E">
<omgdc:Bounds height="74.0" width="76.0" x="559.1756625841014" y="387.121612558224"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-59F6D4A4-34C1-4A6B-A236-0F46E82F7E0A" id="BPMNShape_sid-59F6D4A4-34C1-4A6B-A236-0F46E82F7E0A">
<omgdc:Bounds height="30.0" width="30.0" x="45.0" y="151.040537519408"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-43FFCDDA-E337-4195-9F20-B1FAA5F7B4E3" id="BPMNEdge_sid-43FFCDDA-E337-4195-9F20-B1FAA5F7B4E3" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="74.94934965064628" y="166.17453724543248"></omgdi:waypoint>
<omgdi:waypoint x="129.040537519408" y="166.65938535897314"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-30FE90C5-FFCF-4A7E-8F80-1DB90BCFC7B3" id="BPMNEdge_sid-30FE90C5-FFCF-4A7E-8F80-1DB90BCFC7B3" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.00000000000001">
<omgdi:waypoint x="792.8418751078221" y="168.0"></omgdi:waypoint>
<omgdi:waypoint x="851.9999999999961" y="168.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-29D3545A-1768-4410-9F10-9616AED61254" id="BPMNEdge_sid-29D3545A-1768-4410-9F10-9616AED61254" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="716.8918751078222" y="204.1000204371444"></omgdi:waypoint>
<omgdi:waypoint x="630.9499999999999" y="285.85241695358405"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-644BFD6C-5CD6-4B2A-BDDF-29DDC93B2BDE" id="BPMNEdge_sid-644BFD6C-5CD6-4B2A-BDDF-29DDC93B2BDE" flowable:sourceDockerX="37.999999999999986" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="281.74323753665954" y="203.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="281.74323753665954" y="219.25"></omgdi:waypoint>
<omgdi:waypoint x="339.0945875452853" y="219.25"></omgdi:waypoint>
<omgdi:waypoint x="339.0945875452853" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-F2359114-BEA4-4229-8AD7-1C5F8F6F989F" id="BPMNEdge_sid-F2359114-BEA4-4229-8AD7-1C5F8F6F989F" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="580.4499999999953" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="597.1756625841014" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="597.1756625841014" y="131.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-F8006DE4-B285-4B3B-965F-008DFBC688D2" id="BPMNEdge_sid-F8006DE4-B285-4B3B-965F-008DFBC688D2" flowable:sourceDockerX="38.00000000000006" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="973.1494691362644" y="202.990537519408"></omgdi:waypoint>
<omgdi:waypoint x="915.4512034494227" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-E7B5E20B-7D35-45E5-ACE5-7D074989E877" id="BPMNEdge_sid-E7B5E20B-7D35-45E5-ACE5-7D074989E877" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.00000000000001" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="890.0" y="204.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="890.0" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-624A59F5-479A-4757-B8CE-2A2532F88D3E" id="BPMNEdge_sid-624A59F5-479A-4757-B8CE-2A2532F88D3E" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="635.1256625841013" y="168.0"></omgdi:waypoint>
<omgdi:waypoint x="716.8918751078103" y="168.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-7AAABBE8-D522-4D1A-80CD-7CC0C63499C1" id="BPMNEdge_sid-7AAABBE8-D522-4D1A-80CD-7CC0C63499C1" flowable:sourceDockerX="57.0" flowable:sourceDockerY="72.54901960784314" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="1190.2933880505077" y="202.990537519408"></omgdi:waypoint>
<omgdi:waypoint x="1226.4207113800162" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-3474A8F8-CF2D-4E11-92D6-6AAE3BBF9D57" id="BPMNEdge_sid-3474A8F8-CF2D-4E11-92D6-6AAE3BBF9D57" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="1054.5000000000002" y="360.70675004312886"></omgdi:waypoint>
<omgdi:waypoint x="1054.5000000000002" y="405.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-55288A89-6B7D-4255-A2EE-B3CAB82A25C6" id="BPMNEdge_sid-55288A89-6B7D-4255-A2EE-B3CAB82A25C6" flowable:sourceDockerX="38.00000000000006" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="1036.585112644482" y="166.040537519408"></omgdi:waypoint>
<omgdi:waypoint x="1132.689162670359" y="166.040537519408"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-4BF397B8-08E5-4958-B146-3310E809E6E9" id="BPMNEdge_sid-4BF397B8-08E5-4958-B146-3310E809E6E9" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="1143.4313497289236" y="202.990537519408"></omgdi:waypoint>
<omgdi:waypoint x="1081.7209780590824" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-969AA4CB-D36F-4C29-B8C5-5434658FC231" id="BPMNEdge_sid-969AA4CB-D36F-4C29-B8C5-5434658FC231" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="594.510852880379" y="358.95000000000005"></omgdi:waypoint>
<omgdi:waypoint x="595.6627652478626" y="387.121612558224"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-F39A167F-D87E-4048-9FDA-F98C479C34CF" id="BPMNEdge_sid-F39A167F-D87E-4048-9FDA-F98C479C34CF" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="1242.3783501811413" y="360.70675004312886"></omgdi:waypoint>
<omgdi:waypoint x="1242.3783501811413" y="405.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-CDFB3B87-5494-4A87-BE99-5CF89CFF0AB7" id="BPMNEdge_sid-CDFB3B87-5494-4A87-BE99-5CF89CFF0AB7" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="36.99999999999999">
<omgdi:waypoint x="1242.3783501811413" y="478.95000000000005"></omgdi:waypoint>
<omgdi:waypoint x="1242.3783501811413" y="540.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-0BAC268D-8D19-4737-9622-1564AD42C3D5" id="BPMNEdge_sid-0BAC268D-8D19-4737-9622-1564AD42C3D5" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="425.121612558224" y="130.0"></omgdi:waypoint>
<omgdi:waypoint x="425.121612558224" y="102.5"></omgdi:waypoint>
<omgdi:waypoint x="542.5000000000001" y="102.5"></omgdi:waypoint>
<omgdi:waypoint x="542.5000000000001" y="73.95"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-A52663F1-B7D2-4618-9C26-7BCA0F2F242C" id="BPMNEdge_sid-A52663F1-B7D2-4618-9C26-7BCA0F2F242C" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="37.999999999999986" flowable:targetDockerY="37.0">
<omgdi:waypoint x="204.990537519408" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="243.74323753665956" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-0392F95E-52E7-4880-BD61-1ABCE0F4E496" id="BPMNEdge_sid-0392F95E-52E7-4880-BD61-1ABCE0F4E496" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.00000000000001" flowable:targetDockerX="38.00000000000006" flowable:targetDockerY="37.0">
<omgdi:waypoint x="927.9499999999986" y="167.31459016840927"></omgdi:waypoint>
<omgdi:waypoint x="960.6351126444813" y="166.72504549595718"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-8A8BEE71-2DDD-4003-A5BE-7F4DAB23E0D4" id="BPMNEdge_sid-8A8BEE71-2DDD-4003-A5BE-7F4DAB23E0D4" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="597.1756625841014" y="204.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="597.1756625841014" y="245.0"></omgdi:waypoint>
<omgdi:waypoint x="593.0" y="245.0"></omgdi:waypoint>
<omgdi:waypoint x="593.0" y="285.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-4AE9EC29-6567-4245-B46C-6B98A6E3435F" id="BPMNEdge_sid-4AE9EC29-6567-4245-B46C-6B98A6E3435F" flowable:sourceDockerX="37.999999999999986" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="319.6932375366596" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="360.5" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="351.5" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="387.12161255821906" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-71AB1E27-5116-4785-AB1A-100ECC23487E" id="BPMNEdge_sid-71AB1E27-5116-4785-AB1A-100ECC23487E" flowable:sourceDockerX="38.0" flowable:sourceDockerY="37.0" flowable:targetDockerX="38.0" flowable:targetDockerY="37.0">
<omgdi:waypoint x="425.121612558224" y="203.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="425.121612558224" y="229.75"></omgdi:waypoint>
<omgdi:waypoint x="339.0945875452853" y="229.75"></omgdi:waypoint>
<omgdi:waypoint x="339.0945875452853" y="286.7567500431289"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
package com.example.flowable;
package com.cn.brilliance.flowable;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......
package com.example.flowable.junit;
package com.cn.brilliance.flowable.junit;
import org.flowable.engine.*;
import org.flowable.engine.history.HistoricActivityInstance;
......@@ -19,6 +19,7 @@ public class FlowableTest {
ProcessEngineConfiguration configuration = null;
@BeforeEach
@Test
public void before() {
/**
* 获取流程引擎对象,会在对应数据库下建立相关工作流表,如果已存在,则不会再创建
......@@ -45,7 +46,7 @@ public class FlowableTest {
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService
.createDeployment()
.addClasspathResource("creditcard.bpmn20.xml")
.addClasspathResource("processes/creditcard.bpmn20.xml")
.name("creditcard")
.deploy();
......@@ -94,7 +95,10 @@ public class FlowableTest {
varivale.put("nrOfHolidays", "3");
varivale.put("description", "工作累了,出去玩玩");
// 通过流程请求key启动流程实例 pbpmn20.xml文件里process id="holidayRequest"
ProcessInstance holidayRequest = runtimeService.startProcessInstanceByKey("holidayRequest", varivale);
// ProcessInstance holidayRequest = runtimeService.startProcessInstanceByKey("holidayRequest", varivale);
ProcessInstance holidayRequest = runtimeService.startProcessInstanceByKey("automatedRemittanceOrchestration", varivale);
// 通过流程请求id启动流程实例 flowable.act_re_procdef 的 DEPLOYMENT_ID_ 即部署id
// runtimeService.startProcessInstanceById("2501");
System.out.println("holidayRequest.getActivityId() = " + holidayRequest.getActivityId());
......
<?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:flowable="http://flowable.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.flowable.org/processdef">
<process id="Expense1" name="ExpenseProcess" isExecutable="true">
<documentation>报销流程</documentation>
<startEvent id="start" name="开始"></startEvent>
<userTask id="fillTask" name="出差报销" flowable:assignee="${taskUser}">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
<![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<exclusiveGateway id="judgeTask"></exclusiveGateway>
<userTask id="directorTak" name="经理审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.ManagerTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<userTask id="bossTask" name="老板审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.BossTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<endEvent id="end" name="结束"></endEvent>
<sequenceFlow id="directorNotPassFlow" name="驳回" sourceRef="directorTak" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossNotPassFlow" name="驳回" sourceRef="bossTask" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow1" sourceRef="start" targetRef="fillTask"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="fillTask" targetRef="judgeTask"></sequenceFlow>
<sequenceFlow id="judgeMore" name="大于500元" sourceRef="judgeTask" targetRef="bossTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money > 500}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossPassFlow" name="通过" sourceRef="bossTask" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="directorPassFlow" name="通过" sourceRef="directorTak" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="judgeLess" name="小于500元" sourceRef="judgeTask" targetRef="directorTak">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money <= 500}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_Expense">
<bpmndi:BPMNPlane bpmnElement="Expense" id="BPMNPlane_Expense">
<bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
<omgdc:Bounds height="30.0" width="30.0" x="285.0" y="135.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="fillTask" id="BPMNShape_fillTask">
<omgdc:Bounds height="80.0" width="100.0" x="405.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="judgeTask" id="BPMNShape_judgeTask">
<omgdc:Bounds height="40.0" width="40.0" x="585.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="directorTak" id="BPMNShape_directorTak">
<omgdc:Bounds height="80.0" width="100.0" x="735.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="bossTask" id="BPMNShape_bossTask">
<omgdc:Bounds height="80.0" width="100.0" x="555.0" y="255.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
<omgdc:Bounds height="28.0" width="28.0" x="771.0" y="281.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="315.0" y="150.0"></omgdi:waypoint>
<omgdi:waypoint x="405.0" y="150.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="505.0" y="150.16611295681062"></omgdi:waypoint>
<omgdi:waypoint x="585.4333333333333" y="150.43333333333334"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeLess" id="BPMNEdge_judgeLess">
<omgdi:waypoint x="624.5530726256983" y="150.44692737430168"></omgdi:waypoint>
<omgdi:waypoint x="735.0" y="150.1392757660167"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorNotPassFlow" id="BPMNEdge_directorNotPassFlow">
<omgdi:waypoint x="785.0" y="110.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="110.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossPassFlow" id="BPMNEdge_bossPassFlow">
<omgdi:waypoint x="655.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="771.0" y="295.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeMore" id="BPMNEdge_judgeMore">
<omgdi:waypoint x="605.4340277777778" y="169.56597222222223"></omgdi:waypoint>
<omgdi:waypoint x="605.1384083044983" y="255.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorPassFlow" id="BPMNEdge_directorPassFlow">
<omgdi:waypoint x="785.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="281.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossNotPassFlow" id="BPMNEdge_bossNotPassFlow">
<omgdi:waypoint x="555.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="190.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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
<process id="CreditCard" name="creditcard" isExecutable="true">
<documentation>信用卡申请规则扭转</documentation>
<startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
<exclusiveGateway id="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" name="信用卡发放准入规则网关"></exclusiveGateway>
<sequenceFlow id="sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" sourceRef="startEvent1" targetRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D"></sequenceFlow>
<serviceTask id="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" name="征信判断服务" flowable:class="com.example.flowable.ServiceTask1"></serviceTask>
<endEvent id="sid-FF25E057-8353-4897-82E8-E6AA566D1519" name="不发卡"></endEvent>
<serviceTask id="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" name="信用卡金额判断服务" flowable:class="com.example.flowable.ServiceTask2"></serviceTask>
<endEvent id="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC" name="发信用卡"></endEvent>
<sequenceFlow id="sid-320CC5D6-D191-4E85-8035-6F45618E9166" name="有工作" sourceRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" targetRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${work=='yes'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" name="无工作" sourceRef="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<documentation>如果申请人既没房也没车,同时学历为本科以上,并且月薪少于2000,同时之前没有信用卡的,那么不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${work=='no'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-99143761-DC5A-42FA-980C-083205108F9F" name="征信不通过" sourceRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<documentation>没房也没车大专以下月薪少于5000不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${credit=='no'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-44D3689F-796E-47FD-B732-D89A02343ACA" name="工资低于2000" sourceRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" targetRef="sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${salary<=2000}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-0040323B-4A7C-433A-959F-0C3D134981F9" name="征信通过" sourceRef="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" targetRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC">
<documentation>没房也没车大专以下月薪少于5000不通过</documentation>
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${credit=='yes'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" name="工资大于2000" sourceRef="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" targetRef="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${salary>2000 and grantCard=='yes'}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_CreditCard">
<bpmndi:BPMNPlane bpmnElement="CreditCard" id="BPMNPlane_CreditCard">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D" id="BPMNShape_sid-0EAC9C81-F059-4262-9877-F3A0BA3A1A3D">
<omgdc:Bounds height="40.0" width="40.0" x="255.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D" id="BPMNShape_sid-27B8A747-45B9-48CF-8A13-AB1A06D68F7D">
<omgdc:Bounds height="80.0" width="100.0" x="450.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-FF25E057-8353-4897-82E8-E6AA566D1519" id="BPMNShape_sid-FF25E057-8353-4897-82E8-E6AA566D1519">
<omgdc:Bounds height="28.0" width="28.0" x="360.0" y="270.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC" id="BPMNShape_sid-8CE39D16-B2C1-46C1-BD48-BD20B529EFFC">
<omgdc:Bounds height="80.0" width="100.0" x="645.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC" id="BPMNShape_sid-F23C964D-129B-4B5D-89A2-61A490CDCCAC">
<omgdc:Bounds height="28.0" width="28.0" x="840.0" y="156.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" id="BPMNEdge_sid-BA8E0A27-19CC-4799-841C-D561E02C58CC" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5">
<omgdi:waypoint x="129.94999695909908" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="192.5" y="178.0"></omgdi:waypoint>
<omgdi:waypoint x="192.5" y="170.5"></omgdi:waypoint>
<omgdi:waypoint x="255.5" y="170.5"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-320CC5D6-D191-4E85-8035-6F45618E9166" id="BPMNEdge_sid-320CC5D6-D191-4E85-8035-6F45618E9166" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="294.48805220881326" y="170.45758928571425"></omgdi:waypoint>
<omgdi:waypoint x="450.0" y="170.11124721603562"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-0040323B-4A7C-433A-959F-0C3D134981F9" id="BPMNEdge_sid-0040323B-4A7C-433A-959F-0C3D134981F9" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="549.9499999999803" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="645.0" y="170.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-99143761-DC5A-42FA-980C-083205108F9F" id="BPMNEdge_sid-99143761-DC5A-42FA-980C-083205108F9F" flowable:sourceDockerX="50.0" flowable:sourceDockerY="79.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="500.0" y="209.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="500.0" y="232.0"></omgdi:waypoint>
<omgdi:waypoint x="374.0" y="232.0"></omgdi:waypoint>
<omgdi:waypoint x="374.0" y="270.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-44D3689F-796E-47FD-B732-D89A02343ACA" id="BPMNEdge_sid-44D3689F-796E-47FD-B732-D89A02343ACA" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="695.0" y="209.95000000000002"></omgdi:waypoint>
<omgdi:waypoint x="695.0" y="284.0"></omgdi:waypoint>
<omgdi:waypoint x="387.9499192832599" y="284.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" id="BPMNEdge_sid-A9DAC90F-9BC5-4EF1-B815-B73E04158A77" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="744.9499999999605" y="170.0"></omgdi:waypoint>
<omgdi:waypoint x="840.0" y="170.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" id="BPMNEdge_sid-C5FE683F-33FE-4869-8898-F212CFC5D94C" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="275.5" y="189.44165933098594"></omgdi:waypoint>
<omgdi:waypoint x="275.5" y="284.0"></omgdi:waypoint>
<omgdi:waypoint x="360.0" y="284.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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.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.flowable.org/processdef" exporter="Flowable Open Source Modeler" exporterVersion="6.7.2">
<process id="demo" name="demo" isExecutable="true">
<documentation>demo</documentation>
<startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
<serviceTask id="sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A" flowable:class="com.example.flowable.MyServiceTask"></serviceTask>
<serviceTask id="sid-39B59FB3-20A5-48D5-B1C6-E75EE0A3E4B8" flowable:class="com.example.flowable.MyServiceTask2"></serviceTask>
<serviceTask id="sid-D0C785ED-3A44-4D30-B18A-885381835170" flowable:class="com.example.flowable.MyServiceTask3"></serviceTask>
<endEvent id="sid-A0846D42-E6C2-4922-BE07-D9F70C295286"></endEvent>
<sequenceFlow id="sid-BDF0D3DE-AED6-45D9-95DD-CB0D295EAC23" name="通过" sourceRef="startEvent1" targetRef="sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-C639D6A8-1D89-45A0-B985-51B307424D51" name="通过3" sourceRef="sid-D0C785ED-3A44-4D30-B18A-885381835170" targetRef="sid-A0846D42-E6C2-4922-BE07-D9F70C295286">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${end2=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-27338A14-7ACE-4207-BB16-993526FECBFA" name="通过2" sourceRef="sid-39B59FB3-20A5-48D5-B1C6-E75EE0A3E4B8" targetRef="sid-A0846D42-E6C2-4922-BE07-D9F70C295286">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${end1=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-DEBA4A42-0169-45F0-B641-398BBD8731BE" name="通过4" sourceRef="sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A" targetRef="sid-39B59FB3-20A5-48D5-B1C6-E75EE0A3E4B8">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${end4=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-C32D6D4D-DEEE-457B-A24C-0DDF57FB182F" name="不通过3" sourceRef="sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A" targetRef="sid-D0C785ED-3A44-4D30-B18A-885381835170">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${end3=='不通过'}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_demo">
<bpmndi:BPMNPlane bpmnElement="demo" id="BPMNPlane_demo">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="90.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A" id="BPMNShape_sid-88EA1C36-FEAE-4361-B729-0BD8A70DE59A">
<omgdc:Bounds height="80.0" width="100.0" x="285.0" y="125.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-39B59FB3-20A5-48D5-B1C6-E75EE0A3E4B8" id="BPMNShape_sid-39B59FB3-20A5-48D5-B1C6-E75EE0A3E4B8">
<omgdc:Bounds height="80.0" width="100.0" x="465.0" y="30.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-D0C785ED-3A44-4D30-B18A-885381835170" id="BPMNShape_sid-D0C785ED-3A44-4D30-B18A-885381835170">
<omgdc:Bounds height="80.0" width="100.0" x="480.0" y="255.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-A0846D42-E6C2-4922-BE07-D9F70C295286" id="BPMNShape_sid-A0846D42-E6C2-4922-BE07-D9F70C295286">
<omgdc:Bounds height="28.0" width="28.0" x="750.0" y="120.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-BDF0D3DE-AED6-45D9-95DD-CB0D295EAC23" id="BPMNEdge_sid-BDF0D3DE-AED6-45D9-95DD-CB0D295EAC23" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="119.94999965443563" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="285.0" y="165.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C32D6D4D-DEEE-457B-A24C-0DDF57FB182F" id="BPMNEdge_sid-C32D6D4D-DEEE-457B-A24C-0DDF57FB182F" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
<omgdi:waypoint x="335.0" y="204.95"></omgdi:waypoint>
<omgdi:waypoint x="335.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="480.0" y="295.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-27338A14-7ACE-4207-BB16-993526FECBFA" id="BPMNEdge_sid-27338A14-7ACE-4207-BB16-993526FECBFA" flowable:sourceDockerX="99.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
<omgdi:waypoint x="564.95" y="70.0"></omgdi:waypoint>
<omgdi:waypoint x="642.5" y="70.0"></omgdi:waypoint>
<omgdi:waypoint x="642.5" y="134.0"></omgdi:waypoint>
<omgdi:waypoint x="750.0" y="134.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-DEBA4A42-0169-45F0-B641-398BBD8731BE" id="BPMNEdge_sid-DEBA4A42-0169-45F0-B641-398BBD8731BE" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="10.0" flowable:targetDockerY="38.0">
<omgdi:waypoint x="384.94999999997884" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="418.0" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="415.0" y="68.0"></omgdi:waypoint>
<omgdi:waypoint x="465.0" y="68.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C639D6A8-1D89-45A0-B985-51B307424D51" id="BPMNEdge_sid-C639D6A8-1D89-45A0-B985-51B307424D51" flowable:sourceDockerX="99.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="4.0" flowable:targetDockerY="23.0">
<omgdi:waypoint x="579.95" y="294.13142857142856"></omgdi:waypoint>
<omgdi:waypoint x="750.0443289528545" y="146.39360860582016"></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:flowable="http://flowable.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.flowable.org/processdef">
<process id="Expense" name="ExpenseProcess" isExecutable="true">
<documentation>报销流程</documentation>
<startEvent id="start" name="开始"></startEvent>
<userTask id="fillTask" name="出差报销" flowable:assignee="${taskUser}">
<extensionElements>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
<![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<exclusiveGateway id="judgeTask"></exclusiveGateway>
<userTask id="directorTak" name="经理审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.ManagerTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<userTask id="bossTask" name="老板审批">
<extensionElements>
<flowable:taskListener event="create"
class="com.example.flowable.taskHandler.BossTaskHandler"></flowable:taskListener>
</extensionElements>
</userTask>
<endEvent id="end" name="结束"></endEvent>
<sequenceFlow id="directorNotPassFlow" name="驳回" sourceRef="directorTak" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossNotPassFlow" name="驳回" sourceRef="bossTask" targetRef="fillTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='驳回'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow1" sourceRef="start" targetRef="fillTask"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="fillTask" targetRef="judgeTask"></sequenceFlow>
<sequenceFlow id="judgeMore" name="大于500元" sourceRef="judgeTask" targetRef="bossTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money > 500}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="bossPassFlow" name="通过" sourceRef="bossTask" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="directorPassFlow" name="通过" sourceRef="directorTak" targetRef="end">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${outcome=='通过'}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="judgeLess" name="小于500元" sourceRef="judgeTask" targetRef="directorTak">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${money <= 500}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_Expense">
<bpmndi:BPMNPlane bpmnElement="Expense" id="BPMNPlane_Expense">
<bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
<omgdc:Bounds height="30.0" width="30.0" x="285.0" y="135.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="fillTask" id="BPMNShape_fillTask">
<omgdc:Bounds height="80.0" width="100.0" x="405.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="judgeTask" id="BPMNShape_judgeTask">
<omgdc:Bounds height="40.0" width="40.0" x="585.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="directorTak" id="BPMNShape_directorTak">
<omgdc:Bounds height="80.0" width="100.0" x="735.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="bossTask" id="BPMNShape_bossTask">
<omgdc:Bounds height="80.0" width="100.0" x="555.0" y="255.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
<omgdc:Bounds height="28.0" width="28.0" x="771.0" y="281.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="315.0" y="150.0"></omgdi:waypoint>
<omgdi:waypoint x="405.0" y="150.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="505.0" y="150.16611295681062"></omgdi:waypoint>
<omgdi:waypoint x="585.4333333333333" y="150.43333333333334"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeLess" id="BPMNEdge_judgeLess">
<omgdi:waypoint x="624.5530726256983" y="150.44692737430168"></omgdi:waypoint>
<omgdi:waypoint x="735.0" y="150.1392757660167"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorNotPassFlow" id="BPMNEdge_directorNotPassFlow">
<omgdi:waypoint x="785.0" y="110.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="37.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="110.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossPassFlow" id="BPMNEdge_bossPassFlow">
<omgdi:waypoint x="655.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="771.0" y="295.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="judgeMore" id="BPMNEdge_judgeMore">
<omgdi:waypoint x="605.4340277777778" y="169.56597222222223"></omgdi:waypoint>
<omgdi:waypoint x="605.1384083044983" y="255.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="directorPassFlow" id="BPMNEdge_directorPassFlow">
<omgdi:waypoint x="785.0" y="190.0"></omgdi:waypoint>
<omgdi:waypoint x="785.0" y="281.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="bossNotPassFlow" id="BPMNEdge_bossNotPassFlow">
<omgdi:waypoint x="555.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="455.0" y="190.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
com\example\flowable\config\FlowableConfig.class
com\example\flowable\controller\ExpenseController.class
com\example\flowable\controller\TestFlowable.class
com\example\flowable\taskHandler\ManagerTaskHandler.class
com\example\flowable\FlowableApplication.class
com\example\flowable\taskHandler\BossTaskHandler.class
D:\javacompany\flowable-master\src\main\java\com\example\flowable\config\FlowableConfig.java
D:\javacompany\flowable-master\src\main\java\com\example\flowable\controller\TestFlowable.java
D:\javacompany\flowable-master\src\main\java\com\example\flowable\controller\ExpenseController.java
D:\javacompany\flowable-master\src\main\java\com\example\flowable\taskHandler\BossTaskHandler.java
D:\javacompany\flowable-master\src\main\java\com\example\flowable\taskHandler\ManagerTaskHandler.java
D:\javacompany\flowable-master\src\main\java\com\example\flowable\FlowableApplication.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\automate\rule\service\autoTimeSpanServiceTask.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\taskHandler\ServiceTask2.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\FlowableApplication.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\automate\rule\service\autoAccessServiceTask.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\taskHandler\ManagerTaskHandler.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\controller\ExpenseController.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\taskHandler\ServiceTask1.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\controller\CreditCardController.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\automate\message\model\MessageVo.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\automate\message\service\MessageServiceTask.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\automate\rule\service\autoAccessFailServiceTask.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\config\FlowableConfig.java
D:\javacompany\flowable-master\src\main\java\com\cn\brilliance\flowable\taskHandler\BossTaskHandler.java
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