連携アプリケーションの開発について説明します。
CEPエンジンにイベントを送信するアプリケーションを開発します。
利用する、入力アダプターの種類にあわせた開発を行います。
入力アダプターの種類ごとのサンプルプログラムについては「開発リファレンス」の「第3章 入力アダプター機能リファレンス」を参照してください。
SOAPリスナから呼び出すWebサービスのアプリケーションを開発します。
Webサービス開発手順について説明します。
WSDLの作成
SOAPリスナ定義で設計した、呼び出すWebサービスのインターフェース情報(WebサービスのURL、名前空間、プレフィクス、メソッド)と、複合イベント処理文(select文)で選択列としたパラメーターから、ユーザー開発アプリケーションのWSDL(インターフェース定義)を作成します。
目的とするイベントを検出するための複合イベント処理文(select文)と、そのルールに関連付けたSOAPリスナ定義、および、SOAPリスナから生成されるSOAPメッセージの関係を以下に示します。
図5.5 ルール定義およびリスナ定義と、送付されるSOAPメッセージの対応関係
このSOAPメッセージを受け取るWebサービスのWSDLのサンプルを以下に示します。このWSDLはメッセージを受け取るだけ(One-way)のWebサービスを定義しています。アプリケーションに応答を返す(Request-response)Webサービスとして実装した場合、CEPエンジンはその応答を無視します。
001 | <?xml version='1.0' encoding='UTF-8'?> |
上記WSDLの下線部分を、ルール定義、SOAPリスナ定義に合わせて以下のように修正することによって、作成するWebサービスの雛形を生成するためのWSDLとして利用することが可能となります。
003、005、011行目
WSDLの対象名前空間(definitions要素のtargetNamespace属性)、対象名前空間の接頭辞の宣言(definitions要素のxmlns:tns属性)、WSDL中のXMLスキーマの対象名前空間(types要素中のxs:schema要素のtargetNamespace属性)をSOAPリスナ定義の名前空間の値にします。
012、025行目
WSDL中のXMLスキーマで定義するメッセージのルート要素の名前(types要素中のxs:schema要素中のxs:element要素のname属性)、WSDLのメッセージとして定義している要素(message要素のpart要素のelement属性)をSOAPリスナ定義のルート要素の値にします。
015、016行目
WSDL中のXMLスキーマで定義するルート要素の子要素の名前(types要素中のルート要素定義配下のxs:element要素のname属性)を、複合イベント処理文(select文)の出力プロパティ名にします。
出力するプロパティの数だけ同様の行を作成します。この要素のタイプ(xs:element要素のtype属性)については、上記の例では文字列(xs:string)を指定しています。プロパティのタイプに合わせて適切に設定しておくことにより、ご利用のツールによってはタイプに応じたソースコードを生成してくれるため、プログラム中での型変換が不要となります。
047行目
最終的なサービス公開用のWSDLでは、service要素配下のsoapbind:address要素のlocation属性に、実際のサービスのURLが入り、これはリスナ定義の接続URLの値にもなります。しかし、開発時には、この接続URLは決まっていない場合も多いため、上記サンプルのままでも問題ありません。
Webサービスのアプリケーションの開発
作成したWSDLを元に、お使いの開発ツールからWebサービスのアプリケーションの雛型を出力し、そこにアプリケーションのロジックを追加します。
イベントログを分析するアプリケーションを開発します。アプリケーションはHadoopのAPIを使用して開発します。詳細は、Interstage Big Data Parallel Processing Serverのマニュアルを参照してください。
キャッシュアクセスアプリケーションを開発します。詳細については、Interstage eXtreme Transaction Processing Serverのマニュアルを参照してください。