この章では、様々なチャネルを使用してBPELプロセスから通知を送信する方法について説明します。BPELプロセスは、電子メール、ボイス・メッセージ、インスタント・メッセージ(IM)またはショート・メッセージ・サービス(SMS)を送信するように設計できます。また、BPELプロセスは、実行時にエンド・ユーザーのチャネル・プリファレンスを考慮して通知チャネルを選択するように設計することもできます。
この章では、次の項目について説明します。
注意: FAXとポケットベルの通知チャネルは、11g リリース1 (11.1.1)ではサポートされていません。 |
様々なシナリオで、プロセス・フローの一環として、電子メール・メッセージや他のタイプの通知をユーザーに送信する必要があります。たとえば、自動処理できない特定タイプの例外には、手動による操作が必要となる場合があります。この場合、BPELプロセスでは、通知サービスを使用して、ユーザーにボイス、IM、SMSまたは電子メールで警告できます。
受信者の連絡先情報(電子メール・アドレス、電話番号など)は、静的な情報(admin@yourcompany.com
など)または実行時に動的に取得する情報のいずれかです。連絡先情報を動的に取得するには、XPath式でアイデンティティ・ストア(LDAP)から取得するか、BPELペイロードから抽出します。
この章では、次の用語を使用します。
通知
特定のチャネルを通じてユーザーに送信される非同期メッセージです。このメッセージは、電子メール、ボイス、IMまたはSMSメッセージとして送信できます。
アクション可能な通知
ユーザーが応答できる通知です。たとえば、ワークフローでは、注文書の承認または却下を担当するマネージャに電子メールを送信します。マネージャは、適切な内容を記載して電子メールに返信することで、リクエストを承認または却下します。
ヒューマン・タスク電子メール通知レイヤー
電子メール通知を直接BPELプロセスから、または暗黙的にBPELプロセスのヒューマン・タスク部分から送信します。暗黙の通知は、ヒューマン・タスク・エディタによってモデル化されます。
電子メール通知をBPELプロセスから直接送信するには、BPELプロセスにユーザー情報を明示的に指定する必要があります。この情報は、ヒューマン・タスク範囲の内側または外側のいずれかに配置できます。
電子メール通知をBPELプロセスのヒューマン・タスク部分から暗黙的に送信するには、タスクに関するユーザーとの関係(つまり、作成者、割当て先など)に基づいて、受信者のみを指定します。
注意: 暗黙的な通知は、明示的な通知に比べ、より多くのコードのレイヤーを介して処理されます。明示的な通知が正しく機能している場合でも、暗黙的な通知が正しく機能しているとはかぎりません。 |
Oracle User Messaging Serviceは、リリース11gの新しい機能です。BPEL通知サービスは、Oracle User Messaging Serviceが提供する基礎となるインフラストラクチャを使用して通知を送信します。
Oracle User Messaging Serviceは、エンド・ユーザーの優先チャネルを実行時に取得するためのユーザー・プリファレンス・インフラストラクチャも提供します。
Oracle User Messaging Serviceの詳細は、第62章「Oracle User Messaging Service」を参照してください。
図17-1は、Oracle User Messaging Serviceインタフェースとサポートされるサービス・タイプを示しています。
通知の詳細は、次の各項を参照してください。
第29.8項「参加者通知プリファレンスの指定」(ヒューマン・タスク・エディタで電子メール通知を指定する手順)
通知の設定は、3種類のユーザー・インタフェース・ツールを使用する多段階のプロセスです。表17-1に、このプロセスの概要、実行するタスク、使用ツールおよび詳細の参照先を示します。
表17-1 通知のタスク
タスク | 説明 | ユーザー・インタフェース | 参照先 |
---|---|---|---|
SOAコンポジット・アプリケーションの通知を送信するチャネルの選択 |
通知の送信方法を選択します。
|
Oracle BPELデザイナでBPELプロセス設計者が選択および構成します。 |
第17.3項「BPELプロセスの設計での通知チャネルの選択」 または、 |
通知チャネルに対するドライバの構成 |
ドライバは、SOAコンポジット・アプリケーションをデプロイするOracle WebLogic Serverで構成します。このアクションにより、参加者は通知を受信および転送できます。電子メール、IM、SMSおよびボイス・チャネルについてドライバがサポートされます。 |
Oracle Enterprise Manager Fusion Middleware Controlで管理者が構成します。 |
Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド |
通知モードおよびヒューマン・ワークフローのアクション可能なアカウントの構成 |
ヒューマン・ワークフローで通知を使用している場合は、通知モードと、電子メールのアクション可能なアカウントを構成します。 |
Oracle Enterprise Manager Fusion Middleware Controlで管理者が構成します。 |
Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド |
ユーザー・プリファレンスの指定によるメッセージへのアクセスに使用するデバイスの登録 |
このアクションにより、ワークフロー参加者は、通知メッセージを受信できます。たとえば、エンド・ユーザーは、電子メール・クライアントを登録し、受信するメッセージ・コンテンツとメッセージの受信に使用するチャネルを指定します。 チャネルが未指定の場合は、電子メールがデフォルトで使用されます。このアプリケーションに設定されているプリファレンスは、特定のエンド・ユーザーのみに適用され、他のユーザーには適用されません。 |
ユーザー・メッセージング・プリファレンス・ユーザー・インタフェースでエンド・ユーザーが登録します。このインタフェースには、Oracle BPM Worklistで「プリファレンス」→「通知」の順に選択してアクセスできます。 |
第XI部「Oracle User Messaging Serviceの使用」 |
Oracle JDeveloperのコンポーネント・パレットには、電子メール、IM、SMSおよびボイスの通知チャネルがあります。使用する通知チャネルは設計時に厳密に設定できます。たとえば、次の通知チャネルを使用するようにBPELプロセスを設計できます。
経費レポートの金額が$1000未満の場合は、電子メール通知チャネルを使用します。
経費レポートの金額が$1000以上$2000以下の場合は、SMS通知チャネルを使用します。
経費レポートの金額が$2000を超過する場合は、ボイス通知チャネルを使用します。
BPELプロセス設計で通知チャネルを選択する手順は、次のとおりです。
「コンポーネント・パレット」で、「Oracle Extensions」を展開します。
通知チャネルをデザイナにドラッグします。
IM
SMS
Voice
選択した通知チャネルに基づいて、表17-2に示す項を参照してください。
表17-2 通知チャネル
選択内容 | 参照先 |
---|---|
|
第17.3.1項「電子メール通知チャネルの構成方法」(電子メール通知の構成) |
IM |
第17.3.2項「IM通知チャネルの構成方法」(IM通知の構成) |
SMS |
第17.3.3項「SMS通知チャネルの構成方法」(SMS通知の構成) |
Voice |
第17.3.4項「ボイス通知チャネルの構成方法」(ボイス・メッセージ通知の構成) |
「コンポーネント・パレット」から「Email」を選択すると、「Email」ダイアログが表示されます。図17-2に、電子メール通知の必須パラメータを示します。
電子メール通知チャネルを構成する手順は、次のとおりです。
表17-3の説明に従って、各フィールドに情報を入力します。
注意: 「To」、「Cc」および「Bcc」フィールドでは、複数のアドレスをセミコロン(; )で区切ります。 |
表17-3 電子メール通知パラメータ
名前 | 説明 |
---|---|
送信元アカウント |
このメッセージの送信に使用するアカウント名。デフォルトのアカウントは「デフォルト」という名前になります。この名前は、Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー通知プロパティ」ページで編集できます。その他のアカウントを追加するには、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザを使用する必要があります。 Oracle Enterprise Manager Fusion Middleware Controlにおけるこのプロパティの編集の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。 |
To |
メッセージの配信先となる電子メール・アドレス。これは、次の中のいずれか1つです:
XPath式ビルダーで、入力から動的に電子メール・アドレスを取得できます。第17.3.5項「電子メール・アドレスと電話番号を動的に選択する方法」を参照してください。 |
Cc/Bcc |
メッセージのコピー先およびブラインド・コピー先となる電子メール・アドレス。「To」アドレスで説明した静的アドレスまたは動的アドレスも使用できます。 |
返信先 |
返信に使用する電子メール・アドレス。「To」アドレスで説明した静的アドレスまたは動的アドレスも使用できます。 |
件名 |
電子メール・メッセージの件名。プレーン・テキストまたは動的テキストを入力できます。XPath式ビルダーで、指定したプロセス変数のデータに基づいて動的にテキストを設定できます。 |
本文 |
電子メール・メッセージのメッセージ本文。「件名」パラメータで説明したプレーン・テキスト、HTMLまたは動的テキストも使用できます。 |
「OK」をクリックします。
電子メール・メッセージを送信するための通知サービスを起動するBPELフラグメントが作成されます。
実行する他の構成手順は、第17.2項「通知チャネル設定の概要」の表17-1を参照してください。
WebLogic Fusion Order Demoアプリケーションでは、「Scope_NotifyCustomerofCompletion」スコープでemailアクティビティを使用しています。Oracle User Messaging Serviceは、注文の履行時に顧客に電子メールを送信します。「Email」ダイアログでは、次の詳細を指定します。
顧客の電子メール・アドレスを指定するXPath式。
bpws:getVariableData('gCustomerInfoVariable','parameters','/ns3:findCustome rInfoVO1CustomerInfoVOCriteriaResponse/ns3:result/ns2:ConfirmedEmail')
注文のIDを指定する手動入力テキストとXPath式の組合せ。
Order with id <%bpws:getVariableData('gOrderInfoVariable','/ns2:orderInfoVOSDO/ns2:OrderI d')%> shipped!
電子メール・メッセージの本文を指定する手動入力テキストとXPath式の組合せ。
Dear<%bpws:getVariableData('gCustomerInfoVariable','parameters','/ns6:findCusto merInfoVO1CustomerInfoVOCriteriaResponse/ns6:result/ns4:FirstName')%>, your order has been shipped.
図17-3に詳細を示します。
emailアクティビティを使用して添付ファイルを送信できます。各添付ファイルには、名前、MIMEタイプおよび値の3つの要素があります。添付ファイルごとにこの3つの要素をすべて設定する必要があります。
電子メール・メッセージに添付ファイルを追加する手順は、次のとおりです。
「コンポーネント・パレット」から、通知チャネルとして「Email」を選択します。
「To」、「件名」および「本文」に値を指定します。
「添付ファイル」タブをクリックします。図17-4に詳細を示します。
「追加」アイコンをクリックし、必要な数の添付ファイルを追加します。添付ファイル数に本体部分を含める必要はありません。
「名前」フィールドで、名前を変更するか、デフォルト値Attachment
number
をそのまま使用します。
「MIMEタイプ」フィールドで、「参照」アイコンをクリックして、MIMEタイプ・コンテンツを追加するための「式ビルダー」ダイアログを起動します。
完了後、「OK」をクリックして「添付ファイル」タブに戻ります。
「値」フィールドで、「参照」アイコンをクリックして、添付ファイルのコンテンツを追加するための「式ビルダー」ダイアログを起動します。
完了後、「OK」をクリックして「添付ファイル」タブに戻ります。
複数のcopy
ルールを含むassignアクティビティで構成されたBPELフラグメントが生成されます。copy
ルールの1つによって添付ファイルがコピーされます。
「OK」をクリックします。
Oracle BPELデザイナでEmailアクティビティを開きます。
「EmailParamsAssign」という名前のassignアクティビティが表示されます。
「EmailParamsAssign」をダブルクリックします。
図17-5に示すように、EmailParamsAssignの設定を確認します。
電子メールを使用した添付ファイル送信の詳細は、次のドキュメントを参照してください。
notification-101
のサンプル(Oracle SOA Suiteサンプルで使用できます)
電子メール・メッセージの本文は、プレーン・テキストではなくHTMLとして書式設定できます。このアクションを実行するには、XSLT transform
を適用して電子メール本文を生成します。使用するXSLTタグを追加します。XMLSpyなどのツールを使用すると、XSLTの記述とテストが容易になります。MIMEタイプは、string('text/html;charset=UTF-8')
である必要があります。
電子メール通知の割当ては、例17-1のようになります。
emailアクティビティのメッセージ・コンテンツについてHTMLが動的に生成される場合は、(XSLT、ファイルの読取りなどと同様に)そのHTMLをCDATA
関数にラップする必要があります。これにより、メッセージ本文のXML/HTMLコンテンツとBPELの内部XMLデータ構造の間の競合が回避されます。
たとえば、例17-2
に示すように、emailアクティビティ内のメッセージ・コンテンツに対してappend操作を使用すると仮定します。
例17-2 emailアクティビティ内のメッセージ・コンテンツ
<bpelx:append> <bpelx:from expression="ora:processXSLT('xsl/email.xslt',bpws:getVariableData('Variable_1' ))"/> <bpelx:to variable="varNotificationReq" part="EmailPayload" query="/EmailPayload/ns1:Content/ns1:ContentBody/ns1:MultiPart/ns1:BodyPart[1] /ns1:ContentBody"/> </bpelx:append>
正しく機能するためには、例17-3
に示すように、processXSLT()
関数の出力をCDATA()関数に渡す必要があります。
「コンポーネント・パレット」から「IM」をドラッグすると、「IM」ダイアログが表示されます。図17-6に、IM通知の必須パラメータを示します。
IM通知チャネルを構成する手順は、次のとおりです。
表17-4の説明に従って、各フィールドに情報を入力します。
「OK」をクリックします。
IM通知のための通知サービスを起動するBPELフラグメントが作成されます。
実行する他の構成手順は、第17.2項「通知チャネル設定の概要」の表17-1を参照してください。
「コンポーネント・パレット」から「SMS」を選択すると、「SMS」ダイアログが表示されます。図17-7に、SMS通知の必須パラメータを示します。
SMS通知チャネルを構成する手順は、次のとおりです。
表17-5の説明に従って、各フィールドに情報を入力します。
表17-5 SMS通知パラメータ
名前 | 説明 |
---|---|
送信元番号 |
SMS通知の送信元となる電話番号。メッセージ作成時に入力した静的な電話番号、またはペイロードに基づく動的な電話番号を使用できます。XPath式ビルダーで、入力から動的に電話番号を取得できます。第17.3.5項「電子メール・アドレスと電話番号を動的に選択する方法」を参照してください。 |
電話番号 |
メッセージの配信先電話番号の指定方法を選択します。
|
件名 |
SMSメッセージの件名。プレーン・テキストまたは動的テキストを入力できます。XPath式ビルダーで、指定したプロセス変数のデータに基づいて動的にテキストを設定できます。 |
本文 |
SMSメッセージ本文。プレーン・テキストを使用する必要があります。「件名」パラメータで説明したプレーン・テキストまたは動的テキストを使用できます。 |
「OK」をクリックします。
SMS通知のための通知サービスを起動するBPELフラグメントが作成されます。
実行する他の構成手順は、第17.2項「通知チャネル設定の概要」の表17-1を参照してください。
「コンポーネント・パレット」から「Voice」を選択すると、「Voice」ダイアログが表示されます。図17-8は、ボイス通知の必須パラメータを示しています。
ボイス通知チャネルを構成する手順は、次のとおりです。
表17-6の説明に従って、各フィールドに情報を入力します。
「OK」をクリックします。
ボイス通知のための通知サービスを起動するBPELフラグメントが作成されます。
実行する他の構成手順は、第17.2項「通知チャネル設定の概要」の表17-1を参照してください。
特定のプロセス変数に基づいて動的に電子メール・アドレスまたは電話番号を設定できます。また、アイデンティティ・サービス用の組込みXPath関数を使用して、特定ユーザーの連絡先情報をルックアップすることも可能です。
電子メール・アドレスまたは電話番号をペイロードから直接取得するには、次のXPath式を使用します。
bpws:getVariableData('<variable name>', '<part>','input_xpath_to_get_an_address')
たとえば、XPath /client/BPELProcessRequest/client/mail
に基づいて変数inputVariable
およびパートpayload
から電子メール・アドレスを取得するには、次のようにします。
<%bpws:getVariableData('inputVariable','payload','/client:BPELProcessRequest/ client:email')%>
電子メール・アドレスまたは電話番号を、基礎となるアイデンティティ・ストア(LDAP)から動的に取得するには、次のXPath式を使用します。
ids:getUserProperty(userName, attributeName[, realmName])
最初の引数は、ユーザーIDに評価されます。2番目の引数はプロパティ名です。3番目の引数はレルム名です。表17-7に、このXPath関数で使用できるプロパティ名を示します。
表17-7 動的ユーザーXPath関数のプロパティ
プロパティ名 | 説明 |
---|---|
|
ユーザーの電子メール・アドレスのルックアップ。 |
|
ユーザーの電話番号のルックアップ。 |
|
ユーザーの携帯電話番号のルックアップ。 |
|
ユーザーの自宅電話番号のルックアップ。 |
次の例では、変数inputVariable
、パートpayload
および問合せ/client:BPELProcessRequest/client:userID
で識別されるユーザーの電子メール・アドレスを取得します。
ids:getUserProperty(bpws:getVariableData(’inputVariable', ’payload',’/client:BPELProcessRequest/client:userid'), ’mail')
realmName
が未指定の場合は、デフォルトのレルム名が使用されます。たとえば、デフォルトのレルム名がjazn.com
の場合、次のXPath式ではjazn.com
レルム内でユーザーが検索されます。
ids:getUserProperty('jcooper', 'mail');
次のXPath式は、前述の式と同じ機能を提供します。ただし、この場合はレルム名jazn.com
が明示的に指定されています。
ids:getUserProperty('jcooper', 'mail', 'jazn.com');
通知送信先となるOracle JDeveloperのユーザーやグループは、Oracle BPEL Process Managerで使用するように構成されたユーザー・ディレクトリ(たとえば、Oracle Internet Directory)を参照することで選択できます。次のフィールドの右側にある「検索」アイコンをクリックして、「アイデンティティ・ルックアップ」ダイアログを開きます。
「Email」および「IM」ダイアログの「To」フィールド
「SMS」および「Voice」ダイアログの「電話番号」フィールド
「アイデンティティ・ルックアップ」ダイアログの使用方法の詳細は、第34章「ヒューマン・ワークフロー・サービスの概要」を参照してください。
BPELプロセスの設計では、設計時に通知チャネルを明示的に選択せずに、通知を送信する必要性のみを示すことができます。通知の送信に使用するチャネルは、Oracle User Messaging Serviceのユーザー・メッセージング・プリファレンス・ユーザー・インタフェースでエンド・ユーザーが定義したプリファレンスに基づいて、実行時に決定されます。したがって、通知チャネルの選択権は、Oracle BPELデザイナのBPELプロセスからエンド・ユーザーに移動します。エンド・ユーザーが優先チャネルまたはルールを選択していない場合、そのユーザーへの通知の送信には、デフォルトで電子メールが使用されます。使用するチャネルを誰が選択するかに関係なく、チャネルの使用は、管理者がOracle Enterprise Manager Fusion Middleware ControlのOracle User Messaging Serviceセクションで実行したドライバのインストールと構成に基づいています。
たとえば、エンド・ユーザーは、次のように各自のプリファレンスを設定できます。
経費レポートの金額が$153未満の場合は、電子メール通知を受け取ります。
経費レポートの金額が$153以上$3678以下の場合は、SMS通知を受け取ります。
経費レポートの金額が$3678を超過する場合は、ボイス通知を受け取ります。
注意: 送信通知のユーザー・プリファレンスは、ヒューマン・タスク・エディタのヒューマン・ワークフローで設定することもできます。これらのプリファレンスは、「通知設定」セクションの「通知フィルタ」で設定します。これらのプリファレンスは、タスクでルールを評価する際に使用されます。詳細は、第29.8.8項「電子メール通知によるタスクの添付ファイルの送信方法」を参照してください。 |
ユーザー・メッセージング・プリファレンス・ユーザー・インタフェースの詳細は、第67章「ユーザー・メッセージング・プリファレンス」を参照してください。
Oracle Enterprise Manager Fusion Middleware ControlでOracle User Messaging Serviceを構成する方法の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
通知チャネルの選択をエンド・ユーザーに許可する手順は、次のとおりです。
「コンポーネント・パレット」のリストから、「BPEL」を選択します。
「BPELアクティビティとコンポーネント」を展開します。
「コンポーネント・パレット」から、デザイナにuser notificationアクティビティをドラッグします。図17-9に、ユーザー通知の必須パラメータを示します。
表17-8の説明に従って、各フィールドに情報を入力します。
表17-8 ユーザー通知パラメータ
名前 | 説明 |
---|---|
To |
次のいずれかの方法で、この通知メッセージの受信者に有効なユーザーを入力します。
注意: アドレスではなくユーザー名( |
件名 |
メッセージ名を入力するか、「XPath式ビルダー」アイコンをクリックして「式ビルダー」ダイアログを表示し、件名を動的に入力します。電子メール経由で通知を送信する場合は、実行時にこのフィールドが使用されます。ボイス、SMSまたはIMチャネル経由で通知を送信する場合、このフィールドは無視されます。 |
通知メッセージ |
通知メッセージを入力するか、「XPath式ビルダー」アイコンをクリックして「式ビルダー」ダイアログを表示し、送信するメッセージを動的に入力します。 |
「適用」をクリックします。
「User Notification」ダイアログの「詳細」タブを使用すると、ヘッダーと名前の情報を作成して送信できます。この情報は、エンド・ユーザーが、通知を受信するための独自のプリファレンス・ルールを作成する際に役立ちます。例:
Oracle BPELデザイナによって、「一般」
タブで、jcooper
およびjsteinというユーザーが指定されます。
Oracle BPELデザイナによって、「詳細」タブで、次のヘッダーと名前の情報が作成されます。
Amount
=
payload->salary
Application
=
HR-Application
管理者は、Oracle Enterprise Manager Fusion Middleware Controlで、プロセスをデプロイし、様々なチャネル・ドライバを構成します。
エンド・ユーザーjcooper
は、ユーザー・メッセージング・プリファレンス・ユーザー・インタフェースで、次のプリファレンス・ルールを作成します。
'Email if Amount < 30000" and "SMS if Amount is between 30000 and 100000' and "Voice if Amount > 100000"
エンド・ユーザーjstein
は、ユーザー・メッセージング・プリファレンス・ユーザー・インタフェースで、次のプリファレンス・ルールを作成します。
If "Application == HR-Application" and Amount > 2000000" send Voice
各エンド・ユーザーが独自のプリファレンス・ルールを作成できるように、ヘッダーと名前の情報を作成して送信する場合は、「詳細」をクリックします。
図17-10に、「User Notification」ダイアログの「詳細」タブを示します。
「追加」アイコンをクリックし、「ヘッダー」列と「名前」列に行を追加します。
値を選択するためのリストを表示するには、「ヘッダー」列でフィールドをクリックします。それ以外の場合は、手動で値を入力します。
「名前」列に、値を入力します。
「OK」をクリックします。