0
2つ以上のメモリにBMSContractオブジェクトのコレクションがある場合、BMSContract.statusフィールドを使用して特定のパターンに一致させる必要があります。私のルールは、そのようなコレクション内で、正確に1つだけ、BMSContractのステータスがACTIVEの場合に成功に解決されるはずです。オブジェクトとステータスコードの他の組み合わせは、失敗に解決されるはずです。繰り返しますが、このルールは2つ以上のオブジェクトのコレクションのみであり、それらの数は2つ、5つ、10つ、15つまたはそれ以上である可能性があります。単一のBMSContractレコードを管理するルールは、わずかに異なります。これらのルールは、ちょうどこのような複数のレコードのシナリオに固有のものです:Drools 5で同じ種類の複数のオブジェクトにどのように一致させることができますか?
Case1 - Success
BMSContract(status=ACTIVE)
BMSContract(status=PENDING)
Reason: only one Active in the collection
Case2 - Success
BMSContract(status=ACTIVE)
BMSContract(status=PENDING)
BMSContract(status=HOLD)
Reason: only one Active in the coll
Case3 - Success
BMSContract(status=ACTIVE)
BMSContract(status=PENDING)
BMSContract(status=HOLD)
BMSContract(status=CANCEL)
Reason: only one Active in the coll
Case4 - Failure
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
Reason: too many Active records in coll
Case5 - Failure
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
Reason: too many Active records in coll
Case6 - Failure
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
BMSContract(status=ACTIVE)
Reason: too many Active records in coll
Case7 - Failure
BMSContract(status=PENDING)
BMSContract(status=HOLD)
BMSContract(status=OTHER)
Reason: No Active records in coll
Q1:この構文を理解していない:ないBMSContract(!この= $ AC、ステータス== "ACTIVE")Q2:私はBMSContraを主張すべきctオブジェクトを個別のオブジェクトとして、またはコレクションとして作業メモリに追加する – JamesD
CE '否定'は、否定された存在量限定子∄の構文です。 - すべての 'BMSContract'オブジェクトを個々の事実として挿入しないと、' List 'を持つコンテナを用意し、各パターンのリストを展開するために' from'を使う必要があるので、問題は複雑です。理由があるのでなければ、私はこれをすることをお勧めしません。 –
laune
私はまだこれを意味しません:this!= $ ac。これは何ですか= $ ACは意味しますか?このインスタンスが$ ac変数にバインドされたインスタンスと同じではないことを意味しますか? – JamesD