英語で読む

次の方法で共有


再アサート

再アサートとは、エンジンの作業メモリに既に存在するオブジェクトに対して Assert 関数を呼び出すということです。 reassert コマンドは、オブジェクトに対して retract コマンドを発行し、続けて assert コマンドを発行することと同じです。

.NET オブジェクト

最初にオブジェクトが取り消され、述語またはアクション内でオブジェクトを使用しているルールの議題に関するアクションが削除されます。 オブジェクトは作業メモリにアサートされ、新たにアサートされたオブジェクトとして評価されます。 したがって、述語内でオブジェクトを使用するルールが再評価され、そのアクションが議題に適切に追加されます。 以前に true に評価され、アクションで オブジェクトのみを使用したルールでは、アクションが議題に再追加されます。

TypedXmlDocument

最上位レベル の TypedXmlDocument (TXD) が再アサートされると、最上位レベル の TXDが最初にアサートされたときに作成される子 TXD は、子 TXDの状態に応じて動作が異なります。 新しい子ノードまたはダーティ子ノードの場合、その少なくとも 1 つのフィールドがルール アクション、アサート、または再アサート アクションを使用してポリシーで変更されたことを意味します。 ダーティではない既存の子ノードは、作業メモリに残されます。 次の例は、親ノードが再アサートされたときの子ノードの動作を説明する簡単なシナリオです。

現在作業メモリに 3 つの TXDがあるとします。 PC1、 C2、 C3 です。 P は最上位レベルの TXD であり、親ノードです。各子ノードには、フィールド x が含 まれています

P

C1 (C1.x = 1)

C2 (C2.x = 1)

C3 (C3.x = 1)

次に、ルール アクションの結果として、次の操作が実行されたと仮定します。

  • C2 のフィールド (x) の値が更新されます。

  • C3 は、ユーザー コードを使用して削除されます。

  • ユーザー コードを使用して、追加の子ノード DP に追加されます。

注意

エンジンが関知しない操作によってビジネス ルール エンジンがノードをダーティであると識別することはありません。 たとえば、外部アプリケーション内でプログラムによってノードが追加、削除、または変更された場合です。

作業メモリ内のオブジェクトの新しい表現は次のようになります。

P

C1 (C1.x = 1)

C2 (C2.x = 0)

D

次に、P を再評価 します。次の点は、子ノードの動作をまとめたものです。

  • ノード C2 は、フィールドの更新後にダーティになったため、再アサートされます。

  • ノード C3は、ワーキングメモリから取り消される。

  • ノード D は、動作中のメモリにアサートされます。

  • ノード C1 は、 P が再アサートされる前に更新されていないため、作業メモリ内で変更されません。

TypedDataTable

TypedDataRowReassert が発行された場合、その行は取り消され、ワーキング メモリにアサートされます。 TypedDataTableReassert が発行された場合、関連付けられているすべての TypedDataRowが取り消され、アサートされます。

DataConnection

DataConnection を介して取得されたすべての TypedDataRowは取り消されます。 その後、 DataConnection を使用するすべての述語が再評価され、 DataConnection が再クエリされ、関連する TypedDataRowが作成されます。

参照

エンジン制御関数