作者:Eddy  历史版本:1  最后编辑:Eddy  更新时间:2024-11-20 15:41

编写版本:v3.5.8
适用版本:所有版本

流程用户插件开发

以添加当前审批人插件为例,即:当前任务审批时的用户。该插件仅用于审批通知使用

  • 工程:ibps-bpmn-plugin
  • 主目录:/ibps-bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc,所有插件都在这个目录。

编写插件类

  • 插件计算类:/ibps-bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc/capprover/CapproverPlugin.java,计算用户。
  • 插件上下文类:/ibps-bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc/capprover/CapproverPluginContext.java,根据@PluginNodeTask注解注入生命周期管理,生成配置文件片段。
  • 插件定义类:/ibps-bpmn-plugin/src/main/java/com/lc/ibps/bpmn/plugin/usercalc/capprover/CapproverPluginDefine.java,插件属性定义。

插件xsd插件定义

工程:ibps-bpmn-biz

  • /ibps-bpmn-biz/src/main/resources/org/activiti/impl/bpmn/parser/usercalc/capprover.xsd
  • 定义插件xml格式,在xml中的节点名、属性信息等。
  • 注意xs属性xmlns、targetNamespace需要按照插件定义
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.bpmhome.cn/bpm/plugins/userCalc/capprover"
    targetNamespace="http://www.bpmhome.cn/bpm/plugins/userCalc/capprover"
    xmlns:base="http://www.bpmhome.cn/bpm/plugins/userCalc/base" elementFormDefault="qualified">
    <xs:import namespace="http://www.bpmhome.cn/bpm/plugins/userCalc/base"  schemaLocation="base.xsd"/>
    <xs:element name="capprover">
        <xs:annotation>
            <xs:documentation>流程当前审批人</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="base:abstractLogic">
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
     </xs:element>
</xs:schema>

引入xsd插件定义

工程:ibps-bpmn-biz

  • /ibps-bpmn-biz/src/main/resources/org/activiti/impl/bpmn/parser/task/userAssign.xsd
  • 添加引入,注意namespace是capprover.xsd文件的targetNamespace属性值。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.bpmhome.cn/bpm/plugins/task/userAssign"
    xmlns:base="http://www.bpmhome.cn/bpm/plugins/userCalc/base"
    targetNamespace="http://www.bpmhome.cn/bpm/plugins/task/userAssign"
    elementFormDefault="qualified">
...
    <xs:import id="capprover" namespace="http://www.bpmhome.cn/bpm/plugins/userCalc/capprover" schemaLocation="../usercalc/capprover.xsd" />
...
</xs:schema>

前端展示处理

添加插件常量

  • 工程:ibps-admin-ui
  • ibps-admin-ui\src\business\platform\bpmn\setting\bpmn-setting\components\user-setting\constants\index.js
export const pluginTypes = {
...
  'capprover': {
    label: I18n.t('business.platform.bpmn.setting.bpmn-setting.components.user-setting.constants.index.process-current-reviewer'), // 当前审批人
    noSelect: true,
    optionShow: true,
    descText: I18n.t('business.platform.bpmn.setting.bpmn-setting.components.user-setting.constants.index.current-process-approve')// 当前流程任务的审批人
  }
...
}

根据插件需求修改用户选择方式

  • 工程:ibps-admin-ui
  • ibps-admin-ui\src\business\platform\bpmn\setting\bpmn-setting\components\user-setting\index.vue
  • ibps-admin-ui\src\business\platform\bpmn\setting\bpmn-setting\components\user-setting\user-dialog.vue
  • 按需添加用户处理逻辑
  • 本插件不需要选择用户,故此不需要写新页面

展示效果