SpringBoot+Activiti+bpmn.js+Vue.js+Elementui(OA系统审批流)

 引言:OA系统用到请假、加班、调休、离职,需要使用工作流进行流程审批

一:activiti流程设计器的选择(通过学习activiti工作流过程中,发现一款好的流程设计器将会更好的方便的设计好流程(主要介绍BPMN.JS))

  1.最开始使用activiti流程设计器是开发工具idea或eclipse中安装的bpmn流程插件(直接安装使用)

    缺点:activiti官方已经不再维护这些插件,而且结合企业开发存在很大的缺陷

 

2.1:通过整合Acitiviti官网的在线流程设计器(Activiti-Modeler )

  缺点:需要整合官方项目结构,就是将官方的项目整合到自己项目,在开发前后端分离时,需要使用ifram插件嵌入到我们的前端项目中,不方便结合前端框架element ui使用

<iframe src="http://localhost:8085/modeler.html?modelId=297501" id="show-iframe" name="showHere" scrolling="auto" width="100%" height="901px" frameborder="0"></iframe>

2.2:企业二次开发后的activiti流程设计器(maven依赖)

<properties>
        <jeesite-module-core.version>4.0.3-SNAPSHOT</jeesite-module-core.version>
        <jeesite-module-bpm.version>4.0-SNAPSHOT</jeesite-module-bpm.version>    
</properties>
<!-- 核心模块 -->
        <dependency>
            <groupId>com.jeesite</groupId>
            <artifactId>jeesite-module-core</artifactId>
            <version>${jeesite-module-core.version}</version>
        </dependency>
        
        <!-- 工作流模块 -->
        <dependency>
            <groupId>com.jeesite</groupId>
            <artifactId>jeesite-module-bpm</artifactId>
            <version>${jeesite-module-bpm.version}</version>
        </dependency> 




3.通过使用bpmn.io中的流程设计器可以很好前后端分离,特别是结合前端vue+element ui 使用,非常的方便

3.1.首先,安装node.js,通过npm安装bpmn.js

npm install bpmn-js

 

 3.2.前端整合bpmn.js,并且改造bpmn流程设计器,可以从公司组织架构选中指定办理人

<!-- 流程设计 -->
<template>
  <div>
    <!--   表单区域   -->
    <div class="chunk">
      <el-link icon="el-icon-arrow-left" @click="Create()">返回</el-link>
      <el-form ref="params" :model="params" :rules="rules" :inline="true">
        <el-form-item label="流程名称:" prop="modelName">
          <el-input v-model="params.modelName" placeholder="请输入" clearable/>
        </el-form-item>
        <el-form-item label="版本:" prop="modelKey">
          <el-input v-model="params.modelKey" placeholder="请输入" clearable/>
        </el-form-item>
      </el-form>
    </div>
    <div ref="content" class="containers">
      <div ref="canvas" class="canvas">
        <div style="margin-bottom: 10px">
          <!-- 保存 -->
          <el-button icon="el-icon-folder-checked" @click="saveBpmn('params')">保存</el-button>
          <!-- 导入 -->
          <input id="btn_file" type="file" style="display:none" @change="showBPMN">
          <el-button icon="el-icon-folder-opened" @click="Import()">导入</el-button>
          <!-- 导出 -->
          <el-button icon="el-icon-download" @click="Export()">导出BPMN</el-button>
          <!-- 导出 -->
          <el-button icon="el-icon-picture-outline" @click="ExportImg()">导出图片</el-button>
          <!-- 前进 -->
          <el-button icon="el-icon-folder-checked" @click="advance()">前进</el-button>
          <!-- 后退 -->
          <el-button icon="el-icon-folder-checked" @click="retreat()">后退</el-button>
        </div>
      </div>
      <div id="js-properties-panel" class="panel"/>
    </div>
    <!--选择考勤人员-->
    <el-dialog width="600px" title="选择参与考勤人员" :visible.sync="innerVisible" append-to-body>
      <el-row>
        <el-col :span="24">
          <div class="grid-content bg-purple">
            <el-input v-model="filterText" placeholder="输入关键字进行过滤"/>
            <el-divider/>
            <el-scrollbar style="border: 1px solid #DCDFE6;">
              <el-tree
                ref="tree"
                :data="treeData"
                accordion
                node-key="id"
                :default-expanded-keys="attendancePersonnel"
                :default-checked-keys="attendancePersonnel "
                highlight-current
                :props="{children: 'children',label: 'name'}"
                :filter-node-method="filterNode"
                style="height: 277px;"
              >
                <span slot-scope="{ data }" class="custom-tree-node">
                  <el-radio v-if="data.role" v-model="UserObj" :label="data.userEmployeeId">{{ data.name }}</el-radio>
                  <span v-else>{{ data.name }}</span>
                </span>
              </el-tree>
            </el-scrollbar>
          </div>
        </el-col>
      </el-row>
      <div slot="footer" class="dialog-footer">
        <el-button @click="innerVisible = false">取消</el-button>
        <el-button type="primary" @click="getCheckedNodes">确定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
  import { getCorpStructure } from '@/api/system-setup'
  // 引入相关的依赖
  // import BpmnViewer from 'bpmn-js'
  import BpmnModeler from 'bpmn-js/lib/Modeler'
  import propertiesPanelModule from 'bpmn-js-properties-panel'
  import propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/camunda'
  import camundaModdleDescriptor from 'camunda-bpmn-moddle/resources/camunda'
  // 图片转换
  import canvg from 'canvg'
  // api接口
  import { saveModel, modelsShows, modifyModels } from '@/api/Approval-manage/approvalManage'

  var Vue = {
    name: 'Bpmn',
    props: ['modelId'],
    data() {
      return {
        // 流程对象
        params: {
          modelId: '', //     模型编号
          modelName: '', //   模型名称
          modelKey: '', //    模型key(版本)
          modelImage: '', //  模型图片
          modelXml: '' //     模型文件
        },
        rules: {
          modelName: [{ required: true, message: '请输入流程名称', trigger: 'blur' }],
          modelKey: [{ required: true, message: '请输入版本号', trigger: 'blur' }]
        },
        // bpmn建模器
        bpmnModeler: null,
        container: null,
        canvas: null,
        filterText: '',
        treeData: [], // 树控件数据集合(员工信息),
        attendancePersonnel: [], //   参与人员
        UserObj: '', // 选中的人
        e: null,
        innerVisible: false // 选择员工弹出层
      }
    },
    watch: {
      filterText(val) {
        this.$refs.tree.filter(val)
      }
    },
    mounted() {
      var than = this
      // 流程设计模块的点击事件
      window.showUserInfo = function(e) {
        than.innerVisible = true
        than.e = e
      }
      // 获取到属性ref为“content”的dom节点
      this.container = this.$refs.content
      // 获取到属性ref为“canvas”的dom节点
      const canvas = this.$refs.canvas
      // 建模,官方文档这里讲的很详细
      this.bpmnModeler = new BpmnModeler({
        container: canvas,
        // 添加控制板
        propertiesPanel: {
          parent: '#js-properties-panel'
        },
        additionalModules: [
          propertiesProviderModule, // 左边工具栏以及节点
          propertiesPanelModule // 右边的工具栏
        ],
        // 如果您想在属性面板中维护camunda:XXX属性,则需要该属性
        moddleExtensions: {
          camunda: camundaModdleDescriptor
        }
      })
      this.getCorpStructure()
      if (this.modelId) {
        this.params.modelId = this.modelId
        modelsShows(this.params.modelId).then(res => {
          this.params = res.data
          this.createNewDiagram(res.data.modelXml)
        })
      } else {
        this.createNewDiagram('')
      }
    },
    methods: {
      // 返回
      Create() {
        this.$emit('transfer', '') // 将值绑定到transfer上传递过去
        // this.$router.push({ path: 'bpmn', query: { approvalSetId: 1, publishedList: 1, create: true }})
      },
      // 流程设计模板创建
      createNewDiagram(bpmnXML) {
        if (bpmnXML === '' || bpmnXML === null) {
          bpmnXML = '<?xml version="1.0" encoding="UTF-8"?>\n' +
            '<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:tns="http://www.activiti.org/testm1568796216967" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="m1568796216967" name="" targetNamespace="http://www.activiti.org/testm1568796216967">\n' +
            '  <process id="myProcess_1" processType="None" isClosed="false" isExecutable="true" />\n' +
            '  <bpmndi:BPMNDiagram id="Diagram-_1" name="New Diagram" documentation="background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0">\n' +
            '    <bpmndi:BPMNPlane bpmnElement="myProcess_1" />\n' +
            '  </bpmndi:BPMNDiagram>\n' +
            '</definitions>'
        }
        // 将字符串转换成图显示出来
        this.bpmnModeler.importXML(bpmnXML, function(err) {
          if (err) {
            return console.error('could not import BPMN 2.0 diagram', err)
          }
        })
      },
      // 保存
      saveBpmn(formName) {
        var than = this
        this.$refs[formName].validate((valid) => {
          if (valid) {
            // 获取XML数据
            than.bpmnModeler.saveXML({ format: true }, function(err, xml) {
              if (!err) {
                than.params.modelXml = xml
                // 获取SVG数据(图片)
                than.bpmnModeler.saveSVG({ format: true }, (err, data) => {
                  if (!err) {
                    var svgXml = data
                    var canvas = document.createElement('canvas') // 准备空画布
                    canvas.width = '1000px'
                    canvas.height = screen.availHeight
                    canvg(canvas, svgXml)
                    var imagedata = canvas.toDataURL('image/png')
                    than.params.modelImage = imagedata
                    if (than.modelId) {
                      modifyModels(than.params).then(res => {
                        if (delop.message(than, res)) {
                          than.Create()
                        }
                      })
                    } else {
                      saveModel(than.params).then(res => {
                        if (delop.message(than, res)) {
                          than.Create()
                        }
                      })
                    }
                  }
                })
              }
            })
          } else {
            return false
          }
        })
      },
      // 导入
      Import() {
        document.getElementById('btn_file').click()
      },
      showBPMN() {
        var than = this
        var file = document.getElementById('btn_file').files[0]
        var URL = window.URL || window.webkitURL
        var imgURL = URL.createObjectURL(file)
        $.ajax({
          type: 'get',
          url: imgURL,
          dataType: 'text', // 返回格式
          success: function(data) {
            than.createNewDiagram(data)
          }
        })
      },
      // 导出bpmn文件
      Export() {
        this.bpmnModeler.saveXML({ format: true }, function(err, xml) {
          if (err) {
            return console.error('无法保存BPMN 2.0关系图', err)
          }
          // 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候)
          if (window.navigator.msSaveOrOpenBlob) {
            var blob = new Blob([xml], { type: 'text/plain' })
            window.navigator.msSaveOrOpenBlob(blob, '工作流程图BPMN20.bpmn')
          } else {
            var eleLink = document.createElement('a')
            eleLink.download = '工作流程图BPMN20.bpmn'
            eleLink.style.display = 'none'
            const blob = new Blob([xml]) // 字符内容转变成blob地址
            eleLink.href = URL.createObjectURL(blob)
            document.body.appendChild(eleLink) // 触发点击
            eleLink.click()
            document.body.removeChild(eleLink) // 然后移除
          }
        })
      },
      // 导出图片
      ExportImg() {
        if (window.navigator.msSaveOrOpenBlob) {
          console.log('IE浏览器无法下载,建议使用谷歌浏览器')
          return
        }
        // 获取SVG数据(图片)
        this.bpmnModeler.saveSVG({ format: true }, (err, data) => {
          if (err) {
            console.log('保存失败')
          }
          var svgXml = data
          var canvas = document.createElement('canvas') // 准备空画布
          canvas.width = '1000px'
          canvas.height = screen.availHeight
          canvg(canvas, svgXml)
          var imagedata = canvas.toDataURL('image/png')
          // console.log(imagedata)
          // 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候)
          if (window.navigator.msSaveOrOpenBlob) {
            var bstr = atob(imagedata.split(',')[1])
            var n = bstr.length
            var u8arr = new Uint8Array(n)
            while (n--) {
              u8arr[n] = bstr.charCodeAt(n)
            }
            var blob = new Blob([u8arr])
            window.navigator.msSaveOrOpenBlob(blob, '工作流程图.png')
          } else {
            var a = document.createElement('a')
            a.href = imagedata // 将画布内的信息导出为png图片数据
            a.download = '工作流程图' // 设定下载名称
            a.click() // 点击触发下载
          }
        })
      },
      // 前进
      advance() {
        this.bpmnModeler.get('commandStack').redo()
      },
      // 后退
      retreat() {
        this.bpmnModeler.get('commandStack').undo()
      },
      // 选择代理人关键字搜索
      filterNode(value, data) {
        if (!value) return true
        return data.name.indexOf(value) !== -1
      },
      // 查询公司组织树信息
      getCorpStructure() {
        getCorpStructure().then(res => {
          this.treeData = [res.data]
          this.option(this.treeData)
        })
      },
      // 查询公司组织用户数据
      option(options) {
        const than = this
        if (options != null && options.length > 0) {
          options.forEach(function(obj1, i) {
            if (obj1.userInfo && JSON.parse(obj1.userInfo).length > 0) {
              var user = JSON.parse(obj1.userInfo)
              user.forEach(function(obj, index) {
                obj.role = 'user'
              })
              obj1.children = user
            }
            than.option(obj1.children)
          })
        }
      }, // 选中的考勤人员
      getCheckedNodes() {
        var input = this.e.previousElementSibling
        $(input).val(this.UserObj)
        // 以下代码必须添加,不然文本框内容填充无效。
        var changeEvent = document.createEvent('HTMLEvents') // 创建输入框修改事件
        changeEvent.initEvent('change', true, true)
        $(input)[0].dispatchEvent(changeEvent) // 触发修改事件
        this.innerVisible = false
      }
    }
  }
  export default Vue
</script>

<style scoped>
  /*左边工具栏以及编辑节点的样式*/
  @import '~bpmn-js/dist/assets/diagram-js.css';
  @import '~bpmn-js/dist/assets/bpmn-font/css/bpmn.css';
  @import '~bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css';
  @import '~bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css';
  /*!*右边工具栏样式*!*/
  @import '~bpmn-js-properties-panel/dist/assets/bpmn-js-properties-panel.css';

  .containers {
    position: absolute;
    background-color: #ffffff;
    width: 98%;
    height: 800px;
  }

  .canvas {
    float: left;
    border: 1px solid #eee;
    width: 80%;
    height: 100%;
  }

  .panel {
    float: right;
    width: 20%;
  }
</style>

3.2.1相关模块管理

 

 

3.3 springboot 整合 activiti 配置类,实现spring容器注入

package edu.nf.project.config;

import org.activiti.engine.*;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;
import java.io.IOException;

/**
 * @author : ywb
 * @createdDate : 2019/9/20
 * @updatedDate
 */
@Configuration
public class ActivitiConfiguration {
    @Autowired
    private DataSource dataSource;
    @Autowired
    private PlatformTransactionManager platformTransactionManager;

    /**
     *  创建一个流程引擎的配置对象 这里我们使用的是Spring提供的流程引擎对象
     *  创建一个流程引擎的配置对象  这里我摸嗯使用的事Spring提供的流程引擎对象
     * @return
     */
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(){
        SpringProcessEngineConfiguration spec = new SpringProcessEngineConfiguration();
        spec.setDataSource(dataSource);
        spec.setTransactionManager(platformTransactionManager);
        spec.setDatabaseSchemaUpdate("true");
        Resource[] resources = null;
        // 启动自动部署流程
        try {
            resources = new PathMatchingResourcePatternResolver().getResources("classpath*:bpmn/*.bpmn");
        } catch (IOException e) {
            e.printStackTrace();
        }
        spec.setDeploymentResources(resources);
        return spec;
    }

    /**
     * 创建一个流程引擎bean
     * @return
     */
    @Bean
    public ProcessEngineFactoryBean processEngine(){
        ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
        processEngineFactoryBean.setProcessEngineConfiguration(springProcessEngineConfiguration());
        return processEngineFactoryBean;
    }

    /**
     * 工作流仓储服务,对所有atc_re开头的表进行操作-
     * @return
     * @throws Exception
     */
    @Bean
    public RepositoryService repositoryService() throws Exception{
        return processEngine().getObject().getRepositoryService();
    }

    /**
     * 工作流运行服务 对所有act_ru开头的表进行操作
     * @return
     * @throws Exception
     */
    @Bean
    public RuntimeService runtimeService() throws Exception{
        return processEngine().getObject().getRuntimeService();
    }

    /**
     * 工作流任务服务
     * @return
     * @throws Exception
     */
    @Bean
    public TaskService taskService() throws Exception{
        return processEngine().getObject().getTaskService();
    }

    /**
     * 工作流历史数据服务 对所有的act_hi开头的表进行操作
     * @return
     * @throws Exception
     */
    @Bean
    public HistoryService historyService() throws Exception{
        return processEngine().getObject().getHistoryService();
    }

    /**
     * 工作流唯一服务,对所有以act_id开头的表进行增删改查
     * @return
     * @throws Exception
     */
    public IdentityService identityService() throws Exception{
        return processEngine().getObject().getIdentityService();
    }

    /**
     * 工作流管理服务
     * @return
     * @throws Exception
     */
    public FormService formService() throws Exception{
        return processEngine().getObject().getFormService();
    }

    /**
     * 工作流管理服务
     * @return
     * @throws Exception
     */
    public ManagementService managementService() throws Exception{
        return processEngine().getObject().getManagementService();
    }

}

 

3.4建立模型表,用于保存bpmn文件

/*
 Navicat Premium Data Transfer

 Source Server         : mydb
 Source Server Type    : MySQL
 Source Server Version : 50726
 Source Host           : localhost:3306
 Source Schema         : mydb

 Target Server Type    : MySQL
 Target Server Version : 50726
 File Encoding         : 65001

 Date: 20/12/2019 17:09:21
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for pms_models
-- ----------------------------
DROP TABLE IF EXISTS `pms_models`;
CREATE TABLE `pms_models`  (
  `model_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '模型编号',
  `model_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模型名称',
  `model_image` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模型图片',
  `model_xml` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模型文件',
  `model_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模型key',
  `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
  `create_time` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `update_time` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
  `model_status` int(1) NULL DEFAULT NULL COMMENT '是否发布(0:发布;1:不发布)',
  `deprecated` int(1) NULL DEFAULT NULL COMMENT '是否弃用',
  PRIMARY KEY (`model_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 37 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of pms_models
-- ----------------------------
INSERT INTO `pms_models` VALUES (30, '分支流程', 'data:image/png;base64,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', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:activiti=\"http://activiti.org/bpmn\" xmlns:tns=\"http://www.activiti.org/testm1568796216967\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" id=\"m1568796216967\" name=\"\" targetNamespace=\"http://www.activiti.org/testm1568796216967\">\n  <process id=\"myProcess_1\" processType=\"None\" isClosed=\"false\" isExecutable=\"true\">\n    <startEvent id=\"StartEvent_196hi8b\" name=\"开始\">\n      <outgoing>SequenceFlow_06ukbb1</outgoing>\n    </startEvent>\n    <sequenceFlow id=\"SequenceFlow_06ukbb1\" sourceRef=\"StartEvent_196hi8b\" targetRef=\"Task_1m65c6z\" />\n    <exclusiveGateway id=\"ExclusiveGateway_1716w5k\">\n      <incoming>SequenceFlow_0ict9lf</incoming>\n      <outgoing>SequenceFlow_00x90vg</outgoing>\n      <outgoing>SequenceFlow_01sftoz</outgoing>\n    </exclusiveGateway>\n    <sequenceFlow id=\"SequenceFlow_0ict9lf\" sourceRef=\"Task_1m65c6z\" targetRef=\"ExclusiveGateway_1716w5k\" />\n    <sequenceFlow id=\"SequenceFlow_00x90vg\" sourceRef=\"ExclusiveGateway_1716w5k\" targetRef=\"Task_1xbbk2a\">\n      <conditionExpression xsi:type=\"tFormalExpression\">${condition&gt;1000}</conditionExpression>\n    </sequenceFlow>\n    <sequenceFlow id=\"SequenceFlow_01sftoz\" sourceRef=\"ExclusiveGateway_1716w5k\" targetRef=\"Task_15bkdk1\">\n      <conditionExpression xsi:type=\"tFormalExpression\">${condition&lt;=1000}</conditionExpression>\n    </sequenceFlow>\n    <endEvent id=\"EndEvent_0lupiok\" name=\"结束\">\n      <incoming>SequenceFlow_00cspzq</incoming>\n      <incoming>SequenceFlow_12b0itr</incoming>\n    </endEvent>\n    <sequenceFlow id=\"SequenceFlow_00cspzq\" name=\"通过\" sourceRef=\"Task_1xbbk2a\" targetRef=\"EndEvent_0lupiok\" />\n    <sequenceFlow id=\"SequenceFlow_12b0itr\" name=\"通过\" sourceRef=\"Task_15bkdk1\" targetRef=\"EndEvent_0lupiok\" />\n    <manualTask id=\"Task_1m65c6z\" name=\"提交申请\">\n      <incoming>SequenceFlow_06ukbb1</incoming>\n      <outgoing>SequenceFlow_0ict9lf</outgoing>\n    </manualTask>\n    <userTask id=\"Task_1xbbk2a\" name=\"项目经理审批\" camunda:assignee=\"0003\">\n      <incoming>SequenceFlow_00x90vg</incoming>\n      <outgoing>SequenceFlow_00cspzq</outgoing>\n    </userTask>\n    <userTask id=\"Task_15bkdk1\" name=\"产品经理审批\" camunda:assignee=\"0002\">\n      <incoming>SequenceFlow_01sftoz</incoming>\n      <outgoing>SequenceFlow_12b0itr</outgoing>\n    </userTask>\n  </process>\n  <bpmndi:BPMNDiagram id=\"Diagram-_1\" name=\"New Diagram\" documentation=\"background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0\">\n    <bpmndi:BPMNPlane bpmnElement=\"myProcess_1\">\n      <bpmndi:BPMNShape id=\"StartEvent_196hi8b_di\" bpmnElement=\"StartEvent_196hi8b\">\n        <dc:Bounds x=\"232\" y=\"352\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"239\" y=\"395\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_06ukbb1_di\" bpmnElement=\"SequenceFlow_06ukbb1\">\n        <di:waypoint x=\"268\" y=\"370\" />\n        <di:waypoint x=\"320\" y=\"370\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"ExclusiveGateway_1716w5k_di\" bpmnElement=\"ExclusiveGateway_1716w5k\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"475\" y=\"345\" width=\"50\" height=\"50\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_0ict9lf_di\" bpmnElement=\"SequenceFlow_0ict9lf\">\n        <di:waypoint x=\"420\" y=\"370\" />\n        <di:waypoint x=\"475\" y=\"370\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_00x90vg_di\" bpmnElement=\"SequenceFlow_00x90vg\">\n        <di:waypoint x=\"500\" y=\"345\" />\n        <di:waypoint x=\"500\" y=\"300\" />\n        <di:waypoint x=\"610\" y=\"300\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_01sftoz_di\" bpmnElement=\"SequenceFlow_01sftoz\">\n        <di:waypoint x=\"500\" y=\"395\" />\n        <di:waypoint x=\"500\" y=\"470\" />\n        <di:waypoint x=\"610\" y=\"470\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"EndEvent_0lupiok_di\" bpmnElement=\"EndEvent_0lupiok\">\n        <dc:Bounds x=\"792\" y=\"372\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"726\" y=\"380\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_00cspzq_di\" bpmnElement=\"SequenceFlow_00cspzq\">\n        <di:waypoint x=\"710\" y=\"300\" />\n        <di:waypoint x=\"810\" y=\"300\" />\n        <di:waypoint x=\"810\" y=\"372\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"750\" y=\"282\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_12b0itr_di\" bpmnElement=\"SequenceFlow_12b0itr\">\n        <di:waypoint x=\"710\" y=\"470\" />\n        <di:waypoint x=\"810\" y=\"470\" />\n        <di:waypoint x=\"810\" y=\"408\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"750\" y=\"452\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"ManualTask_027mo5z_di\" bpmnElement=\"Task_1m65c6z\">\n        <dc:Bounds x=\"320\" y=\"330\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_0fgmota_di\" bpmnElement=\"Task_1xbbk2a\">\n        <dc:Bounds x=\"610\" y=\"260\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_1pcwlvh_di\" bpmnElement=\"Task_15bkdk1\">\n        <dc:Bounds x=\"610\" y=\"430\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</definitions>\n', '1.0', NULL, '2019-11-22 10:55:03', '2019-11-22 10:55:03', 0, 0);
INSERT INTO `pms_models` VALUES (33, '加班流程', 'data:image/png;base64,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KXPnztX0YGjVDEF26hQcI0SnT5/271tDqInERGy3Ir+AS05OJnjTduzY0dSpU6faW2+9lb1qGmC60FCFFGqACIGV//73vyfn5+e3eXm47777fEuXLq3p3r07L3taYBaYf21BZP5ZQCzJIlzIP0lknJOMhZo9Y9FqosSJuqKiopTp06eL6410W4Wlz8WLFzekpaV5INrq6+spJSXFv/SJE5+XX355MzxtI0aMaEpJSWmaNGlSAzaF89MWARcaqpBCrbS01FtaWpqYlpYWd++998Yh1p94vv76ayooKPD17Nmzafjw4fU/+clPeOkzzC8V8681gMy/MAllMLsL+WcQIfuTs1CzZwxaTZSff/553JYtW5J///vfS3vU0Oxdu3b5BVqHDh1avGr4+4EDB6h///44UND04YcfNt1///21nTt3Zu9HkLF2oaHSFGofffSRt6ioKPGbb77xrl692iO8s1qwffzxx4jp15yamuq766676viWDPOGhPn3HXbMP/McCienC/kXDly25GWhZgvs1Gqi/Prrrz35+fmpq1atkh4PeNFef/11EnuI9u3bRwjpgXAJly5doo4dO+JEaNPevXt9c+bMqbWnm+2jVhcaqjZCbfv27d5PP/00ccKECfElJSWUnp5ON954Y9ABLCwspB49evjDwRQVFfkGDx5cx0vr5vjO/CNi/pnjjhW5XMg/K2CLahnSwiCqrYr9ytpMlC+++GLykCFDcBOBVO8PHTpEjz/+eANOiTY0NHhOnz7t6dq1a3NiYmJzfX193JAhQxquvPLK5kGDBvmuvvpq9qaFQNWFhqoV/7BUvm7duqTZs2cnwDt7+PBh2rx5M02bNs1/klj94KUAB1kefPBBio+PJ1xr9txzz/nGjRtX26dPH14KlfoGf5+I+cf8M0gZS5O7kH+W4heNwlioRQPltnW0EWrHjh2L+/Of/5w8fvx4709/+lOpViFyPJanROy0b7/9Fncx+k+A7t69u37atGktwXSlCnRpIhcaqlb8e/vtt+O//fbbpKlTp7ZsYiwtLaWdO3fSyJEj6frrr/cvr589e5Yg0g4ePEgTJ06knj17tjDmrbfeaq6urq6dMmVKm7hYLqWVdLeZf8w/abJEIKEL+RcBFCNbJAu1yOIbrHTNPUK4/Hrbtm0J586di8fdnomJia3GB/HRsOSJ0ByIDo/DA/gb9qnhoIAIzVFdXQ1PGu4D5UlTYnxdaKha8W/nzp3e6urqDrfffnsrtCorK6msrAyhOPyniDt16uQXbcOHD/dzT/lA2J0/f74mOzubOSfBOWUS5h/zzyBlLE3uQv5Zil80CmOhFg2UJTxqyiRnzpzx4AciTPlAiOEEHkRZVVWV/15Pr9fbLP6O/Wn4OXv2rIc3d8sPrAsNVVCh9s9//tMPHDxpeo8yLQs1PbSCf878+16oMf/M88hsThfyzyxUtuVjoWYP9LpxrOxpljtrdaGhYqHmIKoz/1io2UlHF/LPTrhN1c1CzRRsYWdioRY2hNYV4EJDxULNOvqEXRLzj4Va2CQKowAX8i8MtKgv7ukmoiFEhGtbcO2guL7lJBEhCj3+3RO4P/pQOJWJvFYKNewsRgd+ptOB9wMdqLSiA+20DBZqDho4FxoqFmrMPzsRYP7Zib6qbhfaP6PoQ4w9RERjiWiAwcz7cUskEf0pIOIMZv8uuRVCbQ4RTSaimwy24EMi2khEqwzmi4XkLNQcNIouNFRtJsqqqir/YQKze4R2796N08Y1Y8eO5cMEBrnN/NvpZf4ZJI2FyV3IP1n0cGIql4geIaIk2UxB0iECw1NEtIyIaoyWFY5QuzfQAf/N37hTcvTo0Y0w1D/+8Y+bcA+guAvw5MmTHvwgAj8uIN+6dWs8TpEFniOBDvyP0ca34/Qs1Bw0eC40VG2EGuKo/fCHP8QJT79NuOaaa3Rj7ynTnjhxwpOTk1N7++23832yBrnN/NvpZf4ZJI2FyV3IPxn0fk1Ey4noSpnEBtKcJqL5RPSagTymPGq9iehVIhqGijIyMnyPPPJI/YQJExpxz6TMg9OMhYWF8U899VRieXm5yFRKRPcQ0VGZMtp5GhZqDhpAFxoq5h/zz04EmH92oq+q24X2Tw/9x4locbBECHuVnZ3tGzhwoE/LIbVv3z5vcXGxt6SkJNTd3UtC1aGu26hHDYGWINK6wWuWm5tbf9999zXo9TrU5y+//HLCsmXLEuFtI6KvAmLtvXDKbAd52VA5aJBcaKiYf8w/OxFg/tmJPgu1UOjD0zVFnQC3/CxYsKB++vTpDbL3Zp8/f97zyiuvJBQUFCTi5iCNStcTETx3uo8RoTaTiJ5DiePGjWtcv359bVpamu7yiG4LiOjixYueKVOmJBcVFQkF+gARPS+Tt52mYUPloIFjoeagwXBhU5h/Lhx0B3XZhfwLhr6mSMvLy6vLy8urx/YuMw+2ef3xj39MXLp0qVYBUmJNVqjBk7YVjZwzZ079ypUrI3I10dy5c5NWrVqVGABjNBHFqmeNhZoZxkcojwsNFfMvQlwyUyzzzwxqnMcqBFzIPy3oniCiRcoP4EVbt25d7R133GHJAanNmzfHT5s2LVnDu4a6sdwa9JERatiTtgvLnZEUaaKFCrGGZdDhMbpnjSdKq6yMBeW40FAx/yzgjVVFMP+sQpLLMYOAC/mnhgnLj9jS1fIMHTrU95e//KW2T58+TWYwDZbnyJEjcVOnTk3evXu3ekM/9ucHPWAgI9Qg0oZhufOdd94xfKzUTCfvvPPOlMAyKA4YQKzF2sMTpYNG1IWGivnH/LMTAeafneir6nah/VMigBAcx5SnO+FJ27lzZ7XVIk1UCrF28803d1B51nAatFew0B16Qg0hOF7BwYGKiopqq/ak6XEUe9bS09M7BA4YTCeiWAvdwYZKjwRR/NyFhor5F0V+6VXF/NNDiD+PJAIu5J8SzjYnPIuLi2usWu4MNm5YBs3OzoZIVD5Bl0D1hNpnRNTnpZdeqg33dKdRouE06IwZM5KJCHHWrjea3+HpeaJ00AC50FAx/5h/diLA/LMTffaoCQRw4wC8aS2b/BcuXFi3ZMmS+mgMz8KFCxPz8/OVBwyw9x9eNVxD1eoJJdRw48BKxEkrKyurjkbD1XVkZmZ2CMRZmxtjNxiwobKDUEHqZKHmoMFwYVOYfy4cdAd12YX8E+g/GQja7/8/ljwrKysvmT3daXRIcRq0Z8+eHVVLoLi94FEjQm03roXatGlTzcSJEy059WC0I2+88Ub8pEmT4B7EdVNDjeZ3cHoWag4aHBcaKuYf889OBJh/dqLPHjWBwD7l3Z3Lly+vmzdvXlS8aaIBK1asSJw/f77Sq4a7QQfKCjVcsH4cyrKqquqi7I0DVnMPNxikpqamBa6buoaI2sNF7hOJ6A0dLKJqqHbs2OH98ssv4+65556GQ4cOxeXk5KTs378fAYZbnkWLFtU98cQTbUhaU1NDs2fPTkbeW265Rep6oFdffTUBBSOPGoezZ896IMBnzpzZ6jP8/dFHH0168skn67p27WpJfD5ZPsaYUIsK/8CjWbNmJa1du7aub9++/pNRixcvTlyyZEmL0cGpKXAA/AMn1qxZU7tp06YEnHpSjw2iff/tb3+rxdiDc3l5eUnYbiHK1htL1J2VleVTcxR1l5SUeLW4jTJl+I2+4uq7+fPn1yu5rVe2XpvF58w/WaS+T+cE/gnuYJuOaBnsqPI7IP4+YMCApg0bNtSo+cz8Mz72kjn07GBfIjqoLOvcuXOXZIPZSrZBNxmC4nbp0qWjKmE/Ijqk/FuwpU9/cNtonvQM1iPFCdD2EAQXx2tBkC8DMVmCCTZbhZqYdATmyolIaxyUE21Kinr/Y9scoYQaUovP8bvWpC1KFBO9LtvDTBBDE2XE+Yex0xoziKpOnTo1jx8/vhFiCemuvfbaJiGcQokatUhXvlhoTYYYbtQH4Sf4qCXU8LfS0lLvmjVr6nr16tWEtCh7xIgRHWQo869//asa7WehJoOWP03M8E+I+2B8UdomJT+UPBffgczMTJ948QDXmX/SfDKbUIaH8wJ3efrrwIvitm3bohLVQt2pUaNGpaium8JdoCtkhNoGIpr8wgsv1P72t78N64oos0iLfC+++GLC/fffjzfwjUSUE255Ec6vPEFynohOBhFsURNqSi8HyLho0aL6Bx98MDmYR03tFQmFF94ecc8rPG7Kt0qtPMqJFZPvunXrEqZNm9YgJlr2qFnCzKjwb/ny5Yljx45thHdAOW5r165NgFcLXjHwIT8/v66qqkrXU6oe++effz4B2y0wAb799tvxHTt2bJ41a1aD8LQiPeoC97SEmphctYS+UgSGQlxMspiwhYcE35/Ro0f7sJdFeAqVE3ooz12oumLoRaHd8y81NbUZd1Ar+aYcO3By8eLFSc8++6zf+4vP1EJNS4gJjxq4K1Y3mH+W2DytQmR4CD0xSWRGEH/EiY1Yi0IUjCD/iB+rSLIJ+ktGqP2LiG7Zvn179c9//nOp5a5IdfAf//iH97bbbsMb8A4iGhGpeiwqV+syVy3BFjWhhn6plz6NetRCYaO1TKX2qMGQiYlb6ZELtgwr6hMeDYvGJmgxMTpRiv5azj+MOSYziO/Vq1f7/4VoE16tPXv2eLWEXLAlbaVQAyfQcHghRB3gjoxQGzp0aNObb74Z36NHj6ZgS51aJNDzAKs9asKjCDHZr18/H8SpWNqV8Tir28D8M/YNjyT/iouL4+EJBv/UWz5gR5csWZIoluhFq4141LSW8pl/xsZfIrXMPAw9cbMoq6SkpPq2226zRets377dm5WVpfTy74T+khFq/rAcBw8erJLdIyIBnqkk+BL069cvtZ2E6dAiiNaECcVMzc3NF02BYjATDMwnn3wSd+rUKQ8mlVAeNVG01t4JGJSjR496lJOgEaH22GOP1eXm5vq9b2pvB3vUDA6qdvKI8i/YMiSaAm9Tr169mhF/6LnnnksYNmyYDzyRGVe1V054sCDUxYSp9tjKLH0GQ1Rm+VP5khBq6RPek2D7O2VHNMaFmmX2L9L8W7x4MfbpJgmuCRslXihHjRrVeOHCBQ8+F/xQrkDAa/bAAw/U/+53v2uzB1O5R435J/vNMJ1Oxg52ISKE5/A/Bw4cqOrXr5+ltxDItv7gwYNx/fv3h8YRz+fQXzJCDQKiox2b69SdC7LZThYDR6eLhlATxg1eDq3NrFoACcOEz5R5hIFRGp1QxlNZtnJiFcKxoqLCG2rJVD0ZR2owFRNlpKpwZLlW80+5T0x4CbKzsxv1DomoxRz+X1ZW5h0zZkyj8J4E86jB66a1eVsLcDG5qpc/1R4N9f468X3o1q1bU7Clz3AGmPkXDnrf57WKf2Kf2S9/+ctGHLwaMmSIT7kfEjWiLvyLlxGjHjXmnzXjbWUp33zzzaUuXbpE9RCbaP+5c+c8l112mfJAQRX0Fws1K0c4jLKsnijVTRHeLtwskZqaSoMHD/ZpnfgU+SCMJk+e3FBQUOB37585c8b/9ij2GuFN8YknnkBQPhgq/z4N7OlQn9DTW/pUGirlfifRDq09SGHArJuVJ0pdiFoSYGx+9atfJSs3vwrh/vrrr8eLk5diDGfMmNEAL0Wo07xKoQY+Kfc8bt68uWb37t04YSq9R00ttNS9M+LREB4T4TWL8KlP+YGIgZRm7F+k+QfRZXQZO9hhrGA8ZP45j7ztVajx0qc5Lsm4XBcRUdSXPrU2sOpNaIBALHfi9969e/s3USuhMbL0CcEnTt6J9gQ7vBAtbxr6wktP8mTXWsoUYlsp1MS+RGzQNSLUkA9L88KTa+bUp95yqxmPhl54jnBeLph/zuCfeukTNujuu+9uvOOOO9ocdVfap2B7GNW9Csejy/yT5wgRyczDMbH0yYcJDPGiJbHMJkYkdsRhAnWoBa3N++INFvuP1O5/dMTs0qcQag7zqOldqWaOFdHLFXH+6Qk1dFW5xwx7XI0ufSp5lZ6e7sPeSiMeNeTXOp0nhsGIR0OUpZ4oseF8zZo1iThMIJa/tA7MyAx9jAs1Sw+zRIt/WuOmZasEP7BSgd+VW0Ws8Kgx/2S+QW3SyNjBmDhMwOE5TPGjlZJ3RHgOdEN4ECZNmtQglpWwURafKWNdKbus3qeGz2CMJkyYgKWslmPMZj1q2DN38eJFunTpkmflypX+/R7Khz1qpggocyw9rBcF2aUn0Xo97xbSqdPAy1pYWJiASQ/xz9ThEkKF58ALwGuvvRaPpXuUjWVacbBBKdSUHmaZPWpKoYZTn8LbgmVZfB/CCX4bo0ItIvYvGvwLtkdXLdSUL6laL7mhhBrzz5R9k80kYwdjIjwHB7yVpUTrdDKB9sKaKI02SywtPv3003Vbt271Io6aCEiqDlyKfTgoHx6RYEJJ6Y0IFpBW77g5PheTKeKpiVAOysldHSfLaL+NpI+hiTLi/NPzaKhvBwgl1JTL3lp7wPTCtwiOYqyVLyDq5XnB2WDhXkLxVXidBdeVG9bVosFsOBnmn/y3NZL8EzEh0RqsHhw7dkzzFhfRWrX9k+WrOoQL809+/CVTytjBmAh4y1dISTJCI5ne1RVRFWrmuxGdnMq3VBkRGIlWxdBECXiYf5EgSQTLZP5FEFwuWheBGOOf6K+eHYyJK6TQWb6UXZfiphNEdY+a6Va6JGOMGqpQo8f8cxC3mX8OGgwXNsWF/BOj3O4vZUdH5hDRyoyMDF9ZWVm1HfzNzMzsUF5e7iWiuUS0yo42RKhOnigjBKyZYl1oqJh/ZogSoTzMvwgBy8VKIeBC/glcniSiR8R/cDVcZWXlpaQk5W1OUhCaSlRXV0c9e/bsePr0aeUhtqeI6FF1gXqn3PxhOl566aVa7Acx1RqTmXCCasaMGYjwfISIrjdZjFOz8UTpoJFxoaFi/jH/7ESA+Wcn+qq6XWj/BAK4meAYEbUos7y8vLqlS5dG5c7PRYsWJS5dulSpCrFHvBcRnTIq1O4lolcQMLWioqI6LS0tKpF7L1686ElPT+/w+eef496/6UT0Pw7itRVNYUNlBYoWleFCQ8X8s4g7VhTD/LMCRS7DLAIu5J8SqjahPIqLi2twFZ5ZPGXybd68OT47O1sdn++JQAy4NkXoedSQYRcRDRs3blzjO++8UyPTiHDT3HnnnSlFRUXxRFRKRMPDLc+B+XmidNCguNBQMf+Yf3YiwPyzE332qCkRgFiCV+1K8Ucsge7cubO6T58+Ebn788iRI3E333xzB9WS5+mAN01TY8kItd4BsdYNUcZXrlzpD+EQqWfu3LlJq1atQlytrwIi7Wik6rKxXDZUNoKvrpqFmoMGw4VNYf65cNAd1GUX8k+N/q9xCY/yj0OHDvUh/IrVYg0iDWGxdu/ejb33yuceIkJYEc1HRqgh4+1EtBW/RFKsKUQaqhpNRO85iM9WNoWFmpVohlmWCw0V8y9MzliZnflnJZpcllEEXMg/LYjaLIHCs7Zu3bpaq5ZBsdw5bdq0ZJUnDW1ZguuzQ42brFBDGf4guPgFy6Dr16+vtWrPGvakTZkyJTmw3IkqHiCi540Srh2l54nSQYPlQkPF/GP+2YkA889O9FV1u9D+BUMfHq0p6g8XLlxY99hjj9WbPQ2K0535+fmJ+fn5WsdJ1xMRPHohHyNCTXjW4CLshgMGubm59eGeBsXpzmXLliUGDg5guRMuwFj1pInBYEOlx8wofu5CQ8X8iyK/9Kpi/ukhxJ9HEgEX8i8UnJpiDd61BQsW1E+fPr2hc+fOUocqz58/73nllVcSCgoKEjW8aGiDlEhDQqNCDXmwZw1ibRj+gzhruHpjwoQJjV6vetlVGw+fz0eFhYXxuMMvECcNCXFwACItFvekqYHgiTKSlsdg2S40VMw/gxyJZHLmXyTR5bL1EHAh//QgwenLRcESZWVlNWZnZ/sGDhzo6969ezN+kPbkyZMe/Ozbt89bXFzsLSkpwYHIYE/QE55aGcwINVEOQncgWFwf/AFuwdGjRzfi3kZ427Q6AK8ZLjfeunVrPNyBgQdx0hDkLdZCcIQiA0+Uel+VKH7uQkPF/Isiv/SqYv7pIcSfRxIBF/JPBk4sRy5XngaVySSRBqc754c6OGC1UBPl4QaDyUR0k0QjlUk+JCLcYB9LNw7IQsATpSxSUUjnQkPF/IsCr2SrYP7JIsXpIoGAC/knCyNCd+QGHFLhXlcAzxQcUsuIyHCYs3A8aurO4iL3bCL6GRF1JyJE/cW/eE4Gou3i3/eJqJiIKmXRisF0PFE6aFBdaKiYf8w/OxFg/tmJvqpuF9o/o+hDyzxERGOJaIDBzPuJ6F0i+pPWjQOyZVkp1GTr5HREbKgcxAIXGirmH/PPTgSYf3aiz0ItHPT7BhxSQ3QcUnsCDqlD4VQm8rJQswJF42WwoTKOWcRysFCLGLRcsAQCzD8JkDhJxBBwIf8ihmWkCmahFilkQ5fLQs0e3DVrdaGhYv4x/+xEgPlnJ/rsUXMQ+nJNYaEmh5PVqdhQWY1oGOWxUAsDPM4aNgLMv7Ah5ALCQMCF/AsDLXuyslCzB3cWavbgzh617xBg/jH/7ESA+Qo7rdoAAAXUSURBVGcn+uxRcxD6ck1hoSaHk9Wp2FBZjWgY5bnwjZL5FwZfrM7K/LMaUS7PCAIu5J8ReByRloWaPcPAE6U9uLNHjT1qDmLed01x4UTJ9s9BLHQh/xyEvlxTzAq14US0U6KKm4loFxH9NxEdC/wusmn9TaLImEjChspBw+hCQ8X8Y/7ZiQDzz070VXW70P4ZQf+GQDgOZWB+rb+py0SwXNxA8CwRfW2kQq20ZoWaKOtyIvpd4KoFRNsN1jjcXoAgt4cDGZUdXUhE/1CJuHD75fT8bKgcNEIuNFTMP+afnQgw/+xEn4WaLPpKPdOViDYQ0SCNzC8QEa6GgpbRe3CH6FK9ROrPIy3UIOT+l4hGByr+mIimEdF/Be66grhTiz2jfWiP6dlQOWjUWKg5aDBc2BTmnwsH3UFddiH/ZNHHyiGes0Q0nYgWB65/ikmPmlKIzSSiMUR0uwZSYplUFsT2nI6FmoNGz4WGivnH/LMTAeafneizR00GfaWTaSsR3UdEeUR0fwjtAo/akhCFm/KmoTwzHjW4A7Feq9VgdRvhEnyOiHoR0XtEhBvpX9O4lBQKValYZYBsz2lOEVG3o0ePVl133XVN7bkj7b3tX3zxRVzv3r1TieirwP207b1LMu1n/smgFIU0zD+2f1GgWdAqXMo/I5DfSUSfKrZthcqr3OKl3gYm44ULWrYZoaYsTGaPmjg0APchLm3/SOMgAhQr0oW96c7ICNiYFpe0Zm/YsKFm8uTJjTa2w/VVb9y4MT4nJwdfKuyhxKW7bniYfw4ZZeYf2z87qehS/slCjqVPCDWsAL4ZyKT2mGE7V05AyDnKo6bspFolah0mEC7E80S0NpAZHjbsXcNj6ekI2RGwOR02E+YtWLCgftmyZXU2t8XV1efm5iYVFBQkElG+5GbQWMCL+eeQUWT+sf2zk4ou5Z8M5GLlEGnhKcN+evWhSPGZ8qAk/gbNk0tEnQIVPRauEypcjxq8YHj0RBcEHU5MPB0I0+F2oTaBiN7Kyspq3LZtGwjAj00IjBo1KqWkpCSeiO4iokKbmhHtapl/0UY8SH3MP7Z/dlLRpfwzAjk0znoiwjau/yOijaplUPVyJ7aFQd9gT9tvArpnTUD3CMFnpH5/2nCEGjpwi0JtBvOOQV0+Q0TLiAiHCdBZtfvQbUuflxHRZ1Dea9asqZ01a1aD4ZHjDGEjsHbt2oTZs2cnB952rieib8IutH0UAP4hVE5X5p99A8b8Y/7Zxz4iF/NPBnaxEog99cIRpbW0KZY+JxPR3YplUK09anBWYQk1auE5INKu06hQ3TitZU2s+7rdowai4GDFqwkJCbR///6qG264gQ8VyHx9LEpz+PDhuAEDBqQ2NPg18j2BQy4Wld4uimH+2ThMzD+2fzbSj5h/ptCXXfoM5rQyVWm4HjXTlXLGFgRehWAbM2ZM4+rVq+tYrEWHGTBSDz/8cNKWLVuw5Ik3Jgg1Nz7MPxtGnfnH9s8G2rVUyfyzE31zdYez9GmuRs6lRADRjsuJqCc8aytWrOBl0AjzA+7+efPmJQc8aZVElBEIaBjhmh1ZPPMvysPC/GsFOPOP+RdlBNpndSzU7B83GKuVgaVQwgGD9PT0poyMDF9mZmYTx1kLb4AQJ6isrCyuvLzcW1FRERc4OIBC4Umb62KRJoBl/oVHsZC5mX+64DL/dCEyn4D5Zx47J+Vkoeac0cCeIZwYwSZGfiKHAGL1Ya8BhBo/3yPA/IsOGxBPEi8IzL/WeDP/mH/RQaAd1sJCzVmDhtN4txJReuAHy3LdnNXEdtca3DiA5eWKwM8HLjrdaXSwmH9GEdNPz/zTx0ikYP7JYyWbkvkni5SD07FQc/DgcNMYAUaAEWAEGAFGwN0IsFBz9/hz7xkBRoARYAQYAUbAwQiwUHPw4HDTGAFGgBFgBBgBRsDdCLBQc/f4c+8ZAUaAEWAEGAFGwMEIsFBz8OBw0xgBRoARYAQYAUbA3Qj8P4k2COMkQJLoAAAAAElFTkSuQmCC', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:activiti=\"http://activiti.org/bpmn\" xmlns:tns=\"http://www.activiti.org/testm1568796216967\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" id=\"m1568796216967\" name=\"\" targetNamespace=\"http://www.activiti.org/testm1568796216967\">\n  <process id=\"myProcess_1\" processType=\"None\" isClosed=\"false\" isExecutable=\"true\">\n    <startEvent id=\"StartEvent_1103sa0\" name=\"开始\">\n      <outgoing>SequenceFlow_1etqq41</outgoing>\n    </startEvent>\n    <sequenceFlow id=\"SequenceFlow_1etqq41\" sourceRef=\"StartEvent_1103sa0\" targetRef=\"Task_0y7ovyq\" />\n    <sequenceFlow id=\"SequenceFlow_11v2do8\" sourceRef=\"Task_0y7ovyq\" targetRef=\"Task_1ravuab\" />\n    <sequenceFlow id=\"SequenceFlow_18x1ap2\" sourceRef=\"Task_1ravuab\" targetRef=\"Task_0n0dbcl\" />\n    <endEvent id=\"EndEvent_0l75vmy\" name=\"结束\">\n      <incoming>SequenceFlow_160u4u8</incoming>\n    </endEvent>\n    <sequenceFlow id=\"SequenceFlow_160u4u8\" sourceRef=\"Task_0n0dbcl\" targetRef=\"EndEvent_0l75vmy\" />\n    <manualTask id=\"Task_0y7ovyq\" name=\"提交申请\">\n      <incoming>SequenceFlow_1etqq41</incoming>\n      <outgoing>SequenceFlow_11v2do8</outgoing>\n    </manualTask>\n    <userTask id=\"Task_1ravuab\" name=\"部门组长审批\" camunda:assignee=\"0003\">\n      <incoming>SequenceFlow_11v2do8</incoming>\n      <outgoing>SequenceFlow_18x1ap2</outgoing>\n    </userTask>\n    <userTask id=\"Task_0n0dbcl\" name=\"部门经理审批\" camunda:assignee=\"0002\">\n      <incoming>SequenceFlow_18x1ap2</incoming>\n      <outgoing>SequenceFlow_160u4u8</outgoing>\n    </userTask>\n  </process>\n  <bpmndi:BPMNDiagram id=\"Diagram-_1\" name=\"New Diagram\" documentation=\"background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0\">\n    <bpmndi:BPMNPlane bpmnElement=\"myProcess_1\">\n      <bpmndi:BPMNShape id=\"StartEvent_1103sa0_di\" bpmnElement=\"StartEvent_1103sa0\">\n        <dc:Bounds x=\"272\" y=\"192\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"279\" y=\"235\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_1etqq41_di\" bpmnElement=\"SequenceFlow_1etqq41\">\n        <di:waypoint x=\"308\" y=\"210\" />\n        <di:waypoint x=\"360\" y=\"210\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_11v2do8_di\" bpmnElement=\"SequenceFlow_11v2do8\">\n        <di:waypoint x=\"460\" y=\"210\" />\n        <di:waypoint x=\"520\" y=\"210\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_18x1ap2_di\" bpmnElement=\"SequenceFlow_18x1ap2\">\n        <di:waypoint x=\"620\" y=\"210\" />\n        <di:waypoint x=\"680\" y=\"210\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"EndEvent_0l75vmy_di\" bpmnElement=\"EndEvent_0l75vmy\">\n        <dc:Bounds x=\"842\" y=\"192\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"849\" y=\"235\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_160u4u8_di\" bpmnElement=\"SequenceFlow_160u4u8\">\n        <di:waypoint x=\"780\" y=\"210\" />\n        <di:waypoint x=\"842\" y=\"210\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"ManualTask_1b6lmz6_di\" bpmnElement=\"Task_0y7ovyq\">\n        <dc:Bounds x=\"360\" y=\"170\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_0x6mljz_di\" bpmnElement=\"Task_1ravuab\">\n        <dc:Bounds x=\"520\" y=\"170\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_0o9ubqi_di\" bpmnElement=\"Task_0n0dbcl\">\n        <dc:Bounds x=\"680\" y=\"170\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</definitions>\n', '1.0', NULL, '2019-12-06 17:34:20', '2019-12-06 17:34:20', 0, 0);
INSERT INTO `pms_models` VALUES (34, '请假流程', 'data:image/png;base64,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', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:activiti=\"http://activiti.org/bpmn\" xmlns:tns=\"http://www.activiti.org/testm1568796216967\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" id=\"m1568796216967\" name=\"\" targetNamespace=\"http://www.activiti.org/testm1568796216967\">\n  <process id=\"myProcess_1\" processType=\"None\" isClosed=\"false\" isExecutable=\"true\">\n    <startEvent id=\"StartEvent_15id6r0\">\n      <outgoing>SequenceFlow_164i0wk</outgoing>\n    </startEvent>\n    <sequenceFlow id=\"SequenceFlow_164i0wk\" name=\"开始\" sourceRef=\"StartEvent_15id6r0\" targetRef=\"Task_1grs5dm\" />\n    <sequenceFlow id=\"SequenceFlow_0ahu08r\" sourceRef=\"Task_1grs5dm\" targetRef=\"Task_07r8yxp\" />\n    <endEvent id=\"EndEvent_04ra2c3\" name=\"结束\">\n      <incoming>SequenceFlow_1htwxxf</incoming>\n    </endEvent>\n    <sequenceFlow id=\"SequenceFlow_1htwxxf\" sourceRef=\"Task_03fzwqc\" targetRef=\"EndEvent_04ra2c3\" />\n    <manualTask id=\"Task_1grs5dm\" name=\"提交申请\">\n      <incoming>SequenceFlow_164i0wk</incoming>\n      <incoming>SequenceFlow_17vlcc6</incoming>\n      <incoming>SequenceFlow_1eevx3a</incoming>\n      <outgoing>SequenceFlow_0ahu08r</outgoing>\n    </manualTask>\n    <userTask id=\"Task_07r8yxp\" name=\"部门组长审批\" camunda:assignee=\"0003\">\n      <incoming>SequenceFlow_0ahu08r</incoming>\n      <outgoing>SequenceFlow_08w9avr</outgoing>\n      <outgoing>SequenceFlow_17vlcc6</outgoing>\n    </userTask>\n    <userTask id=\"Task_03fzwqc\" name=\"部门经理审批\" camunda:assignee=\"0002\">\n      <incoming>SequenceFlow_08w9avr</incoming>\n      <outgoing>SequenceFlow_1htwxxf</outgoing>\n      <outgoing>SequenceFlow_1eevx3a</outgoing>\n    </userTask>\n    <sequenceFlow id=\"SequenceFlow_08w9avr\" sourceRef=\"Task_07r8yxp\" targetRef=\"Task_03fzwqc\" />\n    <sequenceFlow id=\"SequenceFlow_17vlcc6\" name=\"驳回\" sourceRef=\"Task_07r8yxp\" targetRef=\"Task_1grs5dm\">\n      <conditionExpression xsi:type=\"tFormalExpression\">${outcome==\'驳回\'}</conditionExpression>\n    </sequenceFlow>\n    <sequenceFlow id=\"SequenceFlow_1eevx3a\" name=\"驳回\" sourceRef=\"Task_03fzwqc\" targetRef=\"Task_1grs5dm\">\n      <conditionExpression xsi:type=\"tFormalExpression\">${outcome==\'驳回\'}</conditionExpression>\n    </sequenceFlow>\n  </process>\n  <bpmndi:BPMNDiagram id=\"Diagram-_1\" name=\"New Diagram\" documentation=\"background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0\">\n    <bpmndi:BPMNPlane bpmnElement=\"myProcess_1\">\n      <bpmndi:BPMNShape id=\"StartEvent_15id6r0_di\" bpmnElement=\"StartEvent_15id6r0\">\n        <dc:Bounds x=\"242\" y=\"222\" width=\"36\" height=\"36\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_164i0wk_di\" bpmnElement=\"SequenceFlow_164i0wk\">\n        <di:waypoint x=\"278\" y=\"240\" />\n        <di:waypoint x=\"330\" y=\"240\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"294\" y=\"222\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_0ahu08r_di\" bpmnElement=\"SequenceFlow_0ahu08r\">\n        <di:waypoint x=\"430\" y=\"240\" />\n        <di:waypoint x=\"490\" y=\"240\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"EndEvent_04ra2c3_di\" bpmnElement=\"EndEvent_04ra2c3\">\n        <dc:Bounds x=\"812\" y=\"222\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"819\" y=\"265\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_1htwxxf_di\" bpmnElement=\"SequenceFlow_1htwxxf\">\n        <di:waypoint x=\"750\" y=\"240\" />\n        <di:waypoint x=\"812\" y=\"240\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"ManualTask_1o8ldgc_di\" bpmnElement=\"Task_1grs5dm\">\n        <dc:Bounds x=\"330\" y=\"200\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_0td75u5_di\" bpmnElement=\"Task_07r8yxp\">\n        <dc:Bounds x=\"490\" y=\"200\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_08x6zwu_di\" bpmnElement=\"Task_03fzwqc\">\n        <dc:Bounds x=\"650\" y=\"200\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_08w9avr_di\" bpmnElement=\"SequenceFlow_08w9avr\">\n        <di:waypoint x=\"590\" y=\"240\" />\n        <di:waypoint x=\"650\" y=\"240\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_17vlcc6_di\" bpmnElement=\"SequenceFlow_17vlcc6\">\n        <di:waypoint x=\"540\" y=\"200\" />\n        <di:waypoint x=\"540\" y=\"160\" />\n        <di:waypoint x=\"380\" y=\"160\" />\n        <di:waypoint x=\"380\" y=\"200\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"450\" y=\"142\" width=\"21\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_1eevx3a_di\" bpmnElement=\"SequenceFlow_1eevx3a\">\n        <di:waypoint x=\"700\" y=\"280\" />\n        <di:waypoint x=\"700\" y=\"330\" />\n        <di:waypoint x=\"380\" y=\"330\" />\n        <di:waypoint x=\"380\" y=\"280\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"531\" y=\"312\" width=\"21\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</definitions>\n', '1.0', NULL, '2019-12-06 17:41:36', '2019-12-06 17:41:36', 0, 0);
INSERT INTO `pms_models` VALUES (36, '离职流程', 'data:image/png;base64,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', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:activiti=\"http://activiti.org/bpmn\" xmlns:tns=\"http://www.activiti.org/testm1568796216967\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" id=\"m1568796216967\" name=\"\" targetNamespace=\"http://www.activiti.org/testm1568796216967\">\n  <process id=\"myProcess_1\" processType=\"None\" isClosed=\"false\" isExecutable=\"true\">\n    <startEvent id=\"StartEvent_15043e5\" name=\"开始\">\n      <outgoing>SequenceFlow_0i7p1ba</outgoing>\n    </startEvent>\n    <sequenceFlow id=\"SequenceFlow_0i7p1ba\" sourceRef=\"StartEvent_15043e5\" targetRef=\"Task_0itd8rd\" />\n    <sequenceFlow id=\"SequenceFlow_0xr1nsn\" sourceRef=\"Task_0itd8rd\" targetRef=\"Task_004ii5l\" />\n    <sequenceFlow id=\"SequenceFlow_1xzszqp\" sourceRef=\"Task_004ii5l\" targetRef=\"Task_15de8m1\" />\n    <endEvent id=\"EndEvent_0j8on5q\" name=\"结束\">\n      <incoming>SequenceFlow_1hc35yu</incoming>\n    </endEvent>\n    <sequenceFlow id=\"SequenceFlow_1hc35yu\" sourceRef=\"Task_15de8m1\" targetRef=\"EndEvent_0j8on5q\" />\n    <manualTask id=\"Task_0itd8rd\" name=\"提交申请\">\n      <incoming>SequenceFlow_0i7p1ba</incoming>\n      <outgoing>SequenceFlow_0xr1nsn</outgoing>\n    </manualTask>\n    <userTask id=\"Task_004ii5l\" name=\"部门经理审批\" camunda:assignee=\"0003\">\n      <incoming>SequenceFlow_0xr1nsn</incoming>\n      <outgoing>SequenceFlow_1xzszqp</outgoing>\n    </userTask>\n    <userTask id=\"Task_15de8m1\" name=\"总经理审批\" camunda:assignee=\"0002\">\n      <incoming>SequenceFlow_1xzszqp</incoming>\n      <outgoing>SequenceFlow_1hc35yu</outgoing>\n    </userTask>\n  </process>\n  <bpmndi:BPMNDiagram id=\"Diagram-_1\" name=\"New Diagram\" documentation=\"background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0\">\n    <bpmndi:BPMNPlane bpmnElement=\"myProcess_1\">\n      <bpmndi:BPMNShape id=\"StartEvent_15043e5_di\" bpmnElement=\"StartEvent_15043e5\">\n        <dc:Bounds x=\"292\" y=\"242\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"299\" y=\"285\" width=\"23\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_0i7p1ba_di\" bpmnElement=\"SequenceFlow_0i7p1ba\">\n        <di:waypoint x=\"328\" y=\"260\" />\n        <di:waypoint x=\"380\" y=\"260\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_0xr1nsn_di\" bpmnElement=\"SequenceFlow_0xr1nsn\">\n        <di:waypoint x=\"480\" y=\"260\" />\n        <di:waypoint x=\"540\" y=\"260\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_1xzszqp_di\" bpmnElement=\"SequenceFlow_1xzszqp\">\n        <di:waypoint x=\"640\" y=\"260\" />\n        <di:waypoint x=\"710\" y=\"260\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"EndEvent_0j8on5q_di\" bpmnElement=\"EndEvent_0j8on5q\">\n        <dc:Bounds x=\"882\" y=\"242\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"889\" y=\"285\" width=\"23\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"SequenceFlow_1hc35yu_di\" bpmnElement=\"SequenceFlow_1hc35yu\">\n        <di:waypoint x=\"810\" y=\"260\" />\n        <di:waypoint x=\"882\" y=\"260\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNShape id=\"ManualTask_13ynlj0_di\" bpmnElement=\"Task_0itd8rd\">\n        <dc:Bounds x=\"380\" y=\"220\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_11iqa8j_di\" bpmnElement=\"Task_004ii5l\">\n        <dc:Bounds x=\"540\" y=\"220\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"UserTask_0hds61y_di\" bpmnElement=\"Task_15de8m1\">\n        <dc:Bounds x=\"710\" y=\"220\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</definitions>\n', '1.0', NULL, '2019-12-13 14:05:58', '2019-12-13 14:05:58', 0, 0);

SET FOREIGN_KEY_CHECKS = 1;


3.5 查看审批进度

 3.6查看审批流程进度图工具类实现代码

/**
     *  查看审批流程进度图
     * @param processInstanceId 流程实例编号
     * @return
     */
    public InputStream images(String processInstanceId){
        //processInstanceId
//        String processInstanceId = taskService.createTaskQuery().taskId(taskId).singleResult().getProcessInstanceId();
        //获取历史流程实例
        HistoricProcessInstance processInstance =  historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
        //获取流程图
        BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
        ProcessEngineConfiguration processEngineConfiguration = processEngine.getProcessEngineConfiguration();
        Context.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);

        ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
        ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity)repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId());

        List<HistoricActivityInstance> highLightedActivitList =  historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list();
        //高亮环节id集合
        List<String> highLightedActivitis = new ArrayList<String>();
        //高亮线路id集合
        List<String> highLightedFlows = getHighLightedFlows(definitionEntity,highLightedActivitList);

        for(HistoricActivityInstance tempActivity : highLightedActivitList){
            String activityId = tempActivity.getActivityId();
            highLightedActivitis.add(activityId);
        }
        //中文显示的是乱码,设置字体就好了
        InputStream imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis,highLightedFlows,"宋体","宋体","宋体",null,1.0);
        //单独返回流程图,不高亮显示
        return imageStream;
    }

    /**
     * 获取需要高亮的线
     * @param processDefinitionEntity
     * @param historicActivityInstances
     * @return
     */
    public List<String> getHighLightedFlows(
            ProcessDefinitionEntity processDefinitionEntity,
            List<HistoricActivityInstance> historicActivityInstances) {
        List<String> highFlows = new ArrayList<String>();// 用以保存高亮的线flowId
        for (int i = 0; i < historicActivityInstances.size() - 1; i++) {// 对历史流程节点进行遍历
            ActivityImpl activityImpl = processDefinitionEntity
                    .findActivity(historicActivityInstances.get(i)
                            .getActivityId());// 得到节点定义的详细信息
            List<ActivityImpl> sameStartTimeNodes = new ArrayList<ActivityImpl>();// 用以保存后需开始时间相同的节点
            ActivityImpl sameActivityImpl1 = processDefinitionEntity
                    .findActivity(historicActivityInstances.get(i + 1)
                            .getActivityId());
            // 将后面第一个节点放在时间相同节点的集合里
            sameStartTimeNodes.add(sameActivityImpl1);
            for (int j = i + 1; j < historicActivityInstances.size() - 1; j++) {
                HistoricActivityInstance activityImpl1 = historicActivityInstances
                        .get(j);// 后续第一个节点
                HistoricActivityInstance activityImpl2 = historicActivityInstances
                        .get(j + 1);// 后续第二个节点
                if (activityImpl1.getStartTime().equals(
                        activityImpl2.getStartTime())) {
                    // 如果第一个节点和第二个节点开始时间相同保存
                    ActivityImpl sameActivityImpl2 = processDefinitionEntity
                            .findActivity(activityImpl2.getActivityId());
                    sameStartTimeNodes.add(sameActivityImpl2);
                } else {
                    // 有不相同跳出循环
                    break;
                }
            }
            List<PvmTransition> pvmTransitions = activityImpl
                    .getOutgoingTransitions();// 取出节点的所有出去的线
            for (PvmTransition pvmTransition : pvmTransitions) {
                // 对所有的线进行遍历
                ActivityImpl pvmActivityImpl = (ActivityImpl) pvmTransition
                        .getDestination();
                // 如果取出的线的目标节点存在时间相同的节点里,保存该线的id,进行高亮显示
                if (sameStartTimeNodes.contains(pvmActivityImpl)) {
                    highFlows.add(pvmTransition.getId());
                }
            }
        }
        return highFlows;
    }
posted @ 2019-12-20 17:25  yiwanbin  阅读(10359)  评论(5编辑  收藏  举报