flowable 流程自定义属性


之前写过在节点上添加自定义扩展属性,但是如何在流程上面扩展自定义属性呢?其实和给节点添加自定义属性是一致的,只是修改的相关类不一样。

编辑stencilset_bpmn.json文件

找到stencilset_bpmn.json文件,打开会发现有propertyPackages的属性,如图:
在这里插入图片描述
我们只需要根据流程之前创建的形式一样就行了,我这里定义为如下:

{
      "name": "isbatchapproval_package",
      "properties": [
        {
          "id": "isbatchapproval",
          "type": "Boolean",  //设置为boolean类型
          "title": "是否允许批量审批",
          "value": "",
          "description": "对相关节点设置是否允许批量审批",
          "popular": true
        }
      ]
    }

写好之后,要在相关节点上显示相关的属性,就需要在流程上进行引用上面的属性id值为isbatchapproval的,我们需要在流程上面引入:

{
      "type": "node",
      "id": "BPMNDiagram",
      "title": "BPMN\u56fe\u8868",
      "description": "A BPMN 2.0 diagram.",
      "view": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n   width=\"800\"\n   height=\"600\"\n   version=\"1.0\">\n  <defs></defs>\n  <g pointer-events=\"fill\" >\n    <polygon stroke=\"black\" fill=\"black\" stroke-width=\"1\" points=\"0,0 0,590 9,599 799,599 799,9 790,0\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" />\n    <rect id=\"diagramcanvas\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"790\" height=\"590\" stroke=\"black\" stroke-width=\"2\" fill=\"white\" />\n    \t<text font-size=\"22\" id=\"diagramtext\" x=\"400\" y=\"25\" oryx:align=\"top center\" stroke=\"#373e48\"></text>\n  </g>\n</svg>",
      "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",
        "isbatchapproval_package"
      ],
      "hiddenPropertyPackages": [],
      "roles": []
    }

添加之后流程的属性上面就会有一个选择框。

在下载的BPMN.xml中添加属性

我们知道在节点上使用的时候,需要扩展UserTaskJsonConverter,但是流程要扩展哪些类呢?通过之前的经验,我们知道流程的扩展是在BaseBpmnJsonConverter.java和BpmnJsonConverter。

编辑BaseBpmnJsonConverter.java

找到if (baseElement instanceof FlowElement)修改为如下的代码:PROCESS_IS_BATCHAPPROVAL_KEY = “isbatchapproval”;

if (baseElement instanceof FlowElement) {
            FlowElement flowElement = (FlowElement) baseElement;
            if (StringUtils.isNotEmpty(flowElement.getName())) {
                propertiesNode.put(PROPERTY_NAME, flowElement.getName());
            }

            if (StringUtils.isNotEmpty(flowElement.getDocumentation())) {
                propertiesNode.put(PROPERTY_DOCUMENTATION, flowElement.getDocumentation());
            }

            Map<String, List<ExtensionElement>> extensionElements = flowElement.getExtensionElements();
            List<ExtensionElement> elements = extensionElements.get(PROCESS_IS_BATCHAPPROVAL_KEY);
            if (CollectionUtils.isNotEmpty(elements)) {
                for (ExtensionElement extensionElement : elements) {
                    if (extensionElement.getName().equals(PROCESS_IS_BATCHAPPROVAL_KEY)) {
                        propertiesNode.put(PROCESS_IS_BATCHAPPROVAL_KEY, extensionElement.getElementText());
                    }
                }
            }
            BpmnJsonConverterUtil.convertListenersToJson(((FlowElement) baseElement).getExecutionListeners(), true, propertiesNode);
        }

编辑BpmnJsonConverter.java

找到if (!nonEmptyPoolFound)添加为如下的代码:

 String isbatchapproval = BpmnJsonConverterUtil.getPropertyValueAsString("isbatchapproval", modelNode);
            if (StringUtils.isNotEmpty(isbatchapproval)) {
                ExtensionElement isbatchapprovalExtensionElement = new ExtensionElement();
                isbatchapprovalExtensionElement.setName("isbatchapproval");
                isbatchapprovalExtensionElement.setNamespace("http://flowable.org/bpmn");
                isbatchapprovalExtensionElement.setNamespacePrefix("flowable");
                isbatchapprovalExtensionElement.setElementText(isbatchapproval);
                process.addExtensionElement(isbatchapprovalExtensionElement);
            }

之后启动项目,下载下来的xml将会有流程上面自定义属性了,如图:
在这里插入图片描述

注意点

1.如果是源码部署的话,修改源码即可
2.如果是引入jar的时候,需要覆盖BaseBpmnJsonConverter.java和BpmnJsonConverter.java,在项目中,创建和源码类中包一样的包,赋值源码中的进行笔记即可,注意引入的版本和编辑的版本,不要搞错了哦!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值