この章の内容は次のとおりです。
様々なシナリオで、プロセス・フローの一環として、電子メール・メッセージや他のタイプの通知をユーザーに送信する必要があります。たとえば、自動処理できない特定タイプの例外には、手動による操作が必要となる場合があります。この場合、BPELプロセスでは、通知サービスを使用して、ユーザーにボイス、IM、SMSまたは電子メールで警告できます。
受信者の連絡先情報(電子メール・アドレス、電話番号など)は、静的な情報(admin@yourcompany.com
など)または実行時に動的に取得する情報のいずれかです。連絡先情報を動的に取得するには、XPath式でアイデンティティ・ストア(LDAP)から取得するか、BPELペイロードから抽出します。
この章では、次の用語を使用します。
通知
特定のチャネルを通じてユーザーに送信される非同期メッセージです。このメッセージは、電子メール、ボイス、IMまたはSMSメッセージとして送信できます。
アクション可能な通知
ユーザーが応答できる通知です。たとえば、ワークフローでは、注文書の承認または却下を担当するマネージャに電子メールを送信します。マネージャは、適切な内容を記載して電子メールに返信することで、リクエストを承認または却下します。
ヒューマン・タスク電子メール通知レイヤー
電子メール通知を直接BPELプロセスから、または暗黙的にBPELプロセスのヒューマン・タスク部分から送信します。暗黙の通知は、ヒューマン・タスク・エディタによってモデル化されます。
電子メール通知をBPELプロセスから直接送信するには、BPELプロセスにユーザー情報を明示的に指定する必要があります。ヒューマン・タスクのスコープの内側または外側に指定できます。
電子メール通知をBPELプロセスのヒューマン・タスク部分から暗黙的に送信するには、タスクに関するユーザーとの関係(つまり、作成者、割当て先など)に基づいて、受信者のみを指定します。
注意:
暗黙的な通知は、明示的な通知に比べ、より多くのコードのレイヤーを介して処理されます。明示的な通知が正しく機能している場合でも、暗黙的な通知が正しく機能しているとはかぎりません。
Oracle User Messaging Service
BPEL通知サービスは、Oracle User Messaging Serviceが提供する基礎となるインフラストラクチャを使用して通知を送信します。
Oracle User Messaging Serviceは、エンド・ユーザーの優先チャネルを実行時に取得するためのユーザー・プリファレンス・インフラストラクチャも提供します。
Oracle User Messaging Serviceの詳細は、『Oracle User Messaging Serviceによるアプリケーションの開発』を参照してください。
図17-1 は、Oracle User Messaging Serviceインタフェースとサポートされるサービス・タイプを示しています。
通知の詳細は、次の各項を参照してください。
「参加者の通知プリファレンスの指定」(ヒューマン・タスク・エディタで電子メール通知を指定する手順)
Oracle User Messaging Serviceによるアプリケーションの開発
通知の設定は、複数のユーザー・インタフェース・ツールを使用する多段階のプロセスです。表17-1 に、このプロセスの概要、実行するタスク、使用ツールおよび詳細の参照先を示します。
表17-1 通知のタスク
タスク | 説明 | ユーザー・インタフェース | 参照先 |
---|---|---|---|
SOAコンポジット・アプリケーションの通知を送信するチャネルの選択 |
通知の送信方法を選択します。
|
Oracle BPELデザイナでBPELプロセス設計者が選択および構成します。 |
または |
通知チャネルに対するドライバの構成 |
ドライバは、SOAコンポジット・アプリケーションをデプロイするOracle WebLogic Serverで構成します。このアクションにより、参加者は通知を受信および転送できます。電子メール、IM、SMSおよびボイス・チャネルについてドライバがサポートされます。 |
Oracle Enterprise Manager Fusion Middleware Controlで管理者が構成します。 |
Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理 |
通知モードおよびヒューマン・ワークフローのアクション可能なアカウントの構成 |
ヒューマン・ワークフローで通知を使用している場合は、通知モードと、電子メールのアクション可能なアカウントを構成します。 |
Oracle Enterprise Manager Fusion Middleware Controlで管理者が構成します。 |
Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理 |
ユーザー・プリファレンスの指定によるメッセージへのアクセスに使用するデバイスの登録 |
このアクションにより、ワークフロー参加者は、通知メッセージを受信できます。たとえば、エンド・ユーザーは、電子メール・クライアントを登録し、受信するメッセージ・コンテンツとメッセージの受信に使用するチャネルを指定します。 チャネルが未指定の場合は、電子メールがデフォルトで使用されます。このアプリケーションに設定されているプリファレンスは、特定のエンド・ユーザーのみに適用され、他のユーザーには適用されません。 |
ユーザー・メッセージング・プリファレンス・ユーザー・インタフェースでエンド・ユーザーが登録します。このインタフェースには、Oracle BPM Worklistで「プリファレンス」→「通知」の順に選択してアクセスできます。 |
Oracle User Messaging Serviceによるアプリケーションの開発 |
Oracle JDeveloperには、電子メール、IM、SMSおよびボイス・チャネルの通知チャネルが「コンポーネント」ウィンドウにあります。使用する通知チャネルは設計時に厳密に設定できます。たとえば、次の通知チャネルを使用するようにBPELプロセスを設計できます。
経費レポートの金額が$1000未満の場合は、電子メール通知チャネルを使用します。
経費レポートの金額が$1000以上$2000以下の場合は、SMS通知チャネルを使用します。
経費レポートの金額が$2000を超過する場合は、ボイス通知チャネルを使用します。
BPELプロセス設計で通知チャネルを選択する手順は、次のとおりです。
「コンポーネント」ウィンドウから「電子メール」アイコンをドラッグすると、「電子メール」ダイアログが表示されます。図17-2 に、電子メール通知の必須パラメータを示します。
電子メール通知チャネルを構成する手順は、次のとおりです。
emailアクティビティを使用して添付ファイルを送信できます。各添付ファイルには、名前、MIMEタイプおよび値の3つの要素があります。添付ファイルごとにこの3つの要素をすべて設定する必要があります。
電子メール・メッセージに添付ファイルを追加する手順は、次のとおりです。
電子メールを使用した添付ファイル送信の詳細は、次のドキュメントを参照してください。
Oracle User Messaging Serviceによるアプリケーションの開発
Oracle User Messaging Serviceの管理
電子メール・メッセージの本文は、プレーン・テキストではなくHTMLとして書式設定できます。このアクションを実行するには、XSLT transform
を適用して電子メール本文を生成します。使用するXSLTタグを追加します。XMLSpyなどのツールを使用すると、XSLTの記述とテストが容易になります。MIMEタイプは、string('text/html;charset=UTF-8')
である必要があります。
電子メール通知割当ては、次の例のようになります。
<copy> <from expression="ora:processXSLT('TransformPositionSummary7.xslt',bpws: getVariableData('ClientPositionSummary'))"/> <to variable="varNotificationReq" part="EmailPayload" query="/EmailPayload/ns9:Content/ns9:ContentBody"/> </copy>
emailアクティビティのメッセージ・コンテンツについてHTMLが動的に生成される場合は、(XSLT、ファイルの読取りなどと同様に)そのHTMLをCDATA
関数にラップする必要があります。これにより、メッセージ本文のXML/HTMLコンテンツとBPELの内部XMLデータ構造の間の競合が回避されます。
たとえば、次の例に示すように、emailアクティビティ内のメッセージ・コンテンツに対してappend
操作を使用すると仮定します。
<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>
正しく機能するためには、次の例に示すように、processXSLT()
関数の出力をCDATA()
関数に渡す必要があります。
<%ora:toCDATA(xdk:processXSLT('xsl/email.xslt', bpws:getVariableData('inputVariable','payload','/client:process/client:input') ))%>
「コンポーネント」ウィンドウから「IM」アイコンをドラッグすると、「IM」ダイアログが表示されます。図17-6 に、IM通知の必須パラメータを示します。
IM通知チャネルを構成する手順は、次のとおりです。
「コンポーネント」ウィンドウから「SMS」アイコンをドラッグすると、「SMS」ダイアログが表示されます。図17-7 に、SMS通知の必須パラメータを示します。
SMS通知チャネルを構成する手順は、次のとおりです。
「コンポーネント」ウィンドウから「ボイス」アイコンをドラッグすると、「ボイス」ダイアログが表示されます。図17-8 は、ボイス通知の必須パラメータを示しています。
ボイス通知チャネルを構成する手順は、次のとおりです。
特定のプロセス変数に基づいて動的に電子メール・アドレスまたは電話番号を設定できます。また、アイデンティティ・サービス用の組込み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')%>
XPath式ビルダーを使用して関数を選択し、入力変数からアドレスを取得するXPath式を入力できます。
電子メール・アドレスまたは電話番号を、基礎となるアイデンティティ・ストア(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」および「ボイス」ダイアログの「電話番号」フィールド
「アイデンティティ・ルックアップ」ダイアログの使用方法の詳細は、「ヒューマン・ワークフロー・サービスの概要」を参照してください。
BPELプロセスの設計では、設計時に通知チャネルを明示的に選択せずに、通知を送信する必要性のみを示すことができます。通知の送信に使用するチャネルは、Oracle User Messaging Serviceのユーザー・メッセージング・プリファレンス・ユーザー・インタフェースでエンド・ユーザーが定義したプリファレンスに基づいて、実行時に決定されます。したがって、通知チャネルの選択権は、Oracle BPELデザイナのBPELプロセスからエンド・ユーザーに移動します。エンド・ユーザーが優先チャネルまたはルールを選択していない場合、そのユーザーへの通知の送信には、デフォルトで電子メールが使用されます。使用するチャネルを誰が選択するかに関係なく、チャネルの使用は、管理者がOracle Enterprise Manager Fusion Middleware ControlのOracle User Messaging Serviceセクションで実行したドライバのインストールと構成に基づいています。
たとえば、エンド・ユーザーは、次のように各自のプリファレンスを設定できます。
経費レポートの金額が$153未満の場合は、電子メール通知を受け取ります。
経費レポートの金額が$153以上$3678以下の場合は、SMS通知を受け取ります。
経費レポートの金額が$3678を超過する場合は、ボイス通知を受け取ります。
注意:
送信通知のユーザー・プリファレンスは、ヒューマン・タスク・エディタのヒューマン・ワークフローで設定することもできます。これらのプリファレンスは、「通知設定」セクションの「通知フィルタ」で設定します。これらのプリファレンスは、タスクでルールを評価する際に使用されます。詳細は、「電子メール通知によるタスクの添付ファイルの送信方法」を参照してください。
Oracle User Messaging Serviceの詳細は、『Oracle User Messaging Serviceによるアプリケーションの開発』の「ユーザー通信プリファレンス」を参照してください。
Oracle User Messaging ServiceをOracle Enterprise Manager Fusion Middleware Controlで構成する方法の詳細は、『Oracle User Messaging Serviceの管理』を参照してください。
通知チャネルの選択をエンド・ユーザーに許可する手順は、次のとおりです。
「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