3.12. 模型设计器中的自定义元素

BPM 扩展组件允许为流程模型设计器创建自定义元素。基本上,自定义元素就是 ServiceTask,它使开发人员不再需要为方法调用输入很长的表达式,例如 ${app_MyBean.someMethod(argument1, 'argument2')}。下面是自定义元素创建的示例。

假设有一个名为 app_DiscountManager 的中间件 bean。bean 中有一个 makeDiscount(BigDecimal discountPercent, UUID entityId) 方法。该方法通过减去折扣来更新合同金额。

在此示例中,我们会创建一个将调用该方法的自定义模型元素。折扣百分比将作为模型元素的参数被定义。

使用菜单项 BPM > Model Elements Editor 打开模型元素编辑界面。

单击 Add group 按钮并输入组名称 - Discounts

StencilSetAddGroup
Figure 26. 添加组

选择创建的组,然后单击 Add element 按钮。

StencilSetAddStencil
Figure 27. 添加模板

为元素属性输入以下值:

  • 标题: Contract discount

  • 模型 ID: contractDiscount

  • 图标:单击 Upload 按钮并选择图标文件(可选)

  • Bean 名称:选择 app_DiscountManager

  • 方法名称:选择 makeDiscount

Warning

Bean name 仅查找实现了接口的 bean。Method name 仅查找实现的接口方法。

Method arguments 表格包含方法参数。可以更改参数显示名称和参数默认值。

单击 Save 按钮保存设置的元素。

打开流程模型编辑界面(BPM > Process Models)。元素列表中有 Discounts 组和 Contract discount 元素。将新元素拖放到模型中并选中它。将看到折扣百分比字段和存储实体标识符的流程变量名称显示在界面上。

StencilSetModel
Figure 28. 设置模型
Tip

entityId 是流程变量的名称。此流程变量会被自动添加到关联到实体的每个流程。变量存储实体标识符,可以在任何方法调用中使用它。

在流程部署期间,自定义元素将被转换为 serviceTask

<serviceTask id="sid-5C184F22-6071-45CD-AEA9-1792512BBDCE" name="Make discount" activiti:expression="${app_DiscountManager.makeDiscount(10,entityId)}"></serviceTask>

元素可以被导出到 ZIP 存档,然后从存档中还原。这有助于在开发人员的计算机上创建新元素然后导入到生产服务器。使用元素编辑界面上的相应按钮执行导入和导出。

Reset 按钮删除所有自定义组和元素,并将元素的设置恢复为初始状态。