From e927265108e6a297dc072af9ca063b90a05c0afc Mon Sep 17 00:00:00 2001 From: hupeng Date: Mon, 31 Jul 2023 11:15:44 +0800 Subject: [PATCH] =?UTF-8?q?1.0=20=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.front | 2 +- README.md | 10 +- package.json | 2 +- src/api/bpm/activity/index.ts | 8 - src/api/bpm/definition/index.ts | 21 - src/api/bpm/form/index.ts | 56 - src/api/bpm/leave/index.ts | 27 - src/api/bpm/model/index.ts | 59 - src/api/bpm/processInstance/index.ts | 41 - src/api/bpm/task/index.ts | 43 - src/api/bpm/taskAssignRule/index.ts | 29 - src/api/bpm/userGroup/index.ts | 47 - src/assets/imgs/login_bg.png | Bin 0 -> 1543364 bytes .../package/designer/ProcessDesigner.vue | 701 ---------- .../package/designer/ProcessViewer.vue | 551 -------- .../package/designer/index.ts | 8 - .../package/designer/index2.ts | 8 - .../plugins/content-pad/contentPadProvider.js | 423 ------ .../designer/plugins/content-pad/index.js | 6 - .../package/designer/plugins/defaultEmpty.js | 24 - .../descriptor/activitiDescriptor.json | 994 -------------- .../plugins/descriptor/camundaDescriptor.json | 1010 -------------- .../descriptor/flowableDescriptor.json | 1207 ----------------- .../activiti/activitiExtension.js | 83 -- .../extension-moddle/activiti/index.js | 11 - .../extension-moddle/camunda/extension.js | 151 --- .../plugins/extension-moddle/camunda/index.js | 8 - .../flowable/flowableExtension.js | 83 -- .../extension-moddle/flowable/index.js | 10 - .../designer/plugins/palette/CustomPalette.js | 221 --- .../package/designer/plugins/palette/index.js | 22 - .../plugins/palette/paletteProvider.js | 213 --- .../plugins/translate/customTranslate.js | 44 - .../package/designer/plugins/translate/zh.js | 240 ---- .../bpmnProcessDesigner/package/index.ts | 11 - .../package/palette/ProcessPalette.vue | 42 - .../package/penal/PropertiesPanel.vue | 208 --- .../package/penal/base/ElementBaseInfo.vue | 181 --- .../penal/flow-condition/FlowCondition.vue | 189 --- .../package/penal/form/ElementForm.vue | 463 ------- .../package/penal/index.js | 7 - .../penal/listeners/ElementListeners.vue | 400 ------ .../penal/listeners/UserTaskListeners.vue | 448 ------ .../package/penal/listeners/template.js | 178 --- .../package/penal/listeners/utilSelf.ts | 62 - .../multi-instance/ElementMultiInstance.vue | 252 ---- .../penal/other/ElementOtherConfig.vue | 54 - .../penal/properties/ElementProperties.vue | 167 --- .../penal/signal-message/SignalAndMessage.vue | 111 -- .../package/penal/task/ElementTask.vue | 84 -- .../task/task-components/ReceiveTask.vue | 124 -- .../penal/task/task-components/ScriptTask.vue | 98 -- .../penal/task/task-components/UserTask.vue | 97 -- .../package/theme/element-variables.scss | 70 - .../package/theme/index.scss | 2 - .../package/theme/process-designer.scss | 161 --- .../package/theme/process-panel.scss | 107 -- .../bpmnProcessDesigner/package/utils.ts | 77 -- .../src/highlight/index.js | 5 - .../modules/custom-renderer/CustomRenderer.js | 14 - .../src/modules/custom-renderer/index.js | 6 - .../src/modules/rules/CustomRules.js | 16 - .../src/modules/rules/index.js | 6 - .../bpmnProcessDesigner/src/translations.ts | 25 - .../src/utils/directive/clickOutSide.js | 39 - .../bpmnProcessDesigner/src/utils/index.js | 10 - .../bpmnProcessDesigner/src/utils/xml2json.js | 50 - src/locales/zh-CN.ts | 2 +- src/router/modules/remaining.ts | 125 +- src/views/Login/Login.vue | 24 +- src/views/Login/components/LoginForm.vue | 57 +- src/views/infra/job/index.vue | 2 +- src/views/mall/order/express/ExpressSet.vue | 23 +- src/views/mall/product/brand/BrandForm.vue | 3 +- .../mall/product/category/CategoryForm.vue | 3 - .../system/sms/channel/SmsChannelForm.vue | 2 +- 76 files changed, 39 insertions(+), 10329 deletions(-) delete mode 100644 src/api/bpm/activity/index.ts delete mode 100644 src/api/bpm/definition/index.ts delete mode 100644 src/api/bpm/form/index.ts delete mode 100644 src/api/bpm/leave/index.ts delete mode 100644 src/api/bpm/model/index.ts delete mode 100644 src/api/bpm/processInstance/index.ts delete mode 100644 src/api/bpm/task/index.ts delete mode 100644 src/api/bpm/taskAssignRule/index.ts delete mode 100644 src/api/bpm/userGroup/index.ts create mode 100644 src/assets/imgs/login_bg.png delete mode 100644 src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue delete mode 100644 src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue delete mode 100644 src/components/bpmnProcessDesigner/package/designer/index.ts delete mode 100644 src/components/bpmnProcessDesigner/package/designer/index2.ts delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js delete mode 100644 src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js delete mode 100644 src/components/bpmnProcessDesigner/package/index.ts delete mode 100644 src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/index.js delete mode 100644 src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/listeners/template.js delete mode 100644 src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts delete mode 100644 src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue delete mode 100644 src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue delete mode 100644 src/components/bpmnProcessDesigner/package/theme/element-variables.scss delete mode 100644 src/components/bpmnProcessDesigner/package/theme/index.scss delete mode 100644 src/components/bpmnProcessDesigner/package/theme/process-designer.scss delete mode 100644 src/components/bpmnProcessDesigner/package/theme/process-panel.scss delete mode 100644 src/components/bpmnProcessDesigner/package/utils.ts delete mode 100644 src/components/bpmnProcessDesigner/src/highlight/index.js delete mode 100644 src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js delete mode 100644 src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js delete mode 100644 src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js delete mode 100644 src/components/bpmnProcessDesigner/src/modules/rules/index.js delete mode 100644 src/components/bpmnProcessDesigner/src/translations.ts delete mode 100644 src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js delete mode 100644 src/components/bpmnProcessDesigner/src/utils/index.js delete mode 100644 src/components/bpmnProcessDesigner/src/utils/xml2json.js diff --git a/.env.front b/.env.front index 0bf4fdd..2f81036 100644 --- a/.env.front +++ b/.env.front @@ -31,4 +31,4 @@ VITE_DROP_CONSOLE=false VITE_SOURCEMAP=true # 验证码的开关 -VITE_APP_CAPTCHA_ENABLE=false +VITE_APP_CAPTCHA_ENABLE=true diff --git a/README.md b/README.md index 565ba10..3021c67 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ -**yshop-pro-vue** +

yshop-pro意向电商商城系统

+ + +#### 项目简介 +YSHOP-PRO 技术特色:移动端uniapp全新的ui、vue3全新全家桶、高并发高性能支持消息队列、异步任务、分布式锁、限流、冥等性等、支持多种支付(微信、支付宝)、支持批量上传商品、支持电子面单、支持微信统一登录各端等新特性!!! 其他新特性尽情期待; + + + +#### 官网地址:https://www.yixiang.co diff --git a/package.json b/package.json index 4358ee0..0f7804f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yshop-pro-vue3", - "version": "1.7.2-snapshot", + "version": "1.0.0", "description": "基于vue3、vite4、element-plus、typesScript", "author": "yshop", "private": false, diff --git a/src/api/bpm/activity/index.ts b/src/api/bpm/activity/index.ts deleted file mode 100644 index 870d0d6..0000000 --- a/src/api/bpm/activity/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import request from '@/config/axios' - -export const getActivityList = async (params) => { - return await request.get({ - url: '/bpm/activity/list', - params - }) -} diff --git a/src/api/bpm/definition/index.ts b/src/api/bpm/definition/index.ts deleted file mode 100644 index c0e51fa..0000000 --- a/src/api/bpm/definition/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import request from '@/config/axios' - -export const getProcessDefinitionBpmnXML = async (id: number) => { - return await request.get({ - url: '/bpm/process-definition/get-bpmn-xml?id=' + id - }) -} - -export const getProcessDefinitionPage = async (params) => { - return await request.get({ - url: '/bpm/process-definition/page', - params - }) -} - -export const getProcessDefinitionList = async (params) => { - return await request.get({ - url: '/bpm/process-definition/list', - params - }) -} diff --git a/src/api/bpm/form/index.ts b/src/api/bpm/form/index.ts deleted file mode 100644 index 142ed24..0000000 --- a/src/api/bpm/form/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import request from '@/config/axios' - -export type FormVO = { - id: number - name: string - conf: string - fields: string[] - status: number - remark: string - createTime: string -} - -// 创建工作流的表单定义 -export const createForm = async (data: FormVO) => { - return await request.post({ - url: '/bpm/form/create', - data: data - }) -} - -// 更新工作流的表单定义 -export const updateForm = async (data: FormVO) => { - return await request.put({ - url: '/bpm/form/update', - data: data - }) -} - -// 删除工作流的表单定义 -export const deleteForm = async (id: number) => { - return await request.delete({ - url: '/bpm/form/delete?id=' + id - }) -} - -// 获得工作流的表单定义 -export const getForm = async (id: number) => { - return await request.get({ - url: '/bpm/form/get?id=' + id - }) -} - -// 获得工作流的表单定义分页 -export const getFormPage = async (params) => { - return await request.get({ - url: '/bpm/form/page', - params - }) -} - -// 获得动态表单的精简列表 -export const getSimpleFormList = async () => { - return await request.get({ - url: '/bpm/form/list-all-simple' - }) -} diff --git a/src/api/bpm/leave/index.ts b/src/api/bpm/leave/index.ts deleted file mode 100644 index d4fe8d5..0000000 --- a/src/api/bpm/leave/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import request from '@/config/axios' - -export type LeaveVO = { - id: number - result: number - type: number - reason: string - processInstanceId: string - startTime: string - endTime: string - createTime: string -} - -// 创建请假申请 -export const createLeave = async (data: LeaveVO) => { - return await request.post({ url: '/bpm/oa/leave/create', data: data }) -} - -// 获得请假申请 -export const getLeave = async (id: number) => { - return await request.get({ url: '/bpm/oa/leave/get?id=' + id }) -} - -// 获得请假申请分页 -export const getLeavePage = async (params: PageParam) => { - return await request.get({ url: '/bpm/oa/leave/page', params }) -} diff --git a/src/api/bpm/model/index.ts b/src/api/bpm/model/index.ts deleted file mode 100644 index 2e1d4e6..0000000 --- a/src/api/bpm/model/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import request from '@/config/axios' - -export type ProcessDefinitionVO = { - id: string - version: number - deploymentTIme: string - suspensionState: number -} - -export type ModelVO = { - id: number - formName: string - key: string - name: string - description: string - category: string - formType: number - formId: number - formCustomCreatePath: string - formCustomViewPath: string - processDefinition: ProcessDefinitionVO - status: number - remark: string - createTime: string - bpmnXml: string -} - -export const getModelPage = async (params) => { - return await request.get({ url: '/bpm/model/page', params }) -} - -export const getModel = async (id: number) => { - return await request.get({ url: '/bpm/model/get?id=' + id }) -} - -export const updateModel = async (data: ModelVO) => { - return await request.put({ url: '/bpm/model/update', data: data }) -} - -// 任务状态修改 -export const updateModelState = async (id: number, state: number) => { - const data = { - id: id, - state: state - } - return await request.put({ url: '/bpm/model/update-state', data: data }) -} - -export const createModel = async (data: ModelVO) => { - return await request.post({ url: '/bpm/model/create', data: data }) -} - -export const deleteModel = async (id: number) => { - return await request.delete({ url: '/bpm/model/delete?id=' + id }) -} - -export const deployModel = async (id: number) => { - return await request.post({ url: '/bpm/model/deploy?id=' + id }) -} diff --git a/src/api/bpm/processInstance/index.ts b/src/api/bpm/processInstance/index.ts deleted file mode 100644 index 10cd3bc..0000000 --- a/src/api/bpm/processInstance/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import request from '@/config/axios' - -export type Task = { - id: string - name: string -} - -export type ProcessInstanceVO = { - id: number - name: string - processDefinitionId: string - category: string - result: number - tasks: Task[] - fields: string[] - status: number - remark: string - businessKey: string - createTime: string - endTime: string -} - -export const getMyProcessInstancePage = async (params) => { - return await request.get({ url: '/bpm/process-instance/my-page', params }) -} - -export const createProcessInstance = async (data) => { - return await request.post({ url: '/bpm/process-instance/create', data: data }) -} - -export const cancelProcessInstance = async (id: number, reason: string) => { - const data = { - id: id, - reason: reason - } - return await request.delete({ url: '/bpm/process-instance/cancel', data: data }) -} - -export const getProcessInstance = async (id: number) => { - return await request.get({ url: '/bpm/process-instance/get?id=' + id }) -} diff --git a/src/api/bpm/task/index.ts b/src/api/bpm/task/index.ts deleted file mode 100644 index f676372..0000000 --- a/src/api/bpm/task/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import request from '@/config/axios' - -export type TaskVO = { - id: number -} - -export const getTodoTaskPage = async (params) => { - return await request.get({ url: '/bpm/task/todo-page', params }) -} - -export const getDoneTaskPage = async (params) => { - return await request.get({ url: '/bpm/task/done-page', params }) -} - -export const completeTask = async (data) => { - return await request.put({ url: '/bpm/task/complete', data }) -} - -export const approveTask = async (data) => { - return await request.put({ url: '/bpm/task/approve', data }) -} - -export const rejectTask = async (data) => { - return await request.put({ url: '/bpm/task/reject', data }) -} -export const backTask = async (data) => { - return await request.put({ url: '/bpm/task/back', data }) -} - -export const updateTaskAssignee = async (data) => { - return await request.put({ url: '/bpm/task/update-assignee', data }) -} - -export const getTaskListByProcessInstanceId = async (processInstanceId) => { - return await request.get({ - url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId - }) -} - -// 导出任务 -export const exportTask = async (params) => { - return await request.download({ url: '/bpm/task/export', params }) -} diff --git a/src/api/bpm/taskAssignRule/index.ts b/src/api/bpm/taskAssignRule/index.ts deleted file mode 100644 index 5fbe342..0000000 --- a/src/api/bpm/taskAssignRule/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import request from '@/config/axios' - -export type TaskAssignVO = { - id: number - modelId: string - processDefinitionId: string - taskDefinitionKey: string - taskDefinitionName: string - options: string[] - type: number -} - -export const getTaskAssignRuleList = async (params) => { - return await request.get({ url: '/bpm/task-assign-rule/list', params }) -} - -export const createTaskAssignRule = async (data: TaskAssignVO) => { - return await request.post({ - url: '/bpm/task-assign-rule/create', - data: data - }) -} - -export const updateTaskAssignRule = async (data: TaskAssignVO) => { - return await request.put({ - url: '/bpm/task-assign-rule/update', - data: data - }) -} diff --git a/src/api/bpm/userGroup/index.ts b/src/api/bpm/userGroup/index.ts deleted file mode 100644 index 035762b..0000000 --- a/src/api/bpm/userGroup/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import request from '@/config/axios' - -export type UserGroupVO = { - id: number - name: string - description: string - memberUserIds: number[] - status: number - remark: string - createTime: string -} - -// 创建用户组 -export const createUserGroup = async (data: UserGroupVO) => { - return await request.post({ - url: '/bpm/user-group/create', - data: data - }) -} - -// 更新用户组 -export const updateUserGroup = async (data: UserGroupVO) => { - return await request.put({ - url: '/bpm/user-group/update', - data: data - }) -} - -// 删除用户组 -export const deleteUserGroup = async (id: number) => { - return await request.delete({ url: '/bpm/user-group/delete?id=' + id }) -} - -// 获得用户组 -export const getUserGroup = async (id: number) => { - return await request.get({ url: '/bpm/user-group/get?id=' + id }) -} - -// 获得用户组分页 -export const getUserGroupPage = async (params) => { - return await request.get({ url: '/bpm/user-group/page', params }) -} - -// 获取用户组精简信息列表 -export const getSimpleUserGroupList = async (): Promise => { - return await request.get({ url: '/bpm/user-group/list-all-simple' }) -} diff --git a/src/assets/imgs/login_bg.png b/src/assets/imgs/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b2708ed3c766fde95a7bf70ea5bba4794fd656f4 GIT binary patch literal 1543364 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 z zpKp(+%B{tL`YS{&=ql~8;{X$*ywgx?ash{{mxlmg5`)XIZmi2V-Ersd#Ru1;c5WAR zI9zUHz4V=Ecez@)omZ~QIGyi!jw4TVdZWB-1aA&w`s`C*9xlhrdE{^BTvxdq>HIKU z8*%JTk7-e6Au8i)r2JlC+zu<^EbimlA;-|+*((e$c0#XRyRp98h!Uyyx9iFwi>S++ zcKdsxE2cdgDEhC5cvpA|M-T9}@UnqUnLYPEO|y6ZG>sfTqG$A$)At|z+jL-cMwDlvT0;=K;s- zX*rF=P~!z4oG5eE{M~oojhA~^&$%k2j#F1);R|)}EBI9COf`w#r$o0YM@QXu&{?_N zbD-Lu**)(bi;_Q`l$#1jK2eGZyD30DiD?9R7I^r19{HYxOg7_j8u|O}j60`)zw4-n zuU7kVI`%?aE!@zN<8)p2O=ljj7d9UIE{mU+$N&%? zTp2E}s~(K&W&A!W=XRI|b^yQs{=2xw#q%JSE?tztb7tcjp?6Kk$Ir&K51uh`JM8bh zEhr0x1LvBar(4ytTP>?C@o}7ij@dME@&8M6Qz?D>yML2(`oX0 ze|n*X|9O9u>2rQLow)nXK55|3oy$Aj_2)2zo$qwxET=nvFMb&(@p4)je?5AfUWR|r zao5`@-4B|cXAQskU#s2Dvky!ju2rVdv~qugmus6Cv}~+!#pI4&#mSXmZ*pSja8kqR zMRApJE>1|0XPlI9V#0f;a~kt7w3X|vOD``ESeF6FDZOJLb?B;EJa!}*Reaqud!AC_ z0(cA@j4)1QFk%M!hk{<8KC)p%7=w(LHyqFvO$;=CLKPLrF|bV zT#tS80-qm!AlX}3c>7S_vxef)X#>w1ryp>8JwdHpIqqtiK;$9Ba40P0NkzIRmh(un zBh5c6JkHxs9~yAAXxPtsYT>vHvHPsf)ef>vySX`Zz3=oy=x(0Ipx9O9=``^;a zz2Bsf0p8rCjCeh1AtPv0E>~z6!`k1jjK^sXi}KIO z5YGU;_~MIkLc_@suej%hA9wEP`v5Y0I2}P|VE|y<@Qf&N%D?f(8{1Xec%EMW95iaV z^HxXDs%z=1SUY-6^u`X&`hEY_*0wazr{Erq_8Y0T8Q4bfJ?=1Wul)x} z@Bh!E*UWP5&z86ai?oF_mWL{URYlvGkxNmX{VZ}*Lke(_sJe*)WIqUyW2UmWg; z_LCnRcKcrUt?H`MOo^IEaS&&K0|QGp!}hDukx%n;-p}W)H$9(kE1ylnMsTKi((p!bY!$4_r@vvaa8MrOzDA`as>NkkYvZX_YJG8=!MTyVd00Q& zuSM;8>9z80G`?Cnj8V_H2}0$SN5&lT48+E%CDQYM9m?H9<*ZVM5QX77(rmg|FI6e z{n-`sV`F#YDtU`8OyE2X7m#q_2X$*vmL7fUC(^6yxrcO9AZKq{b#{lV(mOi3B1~F` zO1&y&*Il0!Q5|6}e93T2Z)AHOXMS{%ONm)1JvVC$vl8mSRDe|DKw;oi<4O_tQgEOm z$X<%-7L|OC9AMDGm|?~f$CePEb3kceCC7s%;k;w!&Z{Q*w2eM9Jc=9<(G>=do-aRO zTrfkbZ`Np=$N^~LIZsNsh*KBsN9pV3#rYFhE3l`}xB*o=;jMuQAl%a%3h=e#41%MLhW!#N_-fFVC| zBO@a*>~l{psam~Uwqc%^4=s8J#Wm3lGQ2Qw8f09NZRc~KnjqW8wffWYAGa}e1!>he zkd4yW)M9Q~5aZr*UbRv}f(08B2|&865lVOas0x9MZ6Y_~C4w;bZl< z?lEzlKO2Ev2i1m>vA|wb*&8Bsn*wJe+%_eyAgka&!GVGUJDCF>ob0D{VKA=dYQAX&jetpS9vQ%8w>pOQf+sepD-4 z$I*if8$KPL?MnkAMvzu^fYXNiY}T-RZQ@1?EZ_?c6dc%A96;ve<%ITv*5^ThcVjaas5{`=;Bz^Wi(r zewvmK8wQ_xfFBvn#1C8Jo~Mxm4f+*#Mdx2qozI1VQzxSeu${{Rj3#{Y zR#v%f$bc^m=kZrdv+S*wRx3ZS7&ORdj2eFR>V%rnNK-@|6`ysUW(1LtLZ^DkMw zs|luRaW5HLit0WC4rBv#Wot#+&eAYNr_Y`l%;(=6iP`oF-4>mly@^H*R!%Hjf6593 zA#G=i+tpSsA^=9e!WA4SIIt@?kjfk63^K>^rq-2WhO5Sa6raO31bB8_wY+P^Id4gO zY4bQtuYKbIE+3aZ8&4YNym=p(=H}M8WtV)^$@R*^KFeq5ka1b8;55kO!oX>eacb-f zu@gucC@rZo;A;kCQDF}2X0xUUk8~SIgN4 z3(H#eU0R$&vkDz;?O{R7uFFqm^ieG-H;bZGaZym{>t5>7`n<4aQgoyIGBZ1xO+Ygu zuGFsO+V;*mDO(#1x-ERxhJ1FZ(13dpbZm$EKReFuKFrnM7uz^0%0gD_EH2N1>iH{B z8)<{<;esZN8P4KplO|7E#mS7FNH2yDMh^+3DG*m}Fl?d`6r(r&XMH+1T||Lk9S#)l zU>yc+!{p7rvs(EbZ@*gAoo0FDXT#QtcY57^{O}8_HDy^;o>W0~aTzHt;-9+ma1 z9el-jVq0F9d{%9Ejt>26sW5OFeFues(NBeH6c_ldoaeJxxKY53Zj;_tVx2?b*UHEX5cnj2WZ=9 zo@(^1g{N9twYX|{HxifPOvClyNa53PJ$b9a)WT6Kz8a23sEl7M$T5Tw3m%%&!fI;@jHEI(2|Eu zpVP4E&gW0#30Lcv#^b#CJbt!sIOFoO)7SNx9A24x$+l!M$(^g?hsM`}YHe&#SM#8ovGZ+h|Z= zM|||rN2~bY`r|(@2hYqu%Jg%2)u^~dt-%*j7&r|wZaZbOKye3&zNElwue}y--Mkr% zl>G;W!^I0{s;jlP67Y-ag6z<-=8@hUX;@7awoH?z7 z$$XZ*E8M$xFC5x`AnfVw4kwNt3w^?S<;S1G+){SPun~SBK$t;U7OitLPi0_rM?vR( zr><8cxSw?%^Sa)0QlXjVP3xG(gV$;JUX@GZs+H|>@@duL9ha7yhVwYm=gs6z@#MoU z-}vq4;hx2_%QkMFnJAc>n~Sr2`2HduX|z)YQogI;SvL;G@~%4dNor;o{ob+(hsvkJ znSlfsc&gQreEBUSrVBsKW4hD06jmmT;5E0Q&v`FQTvnO-wt{*Z3dHh~W(;NEOfO_- zarkD$;?zWF?(Wp2MqlXOdo)G0D(rHJblGWr()3js%MZ>|EseNp`K!g5$7xy`u7&?) ziZ`##7ktOrH$T!e#}$6#9LV!GkIC;OjZgEW>1i1F^j)QC!ZgL z;lzniO~BsMH*to;lP6EZjT^V(mp_3SAAb;Ofj0CP^6+Kl8#iu5*-YJ^Jei7y5Bkt{ zaPZkb=qX=nP#8E3zMR6qX^?T-F`I<|OPzy*dqb<1V)+Qx9T_cWPM?mQn`PTiKKUe^ z8hu3yR(m+GZ+|$XPLBe%C}V|X-nm7DOZo6~S-}JMywdw6EcQtl+!9W<-?_|<@`HT* z5QayN9gB)$XUCrK^UWJ8I7#0w&h@mvQMx=pRLfUS+RBo(5LAOVU8FfoSq@jrlg1e? z&6CCvk8@mFj^i?j3XGrY_49bhXBzESgQ*vPBXA6w7cN`~2M_L#ionRohz8U60f<#({Isp3XQ(F>}a-1O4&p)vFQL;NV~!jBnk#6+b*j zJTSL!-;N3cpB!f}rq419N!`1k~UQu3e%;1p>yuDFg`gSTK63b%TtfT^5WyDEWGlo|1lak zDZZ44X}sSL>1o*TDJ*gMXTvq(r+ouui}I_{&6@?<%0(g;snj{d@*;Uz{vrLJ9qaNhjjaE&8?FWL$;~ zThySbtE(%@Pvpd1)$Q=112Hf3xtu&d*QR}QsgzZ%T;g!$6`ai#@)GB+zK7x^X2?#h zx;qK<(`o1!2(Kdt4~1SSRZpj%L?ww?i;-i;2eaRz8lM`xIrn20PwnOj5vZPFo(5H?4S9Ek#v*`+OYe_H-y-S{k3 z$dHDOz>?2?EjYth^V1hqEj=HX(vgPqa6DUDI&7FU-f{SOd}+NLwx7Z}4jc~KCk~f? z&SKa8OBrdtG`x1sXP3(8&M40wPplfkvGMCJWi$n>jK`0sVn;%&z#2lEV7idb0xZ*t z6BCoFTT8TnmUK|>!GlNfnRvDThr6Vf9?Qc1_mN^+>}{ zKm8Ot^p8LO7&o5d)0uJUyW&~;emqa30=0Ry6y_gY4a<+d4b!6U-qdiITs|0PXO#Ex zk74}Aw_)Ppcj3|fAH(F>PhqJw>yWkHMYVXBZyy?PdD#4O2DSPxIP!Q_LsXs&ms&iP z)U6A-oUOz7d@-4R`!2nn_hHz=Z;S)xF}%<7e=Us8m-oq23lAE8YioOyC0HWJ8DtCc zs;#X<{zWdIC+8lM_*q=B8WH{aC$vYzl{_Gz?M28V~F>nz2kp2suO;m?2mbNKt`pT~nRY*w9+b+k0AOW;KT zYrF`9$wyL%Bc^h0)WnpllR(1LUlf1uv_W zOT77P{MF!`ww7NF7w{>5!YTeVoX72awP32nSBp#W8fO~!EW@UUa@Q)`aL#dmYjW^ziILQZp%p>YR?`&$) zUec&M=tB-&17W)5V7OBHRcP7&e(2qMBD5U(x1n$FaA=*K38AAuv~(N@y+bFof0Wa| z6=$9hQ!DJU?WeG5o;03t>I|3GB~7muPRnz;@%VWw{O489R?wQ_$nzqthtuq*`HJw? zbHMEyeplmp8s{+MBF@jI%J0$f_{8nm(-W0@lz#F?d8MU|W*I)n9%L6wIRk@3TBa#! zBIThbZSKTL7501$Dt<~6EWN$`aR!pvQ6_YdRpbLNlQPIdAv-jivF9jyBQS9gZD45>B5!sby}-Fx8R$xCajG zi}Dhq%(JS;j~@-c{mlm}v#a1WF9}yGkNB;2>3egSGE58gOXIh?{N0YPelvTwb7F_q z&m95Z9U;a^O7P6=#lpg3n9?lmums!pTB6}vwdrZ?bvbx24C*F=`*&`~wP*z2lPM`V zx^dvEZ*>cSu2AEU0f%kI9zF`=GICyj{k8CgW~vuuAT@C-fM#|Ybl0 zmxLME*&oIV4D`WY27c4WQY3>s%cnTgk9F_HB(wS&|ABO@cx2r@lhA;Iu* z`!Q{6`HW0WT+J$-MD|Q{3ybhzDa5qE<#a+=2zJS8OX^?T-B^#XqXWw+uk^laezvzBv&5*F} ztFLY~Ysq?9g0(D1!sNrpp+!nnt5$dDNS}W4c{G07Iy-b&=QE*FUh;E)wDNPk$roDb z39Rl&kTvW2v%G+C`5W;OPR%OwMK}wx)JG9OU?Z%30D{>d6j1owNS(>YK*a#TK!LDj zHH;0zlt&oBOc|7k4?K>%EX8ANLK8+SK6nV@lSY`qg&8#lFK`eho-k!`a+JZ9_CYz+ z#WQdY14G%A!L|nCySuw0Pk2`uUuGgs;@Q%GgMQNO>gAK+%vLqgCh;6d1Ar_{!l)S70~&4_ERp#0iXB9>WtqLThThShx6Tc-;Ep5F?1;Rpe7K= z!`JUlp5#RAtvIu|Z(nx3A%+gCIJ^t!9vM9zH;Ui<`9`cevyqem5AyX`>p7nmDWkIOyfsv{ri`)P*1XdDhOfu~JSSrR`ES?~a>gh{Jft7^g2g z4F8aOh1(nl()UjrVV4AL^ytx}u?^AAk=L{r4)x)95A-kEFYkqTQtZ8 zcp>$KQA4VIc)GY8e%9HZme%EP?apF2uZvEQ=mJ@B&}kmvr(uBd>CTw%YtH9%eBzwH zT6zk*m0`-{XXj^RjKYP1W5#UIFASUwGOPlQ@~K&GeIzE{_<{B>$C79?4CE*6HKskU zKXD(c#6oLV_b-cVt;~w7Bx(i)5!2e9DW|%8J+xLcI1oh5QW&&{H*=K^xq@ql1rQ{u zP~-Xj!w2D?|LMQRyCylH#CeOi-_EuJH7fMT$Kdd{zkL#~sber>pgXM_AQ;RzQH~`h7U&2lFDIFoR-pv0>q%lzzdxyMJPnj!eGh3 zMp<1_g4nu%GW6QnGf~N<37D@NX%6NsxWE49+c>}v4)n$M!^#PRGXt{~WN7Rk9EiN( z!%hsmYym?lpdQAz5gJlh%Hbrx>q2>i(;06Da-MD2efZ(8QxtliLo0L`4*>J9i^I=8Cj(4+ZhjyT@3O`siYMHwdp4|T`G!L8&J)%RZcxcs@v^@vTht?~93zO42 zeSG3jSkNAK(~QsAqHn+bUJJmj;oR$Ir5N{xKmX;gv7OOAp_?|sRuFs)y*J)G7e4v) z^LQeeRjPN+|0=etPt^`-pWSLVXVq?S;Glic2YAn4et99jOYqW1FcxY1%*e7$kox@X z@1I6x3Vzb2M@L6R<9D&|faldSr(%0`Jz_yy@Q1cQJ&~Izb-bsqzrGmx#nwUEFspU% z=pKIh2K8}!HGv4qL`nm5P`IaIs$`4{9b zlLvqJ!^g25yTtX{3)`~z+5PIRHyjKH_J6d}-jGjrykiU(+J{}5P8{-zZ%x>-9SmA< z_?}e2=&8p=eMt%wKKDZ3e7F?;%TF@C=1XCZCRtuPB)J88;a=7=aNK%NRBH54mg(4R zTXlZp1NXCX$Sq`^9c8EGcdCuFw|8bUhz2VBx;ao7ICZnC0NjlnurNve{lojB(t@z= zk`l_`07#x@_!qmH9toE11}K%2kEf%t zH5boEwMglkh%}HF7_Q+$@wzVM5}ckFp33RVJ=F zF!-XNvZcx^C#O!GiZCdc(1}7v{%>VeK`S_kw}USm<&X2C_@Z#3fR#jlN!uYgtWSB+ zHZn32XAP-yPfs>ukMRS)FbYv1Q8J-xE1cgkc=L5aA;`NFCgp?ir0~RHnB`rHBcImL zGY5Ay^HI`dV5_#OEk61zboRd%S7MhJW%TSB3{6M=yD)I~E1kn>3lHv3g^@F>S7@P$ zm65K_Z1o1EopuA?=_{nuwpr0aX~!_8{jp__L7X46(I`K>FWNup{NOEZ4t@YfUJP*h z3voQ}-JA6Z`iyyr5kq<4f(H5$G>{J?AElA9w#xavVEkh6UAb~C{Nq3VV>Arl1G0iP zh|&rzz~gvkn8b?5S-3zyQ)v*{(Ax-{Nl<4ECNM0mT<@gnNJ6=h~q_FI9ez)^5umvDeVy;%bQ z3N=EKABr`?#y_fRfm(01QNqBDA%J3rqQkwLC>m^6KnY^C2p?qxwCMa(1ucU|NfYipVo+zSzWeWz4FQ{5if%;H5RZP;``7k3t>7$c4}SZ=sjz4NdF?lQ7&-*guDjb^Kk5LFX(OfO#b|t> zd|_1J(^p8NJpmW{klOp={6gr^J5vFnQ-(>;p6>AD_dmq;dsA)D%D3sJJo*U^1#fYY zt(;Gyaf3mH@k^QXA=)#_PK)3%gqO7{!H2a(bnF}Wn>8R@|45Mj_+6ULg#~7+OX@S- zqG?Ww=}a_SIOE7!2Dd}_LHmUs@=^!*WPHZI)jnm>&-pl0Tya&Il-sL*yLWgfzBdfU zJ$t%h-v-9UA~Zg0`nI~h+Zi8xMz-P)Y2pmShIW$~n@n;|#8nq=2pbtWu6~snm$doR z`JLq3W(t#r4Tn!&KN}CQX*kX6H0MpzYUMHh6n3p}v|mJ5Nr9HO`LL%$+f$cX!hM|w zT+)`c%v{MZxJ>fcxjcN+xdKU=|?F+Iq;UJ%?Lg6a%N?C_-vd-#UNnsGBc+b6Ne8URNAZ2xS{N9_HJKP zB^PMp-*S1UeQ5NR#(XP#vA9Np^_;!z41EFR&Ax^My}ud<~MP> z3`z_}6v_^>-IU*@neOA-=EH0`=_sryZx}lmT_|k*{koZ^i8CR~aWFo7_-HH(#qHFo zS5{ifM)(B3Q+SNEhbpVDe=x2PpvXc4Ta&0W#tksU@sS$nA4}}JrP|8_NAe}m3tPv)jcWvkVdA>M(qdp2kR3crmG(EhIh8A(-}WH zaYWl1F*aBwVEZFV95)tmnFw+4!*xdK$0(q!QCItfdAIZp%B796BE-9;&GK%){`%{< z1rFmI{206Nm~C)gvB9VO%{adcaHQ{pcvdwr!Y~9Vhd#-6I@&1mf-QQ`?K*t$!3Qg} zfscM?YN%jqLbOhC_5y*I8Qzo%7QZl9W%c&OFVTjJk>;JPEs*chu{vm$8= zwn#pUitQkrZbMAQuxfYi+*$P*omtbnV8zc9X;g^`FSZ8Krg&Fezs&nNdi3y$jC4CR z-nCd^SYQl~kKvtfd&pG!8hJ=ZZaKf7*D9-#G^Sga&S=sENb|B*$aS8+Ln}A?_DE`J z(W<2-I|s>D&=n{8RGIi_`gm~t4Cge*^K3ZcoNjpgjyJsHpS54DJmU1L3=Yqlh+T$% zbJBm8F{7x?%f|r(hy|c)&ojyZN((p4pg^G@uR&-+w>Gfs^fPq=Wa2&N%=N?nWGWarU8~1N&BZ7Z$pr!U(;@ z!58Ylpr6h%lb>xLeSJL*)3QJ^hv83~L%#`Z0JfUOxdU&iYX`Qe9Iy7sW+U$b1bM>AMOYPcn*siT- z&6VK+x=`l(WpqL-ZIE}sL;waF?*vC1fd8~<+8}MmS6x$g@L;@fzKin)dYus;@fhd$ z{K$tP1s}mf97coRH~j@VcqZL#I%}J+sZDo9Lxc87-fGT$vRYa`E`@bCt82vo;2qO% zp&ds%cG>h56jvN^;D8Ty#_8v+^x+kK9KTubly^0)m0e_9rwkkvTX+aR-RGgT(f+)Z zwC@I7ez&w$+CA-qK0{k&m6~_MxInw0-;fS0ZHY55OG^VQ?Z~+7ug4#^Kf}{cm?%I_ z_Vo0{2_hyaZr;2d+bew>ql-2IO^knRLq$dn4eg7Q4y>+Yterov)!t1yZcdA9G{^#l zjtwq{p4VH{pS9M!ph>na&gaBMS@D3vBxlNF06fIOKk7%__|b-Ktieyl3}g>&95`fx z`H}a*XP#w7l?^OXo{xj3%J2DpuDtdwzR8rDLfwkZ(;W6TcJg( zIDFUY=J$UMrMcP2|K5(Qtx`7ip)T04(1)Xa!ekwcR^hK-5FO3Ur*Ti==-b~G4aB8x44*N zZtiiENxtyru2xCu>lbxN#)lugALS|Eyx~kFMm*;sSvf@tRG&JihoTIIEwiy53KM>J zrzX}qb&)`+S(lv1Fp=!Xm5<=WFm+%h_v-a)VUNxO!Xx;Ip~mh8jB~azQy*4zfyE$W zX96;ol~v?$mo8z#06Km83#m%{UMymOp=mrGsqaZW4z^*Qi-w1D;LC?K{M z2mZAD$L&SXGo{87#G`Dz)l$VcN@3|H($JgV#4E&S^$AiQ1_Upk5 zjB#uXo66|F{ z+h~!M&_A#@F8MGmiPb<>&lm*``pLj-cMhK ziA(<}9Pif>Vv8(<<;u+w&|#X)Z~LSs@YQFK=uLeV0t#U}Kx2$^Mz*�h0pQ$`Fi<18K$0c3Ygj)Fn{d>Sx*?aTJNA% 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

384ptk;!3w6V|f>@KFSQJkmkrtiGQAj3gB#+K6r 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 -

-
- - - - -
-
-
- - -
- - -
- - - {{ previewResult }} - -
-
-
- - - diff --git a/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue b/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue deleted file mode 100644 index a90d468..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue +++ /dev/null @@ -1,551 +0,0 @@ - - - - - diff --git a/src/components/bpmnProcessDesigner/package/designer/index.ts b/src/components/bpmnProcessDesigner/package/designer/index.ts deleted file mode 100644 index 8522846..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import MyProcessDesigner from './ProcessDesigner.vue' - -MyProcessDesigner.install = function (Vue) { - Vue.component(MyProcessDesigner.name, MyProcessDesigner) -} - -// 流程图的设计器,可编辑 -export default MyProcessDesigner diff --git a/src/components/bpmnProcessDesigner/package/designer/index2.ts b/src/components/bpmnProcessDesigner/package/designer/index2.ts deleted file mode 100644 index ebe8ca7..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/index2.ts +++ /dev/null @@ -1,8 +0,0 @@ -import MyProcessViewer from './ProcessViewer.vue' - -MyProcessViewer.install = function (Vue) { - Vue.component(MyProcessViewer.name, MyProcessViewer) -} - -// 流程图的查看器,不可编辑 -export default MyProcessViewer diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js b/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js deleted file mode 100644 index 8783493..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js +++ /dev/null @@ -1,423 +0,0 @@ -import { assign, forEach, isArray } from 'min-dash' - -import { is } from 'bpmn-js/lib/util/ModelUtil' - -import { isExpanded, isEventSubProcess } from 'bpmn-js/lib/util/DiUtil' - -import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil' - -import { getChildLanes } from 'bpmn-js/lib/features/modeling/util/LaneUtil' - -import { hasPrimaryModifier } from 'diagram-js/lib/util/Mouse' - -/** - * A provider for BPMN 2.0 elements context pad - */ -export default function ContextPadProvider( - config, - injector, - eventBus, - contextPad, - modeling, - elementFactory, - connect, - create, - popupMenu, - canvas, - rules, - translate -) { - config = config || {} - - contextPad.registerProvider(this) - - this._contextPad = contextPad - - this._modeling = modeling - - this._elementFactory = elementFactory - this._connect = connect - this._create = create - this._popupMenu = popupMenu - this._canvas = canvas - this._rules = rules - this._translate = translate - - if (config.autoPlace !== false) { - this._autoPlace = injector.get('autoPlace', false) - } - - eventBus.on('create.end', 250, function (event) { - const context = event.context, - shape = context.shape - - if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { - return - } - - const entries = contextPad.getEntries(shape) - - if (entries.replace) { - entries.replace.action.click(event, shape) - } - }) -} - -ContextPadProvider.$inject = [ - 'config.contextPad', - 'injector', - 'eventBus', - 'contextPad', - 'modeling', - 'elementFactory', - 'connect', - 'create', - 'popupMenu', - 'canvas', - 'rules', - 'translate', - 'elementRegistry' -] - -ContextPadProvider.prototype.getContextPadEntries = function (element) { - const contextPad = this._contextPad, - modeling = this._modeling, - elementFactory = this._elementFactory, - connect = this._connect, - create = this._create, - popupMenu = this._popupMenu, - canvas = this._canvas, - rules = this._rules, - autoPlace = this._autoPlace, - translate = this._translate - - const actions = {} - - if (element.type === 'label') { - return actions - } - - const businessObject = element.businessObject - - function startConnect(event, element) { - connect.start(event, element) - } - - function removeElement() { - modeling.removeElements([element]) - } - - function getReplaceMenuPosition(element) { - const Y_OFFSET = 5 - - const diagramContainer = canvas.getContainer(), - pad = contextPad.getPad(element).html - - const diagramRect = diagramContainer.getBoundingClientRect(), - padRect = pad.getBoundingClientRect() - - const top = padRect.top - diagramRect.top - const left = padRect.left - diagramRect.left - - const pos = { - x: left, - y: top + padRect.height + Y_OFFSET - } - - return pos - } - - /** - * Create an append action - * - * @param {string} type - * @param {string} className - * @param {string} [title] - * @param {Object} [options] - * - * @return {Object} descriptor - */ - function appendAction(type, className, title, options) { - if (typeof title !== 'string') { - options = title - title = translate('Append {type}', { type: type.replace(/^bpmn:/, '') }) - } - - function appendStart(event, element) { - const shape = elementFactory.createShape(assign({ type: type }, options)) - create.start(event, shape, { - source: element - }) - } - - const append = autoPlace - ? function (event, element) { - const shape = elementFactory.createShape(assign({ type: type }, options)) - - autoPlace.append(element, shape) - } - : appendStart - - return { - group: 'model', - className: className, - title: title, - action: { - dragstart: appendStart, - click: append - } - } - } - - function splitLaneHandler(count) { - return function (event, element) { - // actual split - modeling.splitLane(element, count) - - // refresh context pad after split to - // get rid of split icons - contextPad.open(element, true) - } - } - - if (isAny(businessObject, ['bpmn:Lane', 'bpmn:Participant']) && isExpanded(businessObject)) { - const childLanes = getChildLanes(element) - - assign(actions, { - 'lane-insert-above': { - group: 'lane-insert-above', - className: 'bpmn-icon-lane-insert-above', - title: translate('Add Lane above'), - action: { - click: function (event, element) { - modeling.addLane(element, 'top') - } - } - } - }) - - if (childLanes.length < 2) { - if (element.height >= 120) { - assign(actions, { - 'lane-divide-two': { - group: 'lane-divide', - className: 'bpmn-icon-lane-divide-two', - title: translate('Divide into two Lanes'), - action: { - click: splitLaneHandler(2) - } - } - }) - } - - if (element.height >= 180) { - assign(actions, { - 'lane-divide-three': { - group: 'lane-divide', - className: 'bpmn-icon-lane-divide-three', - title: translate('Divide into three Lanes'), - action: { - click: splitLaneHandler(3) - } - } - }) - } - } - - assign(actions, { - 'lane-insert-below': { - group: 'lane-insert-below', - className: 'bpmn-icon-lane-insert-below', - title: translate('Add Lane below'), - action: { - click: function (event, element) { - modeling.addLane(element, 'bottom') - } - } - } - }) - } - - if (is(businessObject, 'bpmn:FlowNode')) { - if (is(businessObject, 'bpmn:EventBasedGateway')) { - assign(actions, { - 'append.receive-task': appendAction( - 'bpmn:ReceiveTask', - 'bpmn-icon-receive-task', - translate('Append ReceiveTask') - ), - 'append.message-intermediate-event': appendAction( - 'bpmn:IntermediateCatchEvent', - 'bpmn-icon-intermediate-event-catch-message', - translate('Append MessageIntermediateCatchEvent'), - { eventDefinitionType: 'bpmn:MessageEventDefinition' } - ), - 'append.timer-intermediate-event': appendAction( - 'bpmn:IntermediateCatchEvent', - 'bpmn-icon-intermediate-event-catch-timer', - translate('Append TimerIntermediateCatchEvent'), - { eventDefinitionType: 'bpmn:TimerEventDefinition' } - ), - 'append.condition-intermediate-event': appendAction( - 'bpmn:IntermediateCatchEvent', - 'bpmn-icon-intermediate-event-catch-condition', - translate('Append ConditionIntermediateCatchEvent'), - { eventDefinitionType: 'bpmn:ConditionalEventDefinition' } - ), - 'append.signal-intermediate-event': appendAction( - 'bpmn:IntermediateCatchEvent', - 'bpmn-icon-intermediate-event-catch-signal', - translate('Append SignalIntermediateCatchEvent'), - { eventDefinitionType: 'bpmn:SignalEventDefinition' } - ) - }) - } else if ( - isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition') - ) { - assign(actions, { - 'append.compensation-activity': appendAction( - 'bpmn:Task', - 'bpmn-icon-task', - translate('Append compensation activity'), - { - isForCompensation: true - } - ) - }) - } else if ( - !is(businessObject, 'bpmn:EndEvent') && - !businessObject.isForCompensation && - !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') && - !isEventSubProcess(businessObject) - ) { - assign(actions, { - 'append.end-event': appendAction( - 'bpmn:EndEvent', - 'bpmn-icon-end-event-none', - translate('Append EndEvent') - ), - 'append.gateway': appendAction( - 'bpmn:ExclusiveGateway', - 'bpmn-icon-gateway-none', - translate('Append Gateway') - ), - 'append.append-task': appendAction( - 'bpmn:UserTask', - 'bpmn-icon-user-task', - translate('Append Task') - ), - 'append.intermediate-event': appendAction( - 'bpmn:IntermediateThrowEvent', - 'bpmn-icon-intermediate-event-none', - translate('Append Intermediate/Boundary Event') - ) - }) - } - } - - if (!popupMenu.isEmpty(element, 'bpmn-replace')) { - // Replace menu entry - assign(actions, { - replace: { - group: 'edit', - className: 'bpmn-icon-screw-wrench', - title: '修改类型', - action: { - click: function (event, element) { - const position = assign(getReplaceMenuPosition(element), { - cursor: { x: event.x, y: event.y } - }) - - popupMenu.open(element, 'bpmn-replace', position) - } - } - } - }) - } - - if ( - isAny(businessObject, [ - 'bpmn:FlowNode', - 'bpmn:InteractionNode', - 'bpmn:DataObjectReference', - 'bpmn:DataStoreReference' - ]) - ) { - assign(actions, { - 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation'), - - connect: { - group: 'connect', - className: 'bpmn-icon-connection-multi', - title: translate( - 'Connect using ' + - (businessObject.isForCompensation ? '' : 'Sequence/MessageFlow or ') + - 'Association' - ), - action: { - click: startConnect, - dragstart: startConnect - } - } - }) - } - - if (isAny(businessObject, ['bpmn:DataObjectReference', 'bpmn:DataStoreReference'])) { - assign(actions, { - connect: { - group: 'connect', - className: 'bpmn-icon-connection-multi', - title: translate('Connect using DataInputAssociation'), - action: { - click: startConnect, - dragstart: startConnect - } - } - }) - } - - if (is(businessObject, 'bpmn:Group')) { - assign(actions, { - 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation') - }) - } - - // delete element entry, only show if allowed by rules - let deleteAllowed = rules.allowed('elements.delete', { elements: [element] }) - - if (isArray(deleteAllowed)) { - // was the element returned as a deletion candidate? - deleteAllowed = deleteAllowed[0] === element - } - - if (deleteAllowed) { - assign(actions, { - delete: { - group: 'edit', - className: 'bpmn-icon-trash', - title: translate('Remove'), - action: { - click: removeElement - } - } - }) - } - - return actions -} - -// helpers ///////// - -function isEventType(eventBo, type, definition) { - const isType = eventBo.$instanceOf(type) - let isDefinition = false - - const definitions = eventBo.eventDefinitions || [] - forEach(definitions, function (def) { - if (def.$type === definition) { - isDefinition = true - } - }) - - return isType && isDefinition -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js b/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js deleted file mode 100644 index 80009ef..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import CustomContextPadProvider from './contentPadProvider' - -export default { - __init__: ['contextPadProvider'], - contextPadProvider: ['type', CustomContextPadProvider] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js b/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js deleted file mode 100644 index f3bc894..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -export default (key, name, type) => { - if (!type) type = 'camunda' - const TYPE_TARGET = { - activiti: 'http://activiti.org/bpmn', - camunda: 'http://bpmn.io/schema/bpmn', - flowable: 'http://flowable.org/bpmn' - } - return ` - - - - - - - -` -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json deleted file mode 100644 index db5e490..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json +++ /dev/null @@ -1,994 +0,0 @@ -{ - "name": "Activiti", - "uri": "http://activiti.org/bpmn", - "prefix": "activiti", - "xml": { - "tagAlias": "lowerCase" - }, - "associations": [], - "types": [ - { - "name": "Definitions", - "isAbstract": true, - "extends": ["bpmn:Definitions"], - "properties": [ - { - "name": "diagramRelationId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "InOutBinding", - "superClass": ["Element"], - "isAbstract": true, - "properties": [ - { - "name": "source", - "isAttr": true, - "type": "String" - }, - { - "name": "sourceExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "target", - "isAttr": true, - "type": "String" - }, - { - "name": "businessKey", - "isAttr": true, - "type": "String" - }, - { - "name": "local", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "variables", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "In", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity"] - } - }, - { - "name": "Out", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity"] - } - }, - { - "name": "AsyncCapable", - "isAbstract": true, - "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncBefore", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncAfter", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "exclusive", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "JobPriorized", - "isAbstract": true, - "extends": ["bpmn:Process", "activiti:AsyncCapable"], - "properties": [ - { - "name": "jobPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "SignalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:SignalEventDefinition"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - } - ] - }, - { - "name": "ErrorEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ErrorEventDefinition"], - "properties": [ - { - "name": "errorCodeVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "errorMessageVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Error", - "isAbstract": true, - "extends": ["bpmn:Error"], - "properties": [ - { - "name": "activiti:errorMessage", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "PotentialStarter", - "superClass": ["Element"], - "properties": [ - { - "name": "resourceAssignmentExpression", - "type": "bpmn:ResourceAssignmentExpression" - } - ] - }, - { - "name": "FormSupported", - "isAbstract": true, - "extends": ["bpmn:StartEvent", "bpmn:UserTask"], - "properties": [ - { - "name": "formHandlerClass", - "isAttr": true, - "type": "String" - }, - { - "name": "formKey", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TemplateSupported", - "isAbstract": true, - "extends": ["bpmn:Process", "bpmn:FlowElement"], - "properties": [ - { - "name": "modelerTemplate", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Initiator", - "isAbstract": true, - "extends": ["bpmn:StartEvent"], - "properties": [ - { - "name": "initiator", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ScriptTask", - "isAbstract": true, - "extends": ["bpmn:ScriptTask"], - "properties": [ - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Process", - "isAbstract": true, - "extends": ["bpmn:Process"], - "properties": [ - { - "name": "candidateStarterGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateStarterUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "versionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "historyTimeToLive", - "isAttr": true, - "type": "String" - }, - { - "name": "isStartableInTasklist", - "isAttr": true, - "type": "Boolean", - "default": true - }, - { - "name": "executionListener", - "isAbstract": true, - "type": "Expression" - } - ] - }, - { - "name": "EscalationEventDefinition", - "isAbstract": true, - "extends": ["bpmn:EscalationEventDefinition"], - "properties": [ - { - "name": "escalationCodeVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FormalExpression", - "isAbstract": true, - "extends": ["bpmn:FormalExpression"], - "properties": [ - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "multiinstance_type", - "superClass": ["Element"] - }, - { - "name": "multiinstance_condition", - "superClass": ["Element"] - }, - { - "name": "Assignable", - "extends": ["bpmn:UserTask"], - "properties": [ - { - "name": "assignee", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "dueDate", - "isAttr": true, - "type": "String" - }, - { - "name": "followUpDate", - "isAttr": true, - "type": "String" - }, - { - "name": "priority", - "isAttr": true, - "type": "String" - }, - { - "name": "multiinstance_condition", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "CallActivity", - "extends": ["bpmn:CallActivity"], - "properties": [ - { - "name": "calledElementBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "calledElementVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementVersionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "caseRef", - "isAttr": true, - "type": "String" - }, - { - "name": "caseBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "caseVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "caseTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingClass", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingDelegateExpression", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ServiceTaskLike", - "extends": [ - "bpmn:ServiceTask", - "bpmn:BusinessRuleTask", - "bpmn:SendTask", - "bpmn:MessageEventDefinition" - ], - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "DmnCapable", - "extends": ["bpmn:BusinessRuleTask"], - "properties": [ - { - "name": "decisionRef", - "isAttr": true, - "type": "String" - }, - { - "name": "decisionRefBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "decisionRefVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "mapDecisionResult", - "isAttr": true, - "type": "String", - "default": "resultList" - }, - { - "name": "decisionRefTenantId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ExternalCapable", - "extends": ["activiti:ServiceTaskLike"], - "properties": [ - { - "name": "type", - "isAttr": true, - "type": "String" - }, - { - "name": "topic", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TaskPriorized", - "extends": ["bpmn:Process", "activiti:ExternalCapable"], - "properties": [ - { - "name": "taskPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Properties", - "superClass": ["Element"], - "meta": { - "allowedIn": ["*"] - }, - "properties": [ - { - "name": "values", - "type": "Property", - "isMany": true - } - ] - }, - { - "name": "Property", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "Connector", - "superClass": ["Element"], - "meta": { - "allowedIn": ["activiti:ServiceTaskLike"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - } - ] - }, - { - "name": "InputOutput", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:FlowNode", "activiti:Connector"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - }, - { - "name": "inputParameters", - "isMany": true, - "type": "InputParameter" - }, - { - "name": "outputParameters", - "isMany": true, - "type": "OutputParameter" - } - ] - }, - { - "name": "InputOutputParameter", - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "InputOutputParameterDefinition", - "isAbstract": true - }, - { - "name": "List", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "items", - "isMany": true, - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Map", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "entries", - "isMany": true, - "type": "Entry" - } - ] - }, - { - "name": "Entry", - "properties": [ - { - "name": "key", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Value", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "id", - "isAttr": true, - "type": "String" - }, - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Script", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "scriptFormat", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Field", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "activiti:ServiceTaskLike", - "activiti:ExecutionListener", - "activiti:TaskListener" - ] - }, - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "expression", - "type": "String" - }, - { - "name": "stringValue", - "isAttr": true, - "type": "String" - }, - { - "name": "string", - "type": "String" - } - ] - }, - { - "name": "InputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "OutputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "Collectable", - "isAbstract": true, - "extends": ["bpmn:MultiInstanceLoopCharacteristics"], - "superClass": ["activiti:AsyncCapable"], - "properties": [ - { - "name": "collection", - "isAttr": true, - "type": "String" - }, - { - "name": "elementVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FailedJobRetryTimeCycle", - "superClass": ["Element"], - "meta": { - "allowedIn": ["activiti:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] - }, - "properties": [ - { - "name": "body", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "ExecutionListener", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "bpmn:Task", - "bpmn:ServiceTask", - "bpmn:UserTask", - "bpmn:BusinessRuleTask", - "bpmn:ScriptTask", - "bpmn:ReceiveTask", - "bpmn:ManualTask", - "bpmn:ExclusiveGateway", - "bpmn:SequenceFlow", - "bpmn:ParallelGateway", - "bpmn:InclusiveGateway", - "bpmn:EventBasedGateway", - "bpmn:StartEvent", - "bpmn:IntermediateCatchEvent", - "bpmn:IntermediateThrowEvent", - "bpmn:EndEvent", - "bpmn:BoundaryEvent", - "bpmn:CallActivity", - "bpmn:SubProcess", - "bpmn:Process" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "TaskListener", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:UserTask"] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "defaultValue", - "type": "String", - "isAttr": true - }, - { - "name": "properties", - "type": "Properties" - }, - { - "name": "validation", - "type": "Validation" - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "Validation", - "superClass": ["Element"], - "properties": [ - { - "name": "constraints", - "type": "Constraint", - "isMany": true - } - ] - }, - { - "name": "Constraint", - "superClass": ["Element"], - "properties": [ - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "config", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "ConditionalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ConditionalEventDefinition"], - "properties": [ - { - "name": "variableName", - "isAttr": true, - "type": "String" - }, - { - "name": "variableEvent", - "isAttr": true, - "type": "String" - } - ] - } - ], - "emumerations": [] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json deleted file mode 100644 index 79b86bc..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json +++ /dev/null @@ -1,1010 +0,0 @@ -{ - "name": "Camunda", - "uri": "http://camunda.org/schema/1.0/bpmn", - "prefix": "camunda", - "xml": { - "tagAlias": "lowerCase" - }, - "associations": [], - "types": [ - { - "name": "Definitions", - "isAbstract": true, - "extends": ["bpmn:Definitions"], - "properties": [ - { - "name": "diagramRelationId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "InOutBinding", - "superClass": ["Element"], - "isAbstract": true, - "properties": [ - { - "name": "source", - "isAttr": true, - "type": "String" - }, - { - "name": "sourceExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "target", - "isAttr": true, - "type": "String" - }, - { - "name": "businessKey", - "isAttr": true, - "type": "String" - }, - { - "name": "local", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "variables", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "In", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity", "bpmn:SignalEventDefinition"] - } - }, - { - "name": "Out", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity"] - } - }, - { - "name": "AsyncCapable", - "isAbstract": true, - "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncBefore", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncAfter", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "exclusive", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "JobPriorized", - "isAbstract": true, - "extends": ["bpmn:Process", "camunda:AsyncCapable"], - "properties": [ - { - "name": "jobPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "SignalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:SignalEventDefinition"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - } - ] - }, - { - "name": "ErrorEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ErrorEventDefinition"], - "properties": [ - { - "name": "errorCodeVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "errorMessageVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Error", - "isAbstract": true, - "extends": ["bpmn:Error"], - "properties": [ - { - "name": "camunda:errorMessage", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "PotentialStarter", - "superClass": ["Element"], - "properties": [ - { - "name": "resourceAssignmentExpression", - "type": "bpmn:ResourceAssignmentExpression" - } - ] - }, - { - "name": "FormSupported", - "isAbstract": true, - "extends": ["bpmn:StartEvent", "bpmn:UserTask"], - "properties": [ - { - "name": "formHandlerClass", - "isAttr": true, - "type": "String" - }, - { - "name": "formKey", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TemplateSupported", - "isAbstract": true, - "extends": ["bpmn:Process", "bpmn:FlowElement"], - "properties": [ - { - "name": "modelerTemplate", - "isAttr": true, - "type": "String" - }, - { - "name": "modelerTemplateVersion", - "isAttr": true, - "type": "Integer" - } - ] - }, - { - "name": "Initiator", - "isAbstract": true, - "extends": ["bpmn:StartEvent"], - "properties": [ - { - "name": "initiator", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ScriptTask", - "isAbstract": true, - "extends": ["bpmn:ScriptTask"], - "properties": [ - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Process", - "isAbstract": true, - "extends": ["bpmn:Process"], - "properties": [ - { - "name": "candidateStarterGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateStarterUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "versionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "historyTimeToLive", - "isAttr": true, - "type": "String" - }, - { - "name": "isStartableInTasklist", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "EscalationEventDefinition", - "isAbstract": true, - "extends": ["bpmn:EscalationEventDefinition"], - "properties": [ - { - "name": "escalationCodeVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FormalExpression", - "isAbstract": true, - "extends": ["bpmn:FormalExpression"], - "properties": [ - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Assignable", - "extends": ["bpmn:UserTask"], - "properties": [ - { - "name": "assignee", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "dueDate", - "isAttr": true, - "type": "String" - }, - { - "name": "followUpDate", - "isAttr": true, - "type": "String" - }, - { - "name": "priority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "CallActivity", - "extends": ["bpmn:CallActivity"], - "properties": [ - { - "name": "calledElementBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "calledElementVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementVersionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "caseRef", - "isAttr": true, - "type": "String" - }, - { - "name": "caseBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "caseVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "caseTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingClass", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingDelegateExpression", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ServiceTaskLike", - "extends": [ - "bpmn:ServiceTask", - "bpmn:BusinessRuleTask", - "bpmn:SendTask", - "bpmn:MessageEventDefinition" - ], - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "DmnCapable", - "extends": ["bpmn:BusinessRuleTask"], - "properties": [ - { - "name": "decisionRef", - "isAttr": true, - "type": "String" - }, - { - "name": "decisionRefBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "decisionRefVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "mapDecisionResult", - "isAttr": true, - "type": "String", - "default": "resultList" - }, - { - "name": "decisionRefTenantId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ExternalCapable", - "extends": ["camunda:ServiceTaskLike"], - "properties": [ - { - "name": "type", - "isAttr": true, - "type": "String" - }, - { - "name": "topic", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TaskPriorized", - "extends": ["bpmn:Process", "camunda:ExternalCapable"], - "properties": [ - { - "name": "taskPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Properties", - "superClass": ["Element"], - "meta": { - "allowedIn": ["*"] - }, - "properties": [ - { - "name": "values", - "type": "Property", - "isMany": true - } - ] - }, - { - "name": "Property", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "Connector", - "superClass": ["Element"], - "meta": { - "allowedIn": ["camunda:ServiceTaskLike"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - } - ] - }, - { - "name": "InputOutput", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:FlowNode", "camunda:Connector"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - }, - { - "name": "inputParameters", - "isMany": true, - "type": "InputParameter" - }, - { - "name": "outputParameters", - "isMany": true, - "type": "OutputParameter" - } - ] - }, - { - "name": "InputOutputParameter", - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "InputOutputParameterDefinition", - "isAbstract": true - }, - { - "name": "List", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "items", - "isMany": true, - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Map", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "entries", - "isMany": true, - "type": "Entry" - } - ] - }, - { - "name": "Entry", - "properties": [ - { - "name": "key", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Value", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "id", - "isAttr": true, - "type": "String" - }, - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Script", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "scriptFormat", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Field", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "camunda:ServiceTaskLike", - "camunda:ExecutionListener", - "camunda:TaskListener" - ] - }, - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "expression", - "type": "String" - }, - { - "name": "stringValue", - "isAttr": true, - "type": "String" - }, - { - "name": "string", - "type": "String" - } - ] - }, - { - "name": "InputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "OutputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "Collectable", - "isAbstract": true, - "extends": ["bpmn:MultiInstanceLoopCharacteristics"], - "superClass": ["camunda:AsyncCapable"], - "properties": [ - { - "name": "collection", - "isAttr": true, - "type": "String" - }, - { - "name": "elementVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FailedJobRetryTimeCycle", - "superClass": ["Element"], - "meta": { - "allowedIn": ["camunda:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] - }, - "properties": [ - { - "name": "body", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "ExecutionListener", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "bpmn:Task", - "bpmn:ServiceTask", - "bpmn:UserTask", - "bpmn:BusinessRuleTask", - "bpmn:ScriptTask", - "bpmn:ReceiveTask", - "bpmn:ManualTask", - "bpmn:ExclusiveGateway", - "bpmn:SequenceFlow", - "bpmn:ParallelGateway", - "bpmn:InclusiveGateway", - "bpmn:EventBasedGateway", - "bpmn:StartEvent", - "bpmn:IntermediateCatchEvent", - "bpmn:IntermediateThrowEvent", - "bpmn:EndEvent", - "bpmn:BoundaryEvent", - "bpmn:CallActivity", - "bpmn:SubProcess", - "bpmn:Process" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "TaskListener", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:UserTask"] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - }, - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "eventDefinitions", - "type": "bpmn:TimerEventDefinition", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "FormData", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] - }, - "properties": [ - { - "name": "fields", - "type": "FormField", - "isMany": true - }, - { - "name": "businessKey", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "FormField", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "defaultValue", - "type": "String", - "isAttr": true - }, - { - "name": "properties", - "type": "Properties" - }, - { - "name": "validation", - "type": "Validation" - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "Validation", - "superClass": ["Element"], - "properties": [ - { - "name": "constraints", - "type": "Constraint", - "isMany": true - } - ] - }, - { - "name": "Constraint", - "superClass": ["Element"], - "properties": [ - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "config", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "ConditionalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ConditionalEventDefinition"], - "properties": [ - { - "name": "variableName", - "isAttr": true, - "type": "String" - }, - { - "name": "variableEvents", - "isAttr": true, - "type": "String" - } - ] - } - ], - "emumerations": [] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json deleted file mode 100644 index 7fe7ad1..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json +++ /dev/null @@ -1,1207 +0,0 @@ -{ - "name": "Flowable", - "uri": "http://flowable.org/bpmn", - "prefix": "flowable", - "xml": { - "tagAlias": "lowerCase" - }, - "associations": [], - "types": [ - { - "name": "InOutBinding", - "superClass": ["Element"], - "isAbstract": true, - "properties": [ - { - "name": "source", - "isAttr": true, - "type": "String" - }, - { - "name": "sourceExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "target", - "isAttr": true, - "type": "String" - }, - { - "name": "businessKey", - "isAttr": true, - "type": "String" - }, - { - "name": "local", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "variables", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "In", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity"] - } - }, - { - "name": "Out", - "superClass": ["InOutBinding"], - "meta": { - "allowedIn": ["bpmn:CallActivity"] - } - }, - { - "name": "AsyncCapable", - "isAbstract": true, - "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncBefore", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "asyncAfter", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "exclusive", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "JobPriorized", - "isAbstract": true, - "extends": ["bpmn:Process", "flowable:AsyncCapable"], - "properties": [ - { - "name": "jobPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "SignalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:SignalEventDefinition"], - "properties": [ - { - "name": "async", - "isAttr": true, - "type": "Boolean", - "default": false - } - ] - }, - { - "name": "ErrorEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ErrorEventDefinition"], - "properties": [ - { - "name": "errorCodeVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "errorMessageVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Error", - "isAbstract": true, - "extends": ["bpmn:Error"], - "properties": [ - { - "name": "flowable:errorMessage", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "PotentialStarter", - "superClass": ["Element"], - "properties": [ - { - "name": "resourceAssignmentExpression", - "type": "bpmn:ResourceAssignmentExpression" - } - ] - }, - { - "name": "FormSupported", - "isAbstract": true, - "extends": ["bpmn:StartEvent", "bpmn:UserTask"], - "properties": [ - { - "name": "formHandlerClass", - "isAttr": true, - "type": "String" - }, - { - "name": "formKey", - "isAttr": true, - "type": "String" - }, - { - "name": "formType", - "isAttr": true, - "type": "String" - }, - { - "name": "formReadOnly", - "isAttr": true, - "type": "Boolean", - "default": false - }, - { - "name": "formInit", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "TemplateSupported", - "isAbstract": true, - "extends": ["bpmn:Process", "bpmn:FlowElement"], - "properties": [ - { - "name": "modelerTemplate", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Initiator", - "isAbstract": true, - "extends": ["bpmn:StartEvent"], - "properties": [ - { - "name": "initiator", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ScriptTask", - "isAbstract": true, - "extends": ["bpmn:ScriptTask"], - "properties": [ - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Process", - "isAbstract": true, - "extends": ["bpmn:Process"], - "properties": [ - { - "name": "candidateStarterGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateStarterUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "versionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "historyTimeToLive", - "isAttr": true, - "type": "String" - }, - { - "name": "isStartableInTasklist", - "isAttr": true, - "type": "Boolean", - "default": true - } - ] - }, - { - "name": "EscalationEventDefinition", - "isAbstract": true, - "extends": ["bpmn:EscalationEventDefinition"], - "properties": [ - { - "name": "escalationCodeVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FormalExpression", - "isAbstract": true, - "extends": ["bpmn:FormalExpression"], - "properties": [ - { - "name": "resource", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Assignable", - "extends": ["bpmn:UserTask"], - "properties": [ - { - "name": "assignee", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateUsers", - "isAttr": true, - "type": "String" - }, - { - "name": "candidateGroups", - "isAttr": true, - "type": "String" - }, - { - "name": "dueDate", - "isAttr": true, - "type": "String" - }, - { - "name": "followUpDate", - "isAttr": true, - "type": "String" - }, - { - "name": "priority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Assignee", - "supperClass": "Element", - "meta": { - "allowedIn": ["*"] - }, - "properties": [ - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "viewId", - "type": "Number", - "isAttr": true - } - ] - }, - { - "name": "CallActivity", - "extends": ["bpmn:CallActivity"], - "properties": [ - { - "name": "calledElementBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "calledElementVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementVersionTag", - "isAttr": true, - "type": "String" - }, - { - "name": "calledElementTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "caseRef", - "isAttr": true, - "type": "String" - }, - { - "name": "caseBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "caseVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "caseTenantId", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingClass", - "isAttr": true, - "type": "String" - }, - { - "name": "variableMappingDelegateExpression", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ServiceTaskLike", - "extends": [ - "bpmn:ServiceTask", - "bpmn:BusinessRuleTask", - "bpmn:SendTask", - "bpmn:MessageEventDefinition" - ], - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "resultVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "DmnCapable", - "extends": ["bpmn:BusinessRuleTask"], - "properties": [ - { - "name": "decisionRef", - "isAttr": true, - "type": "String" - }, - { - "name": "decisionRefBinding", - "isAttr": true, - "type": "String", - "default": "latest" - }, - { - "name": "decisionRefVersion", - "isAttr": true, - "type": "String" - }, - { - "name": "mapDecisionResult", - "isAttr": true, - "type": "String", - "default": "resultList" - }, - { - "name": "decisionRefTenantId", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "ExternalCapable", - "extends": ["flowable:ServiceTaskLike"], - "properties": [ - { - "name": "type", - "isAttr": true, - "type": "String" - }, - { - "name": "topic", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "TaskPriorized", - "extends": ["bpmn:Process", "flowable:ExternalCapable"], - "properties": [ - { - "name": "taskPriority", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Properties", - "superClass": ["Element"], - "meta": { - "allowedIn": ["*"] - }, - "properties": [ - { - "name": "values", - "type": "Property", - "isMany": true - } - ] - }, - { - "name": "Property", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "Button", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:UserTask"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "code", - "type": "String", - "isAttr": true - }, - { - "name": "isHide", - "type": "String", - "isAttr": true - }, - { - "name": "next", - "type": "String", - "isAttr": true - }, - { - "name": "sort", - "type": "Integer", - "isAttr": true - } - ] - }, - { - "name": "Assignee", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:UserTask"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - }, - { - "name": "condition", - "type": "String", - "isAttr": true - }, - { - "name": "operationType", - "type": "String", - "isAttr": true - }, - { - "name": "sort", - "type": "Integer", - "isAttr": true - } - ] - }, - { - "name": "Connector", - "superClass": ["Element"], - "meta": { - "allowedIn": ["flowable:ServiceTaskLike"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - } - ] - }, - { - "name": "InputOutput", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:FlowNode", "flowable:Connector"] - }, - "properties": [ - { - "name": "inputOutput", - "type": "InputOutput" - }, - { - "name": "connectorId", - "type": "String" - }, - { - "name": "inputParameters", - "isMany": true, - "type": "InputParameter" - }, - { - "name": "outputParameters", - "isMany": true, - "type": "OutputParameter" - } - ] - }, - { - "name": "InputOutputParameter", - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "InputOutputParameterDefinition", - "isAbstract": true - }, - { - "name": "List", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "items", - "isMany": true, - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Map", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "entries", - "isMany": true, - "type": "Entry" - } - ] - }, - { - "name": "Entry", - "properties": [ - { - "name": "key", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - }, - { - "name": "definition", - "type": "InputOutputParameterDefinition" - } - ] - }, - { - "name": "Value", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "id", - "isAttr": true, - "type": "String" - }, - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Script", - "superClass": ["InputOutputParameterDefinition"], - "properties": [ - { - "name": "scriptFormat", - "isAttr": true, - "type": "String" - }, - { - "name": "resource", - "isAttr": true, - "type": "String" - }, - { - "name": "value", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "Field", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "flowable:ServiceTaskLike", - "flowable:ExecutionListener", - "flowable:TaskListener" - ] - }, - "properties": [ - { - "name": "name", - "isAttr": true, - "type": "String" - }, - { - "name": "expression", - "type": "String" - }, - { - "name": "stringValue", - "isAttr": true, - "type": "String" - }, - { - "name": "string", - "type": "String" - } - ] - }, - { - "name": "ChildField", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "InputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "OutputParameter", - "superClass": ["InputOutputParameter"] - }, - { - "name": "Collectable", - "isAbstract": true, - "extends": ["bpmn:MultiInstanceLoopCharacteristics"], - "superClass": ["flowable:AsyncCapable"], - "properties": [ - { - "name": "collection", - "isAttr": true, - "type": "String" - }, - { - "name": "elementVariable", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "FailedJobRetryTimeCycle", - "superClass": ["Element"], - "meta": { - "allowedIn": ["flowable:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] - }, - "properties": [ - { - "name": "body", - "isBody": true, - "type": "String" - } - ] - }, - { - "name": "ExecutionListener", - "superClass": ["Element"], - "meta": { - "allowedIn": [ - "bpmn:Task", - "bpmn:ServiceTask", - "bpmn:UserTask", - "bpmn:BusinessRuleTask", - "bpmn:ScriptTask", - "bpmn:ReceiveTask", - "bpmn:ManualTask", - "bpmn:ExclusiveGateway", - "bpmn:SequenceFlow", - "bpmn:ParallelGateway", - "bpmn:InclusiveGateway", - "bpmn:EventBasedGateway", - "bpmn:StartEvent", - "bpmn:IntermediateCatchEvent", - "bpmn:IntermediateThrowEvent", - "bpmn:EndEvent", - "bpmn:BoundaryEvent", - "bpmn:CallActivity", - "bpmn:SubProcess", - "bpmn:Process" - ] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "TaskListener", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:UserTask"] - }, - "properties": [ - { - "name": "expression", - "isAttr": true, - "type": "String" - }, - { - "name": "class", - "isAttr": true, - "type": "String" - }, - { - "name": "delegateExpression", - "isAttr": true, - "type": "String" - }, - { - "name": "event", - "isAttr": true, - "type": "String" - }, - { - "name": "script", - "type": "Script" - }, - { - "name": "fields", - "type": "Field", - "isMany": true - } - ] - }, - { - "name": "FormProperty", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "required", - "type": "String", - "isAttr": true - }, - { - "name": "readable", - "type": "String", - "isAttr": true - }, - { - "name": "writable", - "type": "String", - "isAttr": true - }, - { - "name": "variable", - "type": "String", - "isAttr": true - }, - { - "name": "expression", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "default", - "type": "String", - "isAttr": true - }, - { - "name": "values", - "type": "Value", - "isMany": true - }, - { - "name": "children", - "type": "ChildField", - "isMany": true - }, - { - "name": "extensionElements", - "type": "bpmn:ExtensionElements", - "isMany": true - } - ] - }, - { - "name": "FormData", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] - }, - "properties": [ - { - "name": "fields", - "type": "FormField", - "isMany": true - }, - { - "name": "businessKey", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "FormField", - "superClass": ["Element"], - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "label", - "type": "String", - "isAttr": true - }, - { - "name": "type", - "type": "String", - "isAttr": true - }, - { - "name": "datePattern", - "type": "String", - "isAttr": true - }, - { - "name": "defaultValue", - "type": "String", - "isAttr": true - }, - { - "name": "properties", - "type": "Properties" - }, - { - "name": "validation", - "type": "Validation" - }, - { - "name": "values", - "type": "Value", - "isMany": true - } - ] - }, - { - "name": "Validation", - "superClass": ["Element"], - "properties": [ - { - "name": "constraints", - "type": "Constraint", - "isMany": true - } - ] - }, - { - "name": "Constraint", - "superClass": ["Element"], - "properties": [ - { - "name": "name", - "type": "String", - "isAttr": true - }, - { - "name": "config", - "type": "String", - "isAttr": true - } - ] - }, - { - "name": "ConditionalEventDefinition", - "isAbstract": true, - "extends": ["bpmn:ConditionalEventDefinition"], - "properties": [ - { - "name": "variableName", - "isAttr": true, - "type": "String" - }, - { - "name": "variableEvent", - "isAttr": true, - "type": "String" - } - ] - }, - { - "name": "Condition", - "superClass": ["Element"], - "meta": { - "allowedIn": ["bpmn:SequenceFlow"] - }, - "properties": [ - { - "name": "id", - "type": "String", - "isAttr": true - }, - { - "name": "field", - "type": "String", - "isAttr": true - }, - { - "name": "compare", - "type": "String", - "isAttr": true - }, - { - "name": "value", - "type": "String", - "isAttr": true - }, - { - "name": "logic", - "type": "String", - "isAttr": true - }, - { - "name": "sort", - "type": "Integer", - "isAttr": true - } - ] - } - ], - "emumerations": [] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js deleted file mode 100644 index 56ef38a..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict' - -import { some } from 'min-dash' - -// const some = require('min-dash').some -// const some = some - -const ALLOWED_TYPES = { - FailedJobRetryTimeCycle: [ - 'bpmn:StartEvent', - 'bpmn:BoundaryEvent', - 'bpmn:IntermediateCatchEvent', - 'bpmn:Activity' - ], - Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], - Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] -} - -function is(element, type) { - return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) -} - -function exists(element) { - return element && element.length -} - -function includesType(collection, type) { - return ( - exists(collection) && - some(collection, function (element) { - return is(element, type) - }) - ) -} - -function anyType(element, types) { - return some(types, function (type) { - return is(element, type) - }) -} - -function isAllowed(propName, propDescriptor, newElement) { - const name = propDescriptor.name, - types = ALLOWED_TYPES[name.replace(/activiti:/, '')] - - return name === propName && anyType(newElement, types) -} - -function ActivitiModdleExtension(eventBus) { - eventBus.on( - 'property.clone', - function (context) { - const newElement = context.newElement, - propDescriptor = context.propertyDescriptor - - this.canCloneProperty(newElement, propDescriptor) - }, - this - ) -} - -ActivitiModdleExtension.$inject = ['eventBus'] - -ActivitiModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { - if (isAllowed('activiti:FailedJobRetryTimeCycle', propDescriptor, newElement)) { - return ( - includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || - includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || - is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') - ) - } - - if (isAllowed('activiti:Connector', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') - } - - if (isAllowed('activiti:Field', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') - } -} - -// module.exports = ActivitiModdleExtension; -export default ActivitiModdleExtension diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js deleted file mode 100644 index c22ca34..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - * @author igdianov - * address https://github.com/igdianov/activiti-bpmn-moddle - * */ - -import activitiExtension from './activitiExtension' - -export default { - __init__: ['ActivitiModdleExtension'], - ActivitiModdleExtension: ['type', activitiExtension] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js deleted file mode 100644 index b8c37a5..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js +++ /dev/null @@ -1,151 +0,0 @@ -'use strict' - -import { isFunction, isObject, some } from 'min-dash' - -// const isFunction = isFunction, -// isObject = isObject, -// some = some -// const isFunction = require('min-dash').isFunction, -// isObject = require('min-dash').isObject, -// some = require('min-dash').some - -const WILDCARD = '*' - -function CamundaModdleExtension(eventBus) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const self = this - - eventBus.on('moddleCopy.canCopyProperty', function (context) { - const property = context.property, - parent = context.parent - - return self.canCopyProperty(property, parent) - }) -} - -CamundaModdleExtension.$inject = ['eventBus'] - -/** - * Check wether to disallow copying property. - */ -CamundaModdleExtension.prototype.canCopyProperty = function (property, parent) { - // (1) check wether property is allowed in parent - if (isObject(property) && !isAllowedInParent(property, parent)) { - return false - } - - // (2) check more complex scenarios - - if (is(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) { - return false - } - - if (isAny(property, ['camunda:Connector', 'camunda:Field']) && !this.canHostConnector(parent)) { - return false - } - - if (is(property, 'camunda:In') && !this.canHostIn(parent)) { - return false - } -} - -CamundaModdleExtension.prototype.canHostInputOutput = function (parent) { - // allowed in camunda:Connector - const connector = getParent(parent, 'camunda:Connector') - - if (connector) { - return true - } - - // special rules inside bpmn:FlowNode - const flowNode = getParent(parent, 'bpmn:FlowNode') - - if (!flowNode) { - return false - } - - if (isAny(flowNode, ['bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent'])) { - return false - } - - return !(is(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) -} - -CamundaModdleExtension.prototype.canHostConnector = function (parent) { - const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike') - - if (is(serviceTaskLike, 'bpmn:MessageEventDefinition')) { - // only allow on throw and end events - return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') - } - - return true -} - -CamundaModdleExtension.prototype.canHostIn = function (parent) { - const callActivity = getParent(parent, 'bpmn:CallActivity') - - if (callActivity) { - return true - } - - const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition') - - if (signalEventDefinition) { - // only allow on throw and end events - return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') - } - - return true -} - -// module.exports = CamundaModdleExtension; -export default CamundaModdleExtension - -// helpers ////////// - -function is(element, type) { - return element && isFunction(element.$instanceOf) && element.$instanceOf(type) -} - -function isAny(element, types) { - return some(types, function (t) { - return is(element, t) - }) -} - -function getParent(element, type) { - if (!type) { - return element.$parent - } - - if (is(element, type)) { - return element - } - - if (!element.$parent) { - return - } - - return getParent(element.$parent, type) -} - -function isAllowedInParent(property, parent) { - // (1) find property descriptor - const descriptor = property.$type && property.$model.getTypeDescriptor(property.$type) - - const allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn - - if (!allowedIn || isWildcard(allowedIn)) { - return true - } - - // (2) check wether property has parent of allowed type - return some(allowedIn, function (type) { - return getParent(parent, type) - }) -} - -function isWildcard(allowedIn) { - return allowedIn.indexOf(WILDCARD) !== -1 -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js deleted file mode 100644 index 1da1bc7..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -import extension from './extension' - -export default { - __init__: ['camundaModdleExtension'], - camundaModdleExtension: ['type', extension] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js deleted file mode 100644 index 3dcea67..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict' - -import { some } from 'min-dash' - -// const some = some -// const some = require('min-dash').some - -const ALLOWED_TYPES = { - FailedJobRetryTimeCycle: [ - 'bpmn:StartEvent', - 'bpmn:BoundaryEvent', - 'bpmn:IntermediateCatchEvent', - 'bpmn:Activity' - ], - Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], - Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] -} - -function is(element, type) { - return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) -} - -function exists(element) { - return element && element.length -} - -function includesType(collection, type) { - return ( - exists(collection) && - some(collection, function (element) { - return is(element, type) - }) - ) -} - -function anyType(element, types) { - return some(types, function (type) { - return is(element, type) - }) -} - -function isAllowed(propName, propDescriptor, newElement) { - const name = propDescriptor.name, - types = ALLOWED_TYPES[name.replace(/flowable:/, '')] - - return name === propName && anyType(newElement, types) -} - -function FlowableModdleExtension(eventBus) { - eventBus.on( - 'property.clone', - function (context) { - const newElement = context.newElement, - propDescriptor = context.propertyDescriptor - - this.canCloneProperty(newElement, propDescriptor) - }, - this - ) -} - -FlowableModdleExtension.$inject = ['eventBus'] - -FlowableModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { - if (isAllowed('flowable:FailedJobRetryTimeCycle', propDescriptor, newElement)) { - return ( - includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || - includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || - is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') - ) - } - - if (isAllowed('flowable:Connector', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') - } - - if (isAllowed('flowable:Field', propDescriptor, newElement)) { - return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') - } -} - -// module.exports = FlowableModdleExtension; -export default FlowableModdleExtension diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js b/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js deleted file mode 100644 index 6d59b67..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * @author igdianov - * address https://github.com/igdianov/activiti-bpmn-moddle - * */ -import flowableExtension from './flowableExtension' - -export default { - __init__: ['FlowableModdleExtension'], - FlowableModdleExtension: ['type', flowableExtension] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js deleted file mode 100644 index 5e2803b..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js +++ /dev/null @@ -1,221 +0,0 @@ -import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider' -import { assign } from 'min-dash' - -export default function CustomPalette( - palette, - create, - elementFactory, - spaceTool, - lassoTool, - handTool, - globalConnect, - translate -) { - PaletteProvider.call( - this, - palette, - create, - elementFactory, - spaceTool, - lassoTool, - handTool, - globalConnect, - translate, - 2000 - ) -} - -const F = function () {} // 核心,利用空对象作为中介; -F.prototype = PaletteProvider.prototype // 核心,将父类的原型赋值给空对象F; - -// 利用中介函数重写原型链方法 -F.prototype.getPaletteEntries = function () { - const actions = {}, - create = this._create, - elementFactory = this._elementFactory, - spaceTool = this._spaceTool, - lassoTool = this._lassoTool, - handTool = this._handTool, - globalConnect = this._globalConnect, - translate = this._translate - - function createAction(type, group, className, title, options) { - function createListener(event) { - const shape = elementFactory.createShape(assign({ type: type }, options)) - - if (options) { - shape.businessObject.di.isExpanded = options.isExpanded - } - - create.start(event, shape) - } - - const shortType = type.replace(/^bpmn:/, '') - - return { - group: group, - className: className, - title: title || translate('Create {type}', { type: shortType }), - action: { - dragstart: createListener, - click: createListener - } - } - } - - function createSubprocess(event) { - const subProcess = elementFactory.createShape({ - type: 'bpmn:SubProcess', - x: 0, - y: 0, - isExpanded: true - }) - - const startEvent = elementFactory.createShape({ - type: 'bpmn:StartEvent', - x: 40, - y: 82, - parent: subProcess - }) - - create.start(event, [subProcess, startEvent], { - hints: { - autoSelect: [startEvent] - } - }) - } - - function createParticipant(event) { - create.start(event, elementFactory.createParticipantShape()) - } - - assign(actions, { - 'hand-tool': { - group: 'tools', - className: 'bpmn-icon-hand-tool', - title: '激活抓手工具', - // title: translate("Activate the hand tool"), - action: { - click: function (event) { - handTool.activateHand(event) - } - } - }, - 'lasso-tool': { - group: 'tools', - className: 'bpmn-icon-lasso-tool', - title: translate('Activate the lasso tool'), - action: { - click: function (event) { - lassoTool.activateSelection(event) - } - } - }, - 'space-tool': { - group: 'tools', - className: 'bpmn-icon-space-tool', - title: translate('Activate the create/remove space tool'), - action: { - click: function (event) { - spaceTool.activateSelection(event) - } - } - }, - 'global-connect-tool': { - group: 'tools', - className: 'bpmn-icon-connection-multi', - title: translate('Activate the global connect tool'), - action: { - click: function (event) { - globalConnect.toggle(event) - } - } - }, - 'tool-separator': { - group: 'tools', - separator: true - }, - 'create.start-event': createAction( - 'bpmn:StartEvent', - 'event', - 'bpmn-icon-start-event-none', - translate('Create StartEvent') - ), - 'create.intermediate-event': createAction( - 'bpmn:IntermediateThrowEvent', - 'event', - 'bpmn-icon-intermediate-event-none', - translate('Create Intermediate/Boundary Event') - ), - 'create.end-event': createAction( - 'bpmn:EndEvent', - 'event', - 'bpmn-icon-end-event-none', - translate('Create EndEvent') - ), - 'create.exclusive-gateway': createAction( - 'bpmn:ExclusiveGateway', - 'gateway', - 'bpmn-icon-gateway-none', - translate('Create Gateway') - ), - 'create.user-task': createAction( - 'bpmn:UserTask', - 'activity', - 'bpmn-icon-user-task', - translate('Create User Task') - ), - 'create.data-object': createAction( - 'bpmn:DataObjectReference', - 'data-object', - 'bpmn-icon-data-object', - translate('Create DataObjectReference') - ), - 'create.data-store': createAction( - 'bpmn:DataStoreReference', - 'data-store', - 'bpmn-icon-data-store', - translate('Create DataStoreReference') - ), - 'create.subprocess-expanded': { - group: 'activity', - className: 'bpmn-icon-subprocess-expanded', - title: translate('Create expanded SubProcess'), - action: { - dragstart: createSubprocess, - click: createSubprocess - } - }, - 'create.participant-expanded': { - group: 'collaboration', - className: 'bpmn-icon-participant', - title: translate('Create Pool/Participant'), - action: { - dragstart: createParticipant, - click: createParticipant - } - }, - 'create.group': createAction( - 'bpmn:Group', - 'artifact', - 'bpmn-icon-group', - translate('Create Group') - ) - }) - - return actions -} - -CustomPalette.$inject = [ - 'palette', - 'create', - 'elementFactory', - 'spaceTool', - 'lassoTool', - 'handTool', - 'globalConnect', - 'translate' -] - -CustomPalette.prototype = new F() // 核心,将 F的实例赋值给子类; -CustomPalette.prototype.constructor = CustomPalette // 修复子类CustomPalette的构造器指向,防止原型链的混乱; diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js deleted file mode 100644 index 8e4f3ac..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js +++ /dev/null @@ -1,22 +0,0 @@ -// import PaletteModule from "diagram-js/lib/features/palette"; -// import CreateModule from "diagram-js/lib/features/create"; -// import SpaceToolModule from "diagram-js/lib/features/space-tool"; -// import LassoToolModule from "diagram-js/lib/features/lasso-tool"; -// import HandToolModule from "diagram-js/lib/features/hand-tool"; -// import GlobalConnectModule from "diagram-js/lib/features/global-connect"; -// import translate from "diagram-js/lib/i18n/translate"; -// -// import PaletteProvider from "./paletteProvider"; -// -// export default { -// __depends__: [PaletteModule, CreateModule, SpaceToolModule, LassoToolModule, HandToolModule, GlobalConnectModule, translate], -// __init__: ["paletteProvider"], -// paletteProvider: ["type", PaletteProvider] -// }; - -import CustomPalette from './CustomPalette' - -export default { - __init__: ['paletteProvider'], - paletteProvider: ['type', CustomPalette] -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js b/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js deleted file mode 100644 index 7098981..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js +++ /dev/null @@ -1,213 +0,0 @@ -import { assign } from 'min-dash' - -/** - * A palette provider for BPMN 2.0 elements. - */ -export default function PaletteProvider( - palette, - create, - elementFactory, - spaceTool, - lassoTool, - handTool, - globalConnect, - translate -) { - this._palette = palette - this._create = create - this._elementFactory = elementFactory - this._spaceTool = spaceTool - this._lassoTool = lassoTool - this._handTool = handTool - this._globalConnect = globalConnect - this._translate = translate - - palette.registerProvider(this) -} - -PaletteProvider.$inject = [ - 'palette', - 'create', - 'elementFactory', - 'spaceTool', - 'lassoTool', - 'handTool', - 'globalConnect', - 'translate' -] - -PaletteProvider.prototype.getPaletteEntries = function () { - const actions = {}, - create = this._create, - elementFactory = this._elementFactory, - spaceTool = this._spaceTool, - lassoTool = this._lassoTool, - handTool = this._handTool, - globalConnect = this._globalConnect, - translate = this._translate - - function createAction(type, group, className, title, options) { - function createListener(event) { - const shape = elementFactory.createShape(assign({ type: type }, options)) - - if (options) { - shape.businessObject.di.isExpanded = options.isExpanded - } - - create.start(event, shape) - } - - const shortType = type.replace(/^bpmn:/, '') - - return { - group: group, - className: className, - title: title || translate('Create {type}', { type: shortType }), - action: { - dragstart: createListener, - click: createListener - } - } - } - - function createSubprocess(event) { - const subProcess = elementFactory.createShape({ - type: 'bpmn:SubProcess', - x: 0, - y: 0, - isExpanded: true - }) - - const startEvent = elementFactory.createShape({ - type: 'bpmn:StartEvent', - x: 40, - y: 82, - parent: subProcess - }) - - create.start(event, [subProcess, startEvent], { - hints: { - autoSelect: [startEvent] - } - }) - } - - function createParticipant(event) { - create.start(event, elementFactory.createParticipantShape()) - } - - assign(actions, { - 'hand-tool': { - group: 'tools', - className: 'bpmn-icon-hand-tool', - title: translate('Activate the hand tool'), - action: { - click: function (event) { - handTool.activateHand(event) - } - } - }, - 'lasso-tool': { - group: 'tools', - className: 'bpmn-icon-lasso-tool', - title: translate('Activate the lasso tool'), - action: { - click: function (event) { - lassoTool.activateSelection(event) - } - } - }, - 'space-tool': { - group: 'tools', - className: 'bpmn-icon-space-tool', - title: translate('Activate the create/remove space tool'), - action: { - click: function (event) { - spaceTool.activateSelection(event) - } - } - }, - 'global-connect-tool': { - group: 'tools', - className: 'bpmn-icon-connection-multi', - title: translate('Activate the global connect tool'), - action: { - click: function (event) { - globalConnect.toggle(event) - } - } - }, - 'tool-separator': { - group: 'tools', - separator: true - }, - 'create.start-event': createAction( - 'bpmn:StartEvent', - 'event', - 'bpmn-icon-start-event-none', - translate('Create StartEvent') - ), - 'create.intermediate-event': createAction( - 'bpmn:IntermediateThrowEvent', - 'event', - 'bpmn-icon-intermediate-event-none', - translate('Create Intermediate/Boundary Event') - ), - 'create.end-event': createAction( - 'bpmn:EndEvent', - 'event', - 'bpmn-icon-end-event-none', - translate('Create EndEvent') - ), - 'create.exclusive-gateway': createAction( - 'bpmn:ExclusiveGateway', - 'gateway', - 'bpmn-icon-gateway-none', - translate('Create Gateway') - ), - 'create.user-task': createAction( - 'bpmn:UserTask', - 'activity', - 'bpmn-icon-user-task', - translate('Create User Task') - ), - 'create.data-object': createAction( - 'bpmn:DataObjectReference', - 'data-object', - 'bpmn-icon-data-object', - translate('Create DataObjectReference') - ), - 'create.data-store': createAction( - 'bpmn:DataStoreReference', - 'data-store', - 'bpmn-icon-data-store', - translate('Create DataStoreReference') - ), - 'create.subprocess-expanded': { - group: 'activity', - className: 'bpmn-icon-subprocess-expanded', - title: translate('Create expanded SubProcess'), - action: { - dragstart: createSubprocess, - click: createSubprocess - } - }, - 'create.participant-expanded': { - group: 'collaboration', - className: 'bpmn-icon-participant', - title: translate('Create Pool/Participant'), - action: { - dragstart: createParticipant, - click: createParticipant - } - }, - 'create.group': createAction( - 'bpmn:Group', - 'artifact', - 'bpmn-icon-group', - translate('Create Group') - ) - }) - - return actions -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js deleted file mode 100644 index c1b99e1..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js +++ /dev/null @@ -1,44 +0,0 @@ -// import translations from "./zh"; -// -// export default function customTranslate(template, replacements) { -// replacements = replacements || {}; -// -// // Translate -// template = translations[template] || template; -// -// // Replace -// return template.replace(/{([^}]+)}/g, function(_, key) { -// let str = replacements[key]; -// if ( -// translations[replacements[key]] !== null && -// translations[replacements[key]] !== "undefined" -// ) { -// // eslint-disable-next-line no-mixed-spaces-and-tabs -// str = translations[replacements[key]]; -// // eslint-disable-next-line no-mixed-spaces-and-tabs -// } -// return str || "{" + key + "}"; -// }); -// } - -export default function customTranslate(translations) { - return function (template, replacements) { - replacements = replacements || {} - // Translate - template = translations[template] || template - - // Replace - return template.replace(/{([^}]+)}/g, function (_, key) { - let str = replacements[key] - if ( - translations[replacements[key]] !== null && - translations[replacements[key]] !== undefined - ) { - // eslint-disable-next-line no-mixed-spaces-and-tabs - str = translations[replacements[key]] - // eslint-disable-next-line no-mixed-spaces-and-tabs - } - return str || '{' + key + '}' - }) - } -} diff --git a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js b/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js deleted file mode 100644 index 777db3e..0000000 --- a/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js +++ /dev/null @@ -1,240 +0,0 @@ -/** - * This is a sample file that should be replaced with the actual translation. - * - * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available - * translations and labels to translate. - */ -export default { - // 添加部分 - 'Append EndEvent': '追加结束事件', - 'Append Gateway': '追加网关', - 'Append Task': '追加任务', - 'Append Intermediate/Boundary Event': '追加中间抛出事件/边界事件', - - 'Activate the global connect tool': '激活全局连接工具', - 'Append {type}': '添加 {type}', - 'Add Lane above': '在上面添加道', - 'Divide into two Lanes': '分割成两个道', - 'Divide into three Lanes': '分割成三个道', - 'Add Lane below': '在下面添加道', - 'Append compensation activity': '追加补偿活动', - 'Change type': '修改类型', - 'Connect using Association': '使用关联连接', - 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接', - 'Connect using DataInputAssociation': '使用数据输入关联连接', - Remove: '移除', - 'Activate the hand tool': '激活抓手工具', - 'Activate the lasso tool': '激活套索工具', - 'Activate the create/remove space tool': '激活创建/删除空间工具', - 'Create expanded SubProcess': '创建扩展子过程', - 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件', - 'Create Pool/Participant': '创建池/参与者', - 'Parallel Multi Instance': '并行多重事件', - 'Sequential Multi Instance': '时序多重事件', - DataObjectReference: '数据对象参考', - DataStoreReference: '数据存储参考', - Loop: '循环', - 'Ad-hoc': '即席', - 'Create {type}': '创建 {type}', - Task: '任务', - 'Send Task': '发送任务', - 'Receive Task': '接收任务', - 'User Task': '用户任务', - 'Manual Task': '手工任务', - 'Business Rule Task': '业务规则任务', - 'Service Task': '服务任务', - 'Script Task': '脚本任务', - 'Call Activity': '调用活动', - 'Sub Process (collapsed)': '子流程(折叠的)', - 'Sub Process (expanded)': '子流程(展开的)', - 'Start Event': '开始事件', - StartEvent: '开始事件', - 'Intermediate Throw Event': '中间事件', - 'End Event': '结束事件', - EndEvent: '结束事件', - 'Create StartEvent': '创建开始事件', - 'Create EndEvent': '创建结束事件', - 'Create Task': '创建任务', - 'Create User Task': '创建用户任务', - 'Create Gateway': '创建网关', - 'Create DataObjectReference': '创建数据对象', - 'Create DataStoreReference': '创建数据存储', - 'Create Group': '创建分组', - 'Create Intermediate/Boundary Event': '创建中间/边界事件', - 'Message Start Event': '消息开始事件', - 'Timer Start Event': '定时开始事件', - 'Conditional Start Event': '条件开始事件', - 'Signal Start Event': '信号开始事件', - 'Error Start Event': '错误开始事件', - 'Escalation Start Event': '升级开始事件', - 'Compensation Start Event': '补偿开始事件', - 'Message Start Event (non-interrupting)': '消息开始事件(非中断)', - 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)', - 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)', - 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)', - 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)', - 'Message Intermediate Catch Event': '消息中间捕获事件', - 'Message Intermediate Throw Event': '消息中间抛出事件', - 'Timer Intermediate Catch Event': '定时中间捕获事件', - 'Escalation Intermediate Throw Event': '升级中间抛出事件', - 'Conditional Intermediate Catch Event': '条件中间捕获事件', - 'Link Intermediate Catch Event': '链接中间捕获事件', - 'Link Intermediate Throw Event': '链接中间抛出事件', - 'Compensation Intermediate Throw Event': '补偿中间抛出事件', - 'Signal Intermediate Catch Event': '信号中间捕获事件', - 'Signal Intermediate Throw Event': '信号中间抛出事件', - 'Message End Event': '消息结束事件', - 'Escalation End Event': '定时结束事件', - 'Error End Event': '错误结束事件', - 'Cancel End Event': '取消结束事件', - 'Compensation End Event': '补偿结束事件', - 'Signal End Event': '信号结束事件', - 'Terminate End Event': '终止结束事件', - 'Message Boundary Event': '消息边界事件', - 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)', - 'Timer Boundary Event': '定时边界事件', - 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)', - 'Escalation Boundary Event': '升级边界事件', - 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)', - 'Conditional Boundary Event': '条件边界事件', - 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)', - 'Error Boundary Event': '错误边界事件', - 'Cancel Boundary Event': '取消边界事件', - 'Signal Boundary Event': '信号边界事件', - 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)', - 'Compensation Boundary Event': '补偿边界事件', - 'Exclusive Gateway': '互斥网关', - 'Parallel Gateway': '并行网关', - 'Inclusive Gateway': '相容网关', - 'Complex Gateway': '复杂网关', - 'Event based Gateway': '事件网关', - Transaction: '转运', - 'Sub Process': '子流程', - 'Event Sub Process': '事件子流程', - 'Collapsed Pool': '折叠池', - 'Expanded Pool': '展开池', - - // Errors - 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类', - 'no shape type specified': '没有指定的形状类型', - 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类', - 'out of bounds release': 'out of bounds release', - 'more than {count} child lanes': '子道大于{count} ', - 'element required': '元素不能为空', - 'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范', - 'no diagram to display': '没有可展示的流程图', - 'no process or collaboration to display': '没有可展示的流程/协作', - 'element {element} referenced by {referenced}#{property} not yet drawn': - '由{referenced}#{property}引用的{element}元素仍未绘制', - 'already rendered {element}': '{element} 已被渲染', - 'failed to import {element}': '导入{element}失败', - //属性面板的参数 - Id: '编号', - Name: '名称', - General: '常规', - Details: '详情', - 'Message Name': '消息名称', - Message: '消息', - Initiator: '创建者', - 'Asynchronous Continuations': '持续异步', - 'Asynchronous Before': '异步前', - 'Asynchronous After': '异步后', - 'Job Configuration': '工作配置', - Exclusive: '排除', - 'Job Priority': '工作优先级', - 'Retry Time Cycle': '重试时间周期', - Documentation: '文档', - 'Element Documentation': '元素文档', - 'History Configuration': '历史配置', - 'History Time To Live': '历史的生存时间', - Forms: '表单', - 'Form Key': '表单key', - 'Form Fields': '表单字段', - 'Business Key': '业务key', - 'Form Field': '表单字段', - ID: '编号', - Type: '类型', - Label: '名称', - 'Default Value': '默认值', - 'Default Flow': '默认流转路径', - 'Conditional Flow': '条件流转路径', - 'Sequence Flow': '普通流转路径', - Validation: '校验', - 'Add Constraint': '添加约束', - Config: '配置', - Properties: '属性', - 'Add Property': '添加属性', - Value: '值', - Listeners: '监听器', - 'Execution Listener': '执行监听', - 'Event Type': '事件类型', - 'Listener Type': '监听器类型', - 'Java Class': 'Java类', - Expression: '表达式', - 'Must provide a value': '必须提供一个值', - 'Delegate Expression': '代理表达式', - Script: '脚本', - 'Script Format': '脚本格式', - 'Script Type': '脚本类型', - 'Inline Script': '内联脚本', - 'External Script': '外部脚本', - Resource: '资源', - 'Field Injection': '字段注入', - Extensions: '扩展', - 'Input/Output': '输入/输出', - 'Input Parameters': '输入参数', - 'Output Parameters': '输出参数', - Parameters: '参数', - 'Output Parameter': '输出参数', - 'Timer Definition Type': '定时器定义类型', - 'Timer Definition': '定时器定义', - Date: '日期', - Duration: '持续', - Cycle: '循环', - Signal: '信号', - 'Signal Name': '信号名称', - Escalation: '升级', - Error: '错误', - 'Link Name': '链接名称', - Condition: '条件名称', - 'Variable Name': '变量名称', - 'Variable Event': '变量事件', - 'Specify more than one variable change event as a comma separated list.': - '多个变量事件以逗号隔开', - 'Wait for Completion': '等待完成', - 'Activity Ref': '活动参考', - 'Version Tag': '版本标签', - Executable: '可执行文件', - 'External Task Configuration': '扩展任务配置', - 'Task Priority': '任务优先级', - External: '外部', - Connector: '连接器', - 'Must configure Connector': '必须配置连接器', - 'Connector Id': '连接器编号', - Implementation: '实现方式', - 'Field Injections': '字段注入', - Fields: '字段', - 'Result Variable': '结果变量', - Topic: '主题', - 'Configure Connector': '配置连接器', - 'Input Parameter': '输入参数', - Assignee: '代理人', - 'Candidate Users': '候选用户', - 'Candidate Groups': '候选组', - 'Due Date': '到期时间', - 'Follow Up Date': '跟踪日期', - Priority: '优先级', - 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': - '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', - 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': - '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', - Variables: '变量', - 'Candidate Starter Configuration': '候选人起动器配置', - 'Candidate Starter Groups': '候选人起动器组', - 'This maps to the process definition key.': '这映射到流程定义键。', - 'Candidate Starter Users': '候选人起动器的用户', - 'Specify more than one user as a comma separated list.': '指定多个用户作为逗号分隔的列表。', - 'Tasklist Configuration': 'Tasklist配置', - Startable: '启动', - 'Specify more than one group as a comma separated list.': '指定多个组作为逗号分隔的列表。' -} diff --git a/src/components/bpmnProcessDesigner/package/index.ts b/src/components/bpmnProcessDesigner/package/index.ts deleted file mode 100644 index ce44a3c..0000000 --- a/src/components/bpmnProcessDesigner/package/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import MyProcessDesigner from './designer' -import MyProcessPenal from './penal' -import MyProcessViewer from './designer/index2' - -import './theme/index.scss' -import 'bpmn-js/dist/assets/diagram-js.css' -import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css' -import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css' -import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' - -export { MyProcessDesigner, MyProcessPenal, MyProcessViewer } diff --git a/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue b/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue deleted file mode 100644 index 38e4ba1..0000000 --- a/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue deleted file mode 100644 index 74d8b00..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue +++ /dev/null @@ -1,208 +0,0 @@ - - diff --git a/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue b/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue deleted file mode 100644 index c832bdd..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue +++ /dev/null @@ -1,181 +0,0 @@ - - diff --git a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue deleted file mode 100644 index 2429bc9..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue b/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue deleted file mode 100644 index 198f0f3..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue +++ /dev/null @@ -1,463 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/index.js b/src/components/bpmnProcessDesigner/package/penal/index.js deleted file mode 100644 index 7fa5617..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import MyPropertiesPanel from './PropertiesPanel.vue' - -MyPropertiesPanel.install = function (Vue) { - Vue.component(MyPropertiesPanel.name, MyPropertiesPanel) -} - -export default MyPropertiesPanel diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue b/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue deleted file mode 100644 index 5c2db5a..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue +++ /dev/null @@ -1,400 +0,0 @@ - - diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue b/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue deleted file mode 100644 index e4201b5..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue +++ /dev/null @@ -1,448 +0,0 @@ - - diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/template.js b/src/components/bpmnProcessDesigner/package/penal/listeners/template.js deleted file mode 100644 index 430dc64..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/listeners/template.js +++ /dev/null @@ -1,178 +0,0 @@ -export const template = (isTaskListener) => { - return ` -
- - - - - - - - -
- 添加监听器 -
- - - - - - - - - - - - - - - - - - - - - - - - - - ${ - isTaskListener - ? "" + - "" + - "" + - "" + - "" + - "" + - '' + - '' + - "" + - "" + - '' - : '' - } - - -

- 注入字段: - 添加字段 -

- - - - - - - - - - -
- 取 消 - 保 存 -
-
- - - - - - - - - - - - - - - - - - - - - -
- ` -} diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts b/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts deleted file mode 100644 index 5f46abd..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts +++ /dev/null @@ -1,62 +0,0 @@ -// 初始化表单数据 -export function initListenerForm(listener) { - let self = { - ...listener - } - if (listener.script) { - self = { - ...listener, - ...listener.script, - scriptType: listener.script.resource ? 'externalScript' : 'inlineScript' - } - } - if (listener.event === 'timeout' && listener.eventDefinitions) { - if (listener.eventDefinitions.length) { - let k = '' - for (const key in listener.eventDefinitions[0]) { - console.log(listener.eventDefinitions, key) - if (key.indexOf('time') !== -1) { - k = key - self.eventDefinitionType = key.replace('time', '').toLowerCase() - } - } - console.log(k) - self.eventTimeDefinitions = listener.eventDefinitions[0][k].body - } - } - return self -} - -export function initListenerType(listener) { - let listenerType - if (listener.class) listenerType = 'classListener' - if (listener.expression) listenerType = 'expressionListener' - if (listener.delegateExpression) listenerType = 'delegateExpressionListener' - if (listener.script) listenerType = 'scriptListener' - return { - ...JSON.parse(JSON.stringify(listener)), - ...(listener.script ?? {}), - listenerType: listenerType - } -} - -export const listenerType = { - classListener: 'Java 类', - expressionListener: '表达式', - delegateExpressionListener: '代理表达式', - scriptListener: '脚本' -} - -export const eventType = { - create: '创建', - assignment: '指派', - complete: '完成', - delete: '删除', - update: '更新', - timeout: '超时' -} - -export const fieldType = { - string: '字符串', - expression: '表达式' -} diff --git a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue b/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue deleted file mode 100644 index 2e5bc8a..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue +++ /dev/null @@ -1,252 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue b/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue deleted file mode 100644 index 2c55481..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue b/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue deleted file mode 100644 index f1670ff..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue +++ /dev/null @@ -1,167 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue b/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue deleted file mode 100644 index 2d47b8f..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue +++ /dev/null @@ -1,111 +0,0 @@ - - diff --git a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue deleted file mode 100644 index 23e750a..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue deleted file mode 100644 index ef2ba0b..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue deleted file mode 100644 index bacdec0..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue deleted file mode 100644 index 725335e..0000000 --- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - diff --git a/src/components/bpmnProcessDesigner/package/theme/element-variables.scss b/src/components/bpmnProcessDesigner/package/theme/element-variables.scss deleted file mode 100644 index 49bd326..0000000 --- a/src/components/bpmnProcessDesigner/package/theme/element-variables.scss +++ /dev/null @@ -1,70 +0,0 @@ -/* 改变主题色变量 */ -$--color-primary: #1890ff; -$--color-danger: #ff4d4f; - -/* 改变 icon 字体路径变量,必需 */ -$--font-path: '~element-ui/lib/theme-chalk/fonts'; - -@import '~element-ui/packages/theme-chalk/src/index'; - -.el-table td, -.el-table th { - color: #333; -} -.el-drawer__header { - padding: 16px 16px 8px 16px; - margin: 0; - line-height: 24px; - font-size: 18px; - color: #303133; - box-sizing: border-box; - border-bottom: 1px solid #e8e8e8; -} -div[class^='el-drawer']:focus, -span:focus { - outline: none; -} -.el-drawer__body { - box-sizing: border-box; - padding: 16px; - width: 100%; - overflow-y: auto; -} - -.el-dialog { - margin-top: 50vh !important; - transform: translateY(-50%); - overflow: hidden; -} -.el-dialog__wrapper { - overflow: hidden; - max-height: 100vh; -} -.el-dialog__header { - padding: 16px 16px 8px 16px; - box-sizing: border-box; - border-bottom: 1px solid #e8e8e8; -} -.el-dialog__body { - padding: 16px; - max-height: 80vh; - box-sizing: border-box; - overflow-y: auto; -} -.el-dialog__footer { - padding: 16px; - box-sizing: border-box; - border-top: 1px solid #e8e8e8; -} -.el-dialog__close { - font-weight: 600; -} -.el-select { - width: 100%; -} -.el-divider:not(.el-divider--horizontal) { - margin: 0 8px; -} -.el-divider.el-divider--horizontal { - margin: 16px 0; -} diff --git a/src/components/bpmnProcessDesigner/package/theme/index.scss b/src/components/bpmnProcessDesigner/package/theme/index.scss deleted file mode 100644 index 2e60fad..0000000 --- a/src/components/bpmnProcessDesigner/package/theme/index.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import './process-designer.scss'; -@import './process-panel.scss'; diff --git a/src/components/bpmnProcessDesigner/package/theme/process-designer.scss b/src/components/bpmnProcessDesigner/package/theme/process-designer.scss deleted file mode 100644 index 6af945d..0000000 --- a/src/components/bpmnProcessDesigner/package/theme/process-designer.scss +++ /dev/null @@ -1,161 +0,0 @@ -@import 'bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css'; -@import 'bpmn-js-token-simulation/assets/css/font-awesome.min.css'; -@import 'bpmn-js-token-simulation/assets/css/normalize.css'; - -// 边框被 token-simulation 样式覆盖了 -.djs-palette { - background: var(--palette-background-color); - border: solid 1px var(--palette-border-color) !important; - border-radius: 2px; -} - -.my-process-designer { - display: flex; - flex-direction: column; - width: 100%; - height: 100%; - box-sizing: border-box; - .my-process-designer__header { - width: 100%; - min-height: 36px; - .el-button { - text-align: center; - } - .el-button-group { - margin: 4px; - } - .el-tooltip__popper { - .el-button { - width: 100%; - text-align: left; - padding-left: 8px; - padding-right: 8px; - } - .el-button:hover { - background: rgba(64, 158, 255, 0.8); - color: #ffffff; - } - } - .align { - position: relative; - i { - &:after { - content: '|'; - position: absolute; - // transform: rotate(90deg) translate(200%, 60%); - transform: rotate(180deg) translate(271%, -10%); - } - } - } - .align.align-left i { - transform: rotate(90deg); - } - .align.align-right i { - transform: rotate(-90deg); - } - .align.align-top i { - transform: rotate(180deg); - } - .align.align-bottom i { - transform: rotate(0deg); - } - .align.align-center i { - transform: rotate(0deg); - &:after { - // transform: rotate(90deg) translate(0, 60%); - transform: rotate(0deg) translate(-0%, -5%); - } - } - .align.align-middle i { - transform: rotate(-90deg); - &:after { - // transform: rotate(90deg) translate(0, 60%); - transform: rotate(0deg) translate(0, -10%); - } - } - } - .my-process-designer__container { - display: inline-flex; - width: 100%; - flex: 1; - .my-process-designer__canvas { - flex: 1; - height: 100%; - position: relative; - background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') - repeat !important; - div.toggle-mode { - display: none; - } - } - .my-process-designer__property-panel { - height: 100%; - overflow: scroll; - overflow-y: auto; - z-index: 10; - * { - box-sizing: border-box; - } - } - svg { - width: 100%; - height: 100%; - min-height: 100%; - overflow: hidden; - } - } -} - -//侧边栏配置 -// .djs-palette .two-column .open { -.open { - // .djs-palette.open { - .djs-palette-entries { - div[class^='bpmn-icon-']:before, - div[class*='bpmn-icon-']:before { - line-height: unset; - } - div.entry { - position: relative; - } - div.entry:hover { - &::after { - width: max-content; - content: attr(title); - vertical-align: text-bottom; - position: absolute; - right: -10px; - top: 0; - bottom: 0; - overflow: hidden; - transform: translateX(100%); - font-size: 0.5em; - display: inline-block; - text-decoration: inherit; - font-variant: normal; - text-transform: none; - background: #fafafa; - box-shadow: 0 0 6px #eeeeee; - border: 1px solid #cccccc; - box-sizing: border-box; - padding: 0 16px; - border-radius: 4px; - z-index: 100; - } - } - } -} -pre { - margin: 0; - height: 100%; - overflow: hidden; - max-height: calc(80vh - 32px); - overflow-y: auto; -} -.hljs { - word-break: break-word; - white-space: pre-wrap; -} -.hljs * { - font-family: Consolas, Monaco, monospace; -} diff --git a/src/components/bpmnProcessDesigner/package/theme/process-panel.scss b/src/components/bpmnProcessDesigner/package/theme/process-panel.scss deleted file mode 100644 index f840cdd..0000000 --- a/src/components/bpmnProcessDesigner/package/theme/process-panel.scss +++ /dev/null @@ -1,107 +0,0 @@ -.process-panel__container { - box-sizing: border-box; - padding: 0 8px; - border-left: 1px solid #eeeeee; - box-shadow: 0 0 8px #cccccc; - max-height: 100%; - overflow-y: scroll; -} -.panel-tab__title { - font-weight: 600; - padding: 0 8px; - font-size: 1.1em; - line-height: 1.2em; - i { - margin-right: 8px; - font-size: 1.2em; - } -} -.panel-tab__content { - width: 100%; - box-sizing: border-box; - border-top: 1px solid #eeeeee; - padding: 8px 16px; - .panel-tab__content--title { - display: flex; - justify-content: space-between; - padding-bottom: 8px; - span { - flex: 1; - text-align: left; - } - } -} -.element-property { - width: 100%; - display: flex; - align-items: flex-start; - margin: 8px 0; - .element-property__label { - display: block; - width: 90px; - text-align: right; - overflow: hidden; - padding-right: 12px; - line-height: 32px; - font-size: 14px; - box-sizing: border-box; - } - .element-property__value { - flex: 1; - line-height: 32px; - } - .el-form-item { - width: 100%; - margin-bottom: 0; - padding-bottom: 18px; - } -} -.list-property { - flex-direction: column; - .element-listener-item { - width: 100%; - display: inline-grid; - grid-template-columns: 16px auto 32px 32px; - grid-column-gap: 8px; - } - .element-listener-item + .element-listener-item { - margin-top: 8px; - } -} -.listener-filed__title { - display: inline-flex; - width: 100%; - justify-content: space-between; - align-items: center; - margin-top: 0; - span { - width: 200px; - text-align: left; - font-size: 14px; - } - i { - margin-right: 8px; - } -} -.element-drawer__button { - margin-top: 8px; - width: 100%; - display: inline-flex; - justify-content: space-around; -} -.element-drawer__button > .el-button { - width: 100%; -} - -.el-collapse-item__content { - padding-bottom: 0; -} -.el-input.is-disabled .el-input__inner { - color: #999999; -} -.el-form-item.el-form-item--mini { - margin-bottom: 0; - & + .el-form-item { - margin-top: 16px; - } -} diff --git a/src/components/bpmnProcessDesigner/package/utils.ts b/src/components/bpmnProcessDesigner/package/utils.ts deleted file mode 100644 index bb6c5d5..0000000 --- a/src/components/bpmnProcessDesigner/package/utils.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { toRaw } from 'vue' -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 - }) - bpmnInstances().modeling.updateProperties(toRaw(element), { - extensionElements: extensions - }) -} - -// 创建一个id -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 -} diff --git a/src/components/bpmnProcessDesigner/src/highlight/index.js b/src/components/bpmnProcessDesigner/src/highlight/index.js deleted file mode 100644 index 5df38c9..0000000 --- a/src/components/bpmnProcessDesigner/src/highlight/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const hljs = require('highlight.js/lib/core') -hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')) -hljs.registerLanguage('json', require('highlight.js/lib/languages/json')) - -module.exports = hljs diff --git a/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js b/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js deleted file mode 100644 index e876031..0000000 --- a/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js +++ /dev/null @@ -1,14 +0,0 @@ -import BpmnRenderer from 'bpmn-js/lib/draw/BpmnRenderer' - -export default function CustomRenderer(config, eventBus, styles, pathMap, canvas, textRenderer) { - BpmnRenderer.call(this, config, eventBus, styles, pathMap, canvas, textRenderer, 2000) - - this.handlers['label'] = function () { - return null - } -} - -const F = function () {} // 核心,利用空对象作为中介; -F.prototype = BpmnRenderer.prototype // 核心,将父类的原型赋值给空对象F; -CustomRenderer.prototype = new F() // 核心,将 F的实例赋值给子类; -CustomRenderer.prototype.constructor = CustomRenderer // 修复子类CustomRenderer的构造器指向,防止原型链的混乱; diff --git a/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js b/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js deleted file mode 100644 index 79d8bd0..0000000 --- a/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import CustomRenderer from './CustomRenderer' - -export default { - __init__: ['customRenderer'], - customRenderer: ['type', CustomRenderer] -} diff --git a/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js b/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js deleted file mode 100644 index 9fa1d14..0000000 --- a/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js +++ /dev/null @@ -1,16 +0,0 @@ -import BpmnRules from 'bpmn-js/lib/features/rules/BpmnRules' -import inherits from 'inherits' - -export default function CustomRules(eventBus) { - BpmnRules.call(this, eventBus) -} - -inherits(CustomRules, BpmnRules) - -CustomRules.prototype.canDrop = function () { - return false -} - -CustomRules.prototype.canMove = function () { - return false -} diff --git a/src/components/bpmnProcessDesigner/src/modules/rules/index.js b/src/components/bpmnProcessDesigner/src/modules/rules/index.js deleted file mode 100644 index 12cf05a..0000000 --- a/src/components/bpmnProcessDesigner/src/modules/rules/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import CustomRules from './CustomRules' - -export default { - __init__: ['customRules'], - customRules: ['type', CustomRules] -} diff --git a/src/components/bpmnProcessDesigner/src/translations.ts b/src/components/bpmnProcessDesigner/src/translations.ts deleted file mode 100644 index 5f9b9a5..0000000 --- a/src/components/bpmnProcessDesigner/src/translations.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This is a sample file that should be replaced with the actual translation. - * - * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available - * translations and labels to translate. - */ -export default { - 'Exclusive Gateway': 'Exklusives Gateway', - 'Parallel Gateway': 'Paralleles Gateway', - 'Inclusive Gateway': 'Inklusives Gateway', - 'Complex Gateway': 'Komplexes Gateway', - 'Event based Gateway': 'Ereignis-basiertes Gateway', - 'Message Start Event': '消息启动事件', - 'Timer Start Event': '定时启动事件', - 'Conditional Start Event': '条件启动事件', - 'Signal Start Event': '信号启动事件', - 'Error Start Event': '错误启动事件', - 'Escalation Start Event': '升级启动事件', - 'Compensation Start Event': '补偿启动事件', - 'Message Start Event (non-interrupting)': '消息启动事件 (非中断)', - 'Timer Start Event (non-interrupting)': '定时启动事件 (非中断)', - 'Conditional Start Event (non-interrupting)': '条件启动事件 (非中断)', - 'Signal Start Event (non-interrupting)': '信号启动事件 (非中断)', - 'Escalation Start Event (non-interrupting)': '升级启动事件 (非中断)' -} diff --git a/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js b/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js deleted file mode 100644 index bb71d44..0000000 --- a/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js +++ /dev/null @@ -1,39 +0,0 @@ -//outside.js - -const ctx = '@@clickoutsideContext' - -export default { - bind(el, binding, vnode) { - const ele = el - const documentHandler = (e) => { - if (!vnode.context || ele.contains(e.target)) { - return false - } - // 调用指令回调 - if (binding.expression) { - vnode.context[el[ctx].methodName](e) - } else { - el[ctx].bindingFn(e) - } - } - // 将方法添加到ele - ele[ctx] = { - documentHandler, - methodName: binding.expression, - bindingFn: binding.value - } - - setTimeout(() => { - document.addEventListener('touchstart', documentHandler) // 为document绑定事件 - }) - }, - update(el, binding) { - const ele = el - ele[ctx].methodName = binding.expression - ele[ctx].bindingFn = binding.value - }, - unbind(el) { - document.removeEventListener('touchstart', el[ctx].documentHandler) // 解绑 - delete el[ctx] - } -} diff --git a/src/components/bpmnProcessDesigner/src/utils/index.js b/src/components/bpmnProcessDesigner/src/utils/index.js deleted file mode 100644 index 7d970ec..0000000 --- a/src/components/bpmnProcessDesigner/src/utils/index.js +++ /dev/null @@ -1,10 +0,0 @@ -export function debounce(fn, delay = 500) { - let timer - return function (...args) { - if (timer) { - clearTimeout(timer) - timer = null - } - timer = setTimeout(fn.bind(this, ...args), delay) - } -} diff --git a/src/components/bpmnProcessDesigner/src/utils/xml2json.js b/src/components/bpmnProcessDesigner/src/utils/xml2json.js deleted file mode 100644 index fe1a52f..0000000 --- a/src/components/bpmnProcessDesigner/src/utils/xml2json.js +++ /dev/null @@ -1,50 +0,0 @@ -function xmlStr2XmlObj(xmlStr) { - let xmlObj = {} - if (document.all) { - const xmlDom = new window.ActiveXObject('Microsoft.XMLDOM') - xmlDom.loadXML(xmlStr) - xmlObj = xmlDom - } else { - xmlObj = new DOMParser().parseFromString(xmlStr, 'text/xml') - } - return xmlObj -} - -function xml2json(xml) { - try { - let obj = {} - if (xml.children.length > 0) { - for (let i = 0; i < xml.children.length; i++) { - const item = xml.children.item(i) - const nodeName = item.nodeName - if (typeof obj[nodeName] == 'undefined') { - obj[nodeName] = xml2json(item) - } else { - if (typeof obj[nodeName].push == 'undefined') { - const old = obj[nodeName] - obj[nodeName] = [] - obj[nodeName].push(old) - } - obj[nodeName].push(xml2json(item)) - } - } - } else { - obj = xml.textContent - } - return obj - } catch (e) { - console.log(e.message) - } -} - -function xmlObj2json(xml) { - const xmlObj = xmlStr2XmlObj(xml) - console.log(xmlObj) - let jsonObj = {} - if (xmlObj.childNodes.length > 0) { - jsonObj = xml2json(xmlObj) - } - return jsonObj -} - -export default xmlObj2json diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index baaf714..73e564c 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -103,7 +103,7 @@ export default { small: '小' }, login: { - welcome: '欢迎使用本系统', + welcome: '欢迎使用yshop-pro电商系统', message: '开箱即用的商城管理后台意象商城管理系统', tenantname: '租户名称', username: '用户名', diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 05bf818..6edef2d 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -225,111 +225,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ noTagsView: true } }, - { - path: '/bpm', - component: Layout, - name: 'bpm', - meta: { - hidden: true - }, - children: [ - { - path: '/manager/form/edit', - component: () => import('@/views/bpm/form/editor/index.vue'), - name: 'BpmFormEditor', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '设计流程表单', - activeMenu: '/bpm/manager/form' - } - }, - { - path: '/manager/model/edit', - component: () => import('@/views/bpm/model/editor/index.vue'), - name: 'BpmModelEditor', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '设计流程', - activeMenu: '/bpm/manager/model' - } - }, - { - path: '/manager/definition', - component: () => import('@/views/bpm/definition/index.vue'), - name: 'BpmProcessDefinition', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '流程定义', - activeMenu: '/bpm/manager/model' - } - }, - { - path: '/manager/task-assign-rule', - component: () => import('@/views/bpm/taskAssignRule/index.vue'), - name: 'BpmTaskAssignRuleList', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '任务分配规则' - } - }, - { - path: '/process-instance/create', - component: () => import('@/views/bpm/processInstance/create/index.vue'), - name: 'BpmProcessInstanceCreate', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '发起流程', - activeMenu: 'bpm/processInstance/create' - } - }, - { - path: '/process-instance/detail', - component: () => import('@/views/bpm/processInstance/detail/index.vue'), - name: 'BpmProcessInstanceDetail', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '流程详情', - activeMenu: 'bpm/processInstance/detail' - } - }, - { - path: '/bpm/oa/leave/create', - component: () => import('@/views/bpm/oa/leave/create.vue'), - name: 'OALeaveCreate', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '发起 OA 请假', - activeMenu: '/bpm/oa/leave' - } - }, - { - path: '/bpm/oa/leave/detail', - component: () => import('@/views/bpm/oa/leave/detail.vue'), - name: 'OALeaveDetail', - meta: { - noCache: true, - hidden: true, - canTo: true, - title: '查看 OA 请假', - activeMenu: '/bpm/oa/leave' - } - } - ] - }, + { path: '/yshop/materia/index', component: () => import('@/components/Materials/src/EditorMaterials.vue'), @@ -339,26 +235,9 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, // canTo: true, title: '上传图片', - // activeMenu: '/bpm/oa/leave' }, - }, - { - path: '/property', - component: Layout, - name: 'property', - meta: { - hidden: true - }, - children: [ - { - path: 'value/:propertyId(\\d+)', - component: () => import('@/views/mall/product/property/value/index.vue'), - name: 'ProductPropertyValue', - meta: { title: '商品属性值', icon: '', activeMenu: '/product/property' } - } - ] - } + } ] export default remainingRouter diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index 8dbefd2..7895708 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -19,11 +19,11 @@ enter-active-class="animate__animated animate__bounceInLeft" tag="div" > - -
{{ t('login.welcome') }}
-
+ +
{{ t('login.welcome') }}
+
@@ -41,19 +41,20 @@ +
- - - - - + + + - +
@@ -68,7 +69,8 @@ import { useAppStore } from '@/store/modules/app' //import { ThemeSwitch } from '@/layout/components/ThemeSwitch' //import { LocaleDropdown } from '@/layout/components/LocaleDropdown' -import { LoginForm, MobileForm, QrCodeForm, RegisterForm, SSOLoginVue } from './components' +import { LoginForm } from './components' +// import { LoginForm, MobileForm, QrCodeForm, RegisterForm, SSOLoginVue } from './components' const { t } = useI18n() const appStore = useAppStore() diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index f17587e..ad8f99b 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -9,7 +9,7 @@ label-width="120px" size="large" > - + > @@ -58,9 +58,6 @@ {{ t('login.remember') }} - - {{ t('login.forgetPassword') }} - @@ -82,49 +79,7 @@ mode="pop" @success="handleLogin" /> - - - - - - - - - + @@ -142,7 +97,6 @@ import { LoginStateEnum, useFormValid, useLoginState } from './useLogin' const { t } = useI18n() //const message = useMessage() -// const iconHouse = useIcon({ icon: 'ep:house' }) const iconAvatar = useIcon({ icon: 'ep:avatar' }) const iconLock = useIcon({ icon: 'ep:lock' }) const formLogin = ref() @@ -175,12 +129,7 @@ const loginData = reactive({ } }) -// const socialList = [ -// { icon: 'ant-design:github-filled', type: 0 }, -// { icon: 'ant-design:wechat-filled', type: 30 }, -// { icon: 'ant-design:alipay-circle-filled', type: 0 }, -// { icon: 'ant-design:dingtalk-circle-filled', type: 20 } -// ] + // 获取验证码 const getCode = async () => { diff --git a/src/views/infra/job/index.vue b/src/views/infra/job/index.vue index 8bb3ba3..b0232e6 100644 --- a/src/views/infra/job/index.vue +++ b/src/views/infra/job/index.vue @@ -106,7 +106,7 @@ 删除 diff --git a/src/views/mall/order/express/ExpressSet.vue b/src/views/mall/order/express/ExpressSet.vue index 2851950..bda0511 100644 --- a/src/views/mall/order/express/ExpressSet.vue +++ b/src/views/mall/order/express/ExpressSet.vue @@ -11,12 +11,16 @@ - + 确 定 取 消 + + yshop-pro系统使用的第三方快递鸟api实现了快递查询与电子面单发货,注册地址请点击, +
我注册! + @@ -40,23 +44,6 @@ const formRules = reactive({ }) const formRef = ref() // 表单 Ref -// /** 打开弹窗 */ -// const open = async (type: string, id?: number) => { -// // dialogVisible.value = true -// dialogTitle.value = t('action.' + type) -// formType.value = type -// resetForm() -// // 修改时,设置数据 -// if (id) { -// formLoading.value = true -// try { -// formData.value = await ExpressApi.getExpressSet() -// } finally { -// formLoading.value = false -// } -// } -// } -//defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ //const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 diff --git a/src/views/mall/product/brand/BrandForm.vue b/src/views/mall/product/brand/BrandForm.vue index d791070..6acba49 100644 --- a/src/views/mall/product/brand/BrandForm.vue +++ b/src/views/mall/product/brand/BrandForm.vue @@ -11,7 +11,8 @@ - + + diff --git a/src/views/mall/product/category/CategoryForm.vue b/src/views/mall/product/category/CategoryForm.vue index 6793717..7252b5f 100644 --- a/src/views/mall/product/category/CategoryForm.vue +++ b/src/views/mall/product/category/CategoryForm.vue @@ -23,9 +23,6 @@ - diff --git a/src/views/system/sms/channel/SmsChannelForm.vue b/src/views/system/sms/channel/SmsChannelForm.vue index c526739..8f4bc68 100644 --- a/src/views/system/sms/channel/SmsChannelForm.vue +++ b/src/views/system/sms/channel/SmsChannelForm.vue @@ -109,7 +109,7 @@ const submitForm = async () => { // 提交请求 formLoading.value = true try { - const data = unref(formRef)?.formModel as SmsChannelApi.SmsChannelVO + const data = (formData.value as unknown) as SmsChannelApi.SmsChannelVO if (formType.value === 'create') { await SmsChannelApi.createSmsChannel(data) message.success(t('common.createSuccess'))