ShiShiYiBan/yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/utils.js

74 lines
2.9 KiB
JavaScript
Raw Normal View History

2023-01-28 09:53:43 +08:00
// 创建监听器实例
2023-01-28 11:28:52 +08:00
export function createListenerObject (options, isTask, prefix) {
const listenerObj = Object.create(null)
listenerObj.event = options.event
isTask && (listenerObj.id = options.id) // 任务监听器特有的 id 字段
2023-01-28 09:53:43 +08:00
switch (options.listenerType) {
case "scriptListener":
2023-01-28 11:28:52 +08:00
listenerObj.script = createScriptObject(options, prefix)
break
2023-01-28 09:53:43 +08:00
case "expressionListener":
2023-01-28 11:28:52 +08:00
listenerObj.expression = options.expression
break
2023-01-28 09:53:43 +08:00
case "delegateExpressionListener":
2023-01-28 11:28:52 +08:00
listenerObj.delegateExpression = options.delegateExpression
break
2023-01-28 09:53:43 +08:00
default:
2023-01-28 11:28:52 +08:00
listenerObj.class = options.class
2023-01-28 09:53:43 +08:00
}
// 注入字段
if (options.fields) {
listenerObj.fields = options.fields.map(field => {
2023-01-28 11:28:52 +08:00
return createFieldObject(field, prefix)
})
2023-01-28 09:53:43 +08:00
}
// 任务监听器的 定时器 设置
if (isTask && options.event === "timeout" && !!options.eventDefinitionType) {
2023-01-28 11:28:52 +08:00
const timeDefinition = window.bpmnInstances.moddle.create("bpmn:FormalExpression", { body: options.eventTimeDefinitions })
2023-01-28 09:53:43 +08:00
const TimerEventDefinition = window.bpmnInstances.moddle.create("bpmn:TimerEventDefinition", {
id: `TimerEventDefinition_${uuid(8)}`,
[`time${options.eventDefinitionType.replace(/^\S/, s => s.toUpperCase())}`]: timeDefinition
2023-01-28 11:28:52 +08:00
})
listenerObj.eventDefinitions = [TimerEventDefinition]
2023-01-28 09:53:43 +08:00
}
2023-01-28 11:28:52 +08:00
return window.bpmnInstances.moddle.create(`${prefix}:${isTask ? "TaskListener" : "ExecutionListener"}`, listenerObj)
2023-01-28 09:53:43 +08:00
}
// 创建 监听器的注入字段 实例
2023-01-28 11:28:52 +08:00
export function createFieldObject (option, prefix) {
const { name, fieldType, string, expression } = option
const fieldConfig = fieldType === "string" ? { name, string } : { name, expression }
return window.bpmnInstances.moddle.create(`${prefix}:Field`, fieldConfig)
2023-01-28 09:53:43 +08:00
}
// 创建脚本实例
2023-01-28 11:28:52 +08:00
export function createScriptObject (options, prefix) {
const { scriptType, scriptFormat, value, resource } = options
const scriptConfig = scriptType === "inlineScript" ? { scriptFormat, value } : { scriptFormat, resource }
return window.bpmnInstances.moddle.create(`${prefix}:Script`, scriptConfig)
2023-01-28 09:53:43 +08:00
}
// 更新元素扩展属性
2023-01-28 11:28:52 +08:00
export function updateElementExtensions (element, extensionList) {
console.log(element, 'element')
console.log(extensionList, 'extensionList')
2023-01-28 09:53:43 +08:00
const extensions = window.bpmnInstances.moddle.create("bpmn:ExtensionElements", {
values: extensionList
2023-01-28 11:28:52 +08:00
})
console.log(extensions, 'extensionsextensions')
console.log(window.bpmnInstances.modeling, 'window.bpmnInstances.modeling')
2023-01-28 09:53:43 +08:00
window.bpmnInstances.modeling.updateProperties(element, {
2023-01-28 11:28:52 +08:00
extensionElements: extensions.values
})
2023-01-28 09:53:43 +08:00
}
// 创建一个id
2023-01-28 11:28:52 +08:00
export function uuid (length = 8, chars) {
let result = ""
let charsString = chars || "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
2023-01-28 09:53:43 +08:00
for (let i = length; i > 0; --i) {
2023-01-28 11:28:52 +08:00
result += charsString[Math.floor(Math.random() * charsString.length)]
2023-01-28 09:53:43 +08:00
}
2023-01-28 11:28:52 +08:00
return result
2023-01-28 09:53:43 +08:00
}