English | Japanese

演習: Webサービス連携2

Webサービス連携における例外処理

この演習では,Webサービス連携1で作成されたBPELプロセスを拡張することで,BPELプロセスにおける例外処理について学びます.

  

Webサービス連携1の折り返し翻訳BPELプロセスでは,翻訳サービスを2回呼び出します.しかし,翻訳サービスの呼び出し時には, 例外が起きる可能性があります.例えば,J-Server翻訳サービスのが呼び出し時に,英語 -> ドイツ語 といった翻訳を指定すると, これらの言語がサポートされていないため,J-Server翻訳サービスの呼び出し箇所で例外が発生します. 本演習課題では,このようなWebサービス呼び出しの例外をBPELプロセスで処理する手法について学びます.

  

BPELプロセスの基本的な作成手順はWebサービス連携1を参照ください.

例外処理の演習

1.プロジェクトの用意

  • 「Webサービス連携1」で作成したプロジェクトを開きます.
    • 本演習課題から始める場合,ここからダウンロードして,ファイルを展開してください.次にFile->Import から, Existing Projects into Workspaceを選択してインポートしてください.
  

2.例外処理の追加

  • ForwardTranslation (Invoke)を右クリックして,Add Fault Handlerを選択します.
  • デフォルトで生成されたFault handlerの中身(Compensate, Rethrow)を削除します.
  • Catchを選択し,Detailsタブで以下のように設定します.
    • Namespace: http://langrid.ai.soc.i.kyoto-u.ac.jp/langrid-service_1_2/services/JServer
    • Fault Name: UnsupportedLanguagePairException
  • ForwardTranslationを,Fault handlerのSequenceの中にコピーします.
    • ForwardTranslationを右クリックしてCopyを選択します.
    • Fault handlerのSequenceを選択・右クリックしてPasteを選択します.
    • 名前をForwardTranslationAlternativeとします.
  • Fault handler中のForwardTranslationに付随するFault handlerを削除します.
    • 右上にある×をクリックして現れたFaultHandlerを選択し,削除します.
  • 新たに作成したForwardTranslationAlternativeをクリックし,パートナーリンクを新たに作成したものに変更します.
    • Detailsタブで以下のように設定します.
    • PartnerLink
      • Create Global Partner Linkを選択.
      • Partner Link名:TranslateAltPL
      • PartnerLinkType:TranslatePLT
      • TranslateAltPLについて,DetailsタブでPartner Roleをtranslatorとします.
    • Operation: translate
    • Input Variable: translateRequest1
    • Output Variable : translateResponse1
  • 同様に,BackwardTranslationについても,Fault handlerとその内部の処理を設定します.
    • Namespace,Fault名も同様に設定してください.
    • ForwardTranslationAlternative をコピーし,Fault handlerの内部に配置します.
    • 名前をBackwardTranslationAlternativeとします.
    • 入出力変数をそれぞれtranslateRequest2,translateRequest2とします.
    下記の図は,折り返し翻訳BPELプロセスの例外処理の定義完了後のスクリーンショットを表示します.
  

3.プロセスの配備

  • 代替の翻訳サービスとして利用するCross Language WEB-TranserのWSDLをダウンロードします.
    • wsdlディレクトリに配置します
  • catalog.xmlに以下を追記します.
  • catalog.xmlの追加内容
      <wsdlEntry
        location="project:/Backtrans/wsdl/KyotoUCLWT.wsdl"
        classpath="wsdl/KyotoUCLWT.wsdl"
      />
    
  • Backtrans.pddに以下を追加します.
  • pdd:partnerLinksタグの中に以下を追加します.abp:Userタグとabp:CleartextPasswordタグ(******と記述された部分)には,一時IDとパスワード(または言語グリッドユーザIDとパスワード)を設定してください。

    pdd:partnerLinksタグの中の追加内容
    <pdd:partnerLink name="TranslateAltPL">
     <pdd:partnerRole endpointReference="static">
      <wsa:EndpointReference 
          xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" 
          xmlns:s="http://langrid.ai.soc.i.kyoto-u.ac.jp/langrid-service_1_2/services/CLWT">
        <wsa:Address>http://langrid.nict.go.jp/langrid-1.2/invoker/KyotoUCLWT</wsa:Address>
        <wsa:ServiceName PortName="Translation">s:KyotoUCLWT</wsa:ServiceName>
        <wsp:Policy 
            xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
            xmlns:abp="http://schemas.active-endpoints.com/ws/2005/12/policy">
          <abp:Authentication direction="out">
            <abp:User>********</abp:User>
            <abp:CleartextPassword>********</abp:CleartextPassword>
          </abp:Authentication>
        </wsp:Policy>
      </wsa:EndpointReference>
     </pdd:partnerRole>
    </pdd:partnerLink>
    

    pdd:referencesタグの子要素として,以下を追加します

    pdd:referencesタグの中の追加内容
      <pdd:wsdl 
        location="project:/Backtrans/wsdl/KyotoUCLWT.wsdl" 
        namespace="http://langrid.ai.soc.i.kyoto-u.ac.jp/langrid-service_1_2/services/CLWT"/>
    
  • 実行エンジンの管理画面 (http://localhost:8080/BpelAdmin/) のメニューから,Configuration を選択し,Validate Input/Output messages against schemaのチェックを外します.
  

4.実行

  • 英語 -> ドイツ語 の翻訳など,JServerが対応していない言語を指定して呼び出します.
  • 実行エンジンの管理画面のメニューから,ActiveProcessesを選択し,実行したプロセスを選択します.
    • プロセスの実行結果が表示され,例外が発生してキャッチされたことを確認できます.