2007年11月16日金曜日

Technologies for SOA

SOA!!!



Sun Tech Days で SOA 関連のセッションで紹介されていた BPEL など SOA
関連の技術が思っていたよりわかりやすかった。また、NetBeans 6 ではその
開発を補助する機能がそろっているという事でチュートリアルをみながら
試してみた。

以前、Axis を活用しようと思ったときに、XML Schema や WSDL の手書きに
ウンザリしたので、少し敬遠していたけれど、NB6 ではこれらのファイルも
IDE の管理下で作れるらしい。

チュートリアル概要



HelloWorld は単純すぎるので Loan のサンプルの概要を書いておく。

BPEL モジュールの作成


New Project > SOA > BPEL Module で作成できる。

  • XML Schema の作成

    サービス呼び出しの際に簡単な文字列をひとつ渡すだけであれば、これは
    おそらく必要がない。実際には何らかのデータ構造を渡すことになるであろうし、
    それには、それなりの型を持たすことがわかりやすい。そうするためには XML
    Schema で complex type を定義することになる。



    実際の操作は画面右側のパレットから Complex Type を Editor の Complex Types
    のところにドロップすることで型が作れる。さらにそれぞれの型に Element icon
    をドロップして要素を作っていく。



    もうひとつ行うことは Complex Type を決めてから、それらをグローバルエレメントに
    登録すること。やり方は Element icon を Editor の Elements のところにドロップ
    して名前をつけて、Definition で Complex Types に作った型の名前をセットする。


  • WSDL の作成

    Process Files の下に WSDL document を作成する。独自の XML Schema を使う場合には
    Import XML Schema File(s) チェックボックスをチェックして先に定義したものや、
    ネームスペースを利用して、インポートできる。



    次は Editor の Partner タブでメッセージの名前や、型を決める。In/Out の最低2つは
    あるので、リクエストの名前をわかりやすいものに変え、型を決める。型はダイアログの
    中から選ぶだけなので簡単。XML Schema をインポートしておけばその中で決めた型を
    引数の型に使える。この際の型の名前は complex type の名前ではなく Elements に
    登録した名前になる。IDE が選択肢を示してくれるので簡単だが、うろ覚えで手書きだと
    とてもはまるかも知れない...



    オプショナルで LoanProcessor EJB モジュールを作る。ユーザー情報をもとに Loan の
    可否を判定する。必然的に Web Service のインターフェイスを持つことになる。
    Web Service のフォルダを右クリックして Web Service を作れる。そのあと、その
    Web Service を右クリックして Add Operation で操作を追加する。その際にパラメータも
    定義する。結果として @WebService アノテーションを使った java ソースができる。
    作成時に Session Bean にデリゲートすることもできるようだ。
    本当に EJB じゃないといけないのかと疑問に思った。なぜなら EJB Container が
    前提といわれると困るから。結果として、これは杞憂。できたのは本当にクラスを
    まとめただけの jar ファイルだった。wsdl もこの時点では存在しない。



  • BPEL process の作成

    Process Files に BPEL Process を作るとフローチャートのような画面が現れる。
    まずはここに入力として request の wsdl, Loan のチェックを行う web service
    を登録する。後者に関しては wsdl は自動生成されるようだ。このステップは
    モジュールのドラッグでできる。



    この次のステップとして、receive, invoke, reply をパレットからドラッグして、
    サービスと関係付けていく。プロセスの最初は、receive で始まる。リクエスト待ちの
    先頭というわけだ。



    Assign 要素で変数を作る。関連づけは BPEL Mapper でソースとデスティネーションを
    つなぐだけだ。




  • Composite Application の作成

    別プロジェクトとして Composite Application を作る。この定義ファイルは *.casa.
    この JBI モジュールとして、作成した BPEL module をドラッグ&ドロップで登録。



    これに consumer としての SOAP アダプターを登録する。



  • テストの作成、登録

    composite application の Test folder にテストを作れる。リクエストのパラメータを
    埋めるだけでテストになる。1回目の実行結果が正しい実行結果とされ、以後のテストと
    比較される。結果を消す、クリアしてしまえば正しいテスト結果を変えられるということか?


  • JBI とは

    NB6 の Composite Application が JBI の実装ということかなと思う。JSR 208 という
    事だが、これには IBM, BEA は賛同していないらしい。BPEL まではいいが、その上は
    まだ議論の余地があるということか....ということはこれらのベンダのBusiness Process
    Integration は propretary ???


0 件のコメント: