我在商业中心使用指导性规则,用非循环真来修改实际情况。但循环仍在发生。当我使用锁定激活时,规则根本不运行。请帮帮忙。
rule "today true and close time is before 15pm"
dialect "mvel"
salience 120
ruleflow-group "gogo"
no-loop true
lock-on-active true
when
v : VendorWorkingDays( eval( vendorWD contains(java.time.LocalDate.now().plusDays(1).getDayOfWeek().toString()) )&& todayFlag == true && eval( closeTime.isBefore(java.time.LocalTime.parse("15:00:00")) ))
then
modify( v ) {
setTodayOneE( "NA" ),
setTodayOneM( "Available" ),
setTodayOneFlag( true )
}
System.out.println("today true and close time is before 15pm");
end
发布于 2021-12-20 12:35:03
您可能想看看另一个问题:what is the difference between no-loop and lock-on-active in drools
在您的示例中,modify
的使用导致重新评估与VendorWorkingDays
相关的规则。只有当您有一个规则循环时,no-loop
的使用才有效。我想,在您的情况下,您可能有多个规则涉及无限循环。如果从另一个规则将lock-on-active
插入到会话(或修改),则使用VendorWorkingDays
将阻止执行此规则。
在我提到的问题中有一个指向博客文章的链接,它将为您更好地解释这两个属性(博客文章已经很老了,但是对于最新版本的Drools来说,这些原则或多或少仍然有效)。
https://stackoverflow.com/questions/70417582
复制相似问题