【发布时间】:2017-11-09 21:27:18
【问题描述】:
鉴于内存中有两个或更多 BMSContract 对象的集合,我需要使用 BMSContract.status 字段匹配特定模式。如果在此类集合中只有一个且只有一个 BMSCContract 的状态为 ACTIVE,我的规则应该解析为 Success。对象和状态代码的任何其他组合都应解析为失败。同样,此规则仅适用于 2 个或更多对象的集合,并且可以有任意数量:2、5、10、15 或更多。管理单个 BMSCContract 记录的规则集略有不同。这些规则仅适用于多个记录场景,例如:
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
【问题讨论】:
标签: drools rules business-rules