6.13. アクティベーション、アジェンダ、および競合セットの例
この例では、cashflow 計算システムが機能しています。以下は、実装された 3 つのクラスです。
2 つのルールを使用して、その四半期のデビットとクレジットを決定し、Account balance を更新できます。以下の 2 つのルールは、特定の期間アカウントの cashflows を制限します。フィールド名が 2 回繰り返されるのを避けるために、短いカット構文を使用する&& に注意してください。
|
|
|
AccountPeriod が最初の年に設定され、"increase balance for credits" のルールが 2 つのデータ行で実行され、1 行のデータに対応するように derease balance for debits のルールを制限します。
データは挿入段階で照合され、
fireAllRules() が呼び出された後にのみ実行されます。一方で、ルールとその一致したデータは Agenda に配置され、Activation と呼ばれます。Agenda は、fireAllRules ()が呼び出されるとすぐに実行できるアクティベーションの表で、結果が実行されます。アジェンダでのアクティベーションは順番に実行されます。これまでの実行の順序は任意とみなされることに注意してください。
上記のすべてのアクティベーションが実行されると、アカウントのバランスは -25 になります。
AccountPeriod が 2 年 2 年に更新されると、一致するデータの行が 1 つだけであるため、Agenda の 1 つの Activation のみになります。
そのアクティベーションを実行すると、25 のバランスになります。