Hiroyuki Wajima
H/W's Blogs about S/W
Profile
Hiroyuki Wajima
Sr. Technical Specialist
Sun Java Consulting
Sun Professional Services
アーカイブ
« 11月 2009
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今日
XML
Search

リンク
 

Today's Page Hits: 51

All | Java EE | Personal | SOA | Sun
« BPEL on JBI by NetBe... | メイン | BPEL on JBI by NetBe... »
20060701 2006年 7月 01日 土曜日
BPEL on JBI by NetBeans and SOA Starter Kit (2)

今回は,前回のエントリで作成したBPELから,前々回のエントリで作成したサービスをWebサービスで呼び出すことにします。


こんなイメージです。


【1. サービスのWebサービス化】

前々回に作成したサービス(BooksDataFacade,FooPriceListFacade,BarPriceListFacade)をWebサービス化します。手順は,前々回にBooksPricingProcessBeanをWebサービス化したときと同様です。Deployして,Webサービスのテスト機能で簡単に動作確認しておくと良いでしょう。


(*) 複数のWebサービスを同じパッケージで作成する場合,異なるクラスであってもWebメソッド名が重複すると上手く動作しないようです。findBooksData, findFooPriceList, findBarPriceListなど,Webメソッドの名前を変えるようにしましょう。


【2. WSDL,XMLスキーマの準備】

前回のBooksPricingProcessWebServiceBeanと同様の手順で,BooksDataWebServiceBean, FooPriceListWebServiceBean, BarPriceListWebServiceBeanのWSDL,XMLスキーマをローカルに保存,編集します。


【3. BPELの編集】

(1) WSDLのインポート,パートナーリンクの設定

編集した3つのWSDLファイルをBPELにインポートします。そして,それぞれのサービスに対応するパートナーリンクを設定します。


(2) アクティビティの配置

アクティビティを配置して,全体のプロセスが見えるようにしましょう。


(3) Assign1の設定

BPELエディタ上でAssign1を選択して,Mapperでコピー方法を設定します。
左側のFindBookPriceIn1から,右側のFindBooksDataIn1, FindFooPriceListIn1, FindBarPriceListIn1に線を引っ張ります。


BPELではこうなります。


        <assign name="Assign1">
            <copy>
            <from variable="FindBookPriceIn1" part="parameters"/>
            <to variable="FindBarPriceListIn1" part="parameters"/>
            </copy>
            <copy>
            <from variable="FindBookPriceIn1" part="parameters"/>
            <to variable="FindFooPriceListIn1" part="parameters"/>
            </copy>
            <copy>
            <from variable="FindBookPriceIn1" part="parameters"/>
            <to variable="FindBooksDataIn1" part="parameters"/>
            </copy>
        </assign>



(4) Invokeの設定

NavigatorのBPEL Logical Viewで,それぞれのInvokeを右クリック,[Edit]を選択して,3つのサービスを呼び出すように設定します。Input Variable,Output VariableをCreateするのを忘れないようにしましょう。変数名はデフォルト値で構いません。


(5) Assign2の設定

BPELエディタ上でAssign2を選択して,Mapperでコピー方法を設定します。
左側のFindBooksDataOut1から,右側のFindBookPriceOut1に線を引っ張ります。


BPELではこんな感じ。

        <assign name="Assign2">

            <copy>
            <from variable="FindBooksDataOut1" part="parameters"/>
            <to variable="FindBookPriceOut1" part="parameters"/>
            </copy>
        </assign>




(6) If1の設定

If1のMapperで,FindFooPriceListOut1のpriceをnumberとして評価した値が,FindBookPriceOut1のpriceをnumberとして評価した値より小さいことを条件として設定します。


(7) Assign3の設定

Assign3のMapperで,FindFooPriceListOut1のpriceをFindBookPriceOut1のpriceにコピーするように設定します。


If1とAssign3のBPEL該当箇所はこうなっているはずです。


        <if name="If1">
            <condition> ( number($FindFooPriceListOut1.parameters/return/price) &lt; number($FindBookPriceOut1.parameters/return/price) ) </condition>
            <then>
                <assign name="Assign3">
                    <copy>
                    <from>$FindFooPriceListOut1.parameters/return/price</from>
                    <to>$FindBookPriceOut1.parameters/return/price</to>
                    </copy>
                </assign>
            </then>
        </if>



(8) If2, Assign4の設定

FindBarPriceListOut1のpriceをnumberとして評価した値がFindBookPriceOut1のpriceをnumberとして評価した値より小さければ,FindBarPricListOut1のpriceをFindBookPriceOut1のpriceにコピーするように設定します。


【4. 実行】

BPELを実行してみましょう。BooksDataから取得したデータに加えて,FooPriceListとBarPriceListで安い方の価格が設定されたデータが戻ってくることを確かめます。


【5. BPELでのプロセス並行処理】

BPELではプロセスの並行処理が簡単に実行できます。これはJavaでプロセスを実行する場合に比較してアドバンテージになります。


Assign1の後に,並行処理のためのアクティビティであるFlowをDrag&Dropして,Invoke1, Invoke2, Invoke3を並行処理するようにアイコンを移動させます。これで並行処理が実行されるようになります。

 


posted by wajima 7月 01日 2006年, 12:00:00 午前 JST Permalink 投稿されたコメント [0]

Trackback URL: http://blogs.sun.com/wajima/entry/bpel_on_jbi_by_netbeans1
投稿されたコメント:

コメント

名前
メール
URL

投稿されたコメント

HTML文法 不許可