我正在处理大量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规则中针对XML评估XPath表达式的好方法? XPath的替代方案也允许在运行时在Drools规则中补偿XML结构更改。
谢谢!
答案 0 :(得分:2)
我们有一位Drools专家访问我们公司并在不久前接受了Drools。我正在开发一个服务,其中包含许多不断变化的规则,我们考虑过使用Drools。
专家告诉我们使用代理对象来包装Drools所需的数据。您可以尝试使用Proxy-Object,在其中放置XML以及一些方法。当Drools试图评估Proxy-Object时,它实际上正在评估您的XML。 这与Drools规范相比有点脏 - 因为在输入Drools的工作内存时Object不会保存数据,而是在被问到时提取数据。
我不是Drools的专家,但我看到的唯一选择是“如前所述”“保湿POJO”,根据Drools规范,这将是最好的。