動的ルール リアクタを使用する

動的ルール リアクタは、他の動的ルールに変更があった場合に動的ルールを自動的に生成または削除するために使用されます。これらのアクションはルールによってコントロールされ、したがって、その時点のモデル内のすべてのルールにアクセスできます。リアクタはホストに依存しないフィーチャであり、サーバ ベースの実装を含めたすべてのホストで同じように動作します。

特定の動的ルール操作はリアクタをトリガします。これにより、リアクタはエンドユーザ セッションの "実行時" のコンテキストで便利な機能になります。これらの動的ルール関連操作は、通常はカスタム ユーザ インタフェース(UI)を通してエンドユーザが開始するものです。テスト目的には、開発環境を使用してこの処理をシミュレートすることができます。ただしリアクタの主な考え方は、モデルに対するエンドユーザ開始の変更を強化するためのルール ベースの方法を、開発者として提供できるようにすることです。

作成、変更、または削除など、動的ルールへの変更の種類ごとに、指定した時間に追加のアクションを実行することを Intent に教える "リアクタ" メソッドを定義することができます。リアクタのメソッドは、通常の Intent メソッドであり、ほとんどがアクション リストのリストを返します。リアクタのメソッドは、変更時にモデルを確認することができ、またアクション リストの一部またはすべてを構築するために他のルールを参照することができます。範囲内にはいくつかの制限があります。リアクタが空のリスト({ })を返す場合は、何も行われません。

開発者の UI から(テスト目的以外で)から使用される場合とは異なり、リアクタは一部の種類のカスタム UI とともに使用されます。ルール ベースのリアクタを使用すると、単に UI に動作をハードコーディングするのにまさるいくつかの利点があります。
  • ルールは、"完全版パッケージ" であり、さまざまな UI を変更することができ、またルールは完全で正確なモデルをコントロールします。
  • UI は拡張可能です。さまざまな種類のオブジェクトが異なる応答をすることができ、UI コード自体には触らずに変更および追加することができます。
  • リアクタはルール内にあるため必要な変更に "近く"、同じコンテキスト内にあるので簡単に変更を行うことができます。

備考

  • すべてのリアクタのルールは引数が不要なメソッドです。これは特異なように見えますが、よく考えられた設計です。リアクタは、変更のたびにが再呼び出しされるために、キャッシュなしである必要があります。しかしすぐに、(自分たちも含めて) 'uncached' フラグを忘れるユーザが多いことがわかりました。また、リアクタは不思議なことに 2 番目以降の変更には反応しません。すべてのリアクタを強制的にメソッドにすることで、この問題を回避できます。
  • イベント ハンドラによって作成された動的ルールは、リアクタのメソッド自体には依存せず、したがってリアクタが依存するものにも依存しません。