0

Javaクライアントを使用して、IBMJruleルール実行サーバーでルールを実行しようとしています。Websphere community Edition V2.1サーバーを使用していますが、samaeサーバーにデプロイされたJSFを使用してルールを呼び出して実行できます。

Javaクライアントを使用してルールを呼び出して実行したいと思います。私はこれを行う方法を見つけられませんでした、

EJBで。Initial Context envionmentプロパティを設定することにより、WebおよびJavaクライアントからEJBを呼び出すことができます。これに似た方法はありますか?Javaクライアントを使用してルール実行サーバールールを呼び出すには、Webパーツがすでに機能しています。

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、ユーザー名、パスワードを指定する場所を誰かが提案できますか。EJBでInitialContext値を指定するように。

4

3 に答える 3

2


ここで誤解があるように思われるので、RES とは何かを明確にさせてください。それは私かもしれません。
RES は Ilog 用語で複数のことを説明するために使用されます。
- ruleapp を管理できる Web インターフェース。
- ルールを実行するために WebSphere CE (またはその他) にデプロイする実際のアプリケーション。
- ruleapp をローカルで実行できるようにする .jar ファイル。

あなたの知る限り、ローカルの JAVA アプリケーションを使用して RES に接続することはできません。
コーディングした内容は、ruleapp をローカルで実行するために RES*.jar ファイルに含まれるルール エンジンを呼び出すことです。
EJB アプリケーションを使用するように、JAVA アプリケーションを使用する方法はありません。
たとえば、ruleapp 名を Web サービスのパラメータとして指定する場合は、Web サービスを使用する必要があります。
あなたは miniloan を使用しているので、使用するルールセットのバージョンを知ることができる Web インターフェースを使用した例をおそらく知っているでしょう。
RES (アプリケーション サーバー上の実際のアプリケーション) にデプロイされた ruleapp をプログラムで管理する場合も同様で、MDB を使用する必要があります。他には何もありません。

それは残念です、私はそれを経験したので知っていますが、(少なくとも)それを行う方法はありません. これは従わなければならない振る舞いではありません。

それを機能させるには、ruleapp をクラスパス (または Eclipse の Java アプリケーションのルート) に配置して実行します。次に、ルールを実行します。

RES は、ルール プロジェクトを操作するために任意の Java アプリケーションから RTS にアクセスできる RTS と同じツールを提供しません。

あなたは 100% 正しいです。J2SE 接続にサーバー URL を伝える方法がないため、サーバーからルールを実行する方法がありません。
それが役に立てば幸い。

于 2012-05-25T09:51:13.013 に答える
1

J2EEコードから、またはあなたの場合のようにリモートJ2SE呼び出しを介してRule Execution Serverを絶対に呼び出すことができ、これを行うためのドキュメントが提供されています。ただし、最初の応答に関していくつかのことを明確にしたいと思います。

Rule Execution Server は、ルールを実行するためのランタイムです。パーシスタンス・レイヤー (ファイルまたはデータベース) と、それを管理するために使用される管理コンソールと、接続されているその他の Rule Execution Server があります。

以下を使用する場合に接続するのは、この管理サーバーです。

  • サーバー:ポート/解像度 URL

多くの RES を 1 つの管理コンソールに接続できるため、実際の 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 の場合も同様ですが、ルールセットをローカルでプルするのではなく、実際にはリモート RES でルールを実行します。

ODM サンプルを確認すると、J2EE と J2SE の両方の手法を示すサンプルがあります。

于 2015-11-17T16:36:03.623 に答える