6.13. アクティベーション、アジェンダ、および競合セットの例


この例では、cashflow 計算システムが機能しています。以下は、実装された 3 つのクラスです。
public class CashFlow {
    private Date   date;
    private double amount;
    private int    type;
    long           accountNo;
    // getter and setter methods here
}

public class Account {
    private long   accountNo;
    private double balance;
    // getter and setter methods here
}

public AccountPeriod {
    private Date start;
    private Date end;
    // getter and setter methods here
}
Copy to Clipboard Toggle word wrap
2 つのルールを使用して、その四半期のデビットとクレジットを決定し、Account balance を更新できます。以下の 2 つのルールは、特定の期間アカウントの cashflows を制限します。フィールド名が 2 回繰り返されるのを避けるために、短いカット構文を使用する&& に注意してください。
Expand
rule "increase balance for credits"
when
  ap : AccountPeriod()
  acc : Account( $accountNo : accountNo )
  CashFlow( type == CREDIT,
            accountNo == $accountNo,
            date >= ap.start && <= ap.end,
            $amount : amount )
then
  acc.balance  += $amount;
end
Copy to Clipboard Toggle word wrap
rule "decrease balance for debits" 
when 
  ap : AccountPeriod() 
  acc : Account( $accountNo : accountNo ) 
  CashFlow( type == DEBIT, 
            accountNo == $accountNo,
            date >= ap.start && <= ap.end, 
            $amount : amount ) 
then 
  acc.balance -= $amount; 
end
Copy to Clipboard Toggle word wrap
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 のバランスになります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat