ルールを持つ所有顧客を特定するか、顧客とルールを関連付けるデータを維持する必要があります。私は後者が優先されると思っていますが、私は両方のソリューションの概要を説明します。いずれの場合でも、顧客は事実によって特定されなければならない。
rule "some rule"
when
Customer(id in ("Smith&Co", "Brown&Sons", "Jones Inc."))
...
then ... end
あなたが必要とするルールにお客様associcateするには:
class Customer {
private String name;
private List<String> rules;
//...
}
とAgendaFilter
class RuleFilter implements AgendaFilter {
static List<Customer> customers = new ArrayList<>();
static {
customers.add(...);
...
}
static RuleFilter getFilterFor(String custname){
for(Customer cust: customers){
if(cust.getName().equals(custname)){
return cust;
}
}
throw IllegalArgumentException("no customer: " + custname);
}
Customer current;
RuleFilter(Customer current){
this.current = current;
}
// ... getters & setters
boolean accept(Match match){
return current.getRules().contains(match.getRule().getName());
}
}
を書いて、フィルタインスタンスを提供することにより、顧客のためのセッションを実行します。
を
AgendaFilter currFilter = RuleFilter(getFilterFor(customername));
fireAllRules(currFilter);
各顧客のアジェンダを作成し、アジェンダに基づいてルールを起動します。 – pratik2392
いいえ、私はそれを言っていません。顧客に応じてアジェンダフィルタのインスタンスを作成する必要があります。 – laune
ok ...私はこれが私にとってはうまくいくと思います。あなたは同じものの完全な実装を見ることができ、さらにそれを理解できるいくつかのリンクを共有できますか? – pratik2392