diff --git a/ruoyi-admin/src/main/resources/static/stencilset.json b/ruoyi-admin/src/main/resources/static/stencilset.json deleted file mode 100644 index e58c64b35..000000000 --- a/ruoyi-admin/src/main/resources/static/stencilset.json +++ /dev/null @@ -1,1998 +0,0 @@ -{ - "title" : "流程编辑", - "namespace" : "http://b3mn.org/stencilset/bpmn2.0#", - "description" : "BPMN 流程编辑", - "propertyPackages" : [ { - "name" : "process_idpackage", - "properties" : [ { - "id" : "process_id", - "type" : "String", - "title" : "\u6d41\u7a0b\u6807\u8bc6", - "value" : "process", - "description" : "\u5b9a\u4e49\u6d41\u7a0b\u7684\u552f\u4e00\u6807\u8bc6\u7b26.", - "popular" : true - } ] - }, { - "name" : "overrideidpackage", - "properties" : [ { - "id" : "overrideid", - "type" : "String", - "title" : "\u7f16\u53f7", - "value" : "", - "description" : "\u5143\u7d20\u7684\u552f\u4e00\u6807\u8bc6\u7b26.", - "popular" : true - } ] - }, { - "name" : "namepackage", - "properties" : [ { - "id" : "name", - "type" : "String", - "title" : "\u540d\u79f0", - "value" : "", - "description" : "BPMN\u5143\u7d20\u7684\u63cf\u8ff0\u6027\u540d\u79f0.", - "popular" : true, - "refToView" : "text_name" - } ] - }, { - "name" : "documentationpackage", - "properties" : [ { - "id" : "documentation", - "type" : "Text", - "title" : "\u8bf4\u660e", - "value" : "", - "description" : "BPMN\u5143\u7d20\u7684\u63cf\u8ff0\u6027\u540d\u79f0.", - "popular" : true - } ] - }, { - "name" : "process_authorpackage", - "properties" : [ { - "id" : "process_author", - "type" : "String", - "title" : "\u6d41\u7a0b\u4f5c\u8005", - "value" : "", - "description" : "\u5b9a\u4e49\u6d41\u7a0b\u7684\u4f5c\u8005.", - "popular" : true - } ] - }, { - "name" : "process_versionpackage", - "properties" : [ { - "id" : "process_version", - "type" : "String", - "title" : "\u6d41\u7a0b\u7248\u672c\u5b57\u7b26\u4e32 (\u4ec5\u6587\u6863)", - "value" : "", - "description" : "\u4e3a\u4e86\u6587\u6863\u7684\u7528\u9014\u7684\u7248\u672c\u6807\u8bc6\u7b26.", - "popular" : true - } ] - }, { - "name" : "process_historylevelpackage", - "properties" : [ { - "id" : "process_historylevel", - "type" : "flowable-processhistorylevel", - "title" : "为流程定义设定特定级别", - "value" : "", - "description" : "为流程定义设定特定级别", - "popular" : true - } ] - }, { - "name" : "isexecutablepackage", - "properties" : [ { - "id" : "isexecutable", - "type" : "Boolean", - "title" : "可执行的", - "value" : "true", - "description" : "流程是否可执行", - "popular" : true - } ] - }, { - "name" : "process_potentialstarteruserpackage", - "properties" : [ { - "id" : "process_potentialstarteruser", - "type" : "String", - "title" : "默认启动用户", - "value" : "", - "description" : "启动该流程的用户", - "popular" : true - } ] - }, { - "name" : "process_potentialstartergrouppackage", - "properties" : [ { - "id" : "process_potentialstartergroup", - "type" : "String", - "title" : "默认启动器组", - "value" : "", - "description" : "启动流程的组?", - "popular" : true - } ] - }, { - "name" : "process_namespacepackage", - "properties" : [ { - "id" : "process_namespace", - "type" : "String", - "title" : "\u6307\u5411\u547d\u540d\u7a7a\u95f4", - "value" : "http://www.flowable.org/processdef", - "description" : "\u5b9a\u4e49\u6d41\u7a0b\u7684\u6307\u5411\u547d\u540d\u7a7a\u95f4.", - "popular" : true - } ] - }, { - "name" : "process_iseagerexecutionfetchpackage", - "properties" : [ { - "id" : "iseagerexecutionfetch", - "type" : "Boolean", - "title" : "优先执行", - "value" : "false", - "description" : "流程定义需要优先执行?", - "popular" : true - } ] - }, { - "name" : "asynchronousdefinitionpackage", - "properties" : [ { - "id" : "asynchronousdefinition", - "type" : "Boolean", - "title" : "\u5f02\u6b65", - "value" : "false", - "description" : "\u6d3b\u52a8\u5b9a\u4e49\u4e3a\u5f02\u6b65.", - "popular" : true - } ] - }, { - "name" : "datapropertiespackage", - "properties" : [ { - "id" : "dataproperties", - "type" : "Complex", - "title" : "数据对象", - "value" : "", - "description" : "定义数据对象的属性", - "popular" : true - } ] - }, { - "name" : "exclusivedefinitionpackage", - "properties" : [ { - "id" : "exclusivedefinition", - "type" : "Boolean", - "title" : "\u72ec\u5bb6", - "value" : "false", - "description" : "\u5b9a\u4e49\u6d3b\u52a8\u4e3a\u72ec\u5bb6.", - "popular" : true - } ] - }, { - "name" : "executionlistenerspackage", - "properties" : [ { - "id" : "executionlisteners", - "type" : "multiplecomplex", - "title" : "\u6267\u884c\u76d1\u542c\u5668", - "value" : "", - "description" : "\u6d3b\u52a8\uff0c\u8fc7\u7a0b\uff0c\u987a\u5e8f\u6d41\uff0c\u5f00\u59cb\u548c\u7ed3\u675f\u4e8b\u4ef6\u7684\u76d1\u542c\u5668.", - "popular" : true - } ] - }, { - "name" : "tasklistenerspackage", - "properties" : [ { - "id" : "tasklisteners", - "type" : "multiplecomplex", - "title" : "\u4efb\u52a1\u76d1\u542c", - "value" : "", - "description" : "\u76d1\u542c\u7528\u6237\u4efb\u52a1", - "popular" : true - } ] - }, { - "name" : "eventlistenerspackage", - "properties" : [ { - "id" : "eventlisteners", - "type" : "multiplecomplex", - "title" : "\u4e8b\u4ef6\u76d1\u542c", - "value" : "", - "description" : "\u76d1\u542c\u6d41\u7a0b\u5f15\u64ce\u7684\u4efb\u4f55\u4e8b\u4ef6. \u4e5f\u53ef\u80fd\u629b\u51fa\u6d88\u606f\u4e8b\u4ef6\u6216\u8005\u9519\u8bef\u4e8b\u4ef6", - "popular" : true - } ] - }, { - "name" : "usertaskassignmentpackage", - "properties" : [ { - "id" : "usertaskassignment", - "type" : "Complex", - "title" : "\u5206\u914d", - "value" : "", - "description" : "\u5206\u914d\u5b9a\u4e49\u7528\u6237\u4efb\u52a1", - "popular" : true - } ] - },{ - "name" : "formpropertiespackage", - "properties" : [ { - "id" : "formproperties", - "type" : "Complex", - "title" : "\u8868\u5355\u5c5e\u6027", - "value" : "", - "description" : "\u7528\u5217\u8868\u7684\u5f62\u5f0f\u5b9a\u4e49\u8868\u5355\u5c5e\u6027", - "popular" : true - } ] - }, { - "name" : "formkeydefinitionpackage", - "properties" : [ { - "id" : "formkeydefinition", - "type" : "String", - "title" : "\u8868\u5355\u952e(key)", - "value" : "", - "description" : "\u4e00\u4e2a\u8868\u5355\u7684\u552f\u4e00\u952e.", - "popular" : true - } ] - }, { - "name" : "duedatedefinitionpackage", - "properties" : [ { - "id" : "duedatedefinition", - "type" : "String", - "title" : "\u5230\u671f\u65f6\u95f4", - "value" : "", - "description" : "\u7528\u6237\u4efb\u52a1\u5230\u671f\u65f6\u95f4.", - "popular" : true - } ] - }, { - "name" : "prioritydefinitionpackage", - "properties" : [ { - "id" : "prioritydefinition", - "type" : "String", - "title" : "\u4f18\u5148\u7ea7", - "value" : "", - "description" : "\u7528\u6237\u4efb\u52a1\u7684\u4f18\u5148\u7ea7.", - "popular" : true - } ] - }, { - "name" : "duedatedefinitionpackage", - "properties" : [ { - "id" : "duedatedefinition", - "type" : "String", - "title" : "\u5230\u671f\u65f6\u95f4", - "value" : "", - "description" : "\u7528\u6237\u4efb\u52a1\u5230\u671f\u65f6\u95f4.", - "popular" : true - } ] - }, { - "name" : "servicetaskclasspackage", - "properties" : [ { - "id" : "servicetaskclass", - "type" : "String", - "title" : "\u7c7b", - "value" : "", - "description" : "\u5b9e\u73b0\u670d\u52a1\u4efb\u52a1\u903b\u8f91\u7684\u7c7b.", - "popular" : true - } ] - }, { - "name" : "servicetaskexpressionpackage", - "properties" : [ { - "id" : "servicetaskexpression", - "type" : "Text", - "title" : "\u8868\u8fbe\u5f0f", - "value" : "", - "description" : "\u670d\u52a1\u4efb\u52a1\u5b9a\u4e49\u7684\u903b\u8f91\u4e0e\u8868\u8fbe\u5f0f.", - "popular" : true - } ] - }, { - "name" : "servicetaskdelegateexpressionpackage", - "properties" : [ { - "id" : "servicetaskdelegateexpression", - "type" : "Text", - "title" : "\u59d4\u6258\u8868\u8fbe\u5f0f", - "value" : "", - "description" : "\u670d\u52a1\u4efb\u52a1\u5b9a\u4e49\u7684\u903b\u8f91\u4e0e\u59d4\u6258\u8868\u8fbe\u5f0f.", - "popular" : true - } ] - }, { - "name" : "servicetaskfieldspackage", - "properties" : [ { - "id" : "servicetaskfields", - "type" : "Complex", - "title" : "\u7c7b\u5b57\u6bb5", - "value" : "", - "description" : "\u6269\u5c55\u5b57\u6bb5", - "popular" : true - } ] - }, { - "name" : "servicetaskresultvariablepackage", - "properties" : [ { - "id" : "servicetaskresultvariable", - "type" : "String", - "title" : "\u7ed3\u679c\u53d8\u91cf\u540d\u79f0", - "value" : "", - "description" : "\u7528\u6765\u5b58\u50a8\u670d\u52a1\u4efb\u52a1\u7ed3\u679c\u7684\u53d8\u91cf\u540d.", - "popular" : true - } ] - }, { - "name" : "servicetaskresultvariablepackage", - "properties" : [ { - "id" : "servicetaskUseLocalScopeForResultVariable", - "type" : "Boolean", - "title" : "\u7ed3\u679c\u53d8\u91cf\u540d\u79f0", - "value" : "false", - "description" : "\u7528\u6765\u5b58\u50a8\u670d\u52a1\u4efb\u52a1\u7ed3\u679c\u7684\u53d8\u91cf\u540d.", - "popular" : true - } ] - }, { - "name" : "servicetasktriggerablepackage", - "properties" : [ { - "id" : "servicetasktriggerable", - "type" : "Boolean", - "title" : "将服务任务设置为可触发的", - "value" : "false", - "description" : "将服务任务设置为可触发的", - "popular" : true - } ] - }, { - "name": "scriptformatpackage", - "properties" : [ { - "id": "scriptformat", - "type": "String", - "title": "\u811a\u672c\u683c\u5f0f", - "value": "", - "description": "\u811a\u672c\u4efb\u52a1\u7684\u811a\u672c\u683c\u5f0f.", - "popular": true - } ] - }, { - "name": "scripttextpackage", - "properties" : [ { - "id": "scripttext", - "type": "Text", - "title": "\u811a\u672c", - "value": "", - "description": "\u811a\u672c\u4efb\u52a1\u7684\u811a\u672c\u5185\u5bb9.", - "popular": true - } - ] - }, { - "name" : "shellcommandpackage", - "properties" : [ { - "id" : "shellcommand", - "type" : "String", - "title" : "命令", - "value" : "", - "description" : "脚本任务命令", - "popular" : true - } ] - }, { - "name" : "shellarg1package", - "properties" : [ { - "id" : "shellarg1", - "type" : "Text", - "title" : "参数 1", - "value" : "", - "description" : "脚本命令的参数 1", - "popular" : true - } ] - }, { - "name" : "shellarg2package", - "properties" : [ { - "id" : "shellarg2", - "type" : "Text", - "title" : "参数 2", - "value" : "", - "description" : "脚本命令参数 2", - "popular" : true - } ] - }, { - "name" : "shellarg3package", - "properties" : [ { - "id" : "shellarg3", - "type" : "Text", - "title" : "参数 3", - "value" : "", - "description" : "脚本命令参数 3", - "popular" : true - } ] - }, { - "name" : "shellarg4package", - "properties" : [ { - "id" : "shellarg4", - "type" : "Text", - "title" : "参数 4", - "value" : "", - "description" : "脚本命令参数 4", - "popular" : true - } ] - }, { - "name" : "shellarg5package", - "properties" : [ { - "id" : "shellarg5", - "type" : "Text", - "title" : "参数 5", - "value" : "", - "description" : "脚本命令参数 5", - "popular" : true - } ] - }, { - "name" : "shellwaitpackage", - "properties" : [ { - "id" : "shellwait", - "type" : "Text", - "title" : "等待", - "value" : "", - "description" : "等待shell命令执行结束的标志", - "popular" : true - } ] - }, { - "name" : "shelloutputvariablepackage", - "properties" : [ { - "id" : "shelloutputvariable", - "type" : "Text", - "title" : "输出参数", - "value" : "", - "description" : "变量存储shell共用输出", - "popular" : true - } ] - }, { - "name" : "shellerrorcodevariablepackage", - "properties" : [ { - "id" : "shellerrorcodevariable", - "type" : "错误代码变量", - "value" : "", - "description" : "变量存储shell 命令错误代码", - "popular" : true - } ] - }, { - "name" : "shellredirecterrorpackage", - "properties" : [ { - "id" : "shellredirecterror", - "type" : "Text", - "title" : "重定向错误", - "value" : "", - "description" : "如果true合并错误输出与标准输出", - "popular" : true - } ] - }, { - "name" : "shellcleanenvpackage", - "properties" : [ { - "id" : "shellcleanenv", - "type" : "Text", - "title" : "清除环境", - "value" : "", - "description" : "清除shell执行环境", - "popular" : true - } ] - }, { - "name" : "shelldirectorypackage", - "properties" : [ { - "id" : "shelldirectory", - "type" : "Text", - "title" : "目录", - "value" : "", - "description" : "shell运行目录", - "popular" : true - } ] - }, { - "name" : "ruletask_rulespackage", - "properties" : [ { - "id" : "ruletask_rules", - "type" : "String", - "title" : "\u89c4\u5219", - "value" : "", - "description" : "\u89c4\u5219\u4efb\u52a1\u7684\u89c4\u5219.", - "popular" : true - } ] - }, { - "name" : "ruletask_variables_inputpackage", - "properties" : [ { - "id" : "ruletask_variables_input", - "type" : "String", - "title" : "\u8f93\u5165\u53d8\u91cf", - "value" : "", - "description" : "\u89c4\u5219\u4efb\u52a1\u7684\u8f93\u5165\u53d8\u91cf.", - "popular" : true - } ] - }, { - "name" : "ruletask_excludepackage", - "properties" : [ { - "id" : "ruletask_exclude", - "type" : "Boolean", - "title" : "\u6392\u9664", - "value" : "false", - "description" : "\u4f5c\u4e3a\u6392\u9664\u4f7f\u7528\u89c4\u5219\u5c5e\u6027.", - "popular" : true - } ] - }, { - "name" : "ruletask_resultpackage", - "properties" : [ { - "id" : "ruletask_result", - "type" : "String", - "title" : "\u8f93\u51fa\u53d8\u91cf", - "value" : "", - "description" : "\u89c4\u5219\u4efb\u52a1\u7684\u8f93\u51fa\u53d8\u91cf.", - "popular" : true - } ] - }, { - "name" : "mailtasktopackage", - "properties" : [ { - "id" : "mailtaskto", - "type" : "Text", - "title" : "\u63a5\u6536\u4eba", - "value" : "", - "description" : "\u5982\u679c\u662f\u591a\u4e2a\u6536\u4ef6\u4eba\uff0c\u8bf7\u4ee5\u9017\u53f7\u5206\u9694.", - "popular" : true - } ] - }, { - "name" : "mailtaskfrompackage", - "properties" : [ { - "id" : "mailtaskfrom", - "type" : "Text", - "title" : "\u53d1\u9001\u4eba", - "value" : "", - "description" : "\u53d1\u4ef6\u4eba\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002\u5982\u679c\u672a\u63d0\u4f9b\uff0c\u4f7f\u7528\u9ed8\u8ba4\u914d\u7f6e\u7684\u53d1\u4ef6\u4eba\u5730\u5740.", - "popular" : true - } ] - }, { - "name" : "\u4e3b\u9898", - "properties" : [ { - "id" : "mailtasksubject", - "type" : "Text", - "title" : "Subject", - "value" : "", - "description" : "\u90ae\u4ef6\u4e3b\u9898.", - "popular" : true - } ] - }, { - "name" : "mailtaskccpackage", - "properties" : [ { - "id" : "mailtaskcc", - "type" : "Text", - "title" : "\u6284\u9001", - "value" : "", - "description" : "\u6284\u9001\u6536\u4ef6\u4eba\u5730\u5740. \u5982\u679c\u662f\u591a\u4e2a\u6536\u4ef6\u4eba\uff0c\u8bf7\u4ee5\u9017\u53f7\u5206\u9694", - "popular" : true - } ] - }, { - "name" : "mailtaskbccpackage", - "properties" : [ { - "id" : "mailtaskbcc", - "type" : "Text", - "title" : "\u5bc6\u4ef6\u6284\u9001", - "value" : "", - "description" : "u5bc6\u4ef6\u6284\u9001\u6536\u4ef6\u4eba\u5730\u5740. \u5982\u679c\u662f\u591a\u4e2a\u6536\u4ef6\u4eba\uff0c\u8bf7\u4ee5\u9017\u53f7\u5206\u9694", - "popular" : true - } ] - }, { - "name" : "mailtasktextpackage", - "properties" : [ { - "id" : "mailtasktext", - "type" : "Text", - "title" : "\u5185\u5bb9", - "value" : "", - "description" : "\u90ae\u4ef6\u5185\u5bb9\uff0c\u53ea\u80fd\u53d1\u9001\u7eaf\u6587\u672c\u3002\u5982\u679c\u9700\u8981\u53d1\u9001\u590d\u6742\u5185\u5bb9\uff0c\u53ef\u4ee5\u7ed3\u5408\u4f7f\u7528HTML\uff0c\u5ba2\u6237\u7aef\u4e0d\u652f\u6301\u590d\u6742\u5185\u5bb9\uff0c\u90ae\u4ef6\u5c06\u88ab\u9000\u56de.", - "popular" : true - } ] - }, { - "name" : "mailtaskhtmlpackage", - "properties" : [ { - "id" : "mailtaskhtml", - "type" : "Text", - "title" : "Html", - "value" : "", - "description" : "A piece of HTML that is the content of the e-mail.", - "popular" : true - } ] - }, { - "name" : "mailtaskcharsetpackage", - "properties" : [ { - "id" : "mailtaskcharset", - "type" : "String", - "title" : "Html", - "value" : "", - "description" : "\u4e00\u6bb5HTML\u7684\u90ae\u4ef6\u7684\u5185\u5bb9.", - "popular" : true - } ] - }, { - "name" : "httptaskrequestmethodpackage", - "properties" : [ { - "id" : "httptaskrequestmethod", - "type" : "flowable-http-request-method", - "title" : "请求方式", - "value" : "", - "description" : "请求方式 (例如 - GET,POST,PUT etc).", - "popular" : true - } ] - }, { - "name" : "httptaskrequesturlpackage", - "properties" : [ { - "id" : "httptaskrequesturl", - "type" : "Text", - "title" : "请求地址", - "value" : "", - "description" : "请求地址 (例如 - http://flowable.org).", - "popular" : true - } ] - }, { - "name" : "httptaskrequestheaderspackage", - "properties" : [ { - "id" : "httptaskrequestheaders", - "type" : "Text", - "title" : "请求头", - "value" : "", - "description" : "HTTP请求头的分开行 (例如 - Content-Type: application/json).", - "popular" : true - } ] - }, { - "name" : "httptaskrequestbodypackage", - "properties" : [ { - "id" : "httptaskrequestbody", - "type" : "Text", - "title" : "请求体", - "value" : "", - "description" : "请求体 (例如- ${sampleBody}).", - "popular" : true - } ] - }, { - "name" : "httptaskrequesttimeoutpackage", - "properties" : [ { - "id" : "httptaskrequesttimeout", - "type" : "String", - "title" : "请求超时", - "value" : "", - "description" : "请求超时以毫秒为单位 (For example - 5000).", - "popular" : true - } ] - }, { - "name" : "httptaskdisallowredirectspackage", - "properties" : [ { - "id" : "httptaskdisallowredirects", - "type" : "String", - "title" : "不允许重定向", - "value" : "", - "description" : "禁止HTTP重定向的标志。", - "popular" : true - } ] - }, { - "name" : "httptaskfailstatuscodespackage", - "properties" : [ { - "id" : "httptaskfailstatuscodes", - "type" : "String", - "title" : "失败状态码", - "value" : "", - "description" : "用逗号分隔的HTTP响应状态代码列表,例如 400,5XX.", - "popular" : true - } ] - }, { - "name" : "httptaskhandlestatuscodespackage", - "properties" : [ { - "id" : "httptaskhandlestatuscodes", - "type" : "String", - "title" : "处理状态码", - "value" : "", - "description" : "忽略HTTP响应状态代码列表的逗号, 例如 404,3XX.", - "popular" : true - } ] - }, { - "name" : "httptaskignoreexceptionpackage", - "properties" : [ { - "id" : "httptaskignoreexception", - "type" : "String", - "title" : "忽略异常", - "value" : "", - "description" : "忽略异常的标志", - "popular" : true - } ] - }, - { - "name" : "httptasksaveresponseparameterstransientpackage", - "properties" : [ { - "id" : "httptasksaveresponseparameterstransient", - "type" : "String", - "title" : "将响应保存为瞬态变量", - "value" : "", - "description" : "指示存储响应变量的标志", - "popular" : true - } ] - }, - { - "name" : "httptasksaveresponseasjsonpackage", - "properties" : [ { - "id" : "httptasksaveresponseasjson", - "type" : "String", - "title" : "保存响应为JSON", - "value" : "", - "description" : "指示将响应变量存储为JSON变量而不是字符串的标志", - "popular" : true - } ] - }, - { - "name": "skipexpressionpackage", - "properties": [ - { - "id": "skipexpression", - "type": "String", - "title": "自动跳过", - "value": "", - "description": "设置自动跳过的条件.", - "popular": true - } - ] - }, { - "name": "nodetypepackage", - "properties": [ - { - "id": "nodetype", - "type": "dragon-nodetype-combobox", - "title": "节点类型", - "value": "", - "description": "节点类型", - "popular": true, - "items": [ - { - "key": "审批中", - "value": "applying" - }, - { - "key": "不审", - "value": "noapprove" - }, - { - "key": "协同", - "value": "coordination" - }, - { - "key": "评审", - "value": "review" - }, - { - "key": "必审", - "value": "bs" - }, - { - "key": "普通", - "value": "" - } - ] - } - ] - },{ - "name": "editdatapackage", - "properties": [ - { - "id": "iseditdata", - "type": "dragon-nodeeditdata-combobox", - "title": "是否可编辑", - "value": "", - "description": "数据在此节点是否可以编辑", - "popular": true, - "items":[ - { - "key": "是", - "value": "true" - }, - { - "key": "否", - "value": "" - } - ] - } - ] - },{ - "name": "sequenceflowtextxpackage", - "properties": [ - { - "id": "sequence_flow_text_x", - "type": "String", - "title": "线上文字位置", - "value": "", - "description": "线上文字位置", - "popular": true - } - ] - },{ - "name" : "httptaskresponsevariablenamepackage", - "properties" : [ { - "id" : "httptaskresponsevariablename", - "type" : "String", - "title" : "响应变量名", - "value" : "", - "description" : "定义变量名来存储HTTP响应.", - "popular" : true - } ] - }, { - "name" : "httptasksaverequestvariablespackage", - "properties" : [ { - "id" : "httptasksaverequestvariables", - "type" : "String", - "title" : "保存请求变量", - "value" : "", - "description" : "保存请求变量的标志.", - "popular" : true - } ] - }, { - "name" : "httptasksaveresponseparameterspackage", - "properties" : [ { - "id" : "httptasksaveresponseparameters", - "type" : "String", - "title" : "保存响应状态,标题", - "value" : "", - "description" : "保存响应状态、标题等的标志.", - "popular" : true - } ] - }, { - "name" : "httptaskresultvariableprefixpackage", - "properties" : [ { - "id" : "httptaskresultvariableprefix", - "type" : "String", - "title" : "结果变量前缀", - "value" : "", - "description" : "执行变量名称的前缀.", - "popular" : true - } ] - }, { - "name" : "callactivitycalledelementpackage", - "properties" : [ { - "id" : "callactivitycalledelement", - "type" : "String", - "title" : "\u8c03\u7528\u5143\u7d20", - "value" : "", - "description" : "\u6d41\u7a0b\u5f15\u7528.", - "popular" : true - } ] - }, { - "name" : "callactivityinparameterspackage", - "properties" : [ { - "id" : "callactivityinparameters", - "type" : "Complex", - "title" : "\u8f93\u5165\u53c2\u6570", - "value" : "", - "description" : "\u5b9a\u5165\u8f93\u51fa\u53c2\u6570", - "popular" : true - } ] - }, { - "name" : "callactivityoutparameterspackage", - "properties" : [ { - "id" : "callactivityoutparameters", - "type" : "Complex", - "title" : "\u8f93\u51fa\u53c2\u6570", - "value" : "", - "description" : "\u5b9a\u4e49\u8f93\u51fa\u53c2\u6570", - "popular" : true - } ] - }, { - "name" : "callactivityinheritvariablespackage", - "properties" : [ { - "id" : "callactivityinheritvariables", - "type" : "Boolean", - "title" : "继承子过程中的变量", - "value" : "false", - "description" : "继承子过程中的父进程变量.", - "popular" : true - } ] - }, { - "name" : "callactivitysamedeploymentpackage", - "properties" : [ { - "id" : "callactivitysamedeployment", - "type" : "Boolean", - "title" : "从相同的部署启动引用的进程.", - "value" : "false", - "description" : "使用来自相同部署的引用进程.", - "popular" : true - } ] - }, { - "name" : "callactivityprocessinstancenamepackage", - "properties" : [ { - "id" : "callactivityprocessinstancename", - "type" : "String", - "title" : "进程实例名", - "value" : "", - "description" : "一个解析到子进程实例名称的表达式", - "popular" : true - } ] - }, { - "name" : "callactivityinheritbusinesskeypackage", - "properties" : [ { - "id" : "callactivityinheritbusinesskey", - "type" : "Boolean", - "title" : "继承业务密钥", - "value" : "false", - "description" : "从父进程继承业务密钥.", - "popular" : true - } ] - }, { - "name" : "callactivityuselocalscopeforoutparameterspackage", - "properties" : [ { - "id" : "callactivityuselocalscopeforoutparameters", - "type" : "Boolean", - "title" : "使用局部范围进行输出参数", - "value" : "false", - "description" : "使用局部变量作用域输出参数.", - "popular" : true - } ] - }, { - "name" : "callactivitybusinesskeypackage", - "properties" : [ { - "id" : "callactivitybusinesskey", - "type" : "String", - "title" : "业务密钥表达式", - "value" : "", - "description" : "解析为子进程实例的业务密钥的表达式", - "popular" : true - } ] - }, { - "name" : "cameltaskcamelcontextpackage", - "properties" : [ { - "id" : "cameltaskcamelcontext", - "type" : "String", - "title" : "Camel context", - "value" : "", - "description" : "An optional camel context definition, if left empty the default is used.", - "popular" : true - } ] - }, { - "name" : "muletaskendpointurlpackage", - "properties" : [ { - "id" : "muletaskendpointurl", - "type" : "String", - "title" : "端点URL", - "value" : "", - "description" : "需要的端点URL将消息发送给Mule.", - "popular" : true - } ] - }, { - "name" : "muletasklanguagepackage", - "properties" : [ { - "id" : "muletasklanguage", - "type" : "String", - "title" : "语言", - "value" : "", - "description" : "解决负载表达式的语言所需的定义,如Juel.", - "popular" : true - } ] - }, { - "name" : "muletaskpayloadexpressionpackage", - "properties" : [ { - "id" : "muletaskpayloadexpression", - "type" : "Text", - "title" : "有效载荷表达式", - "value" : "", - "description" : "必需定义效载荷的消息发送给Mule.", - "popular" : true - } ] - }, { - "name" : "muletaskresultvariablepackage", - "properties" : [ { - "id" : "muletaskresultvariable", - "type" : "String", - "title" : "结果变量", - "value" : "", - "description" : "返回的有效载荷的可选结果变量.", - "popular" : true - } ] - }, { - "name" : "conditionsequenceflowpackage", - "properties" : [ { - "id" : "conditionsequenceflow", - "type" : "Complex", - "title" : "\u6d41\u6761\u4ef6", - "value" : "", - "description" : "\u987a\u5e8f\u6d41\u7684\u6761\u4ef6", - "popular" : true - } ] - }, { - "name" : "defaultflowpackage", - "properties" : [ { - "id" : "defaultflow", - "type" : "Boolean", - "title" : "\u9ed8\u8ba4\u6d41", - "value" : "false", - "description" : "\u5b9a\u4e49\u4f5c\u4e3a\u9ed8\u8ba4\u987a\u5e8f\u6d41", - "popular" : true, - "refToView" : "default" - } ] - }, { - "name" : "conditionalflowpackage", - "properties" : [ { - "id" : "conditionalflow", - "type" : "Boolean", - "title" : "\u6761\u4ef6\u6d41", - "value" : "false", - "description" : "\u5b9a\u4e49\u987a\u5e8f\u6d41\u7684\u6761\u4ef6", - "popular" : true - } ] - }, { - "name" : "timercycledefinitionpackage", - "properties" : [ { - "id" : "timercycledefinition", - "type" : "String", - "title" : "\u65f6\u95f4\u5468\u671f\uff08\u4f8b\u5982R3/PT10H\uff09", - "value" : "", - "description" : "\u5b9a\u4e49ISO-8601\u5468\u671f\u5b9a\u65f6\u5668.", - "popular" : true - } ] - }, { - "name" : "timerdatedefinitionpackage", - "properties" : [ { - "id" : "timerdatedefinition", - "type" : "String", - "title" : "\u91c7\u7528ISO-8601\u65e5\u671f\u65f6\u95f4", - "value" : "", - "description" : "\u5b9a\u4e49ISO-8601\u65e5\u671f\u5b9a\u65f6\u5668.", - "popular" : true - } ] - }, { - "name" : "timerdurationdefinitionpackage", - "properties" : [ { - "id" : "timerdurationdefinition", - "type" : "String", - "title" : "\u6301\u7eed\u65f6\u95f4\uff08\u4f8b\u5982PT5M\uff09", - "value" : "", - "description" : "\u5b9a\u4e49ISO-8601\u65f6\u95f4\u5b9a\u65f6\u5668.", - "popular" : true - } ] - }, { - "name" : "timerenddatedefinitionpackage", - "properties" : [ { - "id" : "timerenddatedefinition", - "type" : "String", - "title" : "\u91c7\u7528ISO-8601\u7ed3\u675f\u65e5\u671f\u65f6\u95f4", - "value" : "", - "description" : "\u5b9a\u4e49\u5b9a\u65f6\u5668\u4e0eISO-8601\u6301\u7eed\u65f6\u95f4.", - "popular" : true - } ] - }, { - "name" : "messagerefpackage", - "properties" : [ { - "id" : "messageref", - "type" : "String", - "title" : "\u6d88\u606f\u5f15\u7528", - "value" : "", - "description" : "\u5b9a\u4e49\u6d88\u606f\u540d\u79f0.", - "popular" : true - } ] - }, { - "name" : "signalrefpackage", - "properties" : [ { - "id" : "signalref", - "type" : "String", - "title" : "\u4fe1\u53f7\u5f15\u7528", - "value" : "", - "description" : "\u5b9a\u4e49\u4fe1\u53f7\u540d\u79f0.", - "popular" : true - } ] - }, { - "name" : "errorrefpackage", - "properties" : [ { - "id" : "errorref", - "type" : "String", - "title" : "\u9519\u8bef\u5f15\u7528", - "value" : "", - "description" : "\u5b9a\u4e49\u9519\u8bef\u540d\u79f0.", - "popular" : true - } ] - }, { - "name" : "cancelactivitypackage", - "properties" : [ { - "id" : "cancelactivity", - "type" : "Boolean", - "title" : "\u53d6\u6d88 \u6d3b\u52a8(activity)", - "value" : "true", - "description" : "\u662f\u5426\u53d6\u6d88\u6d3b\u52a8", - "popular" : true, - "refToView" : [ "frame", "frame2" ] - } ] - }, { - "name" : "initiatorpackage", - "properties" : [ { - "id" : "initiator", - "type" : "String", - "title" : "\u53d1\u8d77\u8005", - "value" : "", - "description" : "\u6d41\u7a0b\u7684\u53d1\u8d77\u8005.", - "popular" : true - } ] - }, { - "name" : "textpackage", - "properties" : [ { - "id" : "text", - "type" : "String", - "title" : "\u5185\u5bb9", - "value" : "", - "description" : "\u6587\u672c\u7684\u6587\u5b57\u6ce8\u91ca.", - "popular" : true, - "refToView" : "text" - } ] - }, { - "name" : "multiinstance_typepackage", - "properties" : [ { - "id" : "multiinstance_type", - "type" : "flowable-multiinstance", - "title" : "\u591a\u5b9e\u4f8b\u7c7b\u578b", - "value" : "None", - "description" : "重复活动执行(并行或顺序)可以通过不同的循环类型来显示", - "popular" : true, - "refToView" : "multiinstance" - } ] - }, { - "name" : "multiinstance_cardinalitypackage", - "properties" : [ { - "id" : "multiinstance_cardinality", - "type" : "String", - "title" : "\u57fa\u6570\uff08\u591a\u5b9e\u4f8b\uff09", - "value" : "", - "description" : "\u5b9a\u4e49\u591a\u5b9e\u4f8b\u7684\u57fa\u6570.", - "popular" : true - } ] - }, { - "name" : "multiinstance_collectionpackage", - "properties" : [ { - "id" : "multiinstance_collection", - "type" : "String", - "title" : "\u91c7\u96c6\uff08\u591a\u5b9e\u4f8b\uff09", - "value" : "", - "description" : "\u5b9a\u4e49\u96c6\u5408\u7684\u591a\u5b9e\u4f8b.", - "popular" : true - } ] - }, { - "name" : "multiinstance_variablepackage", - "properties" : [ { - "id" : "multiinstance_variable", - "type" : "String", - "title" : "\u5143\u7d20\u53d8\u91cf\uff08\u591a\u5b9e\u4f8b\uff09", - "value" : "", - "description" : "\u591a\u5b9e\u4f8b\u53d8\u91cf\u5b9a\u4e49\u7684\u5143\u7d20.", - "popular" : true - } ] - }, { - "name" : "multiinstance_conditionpackage", - "properties" : [ { - "id" : "multiinstance_condition", - "type" : "String", - "title" : "\u5b8c\u6210\u6761\u4ef6\uff08\u591a\u5b9e\u4f8b\uff09", - "value" : "", - "description" : "\u5b9a\u4e49\u591a\u5b9e\u4f8b\u7684\u5b8c\u6210\u6761\u4ef6.", - "popular" : true - } ] - }, { - "name" : "isforcompensationpackage", - "properties" : [ { - "id" : "isforcompensation", - "type" : "Boolean", - "title" : "\u8865\u507f", - "value" : "false", - "description" : "\u4e00\u4e2a\u6807\u5fd7\u6807\u8bc6\u6b64\u6d3b\u52a8\u7684\u76ee\u7684\u662f\u5426\u4e3a\u7684\u8865\u507f\u7684\u76ee\u7684.", - "popular" : true, - "refToView" : "compensation" - } ] - }, { - "name" : "sequencefloworderpackage", - "properties" : [ { - "id" : "sequencefloworder", - "type" : "Complex", - "title" : "\u6d41\u987a\u5e8f", - "value" : "", - "description" : "\u6d41\u5f00\u59cb\u7684\u987a\u5e8f.", - "popular" : true - } ] - }, { - "name" : "signaldefinitionspackage", - "properties" : [ { - "id" : "signaldefinitions", - "type" : "multiplecomplex", - "title" : "\u4fe1\u53f7\u5b9a\u4e49", - "value" : "", - "description" : "\u4fe1\u53f7\u5b9a\u4e49", - "popular" : true - } ] - }, { - "name" : "messagedefinitionspackage", - "properties" : [ { - "id" : "messagedefinitions", - "type" : "\u6d88\u606f\u5b9a\u4e49", - "value" : "", - "description" : "\u6d88\u606f\u5b9a\u4e49", - "popular" : true - } ] - }, { - "name" : "istransactionpackage", - "properties" : [ { - "id" : "istransaction", - "type" : "Boolean", - "title" : "\u662f\u4e00\u4e2a\u5b50\u6d41\u7a0b\u4e8b\u52a1", - "value" : "false", - "description" : "\u6807\u8bc6\u6b64\u5b50\u8fdb\u7a0b\u662f\u5426\u662f\u4ea4\u6613\u7c7b\u578b\u7684\u6807\u5fd7.", - "popular" : true, - "refToView" : "border" - } ] - }, { - "name" : "formreferencepackage", - "properties" : [ { - "id" : "formreference", - "type" : "Complex", - "title" : "表单引用", - "value" : "", - "description" : "引用表单", - "popular" : true - } ] - }, { - "name" : "terminateAllpackage", - "properties" : [ { - "id" : "terminateAll", - "type" : "Boolean", - "title" : "\u7ec8\u6b62\u6240\u6709", - "value" : "false", - "description" : "\u542f\u7528\u7ec8\u6b62\u6d41\u7a0b\u5b9e\u4f8b", - "popular" : true - } ] - }, { - "name" : "decisiontaskdecisiontablereferencepackage", - "properties" : [ { - "id" : "decisiontaskdecisiontablereference", - "type" : "Complex", - "title" : "决策表参考", - "value" : "", - "description" : "设置决策表参考", - "popular" : true - } ] - }, { - "name" : "decisiontaskthrowerroronnohitspackage", - "properties" : [ { - "id" : "decisiontaskthrowerroronnohits", - "type" : "Boolean", - "title" : "如果没有命中规则,则抛出错误", - "value" : "false", - "description" : "如果没有命中决策表的规则,结果是否被发现,则会引发错误.", - "popular" : true - } ] - }, { - "name" : "interruptingpackage", - "properties" : [ { - "id" : "interrupting", - "type" : "Boolean", - "title" : "中断", - "value" : "true", - "description" : "是否应终止所有父执行?", - "popular" : true, - "refToView" : [ "frame" ] - } ] - }, { - "name" : "completionconditionpackage", - "properties" : [ { - "id" : "completioncondition", - "type" : "String", - "title" : "完成条件", - "value" : "", - "description" : "子过程的完备性条件", - "popular" : true - } ] - }, { - "name" : "orderingpackage", - "properties" : [ { - "id" : "ordering", - "type" : "flowable-ordering", - "title" : "排序", - "value" : "Parallel", - "description" : "AdHoc子过程的排序", - "popular" : true - } ] - }, { - "name" : "cancelremaininginstancespackage", - "properties" : [ { - "id" : "cancelremaininginstances", - "type" : "Boolean", - "title" : "取消剩余实例", - "value" : "true", - "description" : "取消AdHoc子进程的剩余实例?", - "popular" : true - } ] - } ], - "stencils" : [ { - "type" : "node", - "id" : "BPMNDiagram", - "title" : "BPMN\u56fe\u8868", - "description" : "A BPMN 2.0 diagram.", - "view" : "\n\n \n \n \n \n \t\n \n", - "icon" : "diagram.png", - "groups" : [ "图解" ], - "mayBeRoot" : true, - "hide" : true, - "propertyPackages" : [ "process_idpackage", "namepackage", "documentationpackage", "process_authorpackage", "process_versionpackage", "process_namespacepackage", "process_historylevelpackage", "isexecutablepackage", "datapropertiespackage", "executionlistenerspackage", "eventlistenerspackage", "signaldefinitionspackage", "messagedefinitionspackage", "process_potentialstarteruserpackage","process_potentialstartergrouppackage", "process_iseagerexecutionfetchpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ ] - }, { - "type" : "node", - "id" : "StartNoneEvent", - "title" : "\u5f00\u59cb\u4e8b\u4ef6", - "description" : "\u4e0d\u5e26\u5177\u4f53\u7684\u89e6\u53d1\u7684\u5f00\u59cb\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n\t\n \n", - "icon" : "startevent/none.png", - "groups" : [ "\u542f\u52a8\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "initiatorpackage", "formkeydefinitionpackage", "formreferencepackage", "formpropertiespackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "StartTimerEvent", - "title" : "\u8ba1\u65f6\u5668\u4e8b\u4ef6", - "description" : "\u5e26\u6709\u8ba1\u65f6\u5668\u7684\u89e6\u53d1\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n \n\t\n \n", - "icon" : "startevent/timer.png", - "groups" : [ "\u542f\u52a8\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "StartSignalEvent", - "title" : "\u4fe1\u53f7\u4e8b\u4ef6", - "description" : "\u5e26\u6709\u4fe1\u53f7\u7684\u89e6\u53d1\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n\n \n \n \n\t\n \n", - "icon" : "startevent/signal.png", - "groups" : [ "\u542f\u52a8\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage", "interruptingpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "StartMessageEvent", - "title" : "\u6d88\u606f\u4e8b\u4ef6", - "description" : "\u5e26\u6709\u6d88\u606f\u7684\u89e6\u53d1\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n \n\t\n \n", - "icon" : "startevent/message.png", - "groups" : [ "\u542f\u52a8\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage", "interruptingpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "StartErrorEvent", - "title" : "\u9519\u8bef\u4e8b\u4ef6", - "description" : "\u6355\u83b7BPMN\u9519\u8bef\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n\t\n \n", - "icon" : "startevent/error.png", - "groups" : [ "\u542f\u52a8\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage", "interruptingpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "UserTask", - "title" : "\u7528\u6237\u4efb\u52a1", - "description" : "\u4efb\u52a1\u624b\u52a8\u5206\u914d\u7ed9\u4e00\u4e2a\u7279\u5b9a\u7684\u4eba", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\n \n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.user.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "usertaskassignmentpackage", "formkeydefinitionpackage", "formreferencepackage", "duedatedefinitionpackage", "prioritydefinitionpackage", "formpropertiespackage", "tasklistenerspackage", "skipexpressionpackage","nodetypepackage","editdatapackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "ServiceTask", - "title" : "\u670d\u52a1\u4efb\u52a1", - "description" : "\u4e1a\u52a1\u903b\u8f91\u81ea\u52a8\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\n\t\n \n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.service.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "servicetasktriggerablepackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "servicetaskclasspackage", "servicetaskexpressionpackage", "servicetaskdelegateexpressionpackage", "servicetaskfieldspackage", "servicetaskresultvariablepackage", "skipexpressionpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "ScriptTask", - "title" : "\u811a\u672c\u4efb\u52a1", - "description" : "\u81ea\u52a8\u811a\u672c\u903b\u8f91\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n \n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.script.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "scriptformatpackage", "scripttextpackage", "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "BusinessRule", - "title" : "\u4e1a\u52a1\u89c4\u5219\u4efb\u52a1", - "description" : "\u89c4\u5219\u903b\u8f91\u81ea\u52a8\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n \t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n \n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.business.rule.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "ruletask_rulespackage", "ruletask_variables_inputpackage", "ruletask_excludepackage", "ruletask_resultpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "ReceiveTask", - "title" : "\u63a5\u6536\u4efb\u52a1", - "description" : "\u8be5\u4efb\u52a1\u7b49\u5f85\u63a5\u6536", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n \n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.receive.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "ManualTask", - "title" : "\u624b\u52a8\u4efb\u52a1", - "description" : "\u6ca1\u6709\u903b\u8f91\u7684\u81ea\u52a8\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n \n \t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.manual.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "MailTask", - "title" : "\u90ae\u4ef6\u4efb\u52a1", - "description" : "\u90ae\u4ef6\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n \n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.send.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "mailtasktopackage", "mailtaskfrompackage", "mailtasksubjectpackage", "mailtaskccpackage", "mailtaskbccpackage", "mailtasktextpackage", "mailtaskhtmlpackage", "mailtaskcharsetpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "CamelTask", - "title" : "\u9a7c\u5cf0\u4efb\u52a1", - "description" : "\u53d1\u9001\u6d88\u606f\u7ed9\u9a7c\u5cf0\u7684\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n \n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.camel.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "cameltaskcamelcontextpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "HttpTask", - "title" : "HTTP任务", - "description" : "一个HTTP任务", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n \n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.http.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "httptaskrequestmethodpackage", "httptaskrequesturlpackage", "httptaskrequestheaderspackage", "httptaskrequestbodypackage", "httptaskrequesttimeoutpackage", "httptaskdisallowredirectspackage", "httptaskfailstatuscodespackage", "httptaskhandlestatuscodespackage", "httptaskignoreexceptionpackage", "httptaskresponsevariablenamepackage", "httptasksaverequestvariablespackage", "httptasksaveresponseparameterspackage", "httptaskresultvariableprefixpackage", "httptasksaveresponseparameterstransientpackage", "httptasksaveresponseasjsonpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "MuleTask", - "title" : "Mule 任务", - "description" : "发送消息的任务给Mule", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n \n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.mule.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "muletaskendpointurlpackage", "muletasklanguagepackage", "muletaskpayloadexpressionpackage", "muletaskresultvariablepackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "SendTask", - "title" : "\u53d1\u9001\u4efb\u52a1", - "description" : "\u53d1\u9001\u6d88\u606f\u7684\u4efb\u52a1", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n \n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.send.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, { - "type" : "node", - "id" : "DecisionTask", - "title" : "决策任务", - "description" : "使用可流动DMN规则引擎的任务", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n \n", - "icon" : "activity/list/type.decision.png", - "groups" : [ "\u4efb\u52a1" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "decisiontaskdecisiontablereferencepackage", "decisiontaskthrowerroronnohitspackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ] - }, - { - "type": "node", - "id": "ShellTask", - "title": "Shell任务", - "description": "shell批量逻辑的自动任务", - "view": "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\n\t\t_]]>\n\t\n \n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon": "activity/list/type.shell.png", - "groups": [ - "\u4efb\u52a1" - ], - "propertyPackages": [ - "overrideidpackage", - "namepackage", - "documentationpackage", - "asynchronousdefinitionpackage", - "shellcommandpackage", - "shellarg1package", - "shellarg2package", - "shellarg3package", - "shellarg4package", - "shellarg5package", - "shellwaitpackage", - "shelloutputvariablepackage", - "shellerrorcodevariablepackage", - "shellredirecterrorpackage", - "shellcleanenvpackage", - "shelldirectorypackage", - "exclusivedefinitionpackage", - "executionlistenerspackage", - "multiinstance_typepackage", - "multiinstance_cardinalitypackage", - "multiinstance_collectionpackage", - "multiinstance_variablepackage", - "multiinstance_conditionpackage", - "isforcompensationpackage" - ], - "hiddenPropertyPackages": [], - "roles": [ - "Activity", - "sequence_start", - "sequence_end", - "ActivitiesMorph", - "all" - ] - },{ - "type" : "node", - "id" : "SubProcess", - "title" : "\u5b50\u6d41\u7a0b", - "description" : "\u5b50\u6d41\u7a0b\u8303\u56f4", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n \n", - "icon" : "activity/expanded.subprocess.png", - "groups" : [ "子流程" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "all" ] - },{ - "type" : "node", - "id" : "CollapsedSubProcess", - "title" : "折叠子过程", - "description" : "子过程范围", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n\t\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n \n", - "icon" : "activity/subprocess.png", - "groups" : [ "子流程" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "datapropertiespackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "istransactionpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "all" ] - },{ - "type" : "node", - "id" : "EventSubProcess", - "title" : "事件子流程", - "description" : "\u5b50\u6d41\u7a0b\u4e8b\u4ef6\u8303\u56f4", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \n \n\t\n\t\n \t\n\t\t\n \t\n\t\n\t\n \n", - "icon" : "activity/event.subprocess.png", - "groups" : [ "子流程" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "all", "EventSubProcess" ] - }, { - "type" : "node", - "id" : "CallActivity", - "title" : "活动子流程", - "description" : "\u547c\u53eb\u6d3b\u52a8", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n\t\n \n\t\n\t\t\n\t\t\n \n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\n\n\t\n\t\t\n\t\n \n", - "icon" : "activity/task.png", - "groups" : [ "子流程" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "callactivitycalledelementpackage", "callactivityinparameterspackage", "callactivityoutparameterspackage", "callactivityinheritvariablespackage", "callactivitysamedeploymentpackage", "callactivityprocessinstancenamepackage", "callactivityinheritbusinesskeypackage", "callactivitybusinesskeypackage", "callactivityuselocalscopeforoutparameterspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "ExclusiveGateway", - "title" : "\u9ad8\u7ea7\u5206\u652f", - "description" : "\u9ad8\u7ea7\u5206\u652f", - "view" : "\n\n \n \n \n \t\t\t\t\t\n \n \n \n \n \n \n \n\t\n\t\n\t\n \n\n", - "icon" : "gateway/exclusive.databased.png", - "groups" : [ "\u7f51\u5173" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "ParallelGateway", - "title" : "\u5e76\u884c\u5206\u652f", - "description" : "\u5e76\u884c\u5206\u652f\u7528\u6765\u5bf9\u6d41\u7a0b\u4e2d\u7684\u5e76\u53d1\u8fdb\u884c\u5efa\u6a21", - "view" : "\n\n \n \n \n \n \n \n \n \n\t\n\t\n \n\n", - "icon" : "gateway/parallel.png", - "groups" : [ "\u7f51\u5173" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "InclusiveGateway", - "title" : "\u5305\u5bb9\u5206\u652f", - "description" : "\u5305\u5bb9\u5206\u652f\u53ef\u4ee5\u88ab\u89c6\u4e3a\u662f\u6392\u4ed6\u5206\u652f\u548c\u5e76\u884c\u5206\u652f\u7684\u7ed3\u5408", - "view" : "\n\n \n \n \n \n\n \n \n \n\t\n\t\n \n\n", - "icon" : "gateway/inclusive.png", - "groups" : [ "\u7f51\u5173" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "EventGateway", - "title" : "\u4e8b\u4ef6\u5206\u652f", - "description" : "\u4e8b\u4ef6\u5206\u652f", - "view" : "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n\n", - "icon" : "gateway/eventbased.png", - "groups" : [ "\u7f51\u5173" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "sequencefloworderpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "GatewaysMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "BoundaryErrorEvent", - "title" : "\u8fb9\u754c\u9519\u8bef\u4e8b\u4ef6", - "description" : "\u6355\u83b7BPMN\u9519\u8bef\u8fb9\u754c\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n \n\t\n \n", - "icon" : "catching/error.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "errorrefpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ] - }, { - "type" : "node", - "id" : "BoundaryTimerEvent", - "title" : "\u8fb9\u754c\u5b9a\u65f6\u5668\u4e8b\u4ef6", - "description" : "\u5b9a\u65f6\u5668\u89e6\u53d1\u7684\u8fb9\u754c\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \n \n \n \n \n \t\n\t\n \n", - "icon" : "catching/timer.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage", "timerenddatedefinitionpackage", "cancelactivitypackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ] - }, { - "type" : "node", - "id" : "BoundarySignalEvent", - "title" : "\u8fb9\u754c\u4fe1\u53f7\u4e8b\u4ef6", - "description" : "\u4fe1\u53f7\u89e6\u53d1\u7684\u8fb9\u754c\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \n \n \n\t\n\t\n \n", - "icon" : "catching/signal.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "signalrefpackage", "cancelactivitypackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ] - }, { - "type" : "node", - "id" : "BoundaryMessageEvent", - "title" : "\u8fb9\u754c\u7ebf\u6d88\u606f\u4e8b\u4ef6", - "description" : "\u6d88\u606f\u89e6\u53d1\u7684\u8fb9\u754c\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \t\n \n \n \n\t\n\t\t\n\t\n\t\n\t\n \n", - "icon" : "catching/message.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "messagerefpackage", "cancelactivitypackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ] - }, { - "type" : "node", - "id" : "BoundaryCancelEvent", - "title" : "\u8fb9\u754c\u53d6\u6d88\u4e8b\u4ef6", - "description" : "\u8fb9\u754c\u53d6\u6d88\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n \n \n\t\n \n", - "icon" : "catching/cancel.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary" ] - }, { - "type" : "node", - "id" : "BoundaryCompensationEvent", - "title" : "\u8fb9\u754c\u8865\u507f\u4e8b\u4ef6", - "description" : "\u8fb9\u754c\u8865\u507f\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n\t\n \n \n \n \n \n\t\n \n", - "icon" : "catching/compensation.png", - "groups" : [ "\u8fb9\u754c\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "BoundaryEventsMorph", "IntermediateEventOnActivityBoundary", "all" ] - }, { - "type" : "node", - "id" : "CatchTimerEvent", - "title" : "\u4e2d\u95f4\u5b9a\u65f6\u5668\u6355\u83b7\u4e8b\u4ef6", - "description" : "\u5b9a\u65f6\u5668\u89e6\u53d1\u7684\u6355\u83b7\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \n \n \n \n \n \t\n\t\n \n", - "icon" : "catching/timer.png", - "groups" : [ "\u4e2d\u95f4\u6355\u83b7\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "CatchSignalEvent", - "title" : "\u4e2d\u95f4\u4fe1\u53f7\u6355\u83b7\u4e8b\u4ef6", - "description" : "\u4fe1\u53f7\u89e6\u53d1\u7684\u6355\u83b7\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \n \n \n\t\n\t\n \n", - "icon" : "catching/signal.png", - "groups" : [ "\u4e2d\u95f4\u6355\u83b7\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "CatchMessageEvent", - "title" : "\u4e2d\u95f4\u6d88\u606f\u6355\u83b7\u4e8b\u4ef6", - "description" : "\u6d88\u606f\u89e6\u53d1\u7684\u6355\u83b7\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \t\n \n \t\n \n \n \n\t\n\t\t\n\t\n\t\n\t\n \n", - "icon" : "catching/message.png", - "groups" : [ "\u4e2d\u95f4\u6355\u83b7\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "sequence_start", "sequence_end", "CatchEventsMorph", "all" ] - }, { - "type" : "node", - "id" : "ThrowNoneEvent", - "title" : "\u4e2d\u95f4\u7a7a\u629b\u51fa\u4e8b\u4ef6", - "description" : "\u4e2d\u95f4\u6ca1\u6709\u4e00\u4e2a\u5177\u4f53\u7684\u89e6\u53d1\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n\t\n \n", - "icon" : "throwing/none.png", - "groups" : [ "\u4e2d\u95f4\u6355\u83b7\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "ThrowSignalEvent", - "title" : "\u4e2d\u95f4\u4fe1\u53f7\u629b\u51fa\u4e8b\u4ef6", - "description" : "\u4e2d\u95f4\u7684\u4fe1\u53f7\u89e6\u53d1\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n\t\n \n", - "icon" : "throwing/signal.png", - "groups" : [ "\u4e2d\u95f4\u89e6\u53d1\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ThrowEventsMorph", "sequence_start", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "EndNoneEvent", - "title" : "\u7ed3\u675f\u4e8b\u4ef6", - "description" : "\u6ca1\u6709\u4e00\u4e2a\u5177\u4f53\u7684\u89e6\u53d1\u7ed3\u675f\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n\t\n \n", - "icon" : "endevent/none.png", - "groups" : [ "\u7ed3\u675f\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "EndEventsMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "EndErrorEvent", - "title" : "\u7ed3\u675f\u9519\u8bef\u4e8b\u4ef6", - "description" : "\u629b\u51fa\u4e00\u4e2a\u9519\u8bef\u7ed3\u675f\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n\t\n \n", - "icon" : "endevent/error.png", - "groups" : [ "\u7ed3\u675f\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "EndEventsMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "EndCancelEvent", - "title" : "\u7ed3\u675f\u540e\u53d6\u6d88\u4e8b\u4ef6", - "description" : "\u7ed3\u675f\u540e\u53d6\u6d88\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n\t\n \n", - "icon" : "endevent/cancel.png", - "groups" : [ "\u7ed3\u675f\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "EndEventsMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "EndTerminateEvent", - "title" : "\u7ed3\u675f\u7ec8\u6b62\u4e8b\u4ef6", - "description" : "\u7ed3\u675f\u7ec8\u6b62\u4e8b\u4ef6", - "view" : "\n\n \n \n \t\n \n \n \n \n \n\t\n \n", - "icon" : "endevent/terminate.png", - "groups" : [ "\u7ed3\u675f\u4e8b\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "terminateAllpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "EndEventsMorph", "sequence_end", "all" ] - }, { - "type" : "node", - "id" : "Pool", - "title" : "\u6d41\u7a0b\u6c60", - "description" : "\u6d41\u7a0b\u5b9a\u4e49\u6c60", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \n \n \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t \t\n \t\n \n \n\t\n\t\n\t\n\t\n \n \n \n", - "icon" : "swimlane/pool.png", - "groups" : [ "泳道" ], - "layout" : [ { - "type" : "layout.bpmn2_0.pool" - } ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "process_idpackage", "isexecutablepackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "canContainArtifacts", "all" ] - }, { - "type" : "node", - "id" : "Lane", - "title" : "通道", - "description" : "建立流程定义的通道", - "view" : "\n\n \n \n \n \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n \t\t\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \n\t\n \n", - "icon" : "swimlane/lane.png", - "groups" : [ "泳道" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "PoolChild", "canContainArtifacts", "all" ] - }, { - "type" : "edge", - "id" : "SequenceFlow", - "title" : "\u987a\u5e8f\u6d41", - "description" : "\u987a\u5e8f\u6d41\u5b9a\u4e49\u6d3b\u52a8\u7684\u6267\u884c\u987a\u5e8f.", - "view" : "\r\n\r\n\t\r\n\t \t\r\n\t \t\t\r\n\t\t\t\r\n\t \t\r\n\t \t\r\n\t \t\t\r\n\t \t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n", - "icon" : "connector/sequenceflow.png", - "groups" : [ "\u8fde\u63a5\u5bf9\u8c61" ], - "layout" : [ { - "type" : "layout.bpmn2_0.sequenceflow" - } ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "conditionsequenceflowpackage", "executionlistenerspackage", "defaultflowpackage", "skipexpressionpackage","sequenceflowtextxpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ConnectingObjectsMorph", "all" ] - }, { - "type" : "edge", - "id" : "MessageFlow", - "title" : "\u6d88\u606f\u6d41", - "description" : "\u8fde\u63a5\u4e0d\u540c\u6d41\u7a0b\u6c60\u7684\u6d88\u606f\u6d41.", - "view" : "\r\n\r\n\t\r\n\t\t\r\n\t \t\t\r\n\t \t\t\r\n\t \t\r\n\r\n\t \t\r\n\t \t\t\r\n\t \t\r\n\t\r\n\t\r\n\t \r\n\t\t\r\n\t\r\n", - "icon" : "connector/messageflow.png", - "groups" : [ "\u8fde\u63a5\u5bf9\u8c61" ], - "layout" : [ { - "type" : "layout.bpmn2_0.sequenceflow" - } ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ConnectingObjectsMorph", "all" ] - }, { - "type" : "edge", - "id" : "Association", - "title" : "\u8054\u7cfb", - "description" : "\u8054\u7cfb\u6587\u672c\u6ce8\u91ca\u4e0e\u5bf9\u8c61.", - "view" : "\r\n\r\n\t\r\n\t \r\n\t\t\r\n\t\r\n", - "icon" : "connector/association.undirected.png", - "groups" : [ "\u8fde\u63a5\u5bf9\u8c61" ], - "layout" : [ { - "type" : "layout.bpmn2_0.sequenceflow" - } ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ConnectingObjectsMorph", "all" ] - }, { - "type" : "edge", - "id" : "DataAssociation", - "title" : "\u6570\u636e\u8054\u7cfb", - "description" : "\u8054\u7cfb\u5e26\u6d3b\u52a8\u7684\u5bf9\u8c61.", - "view" : "\r\n\r\n\t\r\n\t \t\r\n\t \t\t\r\n\t \t\r\n\t\r\n\t\r\n\t \r\n\t\t\r\n\t\r\n", - "icon" : "connector/association.unidirectional.png", - "groups" : [ "\u8fde\u63a5\u5bf9\u8c61" ], - "layout" : [ { - "type" : "layout.bpmn2_0.sequenceflow" - } ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "ConnectingObjectsMorph", "all" ] - }, { - "type" : "node", - "id" : "TextAnnotation", - "title" : "\u6587\u672c\u6ce8\u91ca", - "description" : "\u8bf4\u660e\u6587\u5b57\u6807\u6ce8\u5143\u7d20.", - "view" : "\n\n \n \n \t\n \n \n \n \n \n \n\t\n \n", - "icon" : "artifact/text.annotation.png", - "groups" : [ "\u6784\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "textpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "all" ] - }, { - "type" : "node", - "id" : "DataStore", - "title" : "\u6570\u636e\u5b58\u50a8", - "description" : "\u6570\u636e\u5b58\u50a8\u7684\u5f15\u7528.", - "view" : "\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t \t\r\n\t\t\r\n\t\t\t \r\n\t\r\n\r\n", - "icon" : "dataobject/data.store.png", - "groups" : [ "\u6784\u4ef6" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "all" ] - }, { - "type" : "node", - "id" : "AdhocSubProcess", - "title" : "特别子流程", - "description" : "一个特别子过程", - "view" : "\n\n \n \n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \t\n \n \n \n\t\n\t\n\t\n\t\n\t~\n \n", - "icon" : "activity/adhoc.subprocess.png", - "groups" : [ "子流程" ], - "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "completionconditionpackage", "orderingpackage", "cancelremaininginstancespackage" ], - "hiddenPropertyPackages" : [ ], - "roles" : [ "Activity", "sequence_start", "sequence_end", "all" ] - } ], - "rules" : { - "cardinalityRules" : [ { - "role" : "Startevents_all", - "incomingEdges" : [ { - "role" : "SequenceFlow", - "maximum" : 0 - } ] - }, { - "role" : "Endevents_all", - "outgoingEdges" : [ { - "role" : "SequenceFlow", - "maximum" : 0 - } ] - } ], - "connectionRules" : [ { - "role" : "SequenceFlow", - "connects" : [ { - "from" : "sequence_start", - "to" : [ "sequence_end" ] - } ] - }, { - "role" : "Association", - "connects" : [ { - "from" : "sequence_start", - "to" : [ "TextAnnotation" ] - }, { - "from" : "sequence_end", - "to" : [ "TextAnnotation" ] - }, { - "from" : "TextAnnotation", - "to" : [ "sequence_end" ] - }, { - "from" : "BoundaryCompensationEvent", - "to" : [ "sequence_end" ] - }, { - "from" : "TextAnnotation", - "to" : [ "sequence_start" ] - }, { - "from" : "BoundaryCompensationEvent", - "to" : [ "sequence_start" ] - } ] - }, { - "role" : "DataAssociation", - "connects" : [ { - "from" : "sequence_start", - "to" : [ "DataStore" ] - }, { - "from" : "sequence_end", - "to" : [ "DataStore" ] - }, { - "from" : "DataStore", - "to" : [ "sequence_end" ] - }, { - "from" : "DataStore", - "to" : [ "sequence_start" ] - } ] - }, { - "role" : "IntermediateEventOnActivityBoundary", - "connects" : [ { - "from" : "Activity", - "to" : [ "IntermediateEventOnActivityBoundary" ] - } ] - } ], - "containmentRules" : [ { - "role" : "BPMNDiagram", - "contains" : [ "all" ] - }, { - "role" : "SubProcess", - "contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "EventSubProcess", "TextAnnotation", "DataStore" ] - }, { - "role" : "AdhocSubProcess", - "contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ] - }, { - "role" : "EventSubProcess", - "contains" : [ "sequence_start", "sequence_end", "from_task_event", "to_task_event", "TextAnnotation", "DataStore" ] - }, { - "role" : "Pool", - "contains" : [ "Lane" ] - }, { - "role" : "Lane", - "contains" : [ "sequence_start", "sequence_end", "EventSubProcess", "TextAnnotation", "DataStore" ] - } ], - "morphingRules" : [ { - "role" : "ActivitiesMorph", - "baseMorphs" : [ "UserTask" ], - "preserveBounds" : true - }, { - "role" : "GatewaysMorph", - "baseMorphs" : [ "ExclusiveGateway" ] - }, { - "role" : "StartEventsMorph", - "baseMorphs" : [ "StartNoneEvent" ] - }, { - "role" : "EndEventsMorph", - "baseMorphs" : [ "StartNoneEvent" ] - }, { - "role" : "CatchEventsMorph", - "baseMorphs" : [ "CatchTimerEvent" ] - }, { - "role" : "ThrowEventsMorph", - "baseMorphs" : [ "ThrowNoneEvent" ] - }, { - "role" : "BoundaryEventsMorph", - "baseMorphs" : [ "ThrowNoneEvent" ] - }, { - "role" : "BoundaryCompensationEvent", - "baseMorphs" : [ "BoundaryCompensationEvent" ] - }, { - "role" : "TextAnnotation", - "baseMorphs" : [ "TextAnnotation" ] - }, { - "role" : "DataStore", - "baseMorphs" : [ "DataStore" ] - } ] - } -} diff --git a/ruoyi-modules/ruoyi-workflow/pom.xml b/ruoyi-modules/ruoyi-workflow/pom.xml index a59374274..f0391e358 100644 --- a/ruoyi-modules/ruoyi-workflow/pom.xml +++ b/ruoyi-modules/ruoyi-workflow/pom.xml @@ -53,6 +53,19 @@ 6.8.0 + + + org.apache.xmlgraphics + batik-all + 1.10 + + + xalan + xalan + + + + org.dromara diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActModelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActModelController.java index cc02e1147..5cfaaf9b8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActModelController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActModelController.java @@ -1,36 +1,26 @@ package org.dromara.workflow.controller; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.io.resource.ResourceUtil; -import com.fasterxml.jackson.databind.node.ObjectNode; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; -import org.apache.commons.io.IOUtils; import org.dromara.common.core.domain.R; -import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.workflow.domain.bo.ModelBo; -import org.dromara.workflow.domain.vo.AccountVo; -import org.dromara.workflow.domain.vo.ResultListDataRepresentation; +import org.dromara.workflow.domain.vo.ModelVo; import org.dromara.workflow.service.IActModelService; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.Model; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.MultiValueMap; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; import java.util.Arrays; /** @@ -59,20 +49,6 @@ public class ActModelController extends BaseController { return actModelService.page(modelBo); } - /** - * 设计器登录信息 - */ - @GetMapping("/rest/account") - public String getAccount() { - AccountVo accountVo = new AccountVo(); - LoginUser loginUser = LoginHelper.getLoginUser(); - accountVo.setId(Convert.toStr(loginUser.getUserId())); - accountVo.setFirstName(""); - accountVo.setLastName(loginUser.getUsername()); - accountVo.setFullName(loginUser.getUsername()); - return JsonUtils.toJsonString(accountVo); - } - /** * 新增模型 * @@ -80,7 +56,7 @@ public class ActModelController extends BaseController { */ @Log(title = "模型管理", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/rest/models") + @PostMapping("/save") public R saveNewModel(@Validated(AddGroup.class) @RequestBody ModelBo modelBo) { return toAjax(actModelService.saveNewModel(modelBo)); } @@ -88,25 +64,35 @@ public class ActModelController extends BaseController { /** * 查询模型 * - * @param modelId 模型id + * @param id 模型id */ - @GetMapping("/rest/models/{modelId}/editor/json") - public ObjectNode getModelInfo(@NotBlank(message = "模型id不能为空") @PathVariable String modelId) { - return actModelService.getModelInfo(modelId); + @GetMapping("/getInfo/{id}") + public R getInfo(@NotBlank(message = "模型id不能为空") @PathVariable String id) { + return R.ok(actModelService.getInfo(id)); } - /** - * 编辑模型 + * 修改模型信息 * - * @param modelId 模型id - * @param values 模型数据 + * @param modelBo 模型数据 */ @Log(title = "模型管理", businessType = BusinessType.UPDATE) @RepeatSubmit() - @PostMapping(value = "/rest/models/{modelId}/editor/json") - public R editModel(@PathVariable String modelId, @RequestParam MultiValueMap values) { - return toAjax(actModelService.editModel(modelId, values)); + @PostMapping(value = "/update") + public R update(@RequestBody ModelBo modelBo) { + return toAjax(actModelService.update(modelBo)); + } + + /** + * 编辑XMl模型 + * + * @param modelBo 模型数据 + */ + @Log(title = "模型管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping(value = "/editModelXml") + public R editModel(@Validated(EditGroup.class) @RequestBody ModelBo modelBo) { + return toAjax(actModelService.editModelXml(modelBo)); } /** @@ -146,36 +132,4 @@ public class ActModelController extends BaseController { HttpServletResponse response) { actModelService.exportZip(modelId, response); } - - /** - * 查询用户 - * - * @param filter 参数 - */ - @GetMapping(value = "/rest/editor-users") - public ResultListDataRepresentation editorUsers(@RequestParam(value = "filter", required = false) String filter) { - return actModelService.getUsers(filter); - } - - /** - * 查询用户组 - * - * @param filter 参数 - */ - @GetMapping(value = "/rest/editor-groups") - public ResultListDataRepresentation editorGroups(@RequestParam(required = false, value = "filter") String filter) { - return actModelService.getGroups(filter); - } - - /** - * 解析翻译模型设计器内容 - */ - @GetMapping(value = "/rest/stencil-sets/editor") - public String getStencilset() { - try (InputStream inputStream = ResourceUtil.getStream("static/stencilset.json")) { - return IOUtils.toString(inputStream, StandardCharsets.UTF_8); - } catch (Exception e) { - throw new SecurityException("Error while loading stencil set", e); - } - } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ModelBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ModelBo.java index 152f65445..12efd87a8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ModelBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/ModelBo.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.Pattern; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; import org.dromara.workflow.common.PageEntity; import org.dromara.workflow.common.constant.FlowConstant; @@ -23,6 +24,12 @@ public class ModelBo extends PageEntity implements Serializable { @Serial private static final long serialVersionUID = 1L; + /** + * 模型id + */ + @NotBlank(message = "模型ID不能为空", groups = {EditGroup.class}) + private String id; + /** * 模型名称 */ @@ -42,6 +49,18 @@ public class ModelBo extends PageEntity implements Serializable { @NotBlank(message = "模型分类不能为空", groups = {AddGroup.class}) private String categoryCode; + /** + * 模型XML + */ + @NotBlank(message = "模型XML不能为空", groups = {AddGroup.class}) + private String xml; + + /** + * 模型SVG图片 + */ + @NotBlank(message = "模型SVG不能为空", groups = {EditGroup.class}) + private String svg; + /** * 备注 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/AccountVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/AccountVo.java deleted file mode 100644 index 825f7c486..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/AccountVo.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.dromara.workflow.domain.vo; - -import lombok.Data; - -import java.util.List; - -/** - * 参考官方提供的响应数据 - * - * @author may - */ -@Data -public class AccountVo { - private String id; - private String firstName; - private String lastName; - private String email; - private String fullName; - private List groups; - private List privileges; -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ModelVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ModelVo.java new file mode 100644 index 000000000..b2ce81108 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ModelVo.java @@ -0,0 +1,48 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 模型视图对象 + * + * @author may + */ +@Data +public class ModelVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 模型id + */ + private String id; + + /** + * 模型名称 + */ + private String name; + + /** + * 模型标识key + */ + private String key; + + /** + * 模型分类 + */ + private String categoryCode; + + /** + * 模型XML + */ + private String xml; + + /** + * 备注 + */ + private String description; +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ResultListDataRepresentation.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ResultListDataRepresentation.java deleted file mode 100644 index 907d4dadd..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/ResultListDataRepresentation.java +++ /dev/null @@ -1,39 +0,0 @@ -/* Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.dromara.workflow.domain.vo; - -import lombok.Data; - -import java.util.List; - -/** - * @author Tijs Rademakers - */ -@Data -public class ResultListDataRepresentation { - - protected Integer size; - protected Long total; - protected Integer start; - protected List data; - - public ResultListDataRepresentation(List data) { - this.data = data; - if (data != null) { - size = data.size(); - total = (long) data.size(); - start = 0; - } - } - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/UserRepresentation.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/UserRepresentation.java deleted file mode 100644 index d990a920d..000000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/UserRepresentation.java +++ /dev/null @@ -1,30 +0,0 @@ -/* Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.dromara.workflow.domain.vo; - -import lombok.Data; - -/** - * @author Joram Barrez - */ -@Data -public class UserRepresentation { - - protected String id; - protected String firstName; - protected String lastName; - protected String email; - protected String fullName; - protected String tenantId; - -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActModelService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActModelService.java index 86820bdef..c7f6c1858 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActModelService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActModelService.java @@ -1,12 +1,11 @@ package org.dromara.workflow.service; -import com.fasterxml.jackson.databind.node.ObjectNode; import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.workflow.domain.bo.ModelBo; -import org.dromara.workflow.domain.vo.ResultListDataRepresentation; +import org.dromara.workflow.domain.vo.ModelVo; import org.flowable.engine.repository.Model; -import org.springframework.util.MultiValueMap; + /** * 模型管理 服务层 @@ -36,16 +35,23 @@ public interface IActModelService { * @param modelId 模型id * @return 模型数据 */ - ObjectNode getModelInfo(String modelId); + ModelVo getInfo(String modelId); /** - * 编辑模型 + * 修改模型信息 * - * @param modelId 模型id - * @param values 模型数据 + * @param modelBo 模型数据 * @return 结果 */ - boolean editModel(String modelId, MultiValueMap values); + boolean update(ModelBo modelBo); + + /** + * 编辑模型XML + * + * @param modelBo 模型数据 + * @return 结果 + */ + boolean editModelXml(ModelBo modelBo); /** * 模型部署 @@ -62,20 +68,4 @@ public interface IActModelService { * @param response 相应 */ void exportZip(String modelId, HttpServletResponse response); - - /** - * 查询用户 - * - * @param filter 参数 - * @return 结果 - */ - ResultListDataRepresentation getUsers(String filter); - - /** - * 查询用户组 - * - * @param filter 参数 - * @return 结果 - */ - ResultListDataRepresentation getGroups(String filter); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java index 290a0ebfe..44adc4248 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java @@ -7,34 +7,24 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.apache.batik.transcoder.TranscoderInput; +import org.apache.batik.transcoder.TranscoderOutput; +import org.apache.batik.transcoder.image.PNGTranscoder; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.tenant.helper.TenantHelper; -import org.dromara.system.domain.SysRole; -import org.dromara.system.domain.SysUser; import org.dromara.system.mapper.SysRoleMapper; import org.dromara.system.mapper.SysUserMapper; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.domain.bo.ModelBo; -import org.dromara.workflow.domain.vo.GroupRepresentation; -import org.dromara.workflow.domain.vo.ResultListDataRepresentation; -import org.dromara.workflow.domain.vo.UserRepresentation; +import org.dromara.workflow.domain.vo.ModelVo; import org.dromara.workflow.service.IActModelService; -import org.dromara.workflow.utils.WorkflowUtils; +import org.dromara.workflow.utils.ModelUtils; import org.flowable.bpmn.model.BpmnModel; -import org.flowable.editor.constants.ModelDataJsonConstants; -import org.flowable.editor.language.json.converter.BpmnJsonConverter; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.Model; @@ -43,21 +33,18 @@ import org.flowable.engine.repository.ProcessDefinition; import org.flowable.validation.ValidationError; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.MultiValueMap; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import static org.dromara.workflow.common.constant.FlowConstant.NAMESPACE; -import static org.flowable.editor.constants.ModelDataJsonConstants.*; - /** * 模型管理 服务层实现 * @@ -95,16 +82,6 @@ public class ActModelServiceImpl implements IActModelService { query.orderByCreateTime().desc(); // 分页查询 List modelList = query.listPage(modelBo.getPageNum(), modelBo.getPageSize()); - if (CollUtil.isNotEmpty(modelList)) { - modelList.parallelStream().forEach(e -> { - boolean isNull = JSONUtil.isNull(JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION)); - if (!isNull) { - e.setMetaInfo((String) JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION)); - } else { - e.setMetaInfo(StrUtil.EMPTY); - } - }); - } // 总记录数 long total = query.count(); return new TableDataInfo<>(modelList, total); @@ -124,38 +101,22 @@ public class ActModelServiceImpl implements IActModelService { String key = modelBo.getKey(); String name = modelBo.getName(); String description = modelBo.getDescription(); + String categoryCode = modelBo.getCategoryCode(); + String xml = modelBo.getXml(); Model checkModel = repositoryService.createModelQuery().modelKey(key).modelTenantId(TenantHelper.getTenantId()).singleResult(); if (ObjectUtil.isNotNull(checkModel)) { throw new ServiceException("模型key已存在!"); } - // 1. 初始空的模型 + //初始空的模型 Model model = repositoryService.newModel(); model.setKey(key); model.setName(name); - model.setCategory(modelBo.getCategoryCode()); model.setVersion(version); - model.setTenantId(TenantHelper.getTenantId()); - ObjectMapper objectMapper = JsonUtils.getObjectMapper(); - // 封装模型json对象 - ObjectNode objectNode = JsonUtils.getObjectMapper().createObjectNode(); - objectNode.put(MODEL_NAME, name); - objectNode.put(MODEL_REVISION, version); - objectNode.put(MODEL_DESCRIPTION, description); - model.setMetaInfo(objectNode.toString()); - // 保存初始化的模型基本信息数据 + model.setCategory(categoryCode); + model.setMetaInfo(description); + //保存初始化的模型基本信息数据 repositoryService.saveModel(model); - // 封装模型对象基础数据json串 - ObjectNode editorNode = objectMapper.createObjectNode(); - ObjectNode stencilSetNode = objectMapper.createObjectNode(); - stencilSetNode.put("namespace", NAMESPACE); - editorNode.replace("stencilset", stencilSetNode); - // 标识key - ObjectNode propertiesNode = objectMapper.createObjectNode(); - propertiesNode.put("process_id", key); - propertiesNode.put("name", name); - propertiesNode.put("description", description); - editorNode.replace("properties", propertiesNode); - repositoryService.addModelEditorSource(model.getId(), editorNode.toString().getBytes(StandardCharsets.UTF_8)); + repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml)); return true; } catch (Exception e) { e.printStackTrace(); @@ -166,93 +127,97 @@ public class ActModelServiceImpl implements IActModelService { /** * 查询模型 * - * @param modelId 模型id + * @param id 模型id * @return 模型数据 */ @Override - public ObjectNode getModelInfo(String modelId) { - ObjectNode modelNode = null; - Model model = repositoryService.createModelQuery().modelId(modelId).modelTenantId(TenantHelper.getTenantId()).singleResult(); - ObjectMapper objectMapper = JsonUtils.getObjectMapper(); + public ModelVo getInfo(String id) { + ModelVo modelVo = new ModelVo(); + Model model = repositoryService.getModel(id); if (model != null) { try { - if (StringUtils.isNotEmpty(model.getMetaInfo())) { - modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo()); - } else { - modelNode = objectMapper.createObjectNode(); - modelNode.put(MODEL_NAME, model.getName()); - } - modelNode.put(MODEL_ID, model.getId()); - modelNode.put("key", model.getKey()); - Integer version = model.getVersion(); - if (version > 0) { - byte[] modelEditorSource = repositoryService.getModelEditorSource(model.getId()); - BpmnModel bpmnModel = WorkflowUtils.xmlToBpmnModel(modelEditorSource); - BpmnJsonConverter bpmnJsonConverter = new BpmnJsonConverter(); - ObjectNode jsonNodes = bpmnJsonConverter.convertToJson(bpmnModel); - modelNode.set("model", jsonNodes); - } else { - ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree( - new String(repositoryService.getModelEditorSource(model.getId()), StandardCharsets.UTF_8)); - modelNode.set("model", editorJsonNode); - } - + byte[] modelEditorSource = repositoryService.getModelEditorSource(model.getId()); + modelVo.setXml(StrUtil.utf8Str(modelEditorSource)); + modelVo.setId(model.getId()); + modelVo.setKey(model.getKey()); + modelVo.setName(model.getName()); + modelVo.setCategoryCode(model.getCategory()); + modelVo.setDescription(model.getMetaInfo()); + return modelVo; } catch (Exception e) { - e.printStackTrace(); + throw new ServiceException(e.getMessage()); } } - return modelNode; + return modelVo; } /** - * 编辑模型 + * 修改模型信息 * - * @param modelId 模型id - * @param values 模型数据 + * @param modelBo 模型数据 + * @return 结果 + */ + @Override + public boolean update(ModelBo modelBo) { + try { + Model model = repositoryService.getModel(modelBo.getId()); + List list = repositoryService.createModelQuery().modelTenantId(TenantHelper.getTenantId()).modelKey(modelBo.getKey()).list(); + list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> { + throw new ServiceException("模型KEY已存在!"); + }); + model.setKey(modelBo.getKey()); + model.setName(modelBo.getName()); + model.setCategory(modelBo.getCategoryCode()); + model.setMetaInfo(modelBo.getDescription()); + repositoryService.saveModel(model); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + return true; + } + + /** + * 编辑模型XML + * + * @param modelBo 模型数据 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) - public boolean editModel(String modelId, MultiValueMap values) { + public boolean editModelXml(ModelBo modelBo) { try { - Model model = repositoryService.createModelQuery().modelId(modelId).modelTenantId(TenantHelper.getTenantId()).singleResult(); - ObjectMapper objectMapper = JsonUtils.getObjectMapper(); - ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo()); - - modelJson.put(MODEL_NAME, values.getFirst("name")); - modelJson.put(MODEL_DESCRIPTION, values.getFirst("description")); - modelJson.put(MODEL_REVISION, model.getVersion() + 1); - model.setMetaInfo(modelJson.toString()); - model.setName(values.getFirst("name")); - // 每次保存把版本更新+1 - model.setVersion(model.getVersion() + 1); - // 获取唯一标识key - String key = values.getFirst("key"); + String xml = modelBo.getXml(); + String svg = modelBo.getSvg(); + String modelId = modelBo.getId(); + String key = modelBo.getKey(); + String name = modelBo.getName(); + BpmnModel bpmnModel = ModelUtils.xmlToBpmnModel(xml); + ModelUtils.checkBpmnModel(bpmnModel); + Model model = repositoryService.getModel(modelId); + List list = repositoryService.createModelQuery().modelTenantId(TenantHelper.getTenantId()).modelKey(key).list(); + list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> { + throw new ServiceException("模型KEY已存在!"); + }); // 校验key命名规范 if (!Validator.isMatchRegex(FlowConstant.MODEL_KEY_PATTERN, key)) { - throw new ServiceException("模型标识key只能字符或者下划线开头!"); + throw new ServiceException("模型标识KEY只能字符或者下划线开头!"); } - List list = repositoryService.createModelQuery().modelKey(key).modelTenantId(TenantHelper.getTenantId()).list(); - list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> { - throw new ServiceException("模型标识key已存在!"); - }); model.setKey(key); + model.setName(name); + model.setVersion(model.getVersion() + 1); repositoryService.saveModel(model); - JsonNode jsonNode = objectMapper.readTree(values.getFirst("json_xml")); - // 校验流程标识 - String processId = jsonNode.get("properties").get("process_id").textValue(); - if (StringUtils.isBlank(processId)) { - throw new ServiceException("流程标识不能为空!"); - } - if (!Validator.isMatchRegex(FlowConstant.MODEL_KEY_PATTERN, processId)) { - throw new ServiceException("流程标识只能字符或者下划线开头!"); - } + repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml)); + // 转换图片 + InputStream svgStream = new ByteArrayInputStream(StrUtil.utf8Bytes(svg)); + TranscoderInput input = new TranscoderInput(svgStream); - byte[] xmlBytes = WorkflowUtils.bpmnJsonToXmlBytes(Objects.requireNonNull(JsonUtils.toJsonString(jsonNode)).getBytes(StandardCharsets.UTF_8)); - if (ArrayUtil.isEmpty(xmlBytes)) { - throw new ServiceException("模型不能为空!"); - } - repositoryService.addModelEditorSource(model.getId(), xmlBytes); + PNGTranscoder transcoder = new PNGTranscoder(); + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + TranscoderOutput output = new TranscoderOutput(outStream); + + transcoder.transcode(input, output); + final byte[] result = outStream.toByteArray(); + repositoryService.addModelEditorSourceExtra(model.getId(), result); return true; } catch (Exception e) { e.printStackTrace(); @@ -276,14 +241,14 @@ public class ActModelServiceImpl implements IActModelService { throw new ServiceException("模型数据为空,请先设计流程定义模型,再进行部署!"); } if (JSONUtil.isTypeJSON(IOUtils.toString(xmlBytes, StandardCharsets.UTF_8.toString()))) { - byte[] bytes = WorkflowUtils.bpmnJsonToXmlBytes(xmlBytes); + byte[] bytes = ModelUtils.bpmnJsonToXmlBytes(xmlBytes); if (ArrayUtil.isEmpty(bytes)) { throw new ServiceException("模型不能为空,请至少设计一条主线流程!"); } } - BpmnModel bpmnModel = WorkflowUtils.xmlToBpmnModel(xmlBytes); + BpmnModel bpmnModel = ModelUtils.xmlToBpmnModel(xmlBytes); // 校验模型 - WorkflowUtils.checkBpmnModel(bpmnModel); + ModelUtils.checkBpmnModel(bpmnModel); List validationErrors = repositoryService.validateProcess(bpmnModel); if (CollUtil.isNotEmpty(validationErrors)) { String errorMsg = validationErrors.stream().map(ValidationError::getProblem).distinct().collect(Collectors.joining(",")); @@ -337,7 +302,7 @@ public class ActModelServiceImpl implements IActModelService { Model model = repositoryService.getModel(modelId); byte[] xmlBytes = repositoryService.getModelEditorSource(modelId); if (ObjectUtil.isNotNull(model)) { - if (JSONUtil.isTypeJSON(IOUtils.toString(xmlBytes, StandardCharsets.UTF_8.toString())) && ArrayUtil.isEmpty(WorkflowUtils.bpmnJsonToXmlBytes(xmlBytes))) { + if (JSONUtil.isTypeJSON(IOUtils.toString(xmlBytes, StandardCharsets.UTF_8.toString())) && ArrayUtil.isEmpty(ModelUtils.bpmnJsonToXmlBytes(xmlBytes))) { zipName = "模型不能为空,请至少设计一条主线流程!"; zos.putNextEntry(new ZipEntry(zipName + ".txt")); zos.write(zipName.getBytes(StandardCharsets.UTF_8)); @@ -371,49 +336,4 @@ public class ActModelServiceImpl implements IActModelService { } } } - - /** - * 查询用户 - * - * @param filter 参数 - */ - @Override - public ResultListDataRepresentation getUsers(String filter) { - - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.like(StringUtils.isNotBlank(filter), SysUser::getNickName, filter); - List sysUsers = sysUserMapper.selectList(wrapper); - List userRepresentations = new ArrayList<>(); - for (SysUser sysUser : sysUsers) { - UserRepresentation userRepresentation = new UserRepresentation(); - userRepresentation.setFullName(sysUser.getNickName()); - userRepresentation.setLastName(sysUser.getNickName()); - userRepresentation.setTenantId(sysUser.getTenantId()); - userRepresentation.setEmail(sysUser.getEmail()); - userRepresentation.setId(sysUser.getUserId().toString()); - userRepresentations.add(userRepresentation); - } - return new ResultListDataRepresentation(userRepresentations); - } - - /** - * 查询用户组 - * - * @param filter 参数 - */ - @Override - public ResultListDataRepresentation getGroups(String filter) { - - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.like(StringUtils.isNotBlank(filter), SysRole::getRoleName, filter); - List sysRoles = sysRoleMapper.selectList(wrapper); - List result = StreamUtils.toList(sysRoles, sysRole -> { - GroupRepresentation groupRepresentation = new GroupRepresentation(); - groupRepresentation.setId(sysRole.getRoleId().toString()); - groupRepresentation.setName(sysRole.getRoleName()); - groupRepresentation.setType(sysRole.getRoleKey()); - return groupRepresentation; - }); - return new ResultListDataRepresentation(result); - } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/ModelUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/ModelUtils.java new file mode 100644 index 000000000..eb5bed0a0 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/ModelUtils.java @@ -0,0 +1,194 @@ +package org.dromara.workflow.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.workflow.domain.vo.MultiInstanceVo; +import org.flowable.bpmn.converter.BpmnXMLConverter; +import org.flowable.bpmn.model.*; +import org.flowable.bpmn.model.Process; +import org.flowable.editor.language.json.converter.BpmnJsonConverter; +import org.flowable.engine.impl.util.ProcessDefinitionUtil; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.rmi.ServerException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 模型工具 + * + * @author may + */ +public class ModelUtils { + public ModelUtils() { + } + + public static BpmnModel xmlToBpmnModel(String xml) throws IOException { + if (xml == null) { + throw new ServerException("xml不能为空"); + } + try { + InputStream inputStream = new ByteArrayInputStream(StrUtil.utf8Bytes(xml)); + XMLInputFactory factory = XMLInputFactory.newInstance(); + XMLStreamReader reader = factory.createXMLStreamReader(inputStream); + return new BpmnXMLConverter().convertToBpmnModel(reader); + } catch (XMLStreamException e) { + throw new ServerException(e.getMessage()); + } + } + + /** + * bpmnModel转为xml + * + * @param jsonBytes json + */ + public static byte[] bpmnJsonToXmlBytes(byte[] jsonBytes) throws IOException { + if (jsonBytes == null) { + return new byte[0]; + } + // 1. json字节码转成 BpmnModel 对象 + ObjectMapper objectMapper = JsonUtils.getObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(jsonBytes); + BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(jsonNode); + + if (bpmnModel.getProcesses().isEmpty()) { + return new byte[0]; + } + // 2.将bpmnModel转为xml + return new BpmnXMLConverter().convertToXML(bpmnModel); + } + + /** + * xml转为bpmnModel + * + * @param xmlBytes xml + */ + public static BpmnModel xmlToBpmnModel(byte[] xmlBytes) throws XMLStreamException { + ByteArrayInputStream byteArrayInputStream = IoUtil.toStream(xmlBytes); + XMLInputFactory xif = XMLInputFactory.newInstance(); + XMLStreamReader xtr = xif.createXMLStreamReader(byteArrayInputStream); + return new BpmnXMLConverter().convertToBpmnModel(xtr); + } + + /** + * 校验模型 + * + * @param bpmnModel bpmn模型 + */ + public static void checkBpmnModel(BpmnModel bpmnModel) throws ServerException { + Collection flowElements = bpmnModel.getMainProcess().getFlowElements(); + + checkBpmnNode(flowElements, false); + + List subProcessList = flowElements.stream().filter(SubProcess.class::isInstance).map(SubProcess.class::cast).collect(Collectors.toList()); + if (!CollUtil.isEmpty(subProcessList)) { + for (SubProcess subProcess : subProcessList) { + Collection subProcessFlowElements = subProcess.getFlowElements(); + checkBpmnNode(subProcessFlowElements, true); + } + } + List multiInstanceVoList = new ArrayList<>(); + for (FlowElement flowElement : flowElements) { + if (flowElement instanceof UserTask && ObjectUtil.isNotEmpty(((UserTask) flowElement).getLoopCharacteristics()) && StringUtils.isNotBlank(((UserTask) flowElement).getLoopCharacteristics().getInputDataItem())) { + MultiInstanceVo multiInstanceVo = new MultiInstanceVo(); + multiInstanceVo.setAssigneeList(((UserTask) flowElement).getLoopCharacteristics().getInputDataItem()); + multiInstanceVoList.add(multiInstanceVo); + } + } + + if (CollectionUtil.isNotEmpty(multiInstanceVoList) && multiInstanceVoList.size() > 1) { + Map> assigneeListGroup = StreamUtils.groupByKey(multiInstanceVoList, MultiInstanceVo::getAssigneeList); + for (Map.Entry> entry : assigneeListGroup.entrySet()) { + List value = entry.getValue(); + if (CollectionUtil.isNotEmpty(value) && value.size() > 1) { + String key = entry.getKey(); + throw new ServerException("会签人员集合【" + key + "】重复,请重新设置集合KEY"); + } + } + } + } + + /** + * 校验bpmn节点是否合法 + * + * @param flowElements 节点集合 + * @param subtask 是否子流程 + */ + private static void checkBpmnNode(Collection flowElements, boolean subtask) throws ServerException { + + if (CollUtil.isEmpty(flowElements)) { + throw new ServerException(subtask ? "子流程必须存在节点" : "必须存在节点!"); + } + + List startEventList = flowElements.stream().filter(StartEvent.class::isInstance).map(StartEvent.class::cast).collect(Collectors.toList()); + if (CollUtil.isEmpty(startEventList)) { + throw new ServerException(subtask ? "子流程必须存在开始节点" : "必须存在开始节点!"); + } + + if (startEventList.size() > 1) { + throw new ServerException(subtask ? "子流程只能存在一个开始节点" : "只能存在一个开始节点!"); + } + + StartEvent startEvent = startEventList.get(0); + List outgoingFlows = startEvent.getOutgoingFlows(); + if (CollUtil.isEmpty(outgoingFlows)) { + throw new ServerException(subtask ? "子流程流程节点为空,请至少设计一条主线流程!" : "流程节点为空,请至少设计一条主线流程!"); + } + + FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); + if (!(targetFlowElement instanceof UserTask) && !subtask) { + throw new ServerException("开始节点后第一个节点必须是用户任务!"); + } + + List endEventList = flowElements.stream().filter(EndEvent.class::isInstance).map(EndEvent.class::cast).collect(Collectors.toList()); + if (CollUtil.isEmpty(endEventList)) { + throw new ServerException(subtask ? "子流程必须存在结束节点!" : "必须存在结束节点!"); + } + } + + /** + * 获取流程全部节点 + * + * @param processDefinitionId 流程定义id + */ + public static List getFlowElements(String processDefinitionId) { + BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(processDefinitionId); + List list = new ArrayList<>(); + List processes = bpmnModel.getProcesses(); + Collection flowElements = processes.get(0).getFlowElements(); + buildFlowElements(flowElements, list); + return list; + } + + /** + * 递归获取所有节点 + * + * @param flowElements 节点信息 + * @param list 集合 + */ + private static void buildFlowElements(Collection flowElements, List list) { + for (FlowElement flowElement : flowElements) { + list.add(flowElement); + if (flowElement instanceof SubProcess) { + Collection subFlowElements = ((SubProcess) flowElement).getFlowElements(); + buildFlowElements(subFlowElements, list); + } + } + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 3cd72eb75..d84834ade 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -66,117 +66,6 @@ public class WorkflowUtils { private static final IWorkflowUserService I_WORKFLOW_USER_SERVICE = SpringUtils.getBean(WorkflowUserServiceImpl.class); private static final IActHiProcinstService I_ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class); - /** - * bpmnModel转为xml - * - * @param jsonBytes json - */ - public static byte[] bpmnJsonToXmlBytes(byte[] jsonBytes) throws IOException { - if (jsonBytes == null) { - return new byte[0]; - } - // 1. json字节码转成 BpmnModel 对象 - ObjectMapper objectMapper = JsonUtils.getObjectMapper(); - JsonNode jsonNode = objectMapper.readTree(jsonBytes); - BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(jsonNode); - - if (bpmnModel.getProcesses().isEmpty()) { - return new byte[0]; - } - //解决设计器选择设置流程发起人设置变量有问题 - Collection flowElements = bpmnModel.getMainProcess().getFlowElements(); - repairInitiatorVariable(flowElements); - // 2.将bpmnModel转为xml - return new BpmnXMLConverter().convertToXML(bpmnModel); - } - - /** - * 修复发起人节点变量错误问题 - * - * @param flowElements 节点 - */ - private static void repairInitiatorVariable(Collection flowElements) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof SubProcess) { - Collection subFlowElements = ((SubProcess) flowElement).getFlowElements(); - repairInitiatorVariable(subFlowElements); - } else { - if (flowElement instanceof UserTask && INITIATOR_SET.equals(((UserTask) flowElement).getAssignee())) { - ((UserTask) flowElement).setAssignee(INITIATOR_SET_UPDATE); - } - } - } - } - - /** - * xml转为bpmnModel - * - * @param xmlBytes xml - */ - public static BpmnModel xmlToBpmnModel(byte[] xmlBytes) throws XMLStreamException { - ByteArrayInputStream byteArrayInputStream = IoUtil.toStream(xmlBytes); - XMLInputFactory xif = XMLInputFactory.newInstance(); - XMLStreamReader xtr = xif.createXMLStreamReader(byteArrayInputStream); - return new BpmnXMLConverter().convertToBpmnModel(xtr); - } - - /** - * 校验模型 - * - * @param bpmnModel bpmn模型 - */ - public static void checkBpmnModel(BpmnModel bpmnModel) throws ServerException { - Collection flowElements = bpmnModel.getMainProcess().getFlowElements(); - - checkBpmnNode(flowElements, false); - - List subProcessList = flowElements.stream().filter(SubProcess.class::isInstance).map(SubProcess.class::cast).collect(Collectors.toList()); - if (!CollUtil.isEmpty(subProcessList)) { - for (SubProcess subProcess : subProcessList) { - Collection subProcessFlowElements = subProcess.getFlowElements(); - checkBpmnNode(subProcessFlowElements, true); - } - } - } - - /** - * 校验bpmn节点是否合法 - * - * @param flowElements 节点集合 - * @param subtask 是否子流程 - */ - private static void checkBpmnNode(Collection flowElements, boolean subtask) throws ServerException { - - if (CollUtil.isEmpty(flowElements)) { - throw new ServerException(subtask ? "子流程必须存在节点" : "必须存在节点!"); - } - - List startEventList = flowElements.stream().filter(StartEvent.class::isInstance).map(StartEvent.class::cast).collect(Collectors.toList()); - if (CollUtil.isEmpty(startEventList)) { - throw new ServerException(subtask ? "子流程必须存在开始节点" : "必须存在开始节点!"); - } - - if (startEventList.size() > 1) { - throw new ServerException(subtask ? "子流程只能存在一个开始节点" : "只能存在一个开始节点!"); - } - - StartEvent startEvent = startEventList.get(0); - List outgoingFlows = startEvent.getOutgoingFlows(); - if (CollUtil.isEmpty(outgoingFlows)) { - throw new ServerException(subtask ? "子流程流程节点为空,请至少设计一条主线流程!" : "流程节点为空,请至少设计一条主线流程!"); - } - - FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement(); - if (!(targetFlowElement instanceof UserTask) && !subtask) { - throw new ServerException("开始节点后第一个节点必须是用户任务!"); - } - - List endEventList = flowElements.stream().filter(EndEvent.class::isInstance).map(EndEvent.class::cast).collect(Collectors.toList()); - if (CollUtil.isEmpty(endEventList)) { - throw new ServerException(subtask ? "子流程必须存在结束节点!" : "必须存在结束节点!"); - } - } - /** * 创建一个新任务 *