didi / LogicFlow

A flow chart editing framework focusing on business customization. 专注于业务自定义的流程图编辑框架,支持实现脑图、ER图、UML、工作流等各种图编辑场景。
https://site.logic-flow.cn
Apache License 2.0
8.7k stars 1.14k forks source link

[Bug Report]: 使用BPMNElements 和 BPMNAdapter 导入 bpmn 数据,渲染的 Gateway 错位 #1954

Open changexbc opened 2 weeks ago

changexbc commented 2 weeks ago

使用BPMNElements 和 BPMNAdapter 导入 bpmn 数据,渲染的 Gateway 错位,代码如下

<template>
  <div>
    <a-button @click="render" >渲染 logicFlow</a-button>
    <div class="container" ref="container"></div>
  </div>
</template>

<script>
import { mixinDevice } from '@/utils/mixin'
import LogicFlow from "@logicflow/core"
import "@logicflow/core/lib/style/index.css"
import demoXml from './demoXml.js'
import {
  BPMNElements,
  BPMNAdapter } from "@logicflow/extension"
import "@logicflow/extension/lib/style/index.css"

// import moment from 'moment'
// import { axios } from '@/utils/request'

// const BASE = process.env.VUE_APP_API_BASE_ENTERTAINMENT
// const getList = (params) => axios.post(`${BASE}/corporate/payment/costList`, params)

export default {
  name: 'Flow',
  mixins: [mixinDevice],
  components: {

  },
  props: {
    value: {
      type: [String, Number],
      default: 0
    },
    show: {
      type: Boolean,
      default: false
    }
  },
  data () {
    return {
      lf: null
    }
  },
  computed: {

  },
  filters: {

  },
  created () {
  },
  mounted () {
    this.lf = new LogicFlow({
      height: 1000,
      container: this.$refs.container,
      stopScrollGraph: true,
      stopZoomGraph: true,
      metaKeyMultipleSelected: true,
      grid: {
        size: 10,
        type: "dot",
        config: {
          color: "#e9e9e9"
        }
      },
      keyboard: {
        enabled: true
      },
      snapline: true,
      plugins: [
        BPMNElements,
        BPMNAdapter
      ]
    })
    this.lf.on("node:click", (args) => {
      console.log("node:click", args.position)
    })
    this.lf.on("element:click", (args) => {
      console.log("element:click", args.e.target)
    })
  },
  methods: {
    render () {
      const xml = demoXml.data.modelXml
      this.$nextTick(() => {
        this.lf.render(xml)
        console.log(this.lf.getGraphRawData())
        console.log(123456)
        console.log(this.lf.graphModel)
        this.lf.setProperties("Flow_1jzw3lh", {
          style: {
            stroke: 'red'
          }
          // isPass: 'true'
        })
      })
    },
    showAdd () {
      this.showState.add = true
      this.getList()
    }
  },
  watch: {

  }
}
</script>
<style lang="less" scoped>
  .container {
    width: 1000px;
    height: 500px;
  }
</style>

demoXml.js 数据

export default {
  "code": "100",
  "msg": "OK",
  "data": {
      "highLightedFlows": [
          "a0fa3b56c41bb44c5aaa9d886571f4954"
      ],
      "activeActivityIds": [
          "Activity_n0sl3dp"
      ],
      "hisActiveActivityIds": [
          "Event_damihl6"
      ],
      "nullActiveActivityIds": null,
      // eslint-disable-next-line no-template-curly-in-string
      "modelXml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:modeler=\"http://camunda.org/schema/modeler/1.0\" id=\"Definitions_06wr6gm\" targetNamespace=\"http://bpmn.io/schema/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"5.27.0\" modeler:executionPlatform=\"Camunda Platform\" modeler:executionPlatformVersion=\"7.21.0\">\n  <bpmn:process id=\"EntertainmentExpense\" name=\"交际费流程\" isExecutable=\"true\" camunda:historyTimeToLive=\"3650\">\n    <bpmn:startEvent id=\"StartEvent_1\" name=\"开始\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.CalculateListener\" event=\"start\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CreateUserId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>EmpHighestOrgId</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_cal_kind\">\n            <camunda:string>Cal_EmpHighestDept</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out_is_coll\">\n            <camunda:expression>0</camunda:expression>\n          </camunda:field>\n        </camunda:executionListener>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ProcessStartListener\" event=\"start\" />\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.CalculateListener\" event=\"start\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${DeptOwnerId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>DeptOwnerIds</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_cal_kind\">\n            <camunda:string>ChangeToColl</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out_is_coll\">\n            <camunda:string>1</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:outgoing>Flow_0squut9</bpmn:outgoing>\n    </bpmn:startEvent>\n    <bpmn:sequenceFlow id=\"Flow_0squut9\" sourceRef=\"StartEvent_1\" targetRef=\"Activity_1pzga1t\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.EmployeeMangerListener\" event=\"take\">\n          <camunda:field name=\"data_emp\">\n            <camunda:expression>${CreateUserId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl1</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_level\">\n            <camunda:string>1</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n    </bpmn:sequenceFlow>\n    <bpmn:exclusiveGateway id=\"Gateway_0o5atgg\" name=\"发起人部门判断\">\n      <bpmn:incoming>Flow_14jw5gz</bpmn:incoming>\n      <bpmn:outgoing>Flow_0ln2i88</bpmn:outgoing>\n      <bpmn:outgoing>Flow_07sndfp</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:sequenceFlow id=\"Flow_14jw5gz\" sourceRef=\"Activity_1ltgb9b\" targetRef=\"Gateway_0o5atgg\">\n      <bpmn:extensionElements />\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0ln2i88\" name=\"yes\" sourceRef=\"Gateway_0o5atgg\" targetRef=\"Activity_0he7ije\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.OrganizationMangerListener\" event=\"take\">\n          <camunda:field name=\"data_org\">\n            <camunda:expression>${EmpHighestOrgId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl3</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${pdata3.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:exclusiveGateway id=\"Gateway_022i3q8\" name=\"公司总裁审批\">\n      <bpmn:incoming>Flow_15mi3c7</bpmn:incoming>\n      <bpmn:incoming>Flow_07sndfp</bpmn:incoming>\n      <bpmn:outgoing>Flow_1jzw3lh</bpmn:outgoing>\n      <bpmn:outgoing>Flow_1tvbw1v</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:sequenceFlow id=\"Flow_1jzw3lh\" name=\"yes\" sourceRef=\"Gateway_022i3q8\" targetRef=\"Activity_0o0fh8w\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ConfigurationMulListener\" event=\"take\">\n          <camunda:field name=\"data_conf\">\n            <camunda:string>公司总裁</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl4</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${(Amount&gt;150000)&amp;&amp;(pdata4.contains(EmpHighestOrgId))}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:userTask id=\"Activity_1pzga1t\" name=\"一级领导审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0squut9</bpmn:incoming>\n      <bpmn:outgoing>Flow_0f933ug</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl1\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_1ltgb9b\" name=\"二级领导审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0f933ug</bpmn:incoming>\n      <bpmn:outgoing>Flow_14jw5gz</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl2\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:sequenceFlow id=\"Flow_1tvbw1v\" name=\"no&#10;\" sourceRef=\"Gateway_022i3q8\" targetRef=\"Activity_1th6wtt\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.OrganizationHeaderListener\" event=\"take\">\n          <camunda:field name=\"data_org\">\n            <camunda:expression>${DeptOwnerId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl5</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!((Amount&gt;150000)&amp;&amp;(pdata4.contains(EmpHighestOrgId)))}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_04kxf0z\" sourceRef=\"Activity_0o0fh8w\" targetRef=\"Activity_1th6wtt\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.OrganizationHeaderListener\" event=\"take\">\n          <camunda:field name=\"data_org\">\n            <camunda:expression>${DeptOwnerId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl5</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n    </bpmn:sequenceFlow>\n    <bpmn:exclusiveGateway id=\"Gateway_09zrh49\" name=\"总裁审批\">\n      <bpmn:incoming>Flow_1xttmhp</bpmn:incoming>\n      <bpmn:outgoing>Flow_03jpsrl</bpmn:outgoing>\n      <bpmn:outgoing>Flow_05on1mg</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:exclusiveGateway id=\"Gateway_0d4bcrm\" name=\"人均额超标部门审批\">\n      <bpmn:incoming>Flow_05on1mg</bpmn:incoming>\n      <bpmn:incoming>Flow_0fjvtxl</bpmn:incoming>\n      <bpmn:outgoing>Flow_0vjpfg2</bpmn:outgoing>\n      <bpmn:outgoing>Flow_1m18dtu</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:sequenceFlow id=\"Flow_1xttmhp\" sourceRef=\"Activity_1th6wtt\" targetRef=\"Gateway_09zrh49\" />\n    <bpmn:sequenceFlow id=\"Flow_03jpsrl\" name=\"yes\" sourceRef=\"Gateway_09zrh49\" targetRef=\"Activity_0idxtir\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ConfigurationMulListener\" event=\"take\">\n          <camunda:field name=\"data_conf\">\n            <camunda:string>公司总裁</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl6</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${pdata6.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_05on1mg\" name=\"no\" sourceRef=\"Gateway_09zrh49\" targetRef=\"Gateway_0d4bcrm\">\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!pdata6.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0fjvtxl\" sourceRef=\"Activity_0idxtir\" targetRef=\"Gateway_0d4bcrm\" />\n    <bpmn:sequenceFlow id=\"Flow_0vjpfg2\" name=\"yes\" sourceRef=\"Gateway_0d4bcrm\" targetRef=\"Activity_18zcgfl\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.OrganizationHeaderListener\" event=\"take\">\n          <camunda:field name=\"data_org\">\n            <camunda:expression>${DeptOwnerId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl7</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${ExpenseDetail==\"meal\"&amp;&amp;AvgAmount&gt;300&amp;&amp;pdataBM.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_1m18dtu\" name=\"yes\" sourceRef=\"Gateway_0d4bcrm\" targetRef=\"Gateway_18ot606\">\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!(ExpenseDetail==\"meal\"&amp;&amp;AvgAmount&gt;300&amp;&amp;pdataBM.contains(EmpHighestOrgId))}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_1wnkudb\" sourceRef=\"Activity_18zcgfl\" targetRef=\"Activity_0r9wsyl\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ConfigurationMulListener\" event=\"take\">\n          <camunda:field name=\"data_conf\">\n            <camunda:string>合规总监</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl8</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0b8ch2d\" sourceRef=\"Activity_0r9wsyl\" targetRef=\"Gateway_18ot606\">\n      <bpmn:extensionElements />\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_04r3fxd\" sourceRef=\"Activity_1bgkmdr\" targetRef=\"Activity_090xajt\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.GeneralMulListener\" event=\"take\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CCFinanceLev}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl10</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n    </bpmn:sequenceFlow>\n    <bpmn:exclusiveGateway id=\"Gateway_1kvy4go\" name=\"财务经理审批判断\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.CalIntersectListener\" event=\"start\">\n          <camunda:field name=\"data_in_1\">\n            <camunda:string>DeptOwnerIds</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_in_2\">\n            <camunda:string>pdata121</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>decision11</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:incoming>Flow_1dpjm5h</bpmn:incoming>\n      <bpmn:outgoing>Flow_1dxlpii</bpmn:outgoing>\n      <bpmn:outgoing>Flow_1sgpsvk</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:exclusiveGateway id=\"Gateway_0lr1cmz\" name=\"财务总监审批\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.CalIntersectListener\" event=\"start\">\n          <camunda:field name=\"data_in_1\">\n            <camunda:string>DeptOwnerIds</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_in_2\">\n            <camunda:string>pdata121</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>decision12</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.CalIntersectListener\" event=\"start\">\n          <camunda:field name=\"data_in_1\">\n            <camunda:string>DeptOwnerIds</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_in_2\">\n            <camunda:string>pdata13</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>decision122</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:incoming>Flow_1dxlpii</bpmn:incoming>\n      <bpmn:incoming>Flow_0ceu1h0</bpmn:incoming>\n      <bpmn:outgoing>Flow_1p4ow3p</bpmn:outgoing>\n      <bpmn:outgoing>Flow_0zi8kah</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:exclusiveGateway id=\"Gateway_0b2nynv\" name=\"财务副总裁审批\">\n      <bpmn:incoming>Flow_1p4ow3p</bpmn:incoming>\n      <bpmn:incoming>Flow_08sjbdi</bpmn:incoming>\n      <bpmn:outgoing>Flow_151pnck</bpmn:outgoing>\n      <bpmn:outgoing>Flow_0ce8ksr</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:sequenceFlow id=\"Flow_1dpjm5h\" sourceRef=\"Activity_090xajt\" targetRef=\"Gateway_1kvy4go\" />\n    <bpmn:sequenceFlow id=\"Flow_1dxlpii\" name=\"no\" sourceRef=\"Gateway_1kvy4go\" targetRef=\"Gateway_0lr1cmz\">\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${(Amount&lt;5000&amp;&amp;decision11)||pdata12.contains(CreateUserId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_1p4ow3p\" name=\"no\" sourceRef=\"Gateway_0lr1cmz\" targetRef=\"Gateway_0b2nynv\">\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${(Amount&lt;10000&amp;&amp;decision12)||(Amount&lt;5000&amp;&amp;decision12)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:endEvent id=\"Event_0zb7g17\" name=\"结束\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ProcessCompleteListener\" event=\"start\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CreateUserId}</camunda:expression>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:incoming>Flow_151pnck</bpmn:incoming>\n      <bpmn:incoming>Flow_1d0q614</bpmn:incoming>\n    </bpmn:endEvent>\n    <bpmn:sequenceFlow id=\"Flow_151pnck\" name=\"no\" sourceRef=\"Gateway_0b2nynv\" targetRef=\"Event_0zb7g17\">\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!pdata14.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_1sgpsvk\" name=\"yes\" sourceRef=\"Gateway_1kvy4go\" targetRef=\"Activity_15rr57j\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.GeneralMulListener\" event=\"take\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CCFinance}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl11</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!((Amount&lt;5000&amp;&amp;decision11)||pdata12.contains(CreateUserId))}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0ceu1h0\" sourceRef=\"Activity_15rr57j\" targetRef=\"Gateway_0lr1cmz\" />\n    <bpmn:sequenceFlow id=\"Flow_08sjbdi\" sourceRef=\"Activity_1padyxn\" targetRef=\"Gateway_0b2nynv\" />\n    <bpmn:sequenceFlow id=\"Flow_1d0q614\" sourceRef=\"Activity_1wiva3j\" targetRef=\"Event_0zb7g17\" />\n    <bpmn:sequenceFlow id=\"Flow_0zi8kah\" name=\"yes\" sourceRef=\"Gateway_0lr1cmz\" targetRef=\"Activity_1padyxn\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.GeneralMulListener\" event=\"take\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CCFinance}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl12</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!((Amount&lt;10000&amp;&amp;decision12)||(Amount&lt;5000&amp;&amp;decision12))}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0ce8ksr\" name=\"yes\" sourceRef=\"Gateway_0b2nynv\" targetRef=\"Activity_1wiva3j\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ConfigurationMulListener\" event=\"take\">\n          <camunda:field name=\"data_conf\">\n            <camunda:string>财务副总裁</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl13</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${pdata14.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_07sndfp\" name=\"no\" sourceRef=\"Gateway_0o5atgg\" targetRef=\"Gateway_022i3q8\">\n      <bpmn:extensionElements />\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!pdata3.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_15mi3c7\" sourceRef=\"Activity_0he7ije\" targetRef=\"Gateway_022i3q8\" />\n    <bpmn:userTask id=\"Activity_0he7ije\" name=\"最高级部门负责人审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0ln2i88</bpmn:incoming>\n      <bpmn:outgoing>Flow_15mi3c7</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl3\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_0o0fh8w\" name=\"公司总裁审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_1jzw3lh</bpmn:incoming>\n      <bpmn:outgoing>Flow_04kxf0z</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl4\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_1th6wtt\" name=\"费用归属部门审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_1tvbw1v</bpmn:incoming>\n      <bpmn:incoming>Flow_04kxf0z</bpmn:incoming>\n      <bpmn:outgoing>Flow_1xttmhp</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl5\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_0idxtir\" name=\"总裁审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_03jpsrl</bpmn:incoming>\n      <bpmn:outgoing>Flow_0fjvtxl</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl6\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_18zcgfl\" name=\"部门财务负责人审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0vjpfg2</bpmn:incoming>\n      <bpmn:outgoing>Flow_1wnkudb</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl7\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_0r9wsyl\" name=\"合规总监审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_1wnkudb</bpmn:incoming>\n      <bpmn:outgoing>Flow_0b8ch2d</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl8\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_1bgkmdr\" name=\"合规审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_12mre1p</bpmn:incoming>\n      <bpmn:outgoing>Flow_04r3fxd</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl9\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfCompletedInstances==1}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_090xajt\" name=\"财务会计审批\" camunda:assignee=\"${user}\">\n      <bpmn:extensionElements />\n      <bpmn:incoming>Flow_04r3fxd</bpmn:incoming>\n      <bpmn:incoming>Flow_10cck4v</bpmn:incoming>\n      <bpmn:outgoing>Flow_1dpjm5h</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl10\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_15rr57j\" name=\"财务经理审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_1sgpsvk</bpmn:incoming>\n      <bpmn:outgoing>Flow_0ceu1h0</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl11\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_1padyxn\" name=\"财务总监审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0zi8kah</bpmn:incoming>\n      <bpmn:outgoing>Flow_08sjbdi</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl12\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:userTask id=\"Activity_1wiva3j\" name=\"财务副总裁审批\" camunda:assignee=\"${user}\">\n      <bpmn:incoming>Flow_0ce8ksr</bpmn:incoming>\n      <bpmn:outgoing>Flow_1d0q614</bpmn:outgoing>\n      <bpmn:multiInstanceLoopCharacteristics camunda:collection=\"AsigneeColl13\" camunda:elementVariable=\"user\">\n        <bpmn:completionCondition xsi:type=\"bpmn:tFormalExpression\">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>\n      </bpmn:multiInstanceLoopCharacteristics>\n    </bpmn:userTask>\n    <bpmn:exclusiveGateway id=\"Gateway_18ot606\">\n      <bpmn:incoming>Flow_1m18dtu</bpmn:incoming>\n      <bpmn:incoming>Flow_0b8ch2d</bpmn:incoming>\n      <bpmn:outgoing>Flow_12mre1p</bpmn:outgoing>\n      <bpmn:outgoing>Flow_10cck4v</bpmn:outgoing>\n    </bpmn:exclusiveGateway>\n    <bpmn:sequenceFlow id=\"Flow_12mre1p\" sourceRef=\"Gateway_18ot606\" targetRef=\"Activity_1bgkmdr\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.ConfigurationMulListener\" event=\"take\">\n          <camunda:field name=\"data_conf\">\n            <camunda:string>合规成员</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl9</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${pdataBM.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_10cck4v\" sourceRef=\"Gateway_18ot606\" targetRef=\"Activity_090xajt\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.GeneralMulListener\" event=\"take\">\n          <camunda:field name=\"data_in\">\n            <camunda:expression>${CCFinanceLev}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl10</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n      <bpmn:conditionExpression xsi:type=\"bpmn:tFormalExpression\">${!pdataBM.contains(EmpHighestOrgId)}</bpmn:conditionExpression>\n    </bpmn:sequenceFlow>\n    <bpmn:sequenceFlow id=\"Flow_0f933ug\" sourceRef=\"Activity_1pzga1t\" targetRef=\"Activity_1ltgb9b\">\n      <bpmn:extensionElements>\n        <camunda:executionListener class=\"org.winhealth.rpc_camunda.camunda.executionListener.EmployeeMangerListener\" event=\"take\">\n          <camunda:field name=\"data_emp\">\n            <camunda:expression>${CreateUserId}</camunda:expression>\n          </camunda:field>\n          <camunda:field name=\"data_out\">\n            <camunda:string>AsigneeColl2</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_level\">\n            <camunda:string>2</camunda:string>\n          </camunda:field>\n          <camunda:field name=\"data_skip_by_variable\">\n            <camunda:string>whitelist2</camunda:string>\n          </camunda:field>\n        </camunda:executionListener>\n      </bpmn:extensionElements>\n    </bpmn:sequenceFlow>\n  </bpmn:process>\n  <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">\n    <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"EntertainmentExpense\">\n      <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">\n        <dc:Bounds x=\"179\" y=\"239\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"187\" y=\"282\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_0o5atgg_di\" bpmnElement=\"Gateway_0o5atgg\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"595\" y=\"232\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"581.5\" y=\"292\" width=\"77\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_09zrh49_di\" bpmnElement=\"Gateway_09zrh49\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"1115\" y=\"232\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1118\" y=\"289\" width=\"44\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_0d4bcrm_di\" bpmnElement=\"Gateway_0d4bcrm\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"1275\" y=\"232\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1262\" y=\"289\" width=\"76\" height=\"27\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_1kvy4go_di\" bpmnElement=\"Gateway_1kvy4go\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"1115\" y=\"375\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1096\" y=\"351\" width=\"88\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_0lr1cmz_di\" bpmnElement=\"Gateway_0lr1cmz\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"895\" y=\"375\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"887\" y=\"351\" width=\"66\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_0b2nynv_di\" bpmnElement=\"Gateway_0b2nynv\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"685\" y=\"375\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"671\" y=\"351\" width=\"77\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Event_0zb7g17_di\" bpmnElement=\"Event_0zb7g17\">\n        <dc:Bounds x=\"462\" y=\"382\" width=\"36\" height=\"36\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"470\" y=\"425\" width=\"22\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_0h5e4f3_di\" bpmnElement=\"Activity_0he7ije\">\n        <dc:Bounds x=\"570\" y=\"80\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_0vpwsjq_di\" bpmnElement=\"Activity_0o0fh8w\">\n        <dc:Bounds x=\"770\" y=\"80\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1jw00pi_di\" bpmnElement=\"Activity_1th6wtt\">\n        <dc:Bounds x=\"970\" y=\"217\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1jd5oew_di\" bpmnElement=\"Activity_0idxtir\">\n        <dc:Bounds x=\"1090\" y=\"80\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_058mh76_di\" bpmnElement=\"Activity_18zcgfl\">\n        <dc:Bounds x=\"1250\" y=\"80\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_09f38tq_di\" bpmnElement=\"Activity_15rr57j\">\n        <dc:Bounds x=\"1090\" y=\"480\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1u5df9u_di\" bpmnElement=\"Activity_1padyxn\">\n        <dc:Bounds x=\"870\" y=\"480\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1xu0usp_di\" bpmnElement=\"Activity_1wiva3j\">\n        <dc:Bounds x=\"660\" y=\"480\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_09lgj3n_di\" bpmnElement=\"Activity_0r9wsyl\">\n        <dc:Bounds x=\"1410\" y=\"80\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_18ot606_di\" bpmnElement=\"Gateway_18ot606\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"1525\" y=\"232\" width=\"50\" height=\"50\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1nqu5yk_di\" bpmnElement=\"Activity_090xajt\">\n        <dc:Bounds x=\"1500\" y=\"360\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_11qftb4_di\" bpmnElement=\"Activity_1pzga1t\">\n        <dc:Bounds x=\"290\" y=\"217\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_16u8pce_di\" bpmnElement=\"Activity_1ltgb9b\">\n        <dc:Bounds x=\"430\" y=\"217\" width=\"100\" height=\"80\" />\n        <bpmndi:BPMNLabel />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Gateway_022i3q8_di\" bpmnElement=\"Gateway_022i3q8\" isMarkerVisible=\"true\">\n        <dc:Bounds x=\"795\" y=\"232\" width=\"50\" height=\"50\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"787\" y=\"289\" width=\"66\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNShape id=\"Activity_1p6dyu7_di\" bpmnElement=\"Activity_1bgkmdr\">\n        <dc:Bounds x=\"1650\" y=\"217\" width=\"100\" height=\"80\" />\n      </bpmndi:BPMNShape>\n      <bpmndi:BPMNEdge id=\"Flow_0squut9_di\" bpmnElement=\"Flow_0squut9\">\n        <di:waypoint x=\"215\" y=\"257\" />\n        <di:waypoint x=\"290\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_14jw5gz_di\" bpmnElement=\"Flow_14jw5gz\">\n        <di:waypoint x=\"530\" y=\"257\" />\n        <di:waypoint x=\"595\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0ln2i88_di\" bpmnElement=\"Flow_0ln2i88\">\n        <di:waypoint x=\"620\" y=\"232\" />\n        <di:waypoint x=\"620\" y=\"160\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"627\" y=\"193\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_07sndfp_di\" bpmnElement=\"Flow_07sndfp\">\n        <di:waypoint x=\"645\" y=\"257\" />\n        <di:waypoint x=\"795\" y=\"257\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"672\" y=\"239\" width=\"13\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1xttmhp_di\" bpmnElement=\"Flow_1xttmhp\">\n        <di:waypoint x=\"1070\" y=\"257\" />\n        <di:waypoint x=\"1115\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_03jpsrl_di\" bpmnElement=\"Flow_03jpsrl\">\n        <di:waypoint x=\"1140\" y=\"232\" />\n        <di:waypoint x=\"1140\" y=\"160\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1147\" y=\"193\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_05on1mg_di\" bpmnElement=\"Flow_05on1mg\">\n        <di:waypoint x=\"1165\" y=\"257\" />\n        <di:waypoint x=\"1275\" y=\"257\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1183\" y=\"239\" width=\"13\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0fjvtxl_di\" bpmnElement=\"Flow_0fjvtxl\">\n        <di:waypoint x=\"1190\" y=\"120\" />\n        <di:waypoint x=\"1220\" y=\"120\" />\n        <di:waypoint x=\"1220\" y=\"257\" />\n        <di:waypoint x=\"1275\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0vjpfg2_di\" bpmnElement=\"Flow_0vjpfg2\">\n        <di:waypoint x=\"1300\" y=\"232\" />\n        <di:waypoint x=\"1300\" y=\"160\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1307\" y=\"193\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1m18dtu_di\" bpmnElement=\"Flow_1m18dtu\">\n        <di:waypoint x=\"1325\" y=\"257\" />\n        <di:waypoint x=\"1525\" y=\"257\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1591\" y=\"226\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1dpjm5h_di\" bpmnElement=\"Flow_1dpjm5h\">\n        <di:waypoint x=\"1500\" y=\"400\" />\n        <di:waypoint x=\"1165\" y=\"400\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1dxlpii_di\" bpmnElement=\"Flow_1dxlpii\">\n        <di:waypoint x=\"1115\" y=\"400\" />\n        <di:waypoint x=\"945\" y=\"400\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1063\" y=\"382\" width=\"13\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1sgpsvk_di\" bpmnElement=\"Flow_1sgpsvk\">\n        <di:waypoint x=\"1140\" y=\"425\" />\n        <di:waypoint x=\"1140\" y=\"480\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"1147\" y=\"450\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0ceu1h0_di\" bpmnElement=\"Flow_0ceu1h0\">\n        <di:waypoint x=\"1090\" y=\"520\" />\n        <di:waypoint x=\"1040\" y=\"520\" />\n        <di:waypoint x=\"1040\" y=\"400\" />\n        <di:waypoint x=\"945\" y=\"400\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1p4ow3p_di\" bpmnElement=\"Flow_1p4ow3p\">\n        <di:waypoint x=\"895\" y=\"400\" />\n        <di:waypoint x=\"735\" y=\"400\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"809\" y=\"382\" width=\"13\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0zi8kah_di\" bpmnElement=\"Flow_0zi8kah\">\n        <di:waypoint x=\"920\" y=\"425\" />\n        <di:waypoint x=\"920\" y=\"480\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"927\" y=\"450\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_08sjbdi_di\" bpmnElement=\"Flow_08sjbdi\">\n        <di:waypoint x=\"870\" y=\"520\" />\n        <di:waypoint x=\"820\" y=\"520\" />\n        <di:waypoint x=\"820\" y=\"400\" />\n        <di:waypoint x=\"735\" y=\"400\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_151pnck_di\" bpmnElement=\"Flow_151pnck\">\n        <di:waypoint x=\"685\" y=\"400\" />\n        <di:waypoint x=\"498\" y=\"400\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"585\" y=\"382\" width=\"13\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0ce8ksr_di\" bpmnElement=\"Flow_0ce8ksr\">\n        <di:waypoint x=\"710\" y=\"425\" />\n        <di:waypoint x=\"710\" y=\"480\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"717\" y=\"450\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1d0q614_di\" bpmnElement=\"Flow_1d0q614\">\n        <di:waypoint x=\"660\" y=\"520\" />\n        <di:waypoint x=\"600\" y=\"520\" />\n        <di:waypoint x=\"600\" y=\"400\" />\n        <di:waypoint x=\"498\" y=\"400\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1jzw3lh_di\" bpmnElement=\"Flow_1jzw3lh\">\n        <di:waypoint x=\"820\" y=\"232\" />\n        <di:waypoint x=\"820\" y=\"160\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"827\" y=\"193\" width=\"17\" height=\"14\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1tvbw1v_di\" bpmnElement=\"Flow_1tvbw1v\">\n        <di:waypoint x=\"845\" y=\"257\" />\n        <di:waypoint x=\"970\" y=\"257\" />\n        <bpmndi:BPMNLabel>\n          <dc:Bounds x=\"884\" y=\"243\" width=\"13\" height=\"27\" />\n        </bpmndi:BPMNLabel>\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_15mi3c7_di\" bpmnElement=\"Flow_15mi3c7\">\n        <di:waypoint x=\"670\" y=\"120\" />\n        <di:waypoint x=\"720\" y=\"120\" />\n        <di:waypoint x=\"720\" y=\"257\" />\n        <di:waypoint x=\"795\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_04kxf0z_di\" bpmnElement=\"Flow_04kxf0z\">\n        <di:waypoint x=\"870\" y=\"120\" />\n        <di:waypoint x=\"920\" y=\"120\" />\n        <di:waypoint x=\"920\" y=\"257\" />\n        <di:waypoint x=\"970\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_1wnkudb_di\" bpmnElement=\"Flow_1wnkudb\">\n        <di:waypoint x=\"1350\" y=\"120\" />\n        <di:waypoint x=\"1410\" y=\"120\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0b8ch2d_di\" bpmnElement=\"Flow_0b8ch2d\">\n        <di:waypoint x=\"1460\" y=\"160\" />\n        <di:waypoint x=\"1460\" y=\"257\" />\n        <di:waypoint x=\"1525\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_12mre1p_di\" bpmnElement=\"Flow_12mre1p\">\n        <di:waypoint x=\"1575\" y=\"257\" />\n        <di:waypoint x=\"1650\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_04r3fxd_di\" bpmnElement=\"Flow_04r3fxd\">\n        <di:waypoint x=\"1700\" y=\"297\" />\n        <di:waypoint x=\"1700\" y=\"400\" />\n        <di:waypoint x=\"1600\" y=\"400\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_10cck4v_di\" bpmnElement=\"Flow_10cck4v\">\n        <di:waypoint x=\"1550\" y=\"282\" />\n        <di:waypoint x=\"1550\" y=\"360\" />\n      </bpmndi:BPMNEdge>\n      <bpmndi:BPMNEdge id=\"Flow_0f933ug_di\" bpmnElement=\"Flow_0f933ug\">\n        <di:waypoint x=\"390\" y=\"257\" />\n        <di:waypoint x=\"430\" y=\"257\" />\n      </bpmndi:BPMNEdge>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</bpmn:definitions>\n",
      "modelName": "1111"
  },
  "success": true
}
截屏2024-11-07 17 41 05

logicflow/core版本

2.0.6

logicflow/extension版本

2.0.10

logicflow/engine版本

No response

浏览器&环境

Chrome

github-actions[bot] commented 2 weeks ago

由于所提供信息的不充分,该 issue 被暂时关闭了。请修改 issue 以提供最小可复现示例(可以通过以下方式:1. 在任意在线编码平台如 codesanbox 编写示例。将其保存到自己空间,然后贴上链接。2. 在自己 github 中创建一个最简单的示例,然后贴上 github 链接。3. 删除项目中的 node_modules 部分,打包项目,并拖拽到 issue 输入框中上传(或提供远程可下载地址))来重启 issue。

changexbc commented 2 weeks ago

@DymoneLewis

看了下源码好像是 plugin/bpmn-elements-adapter\constant这个文件中 GatewayConfig的宽高设置有点问题,原先是 100 80,设置成 50 50 以后是正常的。

截屏2024-11-08 17 50 08
wumail commented 1 week ago

bpmn-elements-adapter这块代码感觉有点💩,啥时候可以考虑重构一下,祖宗传下来的,之前懒得搞 @DymoneLewis 😉

DymoneLewis commented 1 day ago

我看看,先改成50 50能不能临时解决一下,重构。。。后面再说吧😭前面好几个等着改

DymoneLewis commented 1 day ago

@DymoneLewis

看了下源码好像是 plugin/bpmn-elements-adapter\constant这个文件中 GatewayConfig的宽高设置有点问题,原先是 100 80,设置成 50 50 以后是正常的。

截屏2024-11-08 17 50 08

不不不,跟这个没关系,应该是网格的问题,我试了一下grid size改成100之后偏移的更严重,我看看什么原因

DymoneLewis commented 1 day ago

看了一下大致原因是节点吸附网格,但是边的数据没有更新导致的错位 开发完了,明天pr下,下周发版修复