From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/components/bpmnProcessDesigner/package/utils.ts |   77 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 0 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/utils.ts b/src/components/bpmnProcessDesigner/package/utils.ts
new file mode 100644
index 0000000..b5f0eec
--- /dev/null
+++ b/src/components/bpmnProcessDesigner/package/utils.ts
@@ -0,0 +1,77 @@
+const bpmnInstances = () => (window as any)?.bpmnInstances
+// 鍒涘缓鐩戝惉鍣ㄥ疄渚�
+export function createListenerObject(options, isTask, prefix) {
+  const listenerObj = Object.create(null)
+  listenerObj.event = options.event
+  isTask && (listenerObj.id = options.id) // 浠诲姟鐩戝惉鍣ㄧ壒鏈夌殑 id 瀛楁
+  switch (options.listenerType) {
+    case 'scriptListener':
+      listenerObj.script = createScriptObject(options, prefix)
+      break
+    case 'expressionListener':
+      listenerObj.expression = options.expression
+      break
+    case 'delegateExpressionListener':
+      listenerObj.delegateExpression = options.delegateExpression
+      break
+    default:
+      listenerObj.class = options.class
+  }
+  // 娉ㄥ叆瀛楁
+  if (options.fields) {
+    listenerObj.fields = options.fields.map((field) => {
+      return createFieldObject(field, prefix)
+    })
+  }
+  // 浠诲姟鐩戝惉鍣ㄧ殑 瀹氭椂鍣� 璁剧疆
+  if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) {
+    const timeDefinition = bpmnInstances().moddle.create('bpmn:FormalExpression', {
+      body: options.eventTimeDefinitions
+    })
+    const TimerEventDefinition = bpmnInstances().moddle.create('bpmn:TimerEventDefinition', {
+      id: `TimerEventDefinition_${uuid(8)}`,
+      [`time${options.eventDefinitionType.replace(/^\S/, (s) => s.toUpperCase())}`]: timeDefinition
+    })
+    listenerObj.eventDefinitions = [TimerEventDefinition]
+  }
+  return bpmnInstances().moddle.create(
+    `${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`,
+    listenerObj
+  )
+}
+
+// 鍒涘缓 鐩戝惉鍣ㄧ殑娉ㄥ叆瀛楁 瀹炰緥
+export function createFieldObject(option, prefix) {
+  const { name, fieldType, string, expression } = option
+  const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression }
+  return bpmnInstances().moddle.create(`${prefix}:Field`, fieldConfig)
+}
+
+// 鍒涘缓鑴氭湰瀹炰緥
+export function createScriptObject(options, prefix) {
+  const { scriptType, scriptFormat, value, resource } = options
+  const scriptConfig =
+    scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource }
+  return bpmnInstances().moddle.create(`${prefix}:Script`, scriptConfig)
+}
+
+// 鏇存柊鍏冪礌鎵╁睍灞炴��
+export function updateElementExtensions(element, extensionList) {
+  const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', {
+    values: extensionList
+  })
+  // 鐩存帴浣跨敤鍘熷鍏冪礌瀵硅薄锛屼笉闇�瑕乼oRaw鍖呰
+  bpmnInstances().modeling.updateProperties(element, {
+    extensionElements: extensions
+  })
+}
+
+// 鍒涘缓涓�涓猧d
+export function uuid(length = 8, chars?) {
+  let result = ''
+  const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
+  for (let i = length; i > 0; --i) {
+    result += charsString[Math.floor(Math.random() * charsString.length)]
+  }
+  return result
+}

--
Gitblit v1.8.0