第 32 章 在规则资产中为下拉列表定义枚举
Business Central 中的枚举定义决定了指导规则、指导规则模板和指导决策表中的条件或操作的可能值。Enumeration 定义包含一个 fact.field
映射到支持的值列表,这些值在规则资产的相关字段中显示为下拉列表。当用户选择基于与枚举定义相同的事实和字段时,会显示定义值的下拉列表。
您可以在 Business Central 或 Red Hat Process Automation Manager 项目的 DRL 源中定义枚举。
流程
-
在 Business Central 中,进入 Menu
Design Projects,然后点击项目名称。 -
点 Add Asset
Enumeration。 - 输入说明性 枚举 名称并选择适当的 软件包。您指定的软件包必须是分配所需数据对象和相关规则资产的同一软件包。
点 Ok 创建枚举。
新的枚举现在列在 Project Explorer 的 Enumeration Definitions 面板中。
在枚举设计器的 Model 选项卡中,点 Add enum 并为枚举定义以下值:
- 事实 :在您要将此枚举的项目的同一软件包中指定现有数据对象。打开 Project Explorer 中的 Data Objects 面板,以查看可用的数据对象,或者根据需要将相关数据对象创建为新资产。
- 字段 :指定您定义为您为 事实 选择的数据对象一部分的现有字段标识符。打开 Project Explorer 中的 Data Objects 面板,以选择相关数据对象并查看可用 标识符选项列表。如果需要,您可以为数据对象创建相关标识符。
-
Context: 指定您要映射到 Fact 和 Field 定义的格式
['string1','string2','string3']
或[integer1,integer2,integer3]
的值列表。这些值将显示为规则资产相关字段的下拉列表。
例如,以下枚举在 loan 应用程序决策服务中定义 applicant 信信评级的下拉值:
图 32.1. Business Central 中应用程序信信评级的枚举示例
DRL 源中适用信信评级的枚举示例
'Applicant.creditRating' : ['AA', 'OK', 'Sub prime']
'Applicant.creditRating' : ['AA', 'OK', 'Sub prime']
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,对于任何在项目相同的软件包中的指导规则、指导规则模板或指导的决策表,其使用
Applicant
数据对象和creditRating
字段,配置的值可作为下拉列表选项提供:图 32.2. 指导规则或指导规则模板中枚举的下拉列表选项示例
图 32.3. 指导决策表中的 enumeration 下拉菜单选项示例
32.1. 规则资产的高级枚举选项 复制链接链接已复制到粘贴板!
对于 Red Hat Process Automation Manager 项目中带有枚举定义的高级用例,请考虑以下扩展选项来定义枚举:
- Business Central 中的 DRL 值和值之间的映射
如果您希望枚举值在 Business Central 界面中显示不同或更完全出现在 DRL 源中,请使用格式
'fact.field' : ['sourceValue1=UIValue1','sourceValue2=UIValue2', … ]
作为您的枚举定义值。例如,在以下 loan 状态的枚举定义中,DRL 文件中使用了选项
A
或D
,但 Business Central 中会显示Approved
或Declined
选项:'Loan.status' : ['A=Approved','D=Declined']
'Loan.status' : ['A=Approved','D=Declined']
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Enumeration 值依赖项
如果您希望一个下拉列表中选择的值来确定后续下拉列表中的可用选项,请使用
'fact.fieldB[fieldA=value1]' : ['value2', 'value3', … ]
进行您的枚举定义。例如,在以下代表策略的 enumeration 定义中,
policyType
字段接受Home
或 the 值。用户选择的策略类型决定了可用的策略
范围
字段选项:'Insurance.policyType' : ['Home', 'Car'] 'Insurance.coverage[policyType=Home]' : ['property', 'liability'] 'Insurance.coverage[policyType=Car]' : ['collision', 'fullCoverage']
'Insurance.policyType' : ['Home', 'Car'] 'Insurance.coverage[policyType=Home]' : ['property', 'liability'] 'Insurance.coverage[policyType=Car]' : ['collision', 'fullCoverage']
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在规则条件和操作中不会应用枚举的依赖关系。例如,在这种情况下,规则条件中选择的策略不会决定规则操作中的可用覆盖范围选项(如果适用)。
- 枚举中的外部数据源
如果要从外部数据源检索枚举值列表,而不是直接在枚举定义中定义值,在项目的类路径上,添加一个帮助程序类,它返回一个返回字符串的
java.util.List
列表的帮助类。在枚举定义中,而不是指定值列表,而是指定您配置为外部检索值的帮助类。例如,在 Lan applicant 区域的以下枚举定义中,而不是以
'Applicant.region' : ['country1', 'country2', … ]
格式明确定义 applicant 区域:'Applicant.region' : (new com.mycompany.DataHelper()).getListOfRegions()
'Applicant.region' : (new com.mycompany.DataHelper()).getListOfRegions()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
DataHelper
类包含一个getListOfRegions ()
方法,该方法返回字符串列表。枚举会在规则资产中相关字段的下拉列表中加载。您还可以以常常方式识别依赖字段并在引号中保护调用,从帮助程序类动态加载依赖的枚举定义:
'Applicant.region[countryCode]' : '(new com.mycompany.DataHelper()).getListOfRegions("@{countryCode}")'
'Applicant.region[countryCode]' : '(new com.mycompany.DataHelper()).getListOfRegions("@{countryCode}")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要从外部数据源(如关系数据库)完全加载所有枚举数据,您可以实施返回
Map<String, List<String>> 映射的
Java 类。映射的键是fact.field
映射,值为java.util.List<String>
; 列表。例如,以下 Java 类定义了相关枚举的 loan applicant 区域:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下枚举定义与这个示例 Java 类相关联。Enumeration 不包含对事实或字段名称的引用,因为它们在 Java 类中定义:
=(new SampleDataSource()).loadData()
=(new SampleDataSource()).loadData()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow =
运算符可让 Business Central 从 helper 类加载所有枚举数据。当请求在编辑器中使用枚举定义时,帮助程序方法会被静态评估。注意目前 Business Central 不支持在没有事实和字段定义的情况下定义枚举。要以这种方式为关联的 Java 类定义枚举,请在 Red Hat Process Automation Manager 项目中使用 DRL 源。