https://blogs.oracle.com/ateamsoab2b/entry/osb_11g_sap_single_channel
背景
このメモは 以下のエントリの補足です。
SOA 11g & SAP – Single Channel/Program ID for Multiple IDOCs (Greg Mally)Gregは簡単なSOAコンポジットとiWayアダプタ(SAP Adapter)を使って複数のIDOCをアダプタを、一つのSAPシステムのProgram IDに対応する一つのチャネルで受信する方法を説明していました。
https://blogs.oracle.com/ateamsoab2b/entry/soa_11g_sap_single_channel
http://orablogs-jp.blogspot.jp/2012/03/soa-11g-sap-single-channelprogram-id.html
今回は同じことをOSBでやってみたいと思います。
プロジェクトの作成
iWay SAP Adapterを使ったOSBプロジェクトの基本的な作業は、以下のエントリにも記載があるように、OSBコンソールとApplication Explorerでの作業からなります。
Using SAP Adapter with OSB 11g (PS3)OSBプロジェクト(その1)
https://blogs.oracle.com/ateamsoab2b/entry/using_sap_adapter_ps3_with
まず、OSBのプロジェクトを適切なディレクトリに作成し、WSDL、XMLスキーマ、JCAバインディング情報をApplication Explorerから直接このプロジェクトにエクスポートできるようにしておきます。
Application Explorer - iWay Design Time Tool
IDOCの受信はApplication Explorerの中ではインバウンドのイベントという扱いです。イベントをセットアップするため、SAP内でOSBのために設定したように、同じPROGRAMID(RFCの送り先)を使ってチャネルをまず定義します(例:iDoc_Channel)。
次に、同じチャネルを使って、候補のIDOC(例:DEBMAS06)用のJCA Inbound Eventのアーティファクトを直接事前に作成したOSBプロジェクトにエクスポートします。
スキーマの検証の設定はOFFになっていることに注意して下さい。結果として、これによりAdapterが実行時に一つのチャネルを使ってSAPから複数のIDOCタイプを受信することができ、スキーマチェックをせずにOSBに転送することができるのです。言い換えれば、各IDOCタイプで上記手順を繰り返す必要はないということです。
OSBプロジェクト(その2)
2個のXMLベースのBusiness Service(例:SAP_DEBMAS_FileとSAP_MATMAS_File)を作成し、ファイルを書き出します。
次に、前章でApplication ExplorerからエクスポートしたJCAバインディングファイルを使ってProxy Serviceを作成します。Proxy Serviceを作成中に、メッセージフローを編集してRouteNodeを追加します。
以下のルーティング関数を使って、RouteNodeのルーティング表を追加します。
- fn:local-name-from-QName(fn:node-name($body/*[1]))
代わりにルーティング機能を使用する場合には、別のディレクトリにファイルを書き出すための適切なBusiness ServiceにIDOCをルーティングするため、2個のブランチを追加してルーティング表を作成します。
これでOSBプロジェクトは完成です。
テスト
デプロイしてアクティブ化した後に、SAP Adapterは複数種類のIDOCをSAPシステムから単一のチャネル経由で受信します。IDOCを受信すると、OSBプロジェクトが適切にルーティングして個々のIDOCタイプに対応するXMLペイロードを別々のディレクトリに保存するはずです。
0 件のコメント:
コメントを投稿