18.2. 在 DRL 规则中添加存储操作
规则的 then
部分包含满足规则条件部分时要执行的操作。例如,当 loan Applicationlicant 超过 21 年时,将设置
"Underage"
规则的操作,因为申请者不足,因为申请者正处于年龄之内。操作由一个或多个方法组成,它们根据规则条件和软件包中的可用数据对象执行结果。规则操作的主要目的是在决策引擎的工作内存中插入、删除或修改数据。
先决条件
-
软件包在
DRL 文件的顶部定义。在创建该文件时,应该已为您完成这一操作。 -
规则中使用的数据对象
导入
列表在 DRL 文件的package
行中定义。数据对象可从这个软件包,或者从 Business Central 中的其他软件包中获取。 -
规则
名称在软件包
下面以"name"
的格式定义,导入
,以及应用到整个 DRL 文件的其他行。同一软件包中不能多次使用相同的规则名称。可选的规则属性(如sali
ence 或no-loop
)在when
部分前定义规则名称下。
流程
-
在 DRL 设计器中
,
在规则的when
部分后输入,以开始添加操作语句。 根据规则的条件,基于事实模式输入要执行的一个或多个操作。
以下是定义 DRL 操作的一些关键字选项:
设置
:使用此项设置字段的值。$application.setApproved ( false ); $application.setExplanation( "has been bankrupt" );
修改
:使用此命令指定要修改的字段,并通知更改的决策引擎。此方法提供了一种结构化方法来事实更新。它将更新操作与
设置者调用合并,以更改对象字段。modify( LoanApplication ) { setAmount( 100 ), setApproved ( true ) }
更新
:使用它来指定字段以及要更新整个相关事实,并通知更改的决策引擎。事实更改后,您必须在更改可能受更新的值影响的其他事实之前调用更新
。要避免添加的步骤,请改为使用修改
方法。LoanApplication.setAmount( 100 ); update( LoanApplication );
插入
:使用这个方法在决策引擎中插入新事实
。insert( new Applicant() );
插入逻辑
:使用这个方法在决策引擎中以逻辑方式插入新事实。决策引擎负责对插入和检索事实的逻辑决策。在常规或声明插入后,必须明确调整事实。逻辑插入后,当插入事实的条件不再为 true 时,插入的事实会自动清空。
insertLogical( new Applicant() );
删除
:使用它来从决策引擎删除对象。DRL 中还支持关键字retract
,并执行同样的操作,但删除
通常优先于 DRL 代码,以便通过关键字插入
。delete( Applicant );
注意有关 DRL 规则操作的详情请参考 第 16.9 节 “DRL(THEN)中的规则操作”。
- 在定义了规则的所有操作组件后,在 DRL 设计器的右上角点击 Validate 来验证 DRL 文件。如果文件验证失败,解决错误消息中描述的任何问题,查看 DRL 文件中的所有语法和组件,并尝试验证文件,直到文件通过为止。
- 点 DRL 设计器中的 Save 保存您的更改。