Поддержание дрл (технических) правил в Drools Guvnor

Я новичок в мире бизнес-правил, но я думаю, что понял концепции Drools Expert и Drools Guvnor, но я все еще немного сбит с толку, как/когда/почему именно использовать Guvnor по сравнению с Expert. А также, исключают ли они друг друга, способны или даже предпочитают работать бок о бок. Ниже приведены некоторые выделенные темы, которые озадачивают, и небольшое объяснение моих проблем, в основном сосредоточенных на ремонтопригодности приложений.

Есть ли у Guvnor все функции, доступные в Expert, плюс еще?

Я знаю, что Guvnor — это система управления бизнес-правилами (BRMS), которая берет на себя управление хранением (включая управление версиями) правил и предоставлением услуг для использования другими приложениями. Guvnor содержит пользовательские интерфейсы (текстовые и графические) для создания правил и движок для их запуска, так что в этом смысле я предполагаю, что он содержит все функции экспертной системы. Исходя из моих требований, я совершенно уверен, что Guvnor — это то, что мне нужно, но нужен ли мне Drools Expert для чего-то еще после этого?

Или, другими словами, Drools Expert предлагает что-то, чего нет в Guvnor?

Правила тестирования в Guvnor

Многие руководства по Drools, которые я видел, начинаются с примера TDD, где правила проверяются с помощью простых тестов jUnit. После того, как правило импортировано в Guvnor (или просто сгенерировано там), есть ли способ использовать/написать для него модульные тесты?

Следует ли проводить тестирование только через открытые интерфейсы (REST)?

Если пользователи системы будут разрабатывать свои собственные правила, я не ожидаю, что они будут писать какие-либо тесты. Здесь в основном интересуют «основные» правила и их ремонтопригодность.

В случае «основных» правил следует ли хранить их в системе контроля версий и импортировать в Guvnor при запланированных обновлениях всей системы? В этом случае модульные тесты могут быть написаны для этих правил и автоматически выполняться как часть цикла сборки.

Заранее спасибо.


person kaskelotti    schedule 15.11.2012    source источник


Ответы (1)


Основываясь на одном из ваших вопросов, я должен сначала кое-что прояснить. По сути:

  • Эксперт - это среда выполнения правил.
  • Guvnor — инструмент для написания и хранения правил, которые впоследствии будут выполняться в Expert.

Guvnor не предоставляет среду выполнения для ваших правил, кроме того, что требуется для тестовых наборов. Вам всегда будет нужен эксперт для вашей среды выполнения. Guvnor позволяет вам управлять правилами и хранить их. Он также предоставляет некоторые удобные инструменты с графическим интерфейсом, такие как управляемый редактор и таблицы веб-решений. Однако вы также можете редактировать правила в среде IDE, такой как Eclipse, и отправлять их в Guvnor с помощью подключаемых модулей Guvnor WebDav Eclipse.

Как правило, у вас будет веб-приложение Guvnor на одном сервере, а ваши приложения — на другом. Вы можете загрузить скомпилированные правила из Guvnor в сборку вашего приложения и развернуть их вместе с вашим приложением. Кроме того, вы можете определить ресурс URL в своем коде, чтобы создать свою базу знаний, указывающую на URL-адрес пакета Guvnor. В этом случае ваше приложение может загрузить базу знаний при запуске и перезагрузить ее во время выполнения.

Например, следующий код загрузит снимок пакета с именем «Утверждено» в качестве ресурса для создания базы знаний.

UrlResource urlResource = 
    (UrlResource) ResourceFactory.newUrlResource(
        "http://my.guvnor.local/.../package/mypackage/Approved");
urlResource.setBasicAuthentication("enabled");
urlResource.setUsername("myusername");
urlResource.setPassword("mypassword");
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(urlResource, resource.getType());

Изменить. Взгляните на KnowledgeAgent, если вы хотите, чтобы правила перезагружались во время выполнения, когда они изменяются в Guvnor.

Моя основная причина использования Guvnor заключается в том, чтобы позволить нетехническим пользователям создавать правила, используя таблицы решений и управляемые редакторы на основе DSL.

Мне нравится редактировать технические правила в Eclipse, где я могу легко написать вокруг них модульные тесты и оценить, что они ведут себя так, как я ожидаю. Я нахожу это намного проще, чем возможности тестирования в Guvnor. И хотя Guvnor предоставляет некоторый контроль версий, я предпочитаю Subversion/Git в качестве контроля версий для своих технических правил.

Я также пишу DSL в Eclipse, который затем развертываю в Guvnor. Это значительно упрощает работу с управляемыми правилами для нетехнических пользователей.

Правила тестирования

Что касается тестирования, то есть несколько вариантов. В Guvnor есть функция тестирования, которая позволяет вам записывать ожидания на основе различных входных данных. Тем не менее, я лично нахожу этот способ слишком неуклюжим и ограничивающим в использовании. Я предпочитаю писать тесты на Java/JUnit.

Прежде всего, вы можете написать простые модульные тесты, которые загружают одно или два технических правила, написанных на DRL, и оценивают, что они активируются, когда вы думаете, что должны, и генерируют предполагаемые факты, где это уместно.

Для более сложного тестирования я пишу тесты, которые создают базу знаний, используя пакет в Guvnor, вставляют факты и правила огня, чтобы оценить, правильно ли работает пакет в целом, включая те правила, которые были встроены в управляемых редакторах или таблицы решений.

Другое использование Guvnor

Стоит отметить, что функциональность редактора Guvnor становится намного богаче, и он становится редактором и хранилищем не только правил. Например, имеется богатый инструментарий для процессов BPM, который вскоре должен стать лучше, чем то, что вы можете получить в IDE, такой как Eclipse.

Сводка

Если все ваши правила написаны вами и другими разработчиками на DRL, то от использования Guvnor мало пользы. На самом деле я бы нашел это помехой. Однако, если вы хотите воспользоваться управляемыми редакторами или таблицами решений или хотите, чтобы «бизнес» пользователи управляли некоторыми правилами, вам следует более внимательно изучить Guvnor.

person Steve    schedule 14.12.2012
comment
Спасибо за отличное понимание. Ваш пост в значительной степени соответствует моим дальнейшим выводам по этой теме и, таким образом, дает мне уверенность в том, что выбранный путь является правильным. Глубоко оценен! - person kaskelotti; 04.01.2013