2012-05-24 4 views
0

Я пытаюсь выполнить правило в сервере выполнения IBM Jrule Rules, используя java-клиент. У меня есть сервер Websphere Community Edition V2.1, я могу вызывать и выполнять правила с использованием JSF, развернутого на сервере samae.Вызов Ilog Jrule Rules Сервер выполнения от java-клиента

Я хочу позвонить и выполнить правила, используя java-клиент. Я не нашел никакого способа сделать это,

В EJB. мы можем вызвать EJB из сети, а также из java-клиента, установив свойство Initial Context envionment. Существует ли какой-либо способ, аналогичный этому, чтобы вызвать правила сервера Execution, используя java-клиент, веб-часть уже работает.

import ilog.rules.res.session.IlrPOJOSessionFactory; 
import ilog.rules.res.session.IlrStatelessSession; 
import ilog.rules.res.session.IlrSessionFactory; 
import ilog.rules.res.session.IlrStatefulSession; 
import ilog.rules.res.session.IlrSessionRequest; 
import ilog.rules.res.session.IlrJ2SESessionFactory; 
import ilog.rules.res.session.IlrSessionResponse; 
import ilog.rules.res.model.IlrPath; 
import ilog.rules.res.session.extension.IlrExtendedJ2SESessionFactory; 
import miniloan.Borrower; 
import miniloan.Loan; 

public class POJOEx { 

    public static void main(String... arg) { 
     // create rule session factory 
     //IlrSessionFactory sessionFactory = new IlrPOJOSessionFactory(); 
     //IlrExtendedJ2SESessionFactory sessionFactory = new IlrExtendedJ2SESessionFactory(); 
     //  j2se factory 
     IlrSessionFactory sessionFactory = new IlrJ2SESessionFactory(); 

     try { 
      // use stateless session for invocation 
      IlrStatelessSession statelessSession = sessionFactory.createStatelessSession(); 
//input parameter 
      Borrower borrower = new miniloan.Borrower("Joe", 600, 
        80000); 
// in out parameter 
      Loan loan = new miniloan.Loan(500000, 240, 0.05); 

      IlrSessionRequest request = sessionFactory.createRequest(); 
//rule path 
      request.setRulesetPath(IlrPath.parsePath("/miniloanruleapp/2.0/miniloanrules/1.0")); 

request.setUserDat("miniloanruleapp.MiniloanrulesclientRunnerImpl.executeminiloanrules"); 

      request.setInputParameter("borrower", borrower); 
      request.setInputParameter("loan", loan); 
//executing 
      IlrSessionResponse response = statelessSession.execute(request); 

      System.out.println("userdata = " + response.getOutputParameters().get("loan")); 
      System.out.println("outputString = " + (String) response.getUserData()); 
      System.out.println("executionId = " + response.getExecutionId()); 


     } catch (Exception ex) { 
      ex.printStackTrace(); 
     }   

    } 
} 

Я получаю ниже ошибки.

ilog.rules.res.xu.ruleset.impl.archive.IlrRulesetArchiveInformationNotFoundException: Cannot get the information about the ruleset /miniloanruleapp/2.0/miniloanrules/1.0 

может кто-нибудь предложить, где указывать URL-адрес сервера, имя пользователя и пароль. как мы указываем значения InitialContext в EJB.

ответ

2


Позвольте мне уточнить, что такое RES, потому что кажется, что здесь есть недоразумение, это может быть я.
RES используется в терминологии Ilog для описания нескольких вещей:
- Веб-интерфейс, который позволяет вам управлять вашим ruleapp.
- Фактическое приложение, которое вы развертываете на своем WebSphere CE (или еще) для выполнения правил.
- Файлы .jar, которые позволяют выполнять локальное использование ruleapp.

Вы, AFAIK, не можете подключить ВИЭ, используя локальное приложение JAVA.
Что вы закодировали, вызывается механизм правил, содержащийся в файлах RES * .jar, чтобы выполнить локальное использование ruleapp.
Вы не можете использовать свое приложение JAVA, как вы используете приложение EJB.
Вы должны использовать вебсервис или другое, что возможно, если вы поместите имя ruleapp как параметр веб-службы, например.
Вы используете miniloan, поэтому, вероятно, знаете пример, используя веб-интерфейс, где вы можете указать, какую версию набора правил использовать.
Это будет то же самое, если вы хотите программно управлять своим программным обеспечением, установленным в RES (реальное приложение на вашем сервере приложений), вам нужно будет использовать MDB. Ничего больше.

Это разочарование, я знаю, потому что я прошел через это, но я не знаю, по крайней мере, для этого. Это не то поведение, за которым вы должны следовать.

Чтобы заставить его работать, поместите ваш ruleapp в путь к классам (или корень вашего приложения JAVA в eclipse) и запустите его ... Затем вы выполните свои правила.

В RES не предусмотрены те же инструменты, что и в RTS, где вы можете получить доступ к RTS из любого приложения JAVA, чтобы управлять вашим проектом правил.

Вы на 100% верны, что невозможно установить соединение J2SE с URL-адресом сервера и, следовательно, не может запускать ваши правила с сервера.
Надеюсь, это поможет.

+0

Большое спасибо за подробное объяснение, как вы указали, я буду использовать веб-службу для доступа к RES с сервера, а затем позвоню на эту веб-службу, используя чистый клиент java для доступа и выполнения правил, проживающих в RES. –

0

Мне любопытно, как вы справляетесь с проблемой. Решена ли проблема?

Обычно я использую путь к настройкам типа "/ miniloanruleapp/2.0/miniloanrules "

0

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

правила выполнение Сервер время выполнение для выполнения правил. Она имеет уровень постоянного хранения (файл или базу данных) и консоль управления, которая используется для управления им и любого другого подключенного Правило Execution Server.

это этот сервер управления, к которому вы подключаетесь, при использовании:

  • сервера: порт/Рез URL

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

На ваш вопрос. Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы не настроили сервер выполнения удаленных правил, из которого вы хотите извлечь набор правил, поэтому вы получаете сообщение об ошибке.

Чтобы настроить удаленное соединение, вы используете файл с именем «ra.xml» и изменяете настройки, указывая на удаленный res/console.

В каталоге '/ executionserver/bin' по умолчанию используется файл ra.xml по умолчанию ./IBM/ODM87/ODM/executionserver/bin.

основных аспектов в этом файл для рассмотрения будет:

To enable management of Java SE XU instances that are running on different JVM or JMX MBean server, you must configure the XU MBean plug-in with the TCPIP protocol: 
    <config-property> 
       <config-property-name>plugins</config-property-name> 
       <config-property-type>java.lang.String</config-property-type> 
       <config-property-value>{pluginClass=Management,xuName=default,protocol=tcpip,tcpip.port=TCPIP_PORT,tcpip.host=RES_CONSOLE_HOST,tcpip.retryInterval=INTERVAL} 
      </config-property-value> 
     </config-property> 
    where: 
RES_CONSOLE_HOST is the host on which the Rule Execution Server console is deployed. 
TCPIP_PORT is the TCP/IP port on which the Rule Execution Server console management server is listening. 
INTERVAL is the interval of time, in milliseconds, during which the console tries to reconnect to the management server if a connection fails. 

Пока ra.xml находится в пути к классам приложения вы работаете местный J2SE двигатель должен сделать вызовите консоль удаленного RES и запросите приложение правила, указанное в пути RuleSet.

Для J2EE это похоже, но вы фактически выполняете правило в удаленном ВИЭ, а не локализуете набор правил.

Если вы проверили образцы ODM, есть образец J2EE и J2SE, который демонстрирует обе методики.

 Смежные вопросы

  • Нет связанных вопросов^_^