util.js 2.4 KB

const myCustomElements = ['bpmn:Task', 'bpmn:UserTask', 'bpmn:ServiceTask', 'bpmn:SendTask', 'bpmn:BusinessRuleTask', 'bpmn:ScriptTask',
'bpmn:ReceiveTask', 'bpmn:ManualTask', 'bpmn:StartEvent', 'bpmn:EndEvent', 'bpmn:CallActivity', 'bpmn:SubProcess',
"bpmn:ExclusiveGateway",
"bpmn:ParallelGateway",
"bpmn:InclusiveGateway",
"bpmn:EventBasedGateway",
"bpmn:Lane",
"bpmn:Participant"] // 自定义元素的类型

const customConfig = { // 自定义元素的配置
'bpmn:Task': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "任务"
},
'bpmn:UserTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "用户任务"
},
'bpmn:ServiceTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "服务任务"
},
'bpmn:SendTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "发送任务"
},
'bpmn:BusinessRuleTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "业务规则任务"
},
'bpmn:ScriptTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "脚本任务"
},
'bpmn:ReceiveTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "接收任务"
},
'bpmn:ManualTask': {
  'attr': { x: 0, y: 0, width: 100, height: 46 },
  'name': "人工任务"
},
"bpmn:EndEvent": {
  'attr': { x: 0, y: 0, width: 30, height: 30 },
  'name': "结束"
},
"bpmn:StartEvent": {
  'attr': { x: 0, y: 0, width: 30, height: 30 },
  'name': "开始"
},
"bpmn:CallActivity": {
  'name': "外部子流程"
},
"bpmn:SubProcess": {
  'attr': { x: 0, y: 0, width: 350, height: 200 },
  'name': "内部子流程"
},
"bpmn:ExclusiveGateway": {
  'name': "条件网关"
},
"bpmn:ParallelGateway": {
  'name': "网关"
},
"bpmn:InclusiveGateway": {
  'name': "网关"
},
"bpmn:EventBasedGateway": {
  'name': "网关"
},
"bpmn:Lane": {
  'name': "泳道"
},
"bpmn:Participant": {
  'name': "泳池"
}
}
const hasLabelElements = ['bpmn:StartEvent', 'bpmn:EndEvent'] // 一开始就有label标签的元素类型

function changeElementSize(element) {
let type = element.type;
if (myCustomElements.includes(type)) {
  const { attr, name } = customConfig[type];
  if (attr) {
    element["width"] = attr.width; // 这里我是取了巧, 直接修改了元素的宽高
    element["height"] = attr.height;
  }
  if (name && !element.businessObject.name) {
    element.businessObject.name = name;
  }
}
}

export { myCustomElements, customConfig, hasLabelElements, changeElementSize }