0
두 개 이상의 메모리에 BMSContract 개체 컬렉션이 있으면 BMSContract.status 필드를 사용하여 특정 패턴을 일치시켜야합니다. 그러한 컬렉션에서 정확히 하나의 BMSContract가 ACTIVE 상태 인 경우에만 내 규칙이 Success로 처리됩니다. 다른 모든 개체 및 상태 코드의 조합은 실패로 해결됩니다. 이 규칙은 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 (이 = $ 교류, 상태 == "ACTIVE"!) Q2 :이 BMSContra을 주장해야이 문제를 일으킬 사실을 확인해야하는 경우 필요 ct 객체를 개별 객체 또는 콜렉션으로 작업 메모리에 저장합니까? – JamesD
CE 'not'는 네거티브 존재 한정사 ∄에 대한 구문입니다. - 모든 BMSContract 개체를 개별 사실로 삽입하지 않으면 컨테이너에'List'이 있어야하고 각 패턴에 대한 목록을 확장하는 데 'from'을 사용해야하므로 문제가 복잡합니다. 나는 이유가 없다면 이것을하는 것을 권장하지 않습니다. –
laune
나는 아직도 의미를 모르겠다 : this! = $ ac. 이게 뭐야! = $ ac 의미? 이 인스턴스가 $ ac 변수에 바인드 된 것과 같지 않다는 것을 의미합니까? – JamesD