在JBoss Drools中评估XPath表达式

3
我正在处理大量XML消息的企业架构中工作。我们最近收到了要求,在将消息传递给外部消费者之前,对包含在这些XML消息中的数据执行一些计算,并将一些结果添加到消息头中。我们的架构基于JBoss SOA-P,我目前正在评估JBoss Drools 5.2.0来执行这些消息操作。
我知道我可以从XML中提取POJO,对其执行规则,并添加适当的结果。然而,如果可能的话,由于模式周围的动态要求以及在生产环境中部署新编译代码的重大障碍(即:官僚主义),我希望消除对XML消息结构的编译时依赖性。我理想情况下希望在.drl规则中对原始XML使用XPath评估。搜索发现SXC项目,它似乎正是我需要的,但是关于如何使用它的信息非常少,而且自2007年以来似乎已经不再更新。此外,它已经针对Drools 4.0.4进行了编译,而我需要使用5.2.0。

有人知道在Drools规则中评估XPath表达式的好方法吗?也欢迎使用替代XPath的方法,在运行时允许在Drools规则中补偿XML结构更改。

谢谢!

1个回答

2
我们公司曾经邀请一个Drools专家来讲解Drools。我正在开发一个规则频繁变化的服务,我们想使用Drools。
这位专家建议我们使用代理对象包装我们需要用于Drools的数据。您可以尝试使用一个代理对象,其中包含XML以及一些方法。当Drools试图评估代理对象时,实际上是在评估您的XML。这有点不太标准 - 与Drools规范相比 - 因为该对象被输入到Drools的工作内存中时不会保留数据,而是在请求时提取数据。
我不是Drools的专家,但我唯一看到的选择是 "hydrate a POJO",就像你之前提到的那样,这符合Drools的规范。

谢谢,我之前没有想过这样做。如果我理解正确的话,我只需要一个POJO来包装XML并提供执行XPath的方法。这样,POJO就不需要知道XML结构的任何信息。我认为这可能适用于我需要做的事情。 - DrewCo
我们之前使用了“解决方法”。虽然不太美观,但我认为它能够胜任。让我知道进展如何。 - Sören

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接