この演習では,Webサービス連携1 (BPELによるサービス連携)を拡張し,ヒューマンタスクとWebサービスの連携に取り組みます.
WS-BPELはWebサービスの連携を記述するために用いられています.しかし,実際に多くのWebサービス指向のシステムの稼働時では,人間が作業を実行したり確認したりすることがしばしば必要とされます.そこで,ヒューマン・ワークフローのための WS-BPEL拡張として,BPEL4People が提案されました.BPEL4Peopleは,IBM や SAPなどのITベンダーにより仕様が発表され,現在OASISで標準化が進められています. BPEL4Peopleでは,人のアクティビティもWebサービスと同じように サービスとして統一的に記述できます(参考:WS-BPEL Extension for People).
BPELプロセスにおけるヒューマンタスクへの入力は,そのタスクを担当する人間に示されます.ヒューマンタスクの出力は,人間が直接入力します.
この演習では,以上のヒューマンタスクを翻訳サービスと連携させ,入力された文章を始めに機械翻訳サービスで翻訳し,それを人間がチェックして修正するBPELプロセスを作成します.すでに学んだ機械翻訳サービスの連携だけでなく,人間によって実行されるヒューマンタスクの作成方法について学びます.
BPELプロセスの作成手順や本演習課題の環境は,Webサービス連携1 (BPELによるサービス連携)を参照してください.
1.プロジェクトの用意
2.ヒューマンタスクの追加
Eclipse BPEL Designerがヒューマンタスクに対応していないため,Backtrans.bpelをテキストエディタで編集します.ヒューマンタスクを追加するた めに,BPELプロセスに対して以下の操作が必要です:(1)ヒューマンタスク利用のためのネームスペースの追加,(2)拡張機能の利用の宣言と humanInteractionの定義,(3)ヒューマンタスクの定義.
翻訳サービスと人間チェック作業の連携を例として,上記の操作を説明します.
BPELのネームスペースの追加内容 |
---|
<bpws:process exitOnStandardFault="yes" name="Backtrans" suppressJoinFailure="yes" targetNamespace="http://www.ai.soc.i.kyoto-u.ac.jp/process/Backtrans/" xmlns:b4p="http://www.example.org/BPEL4People" xmlns:htd="http://www.example.org/WS-HT" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ns="http://www.ai.soc.i.kyoto-u.ac.jp/process/Backtrans/Artifacts" xmlns:ns0="http://langrid.ai.soc.i.kyoto-u.ac.jp/langrid-service_1_2/services/JServer" xmlns:tns="http://www.ai.soc.i.kyoto-u.ac.jp/process/Backtrans/"> |
拡張機能の利用の宣言,humanInteractionの定義の追加内容 |
---|
<bpws:process ... > <b4p:humanInteractions> <htd:logicalPeopleGroups> <htd:logicalPeopleGroup name="HumanTranslator"/> </htd:logicalPeopleGroups> <htd:tasks/> <htd:notifications/> </b4p:humanInteractions> <bpws:extensions> <bpws:extension mustUnderstand="yes" namespace="http://www.example.org/BPEL4People"/> <bpws:extension mustUnderstand="yes" namespace="http://www.example.org/WS-HT"/> </bpws:extensions> <bpws:import ...> ... |
ヒューマンタスクの定義 |
---|
<bpws:extensionActivity> <b4p:peopleActivity inputVariable="translateRequest2" outputVariable="translateResponse2"> <wsht:task xmlns:wsht="http://www.example.org/WS-HT" name="TranslationTask"> <wsht:interface xmlns:ns="http://langrid.ai.soc.i.kyoto-u.ac.jp/langrid-service_1_2/services/JServer" operation="translate" portType="ns:Translation"/> <wsht:peopleAssignments> <wsht:potentialOwners> <wsht:from logicalPeopleGroup="HumanTranslator"></wsht:from> </wsht:potentialOwners> <wsht:businessAdministrators> <wsht:from logicalPeopleGroup="HumanTranslator"></wsht:from> </wsht:businessAdministrators> </wsht:peopleAssignments> <wsht:presentationElements> <wsht:name></wsht:name> <wsht:subject>Please translate this text.</wsht:subject> </wsht:presentationElements> </wsht:task> </b4p:peopleActivity> </bpws:extensionActivity> |
3.配備情報の設定
Webサービスとヒューマンタスクの連携プロセスを配備するために,次のような配備情報の記述が必要です:(1)ヒューマンタスクの配備のためのネームスペースの追加,(2)ヒューマンタスクの拡張配備情報やユーザ情報の記述.
翻訳サービスと人間チェック作業の連携を例として,配備情報の設定を説明します.
pddのネームスペースの追加内容 |
---|
<pdd:process xmlns:bpelns="http://www.ai.soc.i.kyoto-u.ac.jp/process/Backtrans/" xmlns:pdd="http://schemas.active-endpoints.com/pdd/2006/08/pdd.xsd" xmlns:aeb4p="http://www.activebpel.org/b4p/2007/10/wshumantask/deployments" xmlns:htd="http://www.example.org/WS-HT" location="bpel/Backtrans.bpel" name="bpelns:Backtrans" platform="opensource"> |
pdd:references直後の追加内容 |
---|
<pdd:process ...> ... <pdd:extensions> <aeb4p:logicalPeopleGroups> <aeb4p:logicalPeopleGroup location="/process/humanInteractions/logicalPeopleGroups" name="HumanTranslator" type="STATIC"> <htd:organizationalEntity> <htd:users> <htd:user>USERNAME</htd:user> </htd:users> </htd:organizationalEntity> </aeb4p:logicalPeopleGroup> </aeb4p:logicalPeopleGroups> </pdd:extensions> </pdd:process> |
4.実行エンジンの設定
ヒューマンタスクを含むBPELプロセスでは,ユーザとユーザグループなどの設定が必要です.以下にその設定の手順を示します.
Tomcatのユーザの追加 |
---|
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> ... <role rolename="testrole"/> ... <user username="USERNAME" password="PASSWORD" roles="testrole"/> ... </tomcat-users> |
5.実行
上記のステップに従って,J-Server以外のWebサービスも呼び出してみましょう.この演習では以下のサービスが使用できます.