ilog jrules и подключение к базе данных - Подробное объяснение

Я использую JRules IBM ILOG для выполнения POC, и я новичок в JRules. У меня есть бизнес-требование, в котором:

  1. У меня будут классы документов с их свойствами в базе данных.
  2. В Rule Studio я создам таблицу решений со следующим условием для каждой роли:

    If Document Class is <abc> and User Role is <xyz> Then Return Properties <P1, P2,…> as editable.

  3. Я должен найти способ интегрировать базу данных и таблицу решений, чтобы значение свойства могло быть распознано таблицей решений.

Может ли кто-нибудь помочь мне в том, как я могу добиться этого простым способом, используя код IRL?


person user1646141    schedule 04.09.2012    source источник


Ответы (2)



если вы новичок в JRules, имейте в виду, что вы пишете артефакты бизнес-правил (бизнес-правила, таблицы решений, деревья решений) на основе того, что определено в JRules и «вербализовано».

Что вы пытаетесь делать просто неправильно с точки зрения BRMS.

В таблице решений (DT) могут быть сотни строк, то есть сотни отдельных правил. Каждая строка преобразуется в одно правило.
Так что, если вы сделаете это, вы будете вызывать БД сотни раз, а это не то, что вам нужно.
Можно возразить, что вы можете использовать алгоритм fastPath в своей задаче правила, но вы новичок в JRules, и я просто хочу напомнить вам об этом.

Что вам нужно:
1/ Создать объектную модель на Java.
2/ Создать спецификацию в JRules на основе объекта модель (библиотека Java).
3/ Вербализируйте свою спецификацию (можно автоматизировать во время разработки во время импорта в JRules).
4/ напишите свое DT
5/ создайте вызов БД в вашей оркестровке уровень в Java.
6/ заполнить экземпляры объектов и атрибуты из уровня оркестровки.
7/ экспортировать набор правил из вашего проекта правил с правильным вводом/выводом (параметрами набора правил).
8/ создать обращение к движку с вашим набором правил
9/ получение результата

Работа выполнена

Имейте в виду, что вызов БД из движка правил во время выполнения, скорее всего, неправильный идея, потому что ваши правила могут тестироваться несколько раз и, следовательно, вызывать БД n раз, что неэффективно.

person Damien    schedule 07.09.2012

Попробуйте заранее загрузить данные из базы данных. JRules следует вызывать с загруженными данными и возвращать результат вызывающей системе, которая затем сохраняет данные обратно в БД. Я бы не рекомендовал прямую интеграцию с БД.

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

person sdfx    schedule 06.09.2012