Selaa lähdekoodia

合同日常工作流

baichengfei 5 vuotta sitten
vanhempi
commit
c3e5fc084b

+ 52 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluateApprovalRefuseService.java

@@ -0,0 +1,52 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.util.HttpRequest;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.ExecutionListener;
+import org.activiti.engine.delegate.Expression;
+import org.springframework.stereotype.Component;
+
+@Component("evaluateApprovalRefuseService")
+public class EvaluateApprovalRefuseService implements ExecutionListener {
+
+    private Expression stepCode;
+    // 审批驳回
+    @Override
+    public void notify(DelegateExecution delegateExecution) {
+        String callbackUrl = delegateExecution.getVariable("callbackUrl").toString();
+        // String processKey = delegateExecution.getVariable("processKey").toString();
+        String businessKey = delegateExecution.getVariable("businessKey").toString();
+        Object nowStepCode = stepCode.getValue(delegateExecution).toString();
+        String approveUrl = callbackUrl + "/contract-daily-listener/approval-refuse";
+
+        String createUserId = "";
+        if (callbackUrl.length() > 0) {
+            // TODO 哪个环节被驳回的, 方便短信通知使用
+            String taskName = delegateExecution.getEventName();
+            createUserId = HttpRequest.sendGet(approveUrl, "businessKey=" + businessKey + "&stepCode=" + nowStepCode);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (createUserId.length() <= 0) {
+            throw new ActivitiException("驳回审批失败!请联系管理员!");
+        }
+
+        if (nowStepCode.equals("-1")) {
+            delegateExecution.setVariableLocal("refuseName", "初审未通过");
+        } else if (nowStepCode.equals("-2")) {
+            delegateExecution.setVariableLocal("refuseName", "复审未通过");
+        } else if (nowStepCode.equals("-3")) {
+            delegateExecution.setVariableLocal("refuseName", "专业处接收未通过");
+        } else if (nowStepCode.equals("-4")) {
+            delegateExecution.setVariableLocal("refuseName", "专业处室未通过");
+        } else if (nowStepCode.equals("-5")) {
+            delegateExecution.setVariableLocal("refuseName", "集中评审未通过");
+        } else if (nowStepCode.equals("-10")) {
+            delegateExecution.setVariableLocal("refuseName", "企管法规处未通过");
+        }
+        System.out.println("信息变更工作流 线 驳回: " + nowStepCode);
+        delegateExecution.setVariable("backUsers", createUserId);
+        delegateExecution.setVariableLocal("backUsers", createUserId);
+    }
+}

+ 22 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluateApprovalRefuseTaskService.java

@@ -0,0 +1,22 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluateApprovalRefuseTaskService")
+public class EvaluateApprovalRefuseTaskService implements TaskListener {
+    // 二级单位初审
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        if (delegateTask.getVariable("backUsers") != null) {
+            String backUsers = delegateTask.getVariable("backUsers").toString();
+            delegateTask.setVariable("users", backUsers);
+            delegateTask.setVariableLocal("users", backUsers);
+            delegateTask.addCandidateUsers(Arrays.asList(backUsers.split(",")));
+            System.out.println("信息变更工作流 节点 驳回: " + delegateTask.getVariable("backUsers").toString());
+        }
+    }
+}

+ 44 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluateLawOfficeAuditService.java

@@ -0,0 +1,44 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.client.FeignClient;
+import com.common.workflow.service.dto.ApproveInfoDTO;
+import com.common.workflow.service.dto.ApproveParamsDTO;
+import feign.Feign;
+import feign.jackson.JacksonDecoder;
+import feign.jackson.JacksonEncoder;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluateLawOfficeAuditService")
+public class EvaluateLawOfficeAuditService implements TaskListener {
+    // 企业法规处审核, 非入库
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+        ApproveParamsDTO approveParams = new ApproveParamsDTO();
+        approveParams.setBusinessKey(businessKey);
+        ApproveInfoDTO approveInfo = null;
+        String approveInfoJson = "";
+        if (callbackUrl.length() > 0) {
+            FeignClient client = Feign.builder()
+                .decoder(new JacksonDecoder())
+                .encoder(new JacksonEncoder())
+                .target(FeignClient.class, callbackUrl);
+            approveInfo = client.getEvaluateLawOfficeAuditors(approveParams);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (approveInfo.getUsers().length() <= 0) {
+            throw new ActivitiException("未找到审核用户,请联系管理员!");
+        }
+        System.out.println("信息变更工作流 获取企业法规处审核审核人: " + approveInfo.getUsers());
+        delegateTask.setVariable("users", approveInfo.getUsers());
+        delegateTask.setVariableLocal("users", approveInfo.getUsers());
+        delegateTask.addCandidateUsers(Arrays.asList(approveInfo.getUsers().split(",")));
+    }
+}

+ 45 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluatePreFenTrailService.java

@@ -0,0 +1,45 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.client.FeignClient;
+import com.common.workflow.service.dto.ApproveInfoDTO;
+import com.common.workflow.service.dto.ApproveParamsDTO;
+import feign.Feign;
+import feign.jackson.JacksonDecoder;
+import feign.jackson.JacksonEncoder;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluatePreFenTrailService")
+public class EvaluatePreFenTrailService implements TaskListener {
+    // 二级单位分办
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+        ApproveParamsDTO approveParams = new ApproveParamsDTO();
+        approveParams.setBusinessKey(businessKey);
+        ApproveInfoDTO approveInfo = null;
+
+        if (callbackUrl.length() > 0) {
+            FeignClient client = Feign.builder()
+                .decoder(new JacksonDecoder())
+                .encoder(new JacksonEncoder())
+                .target(FeignClient.class, callbackUrl);
+            approveInfo = client.getEvaluatePreFirstAuditors(approveParams);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (approveInfo.getUsers().length() <= 0) {
+            throw new ActivitiException("未找到审核用户,请联系管理员!");
+        }
+        System.out.println("信息变更工作流 获取分办人: " + approveInfo.getUsers());
+        delegateTask.setVariable("users", approveInfo.getUsers());
+        delegateTask.setVariableLocal("users", approveInfo.getUsers());
+        delegateTask.addCandidateUsers(Arrays.asList(approveInfo.getUsers().split(",")));
+    }
+}
+

+ 36 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluatePreFirstTrailService.java

@@ -0,0 +1,36 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.util.HttpRequest;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluatePreFirstTrailService")
+public class EvaluatePreFirstTrailService implements TaskListener {
+    // 二级单位初审
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        // String processKey = delegateTask.getVariable("processKey").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+
+        String approveUrl = callbackUrl + "/contract-daily-listener/pre-first-trail";
+
+        String approveIds = "";
+        if (callbackUrl.length() > 0) {
+            approveIds = HttpRequest.sendGet(approveUrl, "businessKey=" + businessKey);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (approveIds.length() <= 0) {
+            throw new ActivitiException("未找到审核用户,请联系管理员!");
+        }
+        System.out.println("信息变更工作流 获取初审人: " + approveIds);
+        delegateTask.setVariable("users", approveIds);
+        delegateTask.setVariableLocal("users", approveIds);
+        delegateTask.addCandidateUsers(Arrays.asList(approveIds.split(",")));
+    }
+}

+ 36 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluatePreSecondTrailService.java

@@ -0,0 +1,36 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.util.HttpRequest;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluatePreSecondTrailService")
+public class EvaluatePreSecondTrailService implements TaskListener {
+    // 二级单位复审
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        // String processKey = delegateTask.getVariable("processKey").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+
+        String approveUrl = callbackUrl + "/contract-daily-listener/pre-second-trail";
+
+        String approveIds = "";
+        if (callbackUrl.length() > 0) {
+            approveIds = HttpRequest.sendGet(approveUrl, "businessKey=" + businessKey);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (approveIds.length() <= 0) {
+            throw new ActivitiException("未找到审核用户,请联系管理员!");
+        }
+        System.out.println("信息变更工作流 获取二级单位复审审核人: " + approveIds);
+        delegateTask.setVariable("users", approveIds);
+        delegateTask.setVariableLocal("users", approveIds);
+        delegateTask.addCandidateUsers(Arrays.asList(approveIds.split(",")));
+    }
+}

+ 46 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluatePreStorageAuditService.java

@@ -0,0 +1,46 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.client.FeignClient;
+import com.common.workflow.service.dto.ApproveInfoDTO;
+import com.common.workflow.service.dto.ApproveParamsDTO;
+import feign.Feign;
+import feign.jackson.JacksonDecoder;
+import feign.jackson.JacksonEncoder;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Component("evaluatePreStorageAuditService")
+public class EvaluatePreStorageAuditService implements TaskListener {
+    // 企业法规处入库审核
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+        ApproveParamsDTO approveParams = new ApproveParamsDTO();
+        approveParams.setBusinessKey(businessKey);
+        ApproveInfoDTO approveInfo = null;
+        String approveInfoJson = "";
+        if (callbackUrl.length() > 0) {
+            FeignClient client = Feign.builder()
+                .decoder(new JacksonDecoder())
+                .encoder(new JacksonEncoder())
+                .target(FeignClient.class, callbackUrl);
+            approveInfo = client.getEvaluatePreStorageAuditors(approveParams);
+            // approveInfoJson = HttpRequest.sendGet(approveUrl, "businessKey=" + businessKey);
+            // approveInfo = (ApproveInfoDTO) JSONObject.parse(approveInfoJson);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (approveInfo.getUsers().length() <= 0) {
+            throw new ActivitiException("未找到审核用户,请联系管理员!");
+        }
+        System.out.println("信息变更工作流 获取入库审核人: " + approveInfo.getUsers());
+        delegateTask.setVariable("users", approveInfo.getUsers());
+        delegateTask.setVariableLocal("users", approveInfo.getUsers());
+        delegateTask.addCandidateUsers(Arrays.asList(approveInfo.getUsers().split(",")));
+    }
+}

+ 33 - 0
src/main/java/com/common/workflow/service/activiti/contractDailyEvaluationListener/EvaluateWorkflowEndService.java

@@ -0,0 +1,33 @@
+package com.common.workflow.service.activiti.contractDailyEvaluationListener;
+
+import com.common.workflow.service.util.HttpRequest;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.ExecutionListener;
+import org.activiti.engine.delegate.TaskListener;
+import org.springframework.stereotype.Component;
+
+@Component("evaluateWorkflowEndService")
+public class EvaluateWorkflowEndService implements TaskListener {
+    // 企业法规处审批入库完成
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String callbackUrl = delegateTask.getVariable("callbackUrl").toString();
+        // String processKey = delegateTask.getVariable("processKey").toString();
+        String businessKey = delegateTask.getVariable("businessKey").toString();
+
+        String approveUrl = callbackUrl + "/contract-daily-listener/workflow-end";
+
+        String res = "0";
+        if (callbackUrl.length() > 0) {
+            res = HttpRequest.sendGet(approveUrl, "businessKey=" + businessKey);
+        } else {
+            throw new ActivitiException("无回调地址,请联系管理员!");
+        }
+        if (res.equals("0")) {
+            throw new ActivitiException("审核入库失败!请联系管理员!");
+        }
+        System.out.println("信息变更工作流 结束 ");
+    }
+}

+ 14 - 0
src/main/java/com/common/workflow/service/client/FeignClient.java

@@ -78,4 +78,18 @@ public interface FeignClient {
     @RequestLine("POST /info-change-listener/pre-storage-audit")
     ApproveInfoDTO getInfoChangePreStorageAuditors(@RequestBody ApproveParamsDTO approveParamsDTO);
 
+    // 合同日常评审 ⬇
+    // 二级单位提交申请 获取分办人员列表
+    @Headers({"Content-Type: application/json","Accept: application/json"})
+    @RequestLine("POST /contract-daily-listener/pre-fen-trail")
+    ApproveInfoDTO getEvaluatePreFirstAuditors(@RequestBody ApproveParamsDTO approveParamsDTO);
+
+    @Headers({"Content-Type: application/json","Accept: application/json"})
+    @RequestLine("POST /contract-daily-listener/law-office-auditors")
+    ApproveInfoDTO getEvaluateLawOfficeAuditors(@RequestBody ApproveParamsDTO approveParamsDTO);
+    // 企管法规处入库
+    @Headers({"Content-Type: application/json","Accept: application/json"})
+    @RequestLine("POST /contract-daily-listener/pre-storage-audit")
+    ApproveInfoDTO getEvaluatePreStorageAuditors(@RequestBody ApproveParamsDTO approveParamsDTO);
+
 }

+ 227 - 0
src/main/resources/processes/oil_daily_contract_evaluation.bpmn20.xml

@@ -0,0 +1,227 @@
+<?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: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/processdef">
+    <process id="oil_daily_contract_evaluation" name="oil_daily_contract_evaluation" isExecutable="true">
+        <documentation>日常合同评价</documentation>
+        <startEvent id="startEvent1"></startEvent>
+        <exclusiveGateway id="sid-C538D2C1-20B5-4A37-9315-4F2144AA4947"></exclusiveGateway>
+        <userTask id="sid-C4B210EC-9A8C-4E24-823D-6178DF80C1E3" name="二级单位初审" activiti:candidateUsers="${users}">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluatePreFirstTrailService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <exclusiveGateway id="sid-FD786368-CB74-4798-9732-9FDDCA255213"></exclusiveGateway>
+        <userTask id="sid-0546DD7D-1209-4A32-8DBE-2FCAABAFDE36" name="二级单位复审" activiti:candidateUsers="${users}">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluatePreSecondTrailService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <exclusiveGateway id="sid-50F2D5C6-151E-473E-924F-C3870F97471A"></exclusiveGateway>
+        <userTask id="sid-F69982A0-3F90-4A87-9951-F2CFA8FBE989" name="专业处室分办" activiti:candidateUsers="${users}">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluatePreThirdTrialService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <userTask id="sid-9A2D0670-8225-4F2B-9FB3-2B87DD502A43" name="专业审批" activiti:candidateUsers="${users}">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluatePreProfAuditService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <exclusiveGateway id="sid-8E07F48B-65B2-4541-A150-230589C7F95C"></exclusiveGateway>
+        <sequenceFlow id="sid-5F2A768D-E979-4EA6-967D-3096F4E47819" sourceRef="sid-9A2D0670-8225-4F2B-9FB3-2B87DD502A43" targetRef="sid-8E07F48B-65B2-4541-A150-230589C7F95C"></sequenceFlow>
+        <userTask id="sid-E04E3408-E2BB-4EC6-B98E-F80BE1108543" name="企管法规处审批">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluateLawOfficeAuditService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <userTask id="sid-9EF255A9-52B1-4287-8B53-0FB1D4A7C440" name="日常评价" activiti:assignee="${recorder}">
+            <extensionElements>
+                <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
+            </extensionElements>
+        </userTask>
+        <sequenceFlow id="sid-DE0F7BD6-366E-4F25-BC55-32E20E0E87B2" sourceRef="startEvent1" targetRef="sid-9EF255A9-52B1-4287-8B53-0FB1D4A7C440"></sequenceFlow>
+        <userTask id="sid-DACC03AA-AFA8-4413-B45D-C091829081F3" name="审批未通过" activiti:candidateUsers="${users}">
+            <extensionElements>
+                <activiti:taskListener event="create" delegateExpression="${evaluateApprovalRefuseTaskService}"></activiti:taskListener>
+            </extensionElements>
+        </userTask>
+        <exclusiveGateway id="sid-BEFC66DD-132F-4177-A66B-63D5CED8E569"></exclusiveGateway>
+        <sequenceFlow id="sid-D7E91776-67E4-4AEB-9A94-6BCC3940579F" sourceRef="sid-E04E3408-E2BB-4EC6-B98E-F80BE1108543" targetRef="sid-BEFC66DD-132F-4177-A66B-63D5CED8E569"></sequenceFlow>
+        <endEvent id="sid-B04F4DC7-A903-4B14-9A50-2DF73371D021"></endEvent>
+        <sequenceFlow id="sid-82ED82B2-70D5-4451-8947-19ECE964186E" sourceRef="sid-0546DD7D-1209-4A32-8DBE-2FCAABAFDE36" targetRef="sid-50F2D5C6-151E-473E-924F-C3870F97471A"></sequenceFlow>
+        <sequenceFlow id="sid-4A8162DB-FC76-4EEB-9ED1-2F6C34BB955F" sourceRef="sid-F69982A0-3F90-4A87-9951-F2CFA8FBE989" targetRef="sid-9A2D0670-8225-4F2B-9FB3-2B87DD502A43"></sequenceFlow>
+        <sequenceFlow id="sid-1BB01316-967A-4EE7-BCCB-C228297E1C3A" sourceRef="sid-BEFC66DD-132F-4177-A66B-63D5CED8E569" targetRef="sid-DACC03AA-AFA8-4413-B45D-C091829081F3">
+            <extensionElements>
+                <activiti:executionListener event="start" delegateExpression="${evaluateApprovalRefuseService}">
+                    <activiti:field name="stepCode">
+                        <activiti:string><![CDATA[-9]]></activiti:string>
+                    </activiti:field>
+                </activiti:executionListener>
+            </extensionElements>
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==0}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-7C2671DD-3ED3-4954-9624-8CAB37D93B9F" sourceRef="sid-8E07F48B-65B2-4541-A150-230589C7F95C" targetRef="sid-DACC03AA-AFA8-4413-B45D-C091829081F3">
+            <extensionElements>
+                <activiti:executionListener event="start" delegateExpression="${evaluateApprovalRefuseService}">
+                    <activiti:field name="stepCode">
+                        <activiti:string><![CDATA[-4]]></activiti:string>
+                    </activiti:field>
+                </activiti:executionListener>
+            </extensionElements>
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==0}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-0B8C208F-2626-4C00-8D76-7281BE3C5AFF" sourceRef="sid-50F2D5C6-151E-473E-924F-C3870F97471A" targetRef="sid-DACC03AA-AFA8-4413-B45D-C091829081F3">
+            <extensionElements>
+                <activiti:executionListener event="start" delegateExpression="${evaluateApprovalRefuseService}">
+                    <activiti:field name="stepCode">
+                        <activiti:string><![CDATA[-2]]></activiti:string>
+                    </activiti:field>
+                </activiti:executionListener>
+            </extensionElements>
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==0}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-3CA7D770-9CB1-4506-B7E6-CD9B2793A192" sourceRef="sid-BEFC66DD-132F-4177-A66B-63D5CED8E569" targetRef="sid-B04F4DC7-A903-4B14-9A50-2DF73371D021">
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==1}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-D6C4C528-F1E9-44DD-9571-AA9A4F62295B" sourceRef="sid-8E07F48B-65B2-4541-A150-230589C7F95C" targetRef="sid-E04E3408-E2BB-4EC6-B98E-F80BE1108543">
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==1}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-EF9E7048-6BF1-4AD1-8B6B-59F1B628B09D" sourceRef="sid-50F2D5C6-151E-473E-924F-C3870F97471A" targetRef="sid-F69982A0-3F90-4A87-9951-F2CFA8FBE989">
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==1}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-656BD5B2-E542-4CC9-8F0A-6E20E9DC7941" sourceRef="sid-FD786368-CB74-4798-9732-9FDDCA255213" targetRef="sid-0546DD7D-1209-4A32-8DBE-2FCAABAFDE36">
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==1}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-AD7B8834-3457-4C02-B2CE-BFABA169F94B" sourceRef="sid-FD786368-CB74-4798-9732-9FDDCA255213" targetRef="sid-DACC03AA-AFA8-4413-B45D-C091829081F3">
+            <extensionElements>
+                <activiti:executionListener event="start" delegateExpression="${evaluateApprovalRefuseService}">
+                    <activiti:field name="stepCode">
+                        <activiti:string><![CDATA[-1]]></activiti:string>
+                    </activiti:field>
+                </activiti:executionListener>
+            </extensionElements>
+            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${result==0}]]></conditionExpression>
+        </sequenceFlow>
+        <sequenceFlow id="sid-EDD9B2DF-3DAE-43D5-8B21-BEFFAF39DCFA" sourceRef="sid-C4B210EC-9A8C-4E24-823D-6178DF80C1E3" targetRef="sid-FD786368-CB74-4798-9732-9FDDCA255213"></sequenceFlow>
+        <sequenceFlow id="sid-936CB097-C571-4CCC-A87A-2BA9E81A3D21" sourceRef="sid-9EF255A9-52B1-4287-8B53-0FB1D4A7C440" targetRef="sid-C538D2C1-20B5-4A37-9315-4F2144AA4947"></sequenceFlow>
+        <sequenceFlow id="sid-9CFA6746-2F45-4937-819D-3C3812A73CBA" sourceRef="sid-DACC03AA-AFA8-4413-B45D-C091829081F3" targetRef="sid-C538D2C1-20B5-4A37-9315-4F2144AA4947"></sequenceFlow>
+        <sequenceFlow id="sid-898C6AF6-1DE5-4121-9FD9-9494A85182F5" sourceRef="sid-C538D2C1-20B5-4A37-9315-4F2144AA4947" targetRef="sid-C4B210EC-9A8C-4E24-823D-6178DF80C1E3"></sequenceFlow>
+    </process>
+    <bpmndi:BPMNDiagram id="BPMNDiagram_oil_daily_contract_evaluation">
+        <bpmndi:BPMNPlane bpmnElement="oil_daily_contract_evaluation" id="BPMNPlane_oil_daily_contract_evaluation">
+            <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
+                <omgdc:Bounds height="30.0" width="30.0" x="80.0" y="163.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-C538D2C1-20B5-4A37-9315-4F2144AA4947" id="BPMNShape_sid-C538D2C1-20B5-4A37-9315-4F2144AA4947">
+                <omgdc:Bounds height="40.0" width="40.0" x="295.0" y="158.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-C4B210EC-9A8C-4E24-823D-6178DF80C1E3" id="BPMNShape_sid-C4B210EC-9A8C-4E24-823D-6178DF80C1E3">
+                <omgdc:Bounds height="80.0" width="100.0" x="380.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-FD786368-CB74-4798-9732-9FDDCA255213" id="BPMNShape_sid-FD786368-CB74-4798-9732-9FDDCA255213">
+                <omgdc:Bounds height="40.0" width="40.0" x="525.0" y="158.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-0546DD7D-1209-4A32-8DBE-2FCAABAFDE36" id="BPMNShape_sid-0546DD7D-1209-4A32-8DBE-2FCAABAFDE36">
+                <omgdc:Bounds height="80.0" width="100.0" x="610.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-50F2D5C6-151E-473E-924F-C3870F97471A" id="BPMNShape_sid-50F2D5C6-151E-473E-924F-C3870F97471A">
+                <omgdc:Bounds height="40.0" width="40.0" x="755.0" y="158.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-F69982A0-3F90-4A87-9951-F2CFA8FBE989" id="BPMNShape_sid-F69982A0-3F90-4A87-9951-F2CFA8FBE989">
+                <omgdc:Bounds height="80.0" width="100.0" x="840.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-9A2D0670-8225-4F2B-9FB3-2B87DD502A43" id="BPMNShape_sid-9A2D0670-8225-4F2B-9FB3-2B87DD502A43">
+                <omgdc:Bounds height="80.0" width="100.0" x="985.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-8E07F48B-65B2-4541-A150-230589C7F95C" id="BPMNShape_sid-8E07F48B-65B2-4541-A150-230589C7F95C">
+                <omgdc:Bounds height="40.0" width="40.0" x="1130.0" y="158.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-E04E3408-E2BB-4EC6-B98E-F80BE1108543" id="BPMNShape_sid-E04E3408-E2BB-4EC6-B98E-F80BE1108543">
+                <omgdc:Bounds height="80.0" width="100.0" x="1215.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-9EF255A9-52B1-4287-8B53-0FB1D4A7C440" id="BPMNShape_sid-9EF255A9-52B1-4287-8B53-0FB1D4A7C440">
+                <omgdc:Bounds height="80.0" width="100.0" x="155.0" y="138.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-DACC03AA-AFA8-4413-B45D-C091829081F3" id="BPMNShape_sid-DACC03AA-AFA8-4413-B45D-C091829081F3">
+                <omgdc:Bounds height="80.0" width="100.0" x="265.0" y="255.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-BEFC66DD-132F-4177-A66B-63D5CED8E569" id="BPMNShape_sid-BEFC66DD-132F-4177-A66B-63D5CED8E569">
+                <omgdc:Bounds height="40.0" width="40.0" x="1360.0" y="158.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNShape bpmnElement="sid-B04F4DC7-A903-4B14-9A50-2DF73371D021" id="BPMNShape_sid-B04F4DC7-A903-4B14-9A50-2DF73371D021">
+                <omgdc:Bounds height="28.0" width="28.0" x="1445.0" y="164.0"></omgdc:Bounds>
+            </bpmndi:BPMNShape>
+            <bpmndi:BPMNEdge bpmnElement="sid-AD7B8834-3457-4C02-B2CE-BFABA169F94B" id="BPMNEdge_sid-AD7B8834-3457-4C02-B2CE-BFABA169F94B">
+                <omgdi:waypoint x="545.5" y="197.5"></omgdi:waypoint>
+                <omgdi:waypoint x="545.5" y="295.0"></omgdi:waypoint>
+                <omgdi:waypoint x="365.0" y="295.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-DE0F7BD6-366E-4F25-BC55-32E20E0E87B2" id="BPMNEdge_sid-DE0F7BD6-366E-4F25-BC55-32E20E0E87B2">
+                <omgdi:waypoint x="110.0" y="178.0"></omgdi:waypoint>
+                <omgdi:waypoint x="155.0" y="178.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-936CB097-C571-4CCC-A87A-2BA9E81A3D21" id="BPMNEdge_sid-936CB097-C571-4CCC-A87A-2BA9E81A3D21">
+                <omgdi:waypoint x="255.0" y="178.5"></omgdi:waypoint>
+                <omgdi:waypoint x="295.5" y="178.5"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-EF9E7048-6BF1-4AD1-8B6B-59F1B628B09D" id="BPMNEdge_sid-EF9E7048-6BF1-4AD1-8B6B-59F1B628B09D">
+                <omgdi:waypoint x="794.5833333333334" y="178.41666666666666"></omgdi:waypoint>
+                <omgdi:waypoint x="840.0" y="178.2183406113537"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-898C6AF6-1DE5-4121-9FD9-9494A85182F5" id="BPMNEdge_sid-898C6AF6-1DE5-4121-9FD9-9494A85182F5">
+                <omgdi:waypoint x="334.5833333333333" y="178.41666666666666"></omgdi:waypoint>
+                <omgdi:waypoint x="380.0" y="178.2183406113537"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-4A8162DB-FC76-4EEB-9ED1-2F6C34BB955F" id="BPMNEdge_sid-4A8162DB-FC76-4EEB-9ED1-2F6C34BB955F">
+                <omgdi:waypoint x="940.0" y="178.0"></omgdi:waypoint>
+                <omgdi:waypoint x="985.0" y="178.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-656BD5B2-E542-4CC9-8F0A-6E20E9DC7941" id="BPMNEdge_sid-656BD5B2-E542-4CC9-8F0A-6E20E9DC7941">
+                <omgdi:waypoint x="564.5833333333334" y="178.41666666666666"></omgdi:waypoint>
+                <omgdi:waypoint x="610.0" y="178.2183406113537"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-D6C4C528-F1E9-44DD-9571-AA9A4F62295B" id="BPMNEdge_sid-D6C4C528-F1E9-44DD-9571-AA9A4F62295B">
+                <omgdi:waypoint x="1169.5833333333333" y="178.41666666666666"></omgdi:waypoint>
+                <omgdi:waypoint x="1215.0" y="178.2183406113537"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-0B8C208F-2626-4C00-8D76-7281BE3C5AFF" id="BPMNEdge_sid-0B8C208F-2626-4C00-8D76-7281BE3C5AFF">
+                <omgdi:waypoint x="775.5" y="197.5"></omgdi:waypoint>
+                <omgdi:waypoint x="775.5" y="295.0"></omgdi:waypoint>
+                <omgdi:waypoint x="365.0" y="295.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-3CA7D770-9CB1-4506-B7E6-CD9B2793A192" id="BPMNEdge_sid-3CA7D770-9CB1-4506-B7E6-CD9B2793A192">
+                <omgdi:waypoint x="1399.621794871795" y="178.37820512820514"></omgdi:waypoint>
+                <omgdi:waypoint x="1445.0002839785393" y="178.0891701657418"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-9CFA6746-2F45-4937-819D-3C3812A73CBA" id="BPMNEdge_sid-9CFA6746-2F45-4937-819D-3C3812A73CBA">
+                <omgdi:waypoint x="315.0" y="255.0"></omgdi:waypoint>
+                <omgdi:waypoint x="315.0" y="198.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-7C2671DD-3ED3-4954-9624-8CAB37D93B9F" id="BPMNEdge_sid-7C2671DD-3ED3-4954-9624-8CAB37D93B9F">
+                <omgdi:waypoint x="1150.5" y="197.5"></omgdi:waypoint>
+                <omgdi:waypoint x="1150.5" y="295.0"></omgdi:waypoint>
+                <omgdi:waypoint x="365.0" y="295.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-EDD9B2DF-3DAE-43D5-8B21-BEFFAF39DCFA" id="BPMNEdge_sid-EDD9B2DF-3DAE-43D5-8B21-BEFFAF39DCFA">
+                <omgdi:waypoint x="480.0" y="178.2164502164502"></omgdi:waypoint>
+                <omgdi:waypoint x="525.4130434782609" y="178.41304347826087"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-5F2A768D-E979-4EA6-967D-3096F4E47819" id="BPMNEdge_sid-5F2A768D-E979-4EA6-967D-3096F4E47819">
+                <omgdi:waypoint x="1085.0" y="178.2164502164502"></omgdi:waypoint>
+                <omgdi:waypoint x="1130.4130434782608" y="178.41304347826087"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-D7E91776-67E4-4AEB-9A94-6BCC3940579F" id="BPMNEdge_sid-D7E91776-67E4-4AEB-9A94-6BCC3940579F">
+                <omgdi:waypoint x="1315.0" y="178.2164502164502"></omgdi:waypoint>
+                <omgdi:waypoint x="1360.4130434782608" y="178.41304347826087"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-82ED82B2-70D5-4451-8947-19ECE964186E" id="BPMNEdge_sid-82ED82B2-70D5-4451-8947-19ECE964186E">
+                <omgdi:waypoint x="710.0" y="178.2164502164502"></omgdi:waypoint>
+                <omgdi:waypoint x="755.4130434782609" y="178.41304347826087"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+            <bpmndi:BPMNEdge bpmnElement="sid-1BB01316-967A-4EE7-BCCB-C228297E1C3A" id="BPMNEdge_sid-1BB01316-967A-4EE7-BCCB-C228297E1C3A">
+                <omgdi:waypoint x="1380.5" y="197.5"></omgdi:waypoint>
+                <omgdi:waypoint x="1380.5" y="295.0"></omgdi:waypoint>
+                <omgdi:waypoint x="365.0" y="295.0"></omgdi:waypoint>
+            </bpmndi:BPMNEdge>
+        </bpmndi:BPMNPlane>
+    </bpmndi:BPMNDiagram>
+</definitions>