JBOSS Drools에서 오랫동안 일한 경험이 있습니다. 내가 사용 함께 일하고 있어요 현재 프로젝트는 여기Drools 규칙의 문제점은 무엇입니까?
4.
rule "testcase"
salience 300
when
$item : Item(itemTypeId in (Item.ITEM_TYPE_A, Item.ITEM_TYPE_B), targetId < 0)
not Tegret(targetId == $item.targetId)
then
retract ($item);
end
아이디어는 대상 개체 관련이 없습니다 작업 메모리에서 같은 항목을 철회하는 것입니다 내가 프로젝트에이 규칙의 하나입니다 Drools가 .
항목 {해당 itemId = 7305, itemTYpeId = ITEM_TYPE_A,과 targetId = -1023} 대상 {과 targetId = -1023}이 경우 규칙에
해야하지 : 나는 작업 메모리에서 이러한 개체를 사용하여 검사하고 있습니다 불.하지만 그렇지. 실험을 많이 한 후에 이상한 행동을 발견했습니다 :
규칙 "testcase1"은 실행되지 않지만 "testcase2"규칙은 실행되지 않습니다.
rule "testcase1"
salience 300
when
$item : Item(itemTypeId in (Item.ITEM_TYPE_A, Item.ITEM_TYPE_B), targetId < 0)
Tegret(targetId == $item.targetId)
then
...
end
rule "testcase2"
salience 300
when
$item : Item(itemTypeId in (Item.ITEM_TYPE_A, Item.ITEM_TYPE_B), targetId < 0)
Tegret($ti:targetId)
eval($ti == $item.targetId)
then
...
end
여기서 무엇이 잘못됩니까? "testcase1"과 "testcase2"를 다른 프로그램 실행에서 별도로 실행하고 있습니다.
최신 버전의 Drools에서 규칙을 테스트 했습니까? 그렇다면 그들은 작동 했습니까? 즉 Drools 4 버그입니까? – Steve