第 32 章 在规则资产中为下拉列表定义枚举


Business Central 中的枚举定义决定了指导规则、指导规则模板和指导决策表中的条件或操作的可能值。Enumeration 定义包含一个 fact.field 映射到支持的值列表,这些值在规则资产的相关字段中显示为下拉列表。当用户选择基于与枚举定义相同的事实和字段时,会显示定义值的下拉列表。

您可以在 Business Central 或 Red Hat Process Automation Manager 项目的 DRL 源中定义枚举。

流程

  1. 在 Business Central 中,进入 Menu Design Projects,然后点击项目名称。
  2. Add Asset Enumeration
  3. 输入说明性 枚举 名称并选择适当的 软件包。您指定的软件包必须是分配所需数据对象和相关规则资产的同一软件包。
  4. Ok 创建枚举。

    新的枚举现在列在 Project ExplorerEnumeration Definitions 面板中。

  5. 在枚举设计器的 Model 选项卡中,点 Add enum 并为枚举定义以下值:

    • 事实 :在您要将此枚举的项目的同一软件包中指定现有数据对象。打开 Project Explorer 中的 Data Objects 面板,以查看可用的数据对象,或者根据需要将相关数据对象创建为新资产。
    • 字段 :指定您定义为您为 事实 选择的数据对象一部分的现有字段标识符。打开 Project Explorer 中的 Data Objects 面板,以选择相关数据对象并查看可用 标识符选项列表。如果需要,您可以为数据对象创建相关标识符。
    • Context: 指定您要映射到 FactField 定义的格式 ['string1','string2','string3'][integer1,integer2,integer3] 的值列表。这些值将显示为规则资产相关字段的下拉列表。

    例如,以下枚举在 loan 应用程序决策服务中定义 applicant 信信评级的下拉值:

    图 32.1. Business Central 中应用程序信信评级的枚举示例

    DRL 源中适用信信评级的枚举示例

    'Applicant.creditRating' : ['AA', 'OK', 'Sub prime']
    Copy to Clipboard Toggle word wrap

    在本例中,对于任何在项目相同的软件包中的指导规则、指导规则模板或指导的决策表,其使用 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 文件中使用了选项 AD,但 Business Central 中会显示 ApprovedDeclined 选项:

'Loan.status' : ['A=Approved','D=Declined']
Copy to Clipboard Toggle word wrap
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']
Copy to Clipboard Toggle word wrap
注意

在规则条件和操作中不会应用枚举的依赖关系。例如,在这种情况下,规则条件中选择的策略不会决定规则操作中的可用覆盖范围选项(如果适用)。

枚举中的外部数据源

如果要从外部数据源检索枚举值列表,而不是直接在枚举定义中定义值,在项目的类路径上,添加一个帮助程序类,它返回一个返回字符串的 java.util.List 列表的帮助类。在枚举定义中,而不是指定值列表,而是指定您配置为外部检索值的帮助类。

例如,在 Lan applicant 区域的以下枚举定义中,而不是以 'Applicant.region' : ['country1', 'country2', …​ ] 格式明确定义 applicant 区域:

'Applicant.region' : (new com.mycompany.DataHelper()).getListOfRegions()
Copy to Clipboard Toggle word wrap

在本例中,DataHelper 类包含一个 getListOfRegions () 方法,该方法返回字符串列表。枚举会在规则资产中相关字段的下拉列表中加载。

您还可以以常常方式识别依赖字段并在引号中保护调用,从帮助程序类动态加载依赖的枚举定义:

'Applicant.region[countryCode]' : '(new com.mycompany.DataHelper()).getListOfRegions("@{countryCode}")'
Copy to Clipboard Toggle word wrap

如果要从外部数据源(如关系数据库)完全加载所有枚举数据,您可以实施返回 Map<String, List<String>> 映射的 Java 类。映射的键是 fact.field 映射,值为 java.util.List<String&gt; 列表。

例如,以下 Java 类定义了相关枚举的 loan applicant 区域:

public class SampleDataSource {

  public Map<String, List<String>> loadData() {
    Map data = new HashMap();

    List d = new ArrayList();
    d.add("AU");
    d.add("DE");
    d.add("ES");
    d.add("UK");
    d.add("US");
    ...
    data.put("Applicant.region", d);

    return data;
  }

}
Copy to Clipboard Toggle word wrap

以下枚举定义与这个示例 Java 类相关联。Enumeration 不包含对事实或字段名称的引用,因为它们在 Java 类中定义:

=(new SampleDataSource()).loadData()
Copy to Clipboard Toggle word wrap

= 运算符可让 Business Central 从 helper 类加载所有枚举数据。当请求在编辑器中使用枚举定义时,帮助程序方法会被静态评估。

注意

目前 Business Central 不支持在没有事实和字段定义的情况下定义枚举。要以这种方式为关联的 Java 类定义枚举,请在 Red Hat Process Automation Manager 项目中使用 DRL 源。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat