| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // 创建监听器实例
- 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 = window.bpmnInstances.moddle.create("bpmn:FormalExpression", { body: options.eventTimeDefinitions });
- const TimerEventDefinition = window.bpmnInstances.moddle.create("bpmn:TimerEventDefinition", {
- id: `TimerEventDefinition_${uuid(8)}`,
- [`time${options.eventDefinitionType.replace(/^\S/, s => s.toUpperCase())}`]: timeDefinition
- });
- listenerObj.eventDefinitions = [TimerEventDefinition];
- }
- return window.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 window.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 window.bpmnInstances.moddle.create(`${prefix}:Script`, scriptConfig);
- }
- // 更新元素扩展属性
- export function updateElementExtensions(element, extensionList) {
- const extensions = window.bpmnInstances.moddle.create("bpmn:ExtensionElements", {
- values: extensionList
- });
- window.bpmnInstances.modeling.updateProperties(element, {
- extensionElements: extensions
- });
- }
- // 创建一个id
- export function uuid(length = 8, chars) {
- let result = "";
- let charsString = chars || "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
- for (let i = length; i > 0; --i) {
- result += charsString[Math.floor(Math.random() * charsString.length)];
- }
- return result;
- }
|