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