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