flowable-流程中心设计之审核按钮扩展(十一)

 

说明

为了满足不同的流程节点可以操作的按钮不同,支持对接方动态配置
如 办理 、驳回、 抄送 、挂起流程 、流程终止 可以控制某些节点可操作按钮
同监听器一样

针对模型设计提交的json改动

复制代码
{
                "resourceId": "sid-47205900-DFBE-4720-A773-98C7970A74A9",
                "properties": {
                        "overrideid": "",
                        "name": "",
                        "documentation": "",
                        "asynchronousdefinition": "false",
                        "exclusivedefinition": "false",
                        "executionlisteners": {
                                "executionListeners": [{
                                        "event": "start",
                                        "implementation": "",
                                        "className": "",
                                        "expression": "",
                                        "delegateExpression": "",
                                        "fields": [],
                                        "$$hashKey": "uiGrid-002D",
                                        "http": "ttps://demeter-dev.biaoguoworks.com/scm/flowable-center-notify?id=${ businessKey}&taskName=${taskName}&status=${status}"
                                }]
                        },
                        "multiinstance_type": "None",
                        "multiinstance_cardinality": "",
                        "multiinstance_collection": "",
                        "multiinstance_variable": "",
                        "multiinstance_condition": "",
                        "isforcompensation": "false",
                        "usertaskassignment": "",
                        "formkeydefinition": "",
                        "formreference": "",
                        "duedatedefinition": "",
                        "html_form_url": "",
                        "detail_html_form_url": "",
                        "prioritydefinition": "",
                        "formproperties": "",
                        "tasklisteners": "",
                        "skipexpression": "",
                        "categorydefinition": "",
                        "process_button": "办理,驳回,流程终止",
                        "autocompletetask": "false",
                        "startusercommitnode": "false"
                },
                "stencil": {
                        "id": "UserTask"
                },
                "childShapes": [],
                "outgoing": [{
                        "resourceId": "sid-E05A628C-7A43-4DBE-9DDC-2C1A248EE826"
                }],
                "bounds": {
                        "lowerRight": {
                                "x": 265,
                                "y": 200
                        },
                        "upperLeft": {
                                "x": 165,
                                "y": 120
                        }
                },
                "dockers": []
        }
复制代码

 

针对部署改动

1.针对json转运行时PBMN对象处
com.biaoguoworks.flowable.custom.convert.CustomUserTaskJsonConverter#convertJsonToElement
2.针对BPMN对象转XML处
com.biaoguoworks.flowable.custom.convert.CustomUserTaskXMLConverter#writeAdditionalAttributes
跟监听器不同的监听器类型我们是根据type区分。但是针对属性我们是扩展属性所以我们要自定义一个TASK继承原有TASK进行封装我们的自定义属性
com.biaoguoworks.flowable.custom.model.CustomUserTask

执行阶段改动

针对XML转为BPMN对象
com.biaoguoworks.flowable.custom.convert.CustomUserTaskJsonConverter#convertJsonToElement

使用

com.biaoguoworks.flowable.center.service.impl.CenterFormServiceImpl#getTaskForm
后续我们就可以通过任务找到流程定义 通过api将流程定义xml转换成运行时对象则可以拿到我们自定义button信息
 
复制代码
ProcessDefinition processDefinition=processEngine.getRepositoryService().createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
BpmnModel bpmnModel = flowBpmnModelService.getBpmnModelByProcessDefId(task.getProcessDefinitionId());
Process process = bpmnModel.getProcessById(processDefinition.getKey());
FlowElement taskFlowElement = process.getFlowElement(task.getTaskDefinitionKey());
if (!(taskFlowElement instanceof CustomUserTask)) {
    return null;
}
CustomUserTask customUserTask=(CustomUserTask)taskFlowElement;
getTaskFormResDto.setButtons(ButtonParse.INSTANCE.getProcessButtons(customUserTask.getButtons()));
复制代码

 

posted @   意犹未尽  阅读(2425)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2021-03-17 通过telnet调用dubbo进行调试
2020-03-17 dubbo源码阅读-服务调用(十二)之本地调用(Injvm)
2020-03-17 dubbo源码阅读-ProxyFactory(十一)之StubProxyFactoryWrapper本地存根
2020-03-17 dubbo源码阅读-ProxyFactory(十一)之JavassistFactory
2020-03-17 dubbo源码阅读-ProxyFactory(十一)之JdkProxyFactory
点击右上角即可分享
微信分享提示