第 58 章 创建指导规则模板
您可以使用指导规则模板来定义与数据表中定义的实际值对应的占位符值(模板键)的规则结构。指导规则模板是一种有效替代方法,可单独定义许多使用相同结构的指南规则集。
流程
-
在 Business Central 中,前往 Menu
Design Projects 并点项目名称。 -
点 Add Asset
Guided Rule Template。 - 输入 参考规则模板名称 并选择相应的 软件包。您指定的软件包必须是分配或将被分配所需数据对象的同一软件包。
单击 Ok 以创建规则模板。
新的指导规则模板现在列在 Project Explorer 的 《规则模板 "面板中。
- 点 Data Objects 选项卡,并确认列出了您的规则所需的所有数据对象。如果没有,请单击 New item 以从其他软件包导入数据对象,或者在您的软件包 中创建数据对象。
在所有数据对象都就位后,返回 Model 选项卡,并使用窗口右侧的按钮来添加和定义规则模板的 WHEN (条件)和(action)部分,具体取决于可用数据对象。对于不同的字段值,以规则设计器格式使用
$key格式的模板键,或者以自由形式为 DRL(如果使用)格式使用@{key}。图 58.1. 指导规则模板示例
模板键的备注模板键是指导规则模板中的基本模板。模板键是模板中的启用字段值与您在对应数据表中定义的实际值进行更改,以便从同一模板生成不同的规则。对于基于该模板的所有规则结构的一部分的值结构,您可以使用其他值(如 Literal 或 Formula )。但是,如果规则中的任何不同值,请使用带有指定键的 Template 键 字段类型。在指导规则模板中没有模板键,相应的数据表不会在模板设计器中生成,模板基本上作为单独的指导规则。
规则模板的 WHEN 部分是必须满足以下条件才能执行操作的条件。例如,如果通信公司根据自己订阅的服务(互联网、电话和电视)为客户收费,那么 WHEN 条件之一是
internetService | 等于 | $haInternetService。模板键$hasInternetService使用模板 data 表中定义的实际布尔值值(true或false)进行交集。该规则模板的一部分是满足规则条件部分时要执行的操作。例如,如果客户只为互联网服务订阅,则模板键
$amount对RecurringPayment的 RecurringPayment 的操作会将实际每月数量设置为数据表中为互联网服务收费定义的整数值。- 在定义了规则的所有组件后,在指导规则模板设计器中点击 Save 以保存您的工作。
58.1. 在指导规则模板中添加 WHEN 条件 复制链接链接已复制到粘贴板!
规则的 WHEN 部分包含执行某个操作必须满足的条件。例如,如果通信公司根据自己订阅的服务(互联网、电话和电视)为客户收费,那么 WHEN 条件之一是 internetService | 等于 | $haInternetService。模板键 $hasInternetService 使用模板 data 表中定义的实际布尔值值(true 或 false)进行交集。
先决条件
- 您的规则所需的所有数据对象已创建或导入,并列在指导规则模板设计器 的数据对象 选项卡中。
流程
在指导规则模板设计器中,点击
WHEN部分右侧的加号图标
。
将打开可用条件元素 的规则窗口中的 Add a condition。
图 58.2. 为规则添加一个条件
列表中包含指导规则模板设计器的 Data Objects 选项卡中的数据对象、为软件包定义的任何 DSL 对象,以及以下标准选项:
- 以下内容不存在: 使用它指定必须不存在的事实和约束。
- 存在: 使用它来指定必须存在的事实和限制。这个选项仅在第一个匹配项中触发,而不是后续匹配项。
- 以下任意一个为 true: 使用此列出必须满足的任何事实或约束。
-
from: 使用它来为规则定义
From条件元素。 -
选修日期: 使用此命令
定义规则的仲裁条件元素。 -
from Collect: 使用这个定义规则的
Collect条件元素。 -
From Entry Point: 使用这个项来定义模式的
Entry Point。 -
自由形式 DRL: 使用这个项插入自由格式的 DRL 字段,您可以在其中自由定义条件元素,而无需指导规则设计人员。对于自由形式 DRL 的模板键,请使用
@{key}格式。
- 选择一个 condition 元素(例如,客户),然后单击确定。
单击提示规则模板设计器中的 condition 元素,并使用 Customer 窗口中的 Modify 约束 添加字段、应用多个字段约束、添加新的公式风格表达式、应用表达式编辑器或设置变量名称。
图 58.3. 修改条件
注意变量名称可让您识别指导规则中的其他结构中的事实或字段。例如,您可以将客户的变量设置为
c,然后在单独的Applicant约束下引用c,指定客户是Applicant。c : Customer() Applicant( this == c )
c : Customer() Applicant( this == c )Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选择约束后,窗口会自动关闭。
-
从添加限制旁边的下拉菜单中选择限制(例如,
等于)的 operator。 -
点编辑图标(
)定义字段值。
-
如果此值因基于此模板的规则的不同而不同,请选择 Template 键,并以
$key格式添加模板键。这允许字段值使用您在对应数据表中定义的实际值来从同一模板生成不同的规则。对于与规则不同且不是规则模板一部分的字段值,您可以使用任何其他值类型。 要应用多个字段约束,点 客户窗口的修改限制,从 多字段约束 下拉菜单中选择 All of(And) 或任意 (Or)。
图 58.4. 添加多个字段限制
- 单击指导规则模板设计器中的约束,进一步定义字段值。
- 在定义所有条件元素后,在指导规则模板设计器中点击 Save 以保存您的工作。