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

*オブジェクトの関係 [#see246d9]

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

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

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

*RMIによる接続 [#wd97e796]

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の生成 [#n5be4ae0]

ここでは、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を生成するクラス。

*セッションの生成 [#k23dfe24]

一つのセッションオブジェクトは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メッセージの送信 [#edf97b7e]

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
データのバリデーションを行うクラス。

*シグナルの受信 [#i71f86ae]

前述のように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.