(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Применение бизнес-правил для создания гибкой интеграционной шины на базе Oracle Service Bus

Источник: oracle
Бхуян Шамим Ахмед

к.т.н. Бхуян Шамим Ахмед,
"ФОРС - Центр разработки"

Аннотация : Для критически важных информационных систем частое изменение бизнес-логики или набора бизнес-правил является основной бизнес-стратегией. При применении движка бизнес-правил снижается сложность выполнения комплексных бизнес-правил для любой информационной системы. В данной статье мы рассмотрим способы применения бизнес-правил в OSB ( Oracle Service Bus ) для улучшения расширяемости систем.

В простом случае в каждой информационной системе бизнес-правила имплементируются в жёстко кодированном виде, в котором для произведения минимальных изменений требуется перекомпиляция и переустановка системы на сервере приложения. OSB в данном случае не исключение. Используя движок бизнес-правил можно отделить бизнес-правило от самого приложения, что позволяет более гибко реализовывать системы и сокращает расходы при изменяющихся рыночных условиях.

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

В последнее время OSB стал незаменимым инструментом в области телекоммуникаций и электронной коммерции, где он становится общей интеграционной шиной для передачи и переформирования сообщений между независимыми приложениями. При маршрутизации сообщений в интеграционных шинах часто требуется изменение бизнес-логики. Например, изменение тарифного плана абонента или изменение общих скидок при купле-продаже. Логику маршрутизации сообщения для разных систем в OSB можно реализовать в движке бизнес-логики, где изменения производятся вне зависимости от OSB.

Не все приложения или OSB должны использовать движок бизнес-логики. Приведем список случаев, в которых наиболее эффективно использование движка бизнес-логики:

  1. Если запрограммированный код бизнес-логики содержит в себе сложные вложенные if-then выражения. Комплексная поддержка логики может оказаться сложной задачей, и средства движка бизнес-логики могут помочь организовать эту работу.
  2. Риск ошибки в изменении логики значительно уменьшается, когда используется декларативный подход создания логики вместе императивного языка программирования.
  3. Когда даже небольшое изменение бизнес-логики на этапе промышленной эксплуатации может принести серьёзный финансовой ущерб компании.
  4. При частом изменении бизнес-логики в связи с динамикой роста рынка.
  5. Если при изменении небольшого фрагмента кода требуется выполнить следующие работы, чтобы обеспечить общую эксплуатацию всей системы:
    • новую логику необходимо перекомпилировать;
    • код необходимо проверить в тестовой среде;
    • логику необходимо проверить и утвердить, привлекая аудитора и/или бизнес-аналитика;
    • изменение планируется к новое развертыванию.

В настоящие время на рынке существует несколько движков бизнес-логики, которые имплементируются JSR (Java Specification Requests)- 94. Продукт Jrules от Ilog, партнера компании Oracle, является одним из лидирующих в этом направлении программных продуктов. Кроме него существуют и другие средства разработки бизнес-логики, такие как Drools от компании Jboss, распространяющийся с открытым исходным текстом.

В данной статье мы будем рассматривать продукт Ilog Jrules и способы его применения на интеграционной шине OSB, учитывая некоторые его преимущества среди продуктов данного направления. К достоинствам продукта Ilog Jrules можно отнести следующие функции:

  1. Содержит полноценную BRMS (Business rules management System);
  2. Имеет мощную систему контроля версий;
  3. Имеет компонент для создания тестовых сценариев для бизнес-логики;
  4. Имеет отдельный независимый компонент для командной работы над набором правил;
  5. Имеет независимый компонент для запуска бизнес-правил и поддерживает широкий профиль протоколов для их вызова;
  6. Имеет средства создания и редактирования бизнес-правил на высоком уровне с помощью визуальной среда разработки.

Для определения правил в Jrules используется алгоритм RETE (рис. 1) [ RETE от латинского "Сеть" ]. В этом алгоритме применяются два термина: факт (fact) и действие (Action).

Рис. 1. Пример бизнес-логики в алгоритме RETE.

Таким образом, любое правило - это факт, и при наступлении этого факта совершаются некие действия. Все необходимые для выполнения логики объекты передаются в рабочее пространство, где производится проверка логики и действие.

Реализованные правила или набор правил в Jrules можно предоставить в виде веб-сервиса, так как созданный веб-сервис инкапсулирует все сложные аспекты вызова бизнес-правила в Jrules. Кроме создания веб-сервиса, любые созданные и развернутые правила можно вызвать на транспортном уровне TCP/IP, например ormi или t3 (см. пример кода для вызова через RMI).

    Properties jndi = new Properties();

        jndi.put(Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.rmi.RMIInitialContextFactory");
    jndi.put(Context.PROVIDER_URL,"ormi://172.24.10.74:12401/paksession");
    jndi.put(Context.SECURITY_PRINCIPAL,"bres");
    jndi.put(Context.SECURITY_CREDENTIALS,"bres");

    /* Jboss configuration
    System.setProperty("java.naming.provider.url","jnp://172.24.10.74");
    System.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
    */
    try {
      IlrRuleSessionProvider rsProvider = new IlrRuleSessionProviderFactory.Builder(jndi).build();
      IlrStatelessRuleSession session = rsProvider.createStatelessRuleSession();
      // prepare a new request
      Order order = new Order();
      order.setRating(RATING.GOLD);
      order.setAmount(2100);
      order.setId(UUID.getUniqueID());
      String rulesPath = "/UFTPNRuleAppS/1.0/RosFinMonitoringReportUPFT/1.0";
      IlrSessionRequest request = new IlrSessionRequest(rulesPath);
      // Set the input parameters for the execution of the rules
      IlrSessionExecutionSettings sessionExecutionSettings = request.getExecutionSettings();
      IlrSessionParameters inputParameters = sessionExecutionSettings.getInputParameters();
      inputParameters.setParameter("order", order);
      request.getSessionDescriptor().enableTrace();
      //set the rule Set parameter in the request
      IlrSessionResponse response = null;
      IlrSessionExecutionResult executionResult = null;
      response = session.executeRules(request);

      executionResult = response.getExecutionResult();

      System.out.println("FiredRule:"+ executionResult.getNumRulesFired());
      ArrayList firedRules = executionResult.getRulesFired();
      for(int i=0, cnt=firedRules.size(); i < cnt; i++){
        //ilog.rules.engine.IlrRule rule = (IlrRule) firedRules.get(i);
        System.out.println("Fired Rule Name:"+firedRules.get(i));
      }
    } catch (IlrRuleSessionCreationException e) {
      e.printStackTrace();
    } catch(RemoteException e){
      e.printStackTrace();
    } catch(IlrRuleSessionException e){
      e.printStackTrace();
    } /*catch(NamingException e){
      e.printStackTrace();
    }*/

После этого наступает время применения бизнес-правил в OSB. Существует два подхода при использования заготовленных правил в OSB. Далее рассматриваются оба подхода.

  1. Вызов через веб-сервис:
    1. создаем один бизнес-сервис (Business Service) на проекте OSB из WSDL (описание веб-сервиса) бизнес-правил;
    2. подготавливаем все необходимые входные данные для вызова прокси-сервиса (Proxy Service);
    3. добавляем узел routing в прокси-сервис и указываем пути к данному бизнес-сервису, который инкапсулирует вызов бизнес-правила;
    4. результат вызова используем в остальных узлах процесса.

    Рис. 2. Вызов бизнес-правила

  2. Вызов через транспортный протокол:
    1. создаем один java-проект, добавляем статичный метод с фрагментом кода, который показан выше;
    2. компилируем проект и создаем сборку (jar) из данного проекта;
    3. импортируем созданный jar в проект OSB;
    4. добавляем в прокси-сервисе узел под названием JavaCallOut;
    5. указываем импортированный jar и выбираем статичный класс для вызова бизнес-правила.

Рис. 2 иллюстрирует все возможные варианты вызова бизнес-правила из OSB.

Движок правил использует декларативный подход для создания правил, что позволяет приложениям, использущих бизнес-правила, быть более гибким к настройкам и расширениям. Продукт Oracle Service Bus предоставляет широкие возможности для создания наиболее гибкой интеграционной шины на базе бизнес-правил.

ЛИТЕРАТУРА:

  1. Документация Ilog Jrules; http://ilog.com/products/jrules/documentation/jrules67
  2. Ernest Freidman-Hill, Jess in action - 2003.
  3. Tony Morgan, Business rules and information system - 2003.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 21.05.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Processor License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus License
Rational ClearQuest Floating User License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
СУБД Oracle "с нуля"
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100