18.2. DRL ルールへの THEN アクションの追加
					ルールの then 部分には、ルールの条件部分に一致したときに実行するアクションが含まれます。たとえば、ローンの申請者が 21 歳に満たない場合は、"Underage" ルールの then アクションが setApproved( false ) となり、年齢が基準に達していないためローンの申し込みは承認されません。アクションは、ルールの条件とパッケージで利用可能オブジェクトに基づいて結果を実行する 1 つ以上のメソッドで構成されます。ルールアクションの主な目的は、デシジョンエンジンのワーキングメモリーでデータの挿入、削除、または変更を行うことです。
				
前提条件
- 
							packageは DRL ファイルに定義されます。これは、ファイルの作成時に行われます。
- 
							ルールで使用したデータオブジェクトの importリストが、DRL ファイルのpackage行の下に定義されます。データオブジェクトは、このパッケージ、または別の Business Central パッケージから使用できます。
- 
							rule名は、package、import、または DRL ファイル全体に適用されるその他の行の下に、rule "name"という形式で定義されます。同じパッケージでルール名を重複させることはできません。ルールの動作 (salience、no-loopなど) を定義する任意のルール属性は、ルール名の下、whenセクションの前に定義します。
手順
- 
							DRL デザイナーで、ルールの whenセクションの後にthenを入力して、アクション命令文を追加します。
- ルールの条件に基づいて、ファクトパターンに対して実行するアクションを 1 つ以上入力します。 - 次は、DRL アクションを定義するキーワードオプションの例です。 - set: フィールドの値を設定します。- $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: ファクトに対して修正するフィールドを指定し、変更をデシジョンエンジンに通知します。このメソッドは、ファクトの更新に対する構造化されたアプローチを提供します。このメソッドは、- update操作とオブジェクトフィールドを変更する setter 呼び出しを組み合わせたものです。- modify( LoanApplication ) { setAmount( 100 ), setApproved ( true ) }- modify( LoanApplication ) { setAmount( 100 ), setApproved ( true ) }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- update: フィールドと、更新される関連ファクト全体を指定して、その変更をデシジョンエンジンに通知します。ファクトが変更したら、更新した値の影響を受ける可能性がある別のファクトを変更する前に、- updateを呼び出す必要があります。この追加設定を回避するには、- modifyメソッドを代わりに使用します。- LoanApplication.setAmount( 100 ); update( LoanApplication ); - LoanApplication.setAmount( 100 ); update( LoanApplication );- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- insert:- newファクトをデシジョンエンジンに挿入します。- insert( new Applicant() ); - insert( new Applicant() );- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- insertLogical: デシジョンエンジンに- newファクトを論理挿入する場合に使用します。デシジョンエンジンは、ファクトの挿入および取り消しに対して論理的な決断を行います。通常の挿入または記述による挿入の後には、ファクトは明示的に取り消される必要があります。論理挿入の後、挿入されたファクトは、ファクトを挿入したルールの条件が true でなくなると自動的に取り消されます。- insertLogical( new Applicant() ); - insertLogical( new Applicant() );- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- delete: デシジョンエンジンからオブジェクトを削除します。キーワード- retractも DRL でサポートされており、同じアクションを実行しますが、DRL のコードでは、キーワード- insertとの整合性を考慮して- deleteが通常推奨されます。- delete( Applicant ); - delete( Applicant );- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 注記- DRL ルールアクションの詳細は、「DRL におけるルールアクション (THEN)」 を参照してください。 
- ルールのアクションコンポーネントをすべて定義したら、DRL デザイナーの右上のツールバーの Validate をクリックして、DRL ファイルの妥当性を確認します。ファイルの妥当性確認に失敗したら、エラーメッセージに記載された問題に対応し、DRL ファイルの構文およびコンポーネントをすべて見直し、エラーが表示されなくなるまで再度、ファイルを検証します。
- DRL デザイナーで Save をクリックして、設定した内容を保存します。