Оценка выражений XPath в JBoss Drools - PullRequest
3 голосов
/ 14 июля 2011

Я работаю в рамках корпоративной архитектуры, которая обрабатывает большое количество XML-сообщений.Недавно нам было предложено выполнить некоторые вычисления для данных, содержащихся в этих XML-сообщениях, и добавить некоторые результаты в заголовок сообщения перед передачей сообщения из предприятия внешнему потребителю.Наша архитектура основана на JBoss SOA-P, и в настоящее время я оцениваю JBoss Drools 5.2.0 для выполнения этих операций с сообщениями.

Я знаю, что могу просто гидрировать POJO из XML, выполнить правила для негои добавьте соответствующий результат.Однако, если это возможно, я хотел бы удалить зависимости времени компиляции от структуры сообщений XML из-за динамических требований к схеме, а также из-за значительных препятствий при развертывании нового скомпилированного кода в нашей производственной среде (читай: красная лента).В идеале я хотел бы использовать оценки XPath для необработанного XML в правилах .drl.В результате некоторых поисков появился проект SXC , который, как мне кажется, именно то, что мне нужно, но информации о том, как его использовать, очень мало, и он кажется неактивным с 2007 года. Кроме того, он был скомпилированDrools 4.0.4 и мне необходимо использовать 5.2.0.

Кто-нибудь знает хороший способ оценить выражения XPath по отношению к XML в правилах Drools?Также приветствуются альтернативы XPath, которые позволяют компенсировать изменения структуры XML в правилах Drools во время выполнения.

Спасибо!

1 Ответ

2 голосов
/ 15 июля 2011

у нас был эксперт по Drools, посетивший нашу компанию и недавно узнавший о Drools.Я разрабатываю Сервис со множеством постоянно меняющихся правил, и мы подумали об использовании Drools.

Эксперт сказал нам использовать Proxy-Objects для упаковки данных, которые нам нужны для Drools.Вы можете попробовать использовать Proxy-Object, в который вы помещаете XML вместе с некоторыми методами.Когда Drools пытается оценить Proxy-Object, он фактически оценивает ваш XML.Это немного грязно - по сравнению со спецификациями Drools - поскольку Объект не будет хранить данные при вводе в рабочую память Drools, а скорее извлечет данные по запросу.

Я не эксперт по Drools,но единственная альтернатива, которую я вижу, это «увлажнять POJO», как вы упоминали ранее, что было бы лучше всего в соответствии со спецификациями Drools.

...