[ADOS] ADOS Developer's Site - XML Stadium
ADOS Company slogan - XML Total Solution

オブジェクトの関係

PIPの開始側ではオブジェクトが図のような連携を行います。

Hestiaとの疎通はDirectMessageExchangerが行います。なお、DirectMessageExchangerはRMIでHestiaと通信する場合のクラスです。JMSによって通信する場合はJMSMessageExchangerを使用します。これらはMessageExchanger型から継承されています。

InitiationSessionオブジェクトはPIP開始側の1PIPプロセスを表します。

RMIによる接続

RMIによる接続にはDirectMessageExchangerクラスを使用します。RMIを使用するため、 ConnectionコンストラクタにEXCHANGE_MODE_DIRECT を指定する必要があります。また、同コンストラクタにはハンドラIDを指定します(ここでは「EIS」)。このハンドラIDはbridgehandlers.xmlに登録されているものを指定する必要があります。

String host = "localhost"; String user = null; String password = null; int exchangeMode = Connection.EXCHANGE_MODE_DIRECT; String handlerid = "EIS"; Connection connection = new Connection(host, user, password,exchangeMode, null, null, null, handlerid); DirectMessageExchanger exchanger = new DirectMessageExchanger(connection, Configuration.getInstance());

関連クラス 機能 com.ados.hestia.sdk.Connection Hestiaのネットワークアドレス等をパッケージしたオブジェクト。 com.ados.hestia.sdk.Configuration

com.ados.hestia.sdk.message.DirectMessageExchanger RMI接続を行う。

ServiceContentの生成

ここでは、ServiceContentのサンプルデータを内部生成しています。通常、バックエンドから入力されたXMLやCSVから、ServiceContentを生成します。しかし、ビジネスデータ以外のドキュメントIDやドキュメント生成時間などの疎通管理情報は入力データに含まれないことも多いため、EISで動的に設定するケースがあります。

RootElement re = Repository.getDefault().getResolver().resolveByVersion("0C1","Pip0C1AsynchronousTestNotification", "R01.02.00"); RootElementGenerator reg = new RootElementGenerator(re); reg.process(); ServiceContent sc = new ServiceContent("0C1", re); sc.setGlobalDocumentFunctionCode("Request"); DateTimeStamp d1 = new DateTimeStamp(); String uid1 = (new UID()).toString(); sc.setDocumentGenerationDateTime(d1); sc.setDocumentIdentifier(uid1); sc.setElementValue("fromRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier","111111111"); sc.setElementValue("toRole/PartnerRoleDescription/PartnerDescription/BusinessDescription/GlobalBusinessIdentifier","987654321");

ServiceContentの設定メソッド 対応するXPath setGlobalDocumentFunctionCode /*/GlobalDocumentFunctionCode setDocumentGenerationDateTime /*/thisDocumentGenerationDateTime/DateTimeStamp setDocumentIdentifier /*/thisDocumentIdentifier/ProprietaryDocumentIdentifier setElementValue 任意のパスを、ルート要素の下から指定

関連クラス 機能 com.ados.hestia.parser.rnbm.particle.ServiceContent ServiceContentを表すクラス。 com.ados.hestia.parser.rnbm.particle.DateTimeStamp RossetaNet形式の時間データを表すクラス。 com.ados.hestia.utils.UID ユニークなIDを生成するクラス。

セッションの生成

一つのセッションオブジェクトはPIPの一組のプロセスを表します。具体的には、1アクションPIPの場合は、アクション-シグナルの2メッセージの送受信を表します。2アクションPIPの場合は、アクション-シグナル-アクション-シグナルの4メッセージの送受信を表します。セッションはPIPの進行状態の情報を保持し、そのフラグを参照することによって疎通管理を行えます。

Date d2 = new Date(); String uid2 = (new UID()).toString(); Session session = new InitiationSession(new PayloadContainer(d2, "111111111","987654321", uid2, sc, null));

関連クラス 機能 com.ados.hestia.utils.UID ユニークなIDを生成するクラス。 com.ados.hestia.parser.rnbm.exchange.PayloadContainer ServiceContentを保持し、Hestiaへ渡されるオブジェクト。 com.ados.hestia.sdk.session.InitiationSession com.ados.hestia.sdk.session.Session セッションクラス。InitiationSessionは、自社から送信を開始(Initiation)するセッションを表す。

PIPメッセージの送信

PIPメッセージを送信する前に、ハンドラ側でデータバリデーションを行う必要があります。Hestia側では送信時にデータバリデーションを行いません。

PayloadContainer request = session.getMessageToSend(); new Validator(request.getServiceContent().getElement()).validate();

sendMessageメソッドを呼び出してPayloadContainerを入力すると、Hestiaへの送信が待機されます。そして、hitメソッドが呼び出されると、Hestiaへ送信されます。Hestiaからパートナーへのメッセージ送信は、ハンドラから管理できません。また、hitメソッドは、1件のPIPメッセージ送信だけでなく、送信待機された全てのメッセージ送信と、Hestiaから渡されたすべてのメッセージ受信を行います。

exchanger.sendMessage(request); exchanger.hit();

関連クラス 機能 com.ados.hestia.parser.rnbm.access.Validator データのバリデーションを行うクラス。

シグナルの受信

前述のようにhitメソッドは待機中の全てのメッセージ送受信を行います。そこでメッセージが受信されれば、receiveMessageメソッドにより取得できます。そして、pushStatusメソッドを呼び出し、受信メッセージを入力します。

なお、pushStatusメソッドで入力するメッセージは、セッションの一部である必要があります。したがって、*によりIDが一致するか確認します。

また、シグナルメッセージの受信を待機するため、受信処理をループで周期的に実行させる必要があります。

exchanger.hit(); Container container = exchanger.receiveMessage(); session.pushStatus((StatusContainer) container);


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved.