2011-07-14 74 views
3

我正在处理大量XML消息的企业架构中工作。最近,我们已经要求对这些XML消息中包含的数据执行一些计算,并在将消息从企业传递到外部使用者之前将一些结果添加到消息头中。我们的架构基于JBoss SOA-P,我目前正在评估JBoss Drools 5.2.0执行这些消息操作。评估JBoss Drools中的XPath表达式

我知道我可以简单地从XML中提取POJO,对其执行规则并添加相应的结果。但是,如果可能的话,由于模式的动态需求以及在将新编译代码部署到我们的生产环境中的重大障碍(阅读繁文tape节),我想删除XML消息结构的编译时依赖关系。理想情况下,我希望对.drl规则中的原始XML使用XPath评估。一些搜索引发了SXC项目,这似乎正是我所需要的,但是关于如何使用它的信息很少,而且似乎自2007年以来一直处于休眠状态。此外,它已根据Drools 4.0.4和I我需要使用5.2.0。

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

谢谢!

回答

2

我们有一位Drools专家来我们公司参观我们的公司,并在不久前讨论了Drools。我正在开发一个服务,其中有很多规则不断变化,我们考虑使用Drools。

专家告诉我们使用代理对象来包装我们需要的Drools数据。您可以尝试使用代理对象,在该对象中将XML与一些方法一起使用。当Drools试图评估代理对象时,它实际上评估你的XML。 这是一个小小的脏点 - 与Drools规范相比 - 因为对象在进入Drools的工作内存时不会保存数据,而是在被问到时提取数据。

我并不是Drools的专家,但我所看到的唯一选择是,像前面提到的那样“水合POJO”,根据Drools规范,这是最好的。

+0

谢谢,我从来没有想过这样做过。如果我理解正确,我将只有一个包装XML的POJO,并提供对它执行XPath的方法。这样,POJO不需要知道关于XML结构的任何信息。我认为这可能适用于我需要做的事情。 – DrewCo

+0

我们之前使用过“解决方法”。这并不漂亮,但我认为它会做。让我知道事情的后续 –