Drools 6.4带有多态列表的OOPath

时间:2016-07-01 14:34:55

标签: drools

我试图找到一个优雅的OOPath表达式来匹配一个Object。我当前的域/规则模型有

  • 包含子类型的事件,例如JobEvent(带有属性" jobName"),ServiceEvent
  • 警报,由一个或多个事件引起(存储在Alert对象中作为属性"导致"如果键入List< Event>)

现在我正在尝试编写一个规则,该规则应该触发并创建一个新的JobEvent警报,如果不存在同一个Job的先前警报。我试过了

rule "Create Alert for Failed Job"
when
   e : JobEvent(status == "FAILURE") from entry-point "JobPoller"
   not ( Alert( /causes{jobName == e.jobName} ) )

但非常谨慎,这导致了

[Error: unable to resolve method using strict-mode: ....Event.jobName()

因为列表的类型(来自cause属性)是Event,只有子类型JobEvent具有属性jobName。

尝试过像

这样的事情
not ( Alert( /causes#JobEvent{jobName == e.jobName} ) )

或instanceof的变体,但无法找到表达我的OOPath查询的方法。

有选择吗?

0 个答案:

没有答案