この章では、ヒューマン・ワークフローの概念、機能およびアーキテクチャについて説明します。ヒューマン・ワークフローには、ユースケースが用意されています。ワークフロー全体を始めて設計する際の手順についても説明します。
項目は次のとおりです。
多くのエンドツーエンドのビジネス・プロセスでは、プロセスに人的な操作が必要です。たとえば、承認や例外管理、またはビジネス・プロセスの進行に必要なアクティビティの実行には、人的な操作が必要です。ヒューマン・ワークフロー・コンポーネントには、次の機能があります。
プロセスの人的な操作。適切なユーザーまたはグループへのタスクの割当てやルーティングなどがあります。
期限、エスカレーション、通知および他の機能。タスク(ヒューマン・アクティビティ)の適時実行を保証するために必要です。
エンド・ユーザーへのタスクの提示。ワークリスト・アプリケーション(Oracle BPM Worklist)などの様々な方法を使用します。
編成、フィルタ処理、優先度設定および他の機能。エンド・ユーザーがタスクを効率的に実行するために必要です。
レポート、再割当、ロード・バランシングおよび他の機能。監督者およびビジネス所有者がタスクのパフォーマンスを管理するために必要です。
図27-1に、ヒューマン・ワークフローの概要を示します。
図27-1では、次のアクションが発生しています。
BPELプロセスは、タスクの実行に人的な操作が必要になると、ヒューマン・タスク・タイプの特別なアクティビティを起動します。
このアクティビティによって、ヒューマン・タスク・サービス・コンポーネントにタスクが作成されます。このプロセスは、タスクが完了するまで待機します。プロセスでは、タスクからのその他のコールバックを監視し、そのコールバックに対応することも可能です。
タスクにはメタデータが関連付けられています。このメタデータは、タスクのライフサイクルを管理するために、ヒューマン・タスク・サービス・コンポーネントで使用されます。このメタデータには、次の指定が含まれています。
タスクを実行するユーザー。タスクの実行に複数のユーザーが必要な場合は、その順序。
他のステークホルダ。
タスクの完了期限。
ユーザーによるタスクの実行方法、ユーザーに提示する情報、ユーザーの入力内容と実行可能なアクション。
ヒューマン・タスク・サービス・コンポーネントでは、LDAPなどのアイデンティティ・ディレクトリを使用して、ユーザーのロールと権限を判断します。
ヒューマン・タスク・サービス・コンポーネントでは、次のような様々なチャネルを使用してユーザーにタスクを提示します。
Oracle BPM Worklist。監督者やプロセス所有者の考え方をサポートするロール・ベースのアプリケーションで、タスクを検索、編成、管理および実行するための機能を提供します。
ワークリスト機能。エンタープライズ・ポータルに公開可能なポートレットとして使用することもできます。
通知。電子メール、電話、SMSおよびその他のチャネルで送信できます。電子メール通知はアクション可能で、ユーザーは、Oracle BPM WorklistまたはOracle WebLogic Serverに接続しないで、電子メール・クライアント内からタスクに対してアクションを実行できます。
ポートレットの詳細は、第34章「タスク・リスト・ポートレットの構成」を参照してください。
この項では、ヒューマン・ワークフローの主要な設計時および実行時の概念について説明します。ヒューマン・ワークフロー設計の主要な3つのステージの概要についても説明します。
ヒューマン・タスクを設計するには、その前に、設計時および実行時の概念を理解することが重要です。タスクは通常、件名、優先順位、タスク参加者、タスク・パラメータまたはデータ、期限、通知またはリマインダ、およびタスク・フォームで構成されています。この項では、主要な概念に関する概要を説明します。
注意: ヒューマン・ワークフローの設計時タスクは、ヒューマン・タスク・エディタと呼ばれるグラフィカル・エディタで実行されます。このエディタの使用方法は、第27.3.2項「ヒューマン・タスク全体の設計」のチュートリアルを参照してください。 |
ヒューマン・ワークフローでは、タスクの宣言的な割当ておよびルーティングをサポートしています。最も簡単なケースでは、タスクは単一の参加者(ユーザーまたはグループ)に割り当てられます。ただし、多くの場合は、複雑なタスク割当てとルーティングが必要です(たとえば、図27-2に示すように、タスクに管理チェーンによる承認が必要な場合や、タスクを一連のユーザーがパラレルで作業したり、投票する必要がある場合です)。ヒューマン・ワークフローでは、このようなシナリオに対して宣言的なパターン・ベースのサポートを提供します。
簡単なケースでは、参加者はユーザー、グループまたはロールにマップされます。ただし、第27.2.1.1項「タスクの割当ておよびルーティング」で説明したように、ワークフローでは、管理チェーンやグループ投票などの一般的なルーティング・シナリオに対して宣言的なパターンをサポートしています。使用可能な参加者タイプは、次のとおりです。
これは簡単なケースで、参加者はユーザー、グループまたはロールにマップされます。
たとえば、休暇申請がマネージャに割り当てられているとします。マネージャは、休暇が始まる3日前までに申請タスクを操作する必要があります。マネージャが申請を正式に承認または却下すると、その決定が従業員に通知されます。マネージャがタスクを操作しない場合、申請は却下として処理されます。正式な却下の場合と同様に通知アクションが実行されます。
この参加者タイプは、一連のユーザーがパラレルで作業する必要があることを示します。このパターンは通常、投票で使用されます。
たとえば、雇用に関して複数のユーザーが応募者の採否を票決する必要がある場合です。結果が有効になるために必要な得票率(多数決や満場一致など)を指定します。
この参加者タイプは、一連のユーザーが順番に作業する必要があることを示します。ルーティング・ポリシーには、複数の参加者を順番に使用した順番による作業を指定できますが、このパターンは一連のユーザーが動的である場合に有用です。このシリアル・タイプの一般的なシナリオは、管理チェーン・エスカレーションです。このエスカレーションは、このパターンの指定内にある管理チェーンに基づいてリストを指定することで実行されます。
この参加者は、単一の承認者と同様に、単一のユーザー、グループまたはロールにマップされます。ただし、このパターンは、参加者が通知タスクを単に受信し、ビジネス・プロセスではこの参加者のレスポンスを待機しないことを示します。FYI参加者はタスクの結果を直接左右することはできませんが、コメントを提供したり添付ファイルを追加できる場合があります。
たとえば、採用候補者の採用について地域マネージャが承認し、その候補が承認または却下のために州全体の統括マネージャに渡されたことが、地域の営業所に通知される場合です。FYIはタスクの結果を直接左右できませんが、コメントを提供したり添付ファイルを追加できる場合があります。
詳細は、第28.3.6項「タスク参加者の割当て方法」を参照してください。
タスクは、ユーザーによる実行が必要な作業です。タスクを作成する場合は、そのタスクに参加して操作するユーザーを割り当てます。実行時に、参加者はOracle BPM Worklistからタスクに対してアクションを実行できます。これらのアクションには、休暇申請の承認、発注の却下、ヘルプ・デスク・リクエストへのフィードバックの提供などがあります。参加者には3つのタイプがあります。
ユーザー
タスクの操作に個別のユーザーを割り当てることができます。たとえば、特定のタスクに対してユーザーjlondon
やjstein
を割り当てることができます。ユーザーは、SOAインフラストラクチャで構成されたアイデンティティ・ストアに定義されます。これらのユーザーは、Oracle WebLogic Serverの組込みLDAP、Oracle Internet Directoryまたは第三者LDAPディレクトリに格納できます。
グループ
タスクの操作にグループを割り当てることができます。グループには、タスクを要求して操作できる個別のユーザーが含まれています。たとえば、ユーザーjcooper
とfkafka
は、タスクの操作を割り当てたグループLoanAgentGroup
のメンバーである可能性があります。
ユーザーと同様に、グループはSOAインフラストラクチャのアイデンティティ・ストアに定義されます。
タスクの要求と操作に、アプリケーション・ロールのメンバーであるユーザーを割り当てることができます。
アプリケーション・ロールは、アプリケーション・レベルで認可するように論理的にグループ化されたユーザーまたは他のロールで構成されます。これらのロールは、アプリケーション固有のもので、アプリケーションJavaポリシー・ストア(アイデンティティ・ストアではなく)で定義されます。これらのロールは、アプリケーションが直接使用するもので、Java EEコンテナによって把握されているとはかぎりません。
アプリケーション・ロールはポリシーを定義します。アプリケーション・ロールにはJava権限を付与できます。したがって、アプリケーション・ロールは、直接的または他のロールを介して間接的に付与される一連の権限を定義します。ポリシーには、エンタープライズ・グループまたはユーザーに対するアプリケーション・ロールの付与を含めることができます。ファイル・ベースのポリシー・ストアのjazn-data.xml
ファイルには、これらのロールが<policy-store>
の下の<app-role>
要素に定義され、デプロイメント時にファーム・レベルでsystem-jazn-data.xml
に書き込まれます。これらのロールは、デプロイメント後にOracle Enterprise Manager Fusion Middleware Controlコンソールを使用して定義することもできます。ロールが事前にデプロイされている場合は、設計時に、タスク所有者または承認者をアプリケーション・ロールに設定できます。
Oracle BPM Worklistの詳細は、第27.2.1.6項「タスク・フォーム」を参照してください。
多様性に対応するプロセスでは、すべての参加者を常に決定できるわけではありません。ヒューマン・ワークフローを使用すると、参加者がタスク実行の一部として他の参加者を招待できるように指定できます。
詳細は、第28.3.7.1.1項「全参加者による他の参加者の招待の許可」を参照してください。
デフォルトでは、タスクは、ルーティング・ポリシーに定義したフローに従って(図27-2に示すように)、開始参加者から最終参加者へ移行します。ただし、タスクのルーティング・フロー内の特定ステップでの特定結果によっては、次の参加者へのタスクの提示を続行することが不要になったり、望ましくない場合があります。たとえば、最初のマネージャが承認を却下した場合は、2番目のマネージャにルーティングする必要はありません。ヒューマン・ワークフローでは、特定の結果が発生した場合にタスクまたはサブタスクを完了するように指定することをサポートしています。
詳細は、第28.3.7.1.2項「次の参加者へのタスクのルーティングの停止」を参照してください。
タスクへのユーザー、グループおよびアプリケーション・ロールの割当てには様々な方法があります。
静的なタスク割当て
ユーザー、グループおよびアプリケーション・ロールを静的に(または、アイデンティティ・サービスを参照して)割り当てることができます。値は次のいずれかです。
単一のユーザー、グループまたはアプリケーション・ロール(jstein
、CentralLoanRegion
またはApproverRole
など)。
ユーザー、グループまたはアプリケーション・ロールのデリミタ付き文字列(jstein
, wfaulk
, cdickens
など)。
動的なタスク割当て
XPath式を使用すると、ユーザー、グループおよびアプリケーション・ロールを動的に割り当てることができます。これらの式を使用すると、実行時にタスク参加者を動的に決定できます。たとえば、ペイロード変数で指定されたタスク承認者の動的リストを作成するというビジネス要件を設定できます。このXPath式は、0(ゼロ)個以上のXMLノードに解決できます。各ノードの値は次のいずれかです。
単一のユーザー、グループまたはアプリケーション・ロール。
ユーザー、グループまたはアプリケーション・グループのデリミタ付き文字列。割当て先のデリミタ付き文字列のデフォルト・デリミタはカンマ(,
)です。
たとえば、タスクに、タスク承認者が格納されているpo
という名前のペイロード・メッセージ属性がある場合は、次のXPath式を使用できます。
/task:task/task:payload/po:purchaseOrder/po:approvers
ids:getManager('jstein', 'jazn.com')
この式は、jstein
のマネージャを返します。
ids:getReportees('jstein', 2, 'jazn.com')
この式は、jstein
の2レベルまでの報告先すべてを返します。
ids:getUsersInGroup('LoanAgentGroup', false, 'jazn.com')
この式は、グループLoanAgentGroup
のすべての直接ユーザーと間接ユーザーを返します。
ビジネス・ルールを使用したタスク割当て
複雑な式を使用してタスク参加者のリストを作成できます。ビジネス・ルールの使用結果は、XPath式の使用結果と同じです。
タスクには複数のステークホルダが含まれます。参加者は、タスク定義の割当ておよびルーティングのセクションに定義されたユーザーです。これらのユーザーは、タスクに対してアクションを実行する主要なステークホルダです。
割当ておよびルーティング・ポリシーに指定されている参加者に加えて、ヒューマン・ワークフローでは次の追加のステークホルダがサポートされています。
この参加者には、タスクに対するビジネス管理権限があります。この参加者は、タスク定義の一部として指定したり、起動プロセスから(および特定のインスタンスに)指定することができます。タスク所有者は、所有するタスクを操作したり、他の参加者のかわりにタスクを操作することもできます。タスク所有者は、タスクの結果と割当ての両方を変更できます。
ヒューマン・タスク・エディタで所有者を指定するには、第28.3.4.6項「タスク所有者の指定」を参照してください。また、「ヒューマン・タスク」ダイアログの「詳細」タブで所有者を指定するには、第28.4.4.2項「タスク所有者の指定」を参照してください。
プロセスを開始するユーザーです(たとえば、起案者は承認用の経費レポートを提出します)。このユーザーは、開始したタスクのフィルタを使用してタスクのステータスを確認できます。また、他の参加者による情報のリクエストに関する潜在的候補者として起案者を含めることは、有用な考え方です。
詳細は、第28.4.3.2項「タスク起案者とタスク優先度の指定」を参照してください。
この参加者は、タスクのステータスを確認して、コメントおよび添付ファイルを追加できます。
この参加者は、すべてのタスクを表示して、テストの再割当てやエラーを処理するためのタスクの一時停止などの特定のアクションを実行できます。タスク管理者は、タスクの結果を変更できます。
タスク管理者は、タスク参加者が実行できる承認、却下などのアクション・タイプは実行できませんが、この参加者タイプは再割当て、取消しなどのアクションを実行できるため最も強力なタイプです。
エラーが発生すると、タスクはこの参加者に割り当てられます(存在しないユーザーにタスクが割り当てられた場合など)。エラーの割当て先は、Oracle BPM Worklistからタスク・リカバリ・アクションを実行できます。Oracle BPM Worklistは、実行時にタスク・アクションを実行するタスク・フォームです。
詳細は、第28.3.7.4項「エラー割当て先の構成」を参照してください。
ヒューマン・ワークフローでは、タスクに関連する期限の指定がサポートされています。期限には、次のアクションを関連付けることができます。
リマインダ:
割当て後の時刻または有効期限前の時刻に基づいて、タスクのリマインダを複数回送信できます。
エスカレーション:
タスクは、管理階層にエスカレートされます。
期限切れ:
タスクは期限切れです。
更新:
タスクは、自動的に更新されます。
詳細は、第28.3.9項「タスクのエスカレート、期限更新または終了方法」を参照してください。
ヒューマン・タスクは、通知を使用するように構成できます。通知を使用すると、関連するユーザーに、タスクのライフ・サイクル期間にタスクの状態が変化したことを警告できます。たとえば、タスクの承認や取消しの際は、通知が割当て先に送信されます。
異なるアクションについて様々なタイプの参加者に通知を送信するように指定できます。たとえば、次のように指定できます。
タスクの所有者は、タスクがエラー状態の場合(存在しないユーザーに送信された場合など)通知メッセージを受信します。
タスク割当て先は、タスクがエスカレートされた場合通知メッセージを受信します。
通知メッセージのコンテンツと、メッセージの送信に使用する通知チャネルを指定できます。
電子メール
アクション可能な電子メール通知メッセージを構成できます。つまり、タスク割当て先は、その電子メール内からタスクを操作できます。
ボイス・メッセージ
インスタント・メッセージ(IM)
ショート・メッセージ・サービス(SMS)
たとえば、タスク割当て先がタスクを操作する前に追加の情報をリクエストした場合は、例27-1に示すようなメッセージを電子メールで送信できます。
例27-1 電子メール・メッセージ
For me to approve this task, more information is required to justify the need for this business trip
実行時には、メッセージ送信者のアドレスをスパムとしてマークし、不正または無効なアドレス・リストを表示することもできます。これらのアドレスは、不正アドレス・リストから自動的に削除されます。
通知の詳細は、次を参照してください。
タスク・フォームは、タスクと相互作用する方法を提供します。Oracle BPM Worklistのタスク・フォームには、タスク割当て先に割り当てられたすべてのワークリスト・タスクが表示されます。特定のタスクにドリルダウンすると、タスク・フォームには、ユーザーのワークリストに対するタスクのコンテンツが表示されます。たとえば、経費承認タスクでは様々な経費の明細項目が記載されたフォームが表示され、ヘルプ・デスク・タスク・フォームでは重大度や問題の場所などの詳細が表示されます。
このため、Oracle SOA Suiteの統合開発環境にはOracle Application Development Framework (Oracle ADF)が含まれています。Oracle ADFを使用すると、SOAコンポジット・アプリケーションのヒューマン・タスクを表すタスク・フォームを設計できます。
ADFベースのタスク・フォームは自動的に生成できます。上級ユーザーは、ADFデータ・コントロールを使用して独自のタスク・フォームを設計して、ページ上にコンテンツをレイアウトし、実行時にはワークフロー・サービス・エンジンに接続して、タスク・コンテンツを取得し、タスクを操作できます。
タスク・フォームは、JSF、NET、またはAPIを使用する他のクライアント・テクノロジで作成できます。
タスクを開始し、操作するためにMicrosoft Excelとの統合も提供されています。
詳細は、次を参照してください。
この項では、ヒューマン・ワークフローの拡張概念について説明します。
Oracle Business Rulesを使用すると、ルーティング・フローを動的に変更できます。Oracle Business Rulesを使用すると、参加者がそれぞれの手順を完了するたびに、関連付けられているルールが起動し、そのルールからルーティング・フローを上書きできます。
詳細は、第28.3.7.2項「ビジネス・ルールを使用した詳細タスク・ルーティングの指定」を参照してください。
Oracle Business Rulesを使用すると、参加者に関連付けるユーザー、グループおよびロールのリストを動的に作成できます。
詳細は、第28.3.6項「タスク参加者の割当て方法」を参照してください。
ステージは、参加者タイプの各ブロックに対して承認プロセスを編成するための1方法です。1つ以上のステージを順番に、またはパラレルで指定できます。各ステージ内で、1つ以上の参加者タイプ・ブロックを順番に、またはパラレルで指定できます。
詳細は、第28.3.6項「タスク参加者の割当て方法」を参照してください。
割当て先が表示および更新できるタスクの部分を決定するアクセス・ルールを指定できます。たとえば、割当て先が読み取るタスク・ペイロード・データを構成できます。このアクションを使用できるのは、読取り権限のある割当て先のみです。割当て先を含め、書込み権限はありません。
詳細は、第28.3.11.1項「タスク・コンテンツへのアクセス・ポリシーの指定」を参照してください。
ヒューマン・ワークフローでは、宣言的に指定可能な詳細な動作がサポートされていますが、一部の高度な状況では、さらに拡張可能な動作が必要になる場合があります。このような拡張性はタスク・コールバックによって可能となり、これらのコールバックは、BPELプロセスまたはJavaクラスの起動時に処理できます。
詳細は、第28.3.14.1項「タスク・ステータスのコールバック・クラスの指定」を参照してください。
Oracle BPM Worklistには、タスク分析用の組込みレポートが複数用意されています。
不参加タスク
ユーザーのグループまたは報告先のグループに割り当てられたタスクの中で、まだ獲得されていないタスクが分析されます。
タスクの優先度
ユーザー、報告先またはそのグループに割り当てられたタスクが優先度に基づいて分析されます。
タスクのサイクル・タイム
ユーザーのグループまたは報告先のグループに基づいて、タスクの割当てから完了までの所要時間が分析されます。
タスクの生産性
ユーザー、報告先またはグループについて、特定期間中に割り当てられたタスク数と完了したタスク数が分析されます。
タスク時間分布
割当て先がタスクを実行するために要した時間が表示されます。
タスクの参加者が実行したアクションの監査証跡、およびワークフローの様々な時点におけるタスク・ペイロードと添付ファイルのスナップショットを表示できます。タスクの短い履歴には、次のタスクによって作成されたすべてのバージョンが表示されます。
タスクの開始
タスクの再開始
タスクの結果の更新
タスクの完了
タスクのエラー処理
タスクの期限切れ
タスクの取消し
エラー割当て先に対するタスクのアラート
詳細は、第30章「Oracle BPM Worklistの使用」を参照してください。
ヒューマン・ワークフロー・モデリングは、表27-1に示すように、3つのステージのモデリングで構成されています。
表27-1 ヒューマン・ワークフロー・モデリングのステージ
手順 | 説明 | 参照先 |
---|---|---|
1 |
ヒューマン・タスクのコンテンツは、ヒューマン・タスク・エディタで作成および定義します。これには、参加者タイプ、ルーティング・ポリシー、エスカレーションと有効期限のポリシー、通知などの定義が含まれます。 |
|
2 |
ヒューマン・タスク定義をBPELプロセスに関連付けます。BPELプロセスは、一連のアクティビティ(ヒューマン・タスク・アクティビティを含む)とサービスをエンドツーエンドのプロセス・フローに統合します。 |
第28.2.2項「ヒューマン・タスク定義とBPELプロセスの関連付け」 |
3 |
タスク・フォームを作成します。このフォームでは、実行時にOracle BPM Worklistで操作するタスクの詳細が表示されます。 |
|
この項では、ヒューマン・ワークフローのユースケースの概要を説明します。この項の後で、ヒューマン・タスク全体の設計をチュートリアルで説明します。
次の各項では、ワークフロー・サービスの複数のユースケースについて説明します。
休暇申請プロセスは、ユーザーから休暇の詳細を取得し、承認担当のマネージャにその申請をルーティングすることから開始されます。ユーザーの詳細と組織階層は、ユーザー・ディレクトリまたはアイデンティティ・ストアからルックアップできます。図27-3に、このシナリオを示します。
タスクは、「グループ投票」、「管理チェーン」または「承認者の順序リスト」参加者タイプの複数のユーザーを介してルーティングできます。たとえば、融資承認フローの一部として融資申請が考えられます。融資申請は、初めに融資エージェント・ロールに割り当てることができます。融資金額が$100,000を超えている場合は、特定の融資エージェントが融資を取得して承認した後で、さらに複数の管理レベルにその融資をルーティングさせることが可能です。図27-4に、このシナリオを示します。
これらのタイプをビルディング・ブロックとして使用することで、複雑なワークフローを作成できます。
カスタム・エスカレーション機能を使用すると、タスク・タイプに基づいて、優先度の高いタスクを特定のユーザーまたはロールに割り当てることができます。ただし、ユーザーが一定期間内にタスクを操作しない場合は、そのタスクを期限切れとし、追加アクションのためにマネージャにエスカレートできます。エスカレーションの一環として、電子メール、電話ボイス・メッセージまたはSMSでユーザーに通知することも可能です。同様に、マネージャは、様々なタスク割当て間で負荷を分散するために、ある報告先から別の報告先にタスクを委任できます。BPELで定義されるすべてのタスクには、関連する有効期限があります。また、図27-5に示すように、エスカレーション・ポリシーまたは期限更新ポリシーを指定する場合もあります。たとえば、ヘルプ・デスク・サービス・リクエストのプロセスの一部としてサポート・コールが考えられます。優先度の高いタスクを特定のユーザーに割り当て、そのユーザーが2日以内に対応しない場合、そのタスクは、追加アクションのためにマネージャにルーティングされます。
ユーザーは、自分のかわりに他のユーザーにタスクを実行させるように決定できます。タスクは、Oracle BPM Worklistから明示的または自動的に委任することができます。たとえば、マネージャは、自分が担当する高優先度のタスクを、休暇中はすべて自動的に直属の部下の1人にルーティングするという休暇ルールを設定します。タスクをその内容に基づいて別のユーザーにルーティングできる場合もあります。自動ルーティングのもう1つの例は、グループに属する複数のユーザー間でタスクを割り当てることです。たとえば、ヘルプ・デスクの監督者は、西部地域のすべてのタスクをラウンド・ロビン方式で割り当てたり、未処理タスクの最も少ないユーザー(最もビジーでない箇所)にタスクを割り当てるように決定します。
この項では、ヒューマン・タスクの初めての設計について説明します。
このサンプルでは、従業員が提出した休暇申請を承認のためにマネージャに自動的にルーティングする方法について説明します。マネージャが対応(承認または却下)すると、提出した従業員に通知が送信されます。
このサンプルでは、次の2つのコンポーネントを使用したSOAコンポジット・アプリケーションの作成について説明します。
BPELプロセス。
ヒューマン・タスク。従業員が提出した休暇申請を承認します。
この例は、次のツールの使用に特徴があります。
SOAコンポジット・エディタおよびヒューマン・タスク・エディタの使用
Oracle BPELデザイナを使用した単一承認ワークフローのモデリング
Oracle ADFベースのOracle BPM Worklistの作成
Oracle BPM Worklistを使用したタスクの表示および応答
このチュートリアルでは、次の内容を前提にしています。
Oracle SOA Suiteは、SOAインフラストラクチャが構成されているホストにインストールされています。
BPELアクティビティやパートナ・リンクなどの基本的なBPEL構成要素と、基本的なXPath関数について理解しているユーザーを対象にしています。このユーザーは、SOAコンポジット・エディタとOracle BPELデザイナ(BPELプロセスを設計およびデプロイするための環境)についても理解している必要があります。
次の構文を使用して、VacationRequest.xsd
というファイルを作成します。このファイルには、休暇申請と後続のレスポンスに対するスキーマが含まれています。
<schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/VacationRequest" xmlns="http://www.w3.org/2001/XMLSchema"> <element name="VacationRequestProcessRequest"> <complexType> <sequence> <element name="creator" type="string"/> <element name="fromDate" type="date"/> <element name="toDate" type="date"/> <element name="reason" type="string"/> </sequence> </complexType> </element> <element name="VacationRequestProcessResponse"> <complexType> <sequence> <element name="result" type="string"/> </sequence> </complexType> </element> </schema>
注意: VacationRequest.xsd ファイルは、チュートリアルworkflow-100-VacationRequestの一部としてダウンロードすることもできます。このチュートリアルと他のチュートリアルのダウンロードの詳細は、第27.3.3項「その他のチュートリアル」を参照してください。 |
このチュートリアルでは、新しいアプリケーションとSOAプロジェクトを作成し、承認または却下のために休暇申請をマネージャに送信するヒューマン・タスクを設計します。また、第2のアプリケーションとプロジェクトも作成します。このアプリケーションとプロジェクトでは、休暇申請を操作するためOracle ADFベースのタスク・フォームを作成します。
BPELプロセスを使用してアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
「ファイル」メイン・メニューから「新規」→「アプリケーション」→「SOAアプリケーション」の順に選択します。
「OK」をクリックします。
「アプリケーション名」フィールドにVacationRequest
と入力し、「次へ」をクリックします。
「プロジェクト名」フィールドにVacationRequest
と入力し、「次へ」をクリックします。
「コンポジット・テンプレート」リストで、BPELプロセスを使用するコンポジットを選択し、「終了」をクリックします。
「BPELプロセスの作成」ダイアログが表示されます。
「名前」フィールドに、VacationRequestProcess
と入力します。
「BPELプロセスの作成」ダイアログの下部に移動します。
「入力」フィールドの右側にある「検索」アイコンをクリックします。
「タイプ・チューザ」ダイアログが表示されます。
右上隅にある「スキーマ・ファイルのインポート」アイコンをクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
第27.3.2.1項「前提条件」で作成したVacationRequest.xsdファイルを参照して選択します。
図27-6に示すように、「タイプ・チューザ」ダイアログに戻るまで、「OK」をクリックします。
図27-6 リクエスト要素とレスポンス要素が表示された「タイプ・チューザ」ダイアログ・ボックス
入力要素の「VacationRequestProcessRequest」を選択して、「OK」をクリックします。
「BPELプロセスの作成」ダイアログに戻ります。
「出力」フィールドの右側にある「検索」アイコンをクリックします。
出力要素の「VacationRequestProcessResponse」を選択して、「OK」をクリックします。
図27-7に示すように、「BPELプロセスの作成」ダイアログに戻ります。
残りのすべての設定に対するデフォルト値をそのまま使用し、「OK」をクリックします。
図27-8に示すように、BPELプロセス・サービス・コンポーネントはSOAコンポジット・エディタに作成されます。「BPELプロセスの作成」ダイアログで「SOAPサービスとして公開」を選択したため、BPELプロセスはサービス・バインディング・コンポーネントに自動的に接続されます。このサービスでは、SOAコンポジット・アプリケーションが外部の顧客に公開されます。
サービス・コンポーネントおよびSOAコンポジット・エディタの詳細は、第2章「Oracle SOA Suiteを使用したSOAコンポジット・アプリケーションの開発」を参照してください。
ヒューマン・タスク・サービス・コンポーネントを作成し、そのコンポーネントでヒューマン・タスクを設計します。
ヒューマン・タスク・サービス・コンポーネントを作成する手順は、次のとおりです。
コンポーネント・パレットの「サービス・コンポーネント」セクションから、ヒューマン・タスクをSOAコンポジット・エディタにドラッグします。
「ヒューマン・タスクの作成」ダイアログが表示されます。
表27-2に記載されている詳細を入力します。
表27-2 「ヒューマン・タスクの作成」ダイアログのフィールドと値
フィールド | 値 |
---|---|
名前 |
|
ネームスペース |
デフォルトの値をそのまま使用します。 |
SOAPバインディングを持つコンポジット・サービスの作成 |
チェック・ボックスは選択しないでください。かわりに、ヒューマン・タスクを作成します。このヒューマン・タスクは、後で第27.3.2.2.1項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けます。このBPELプロセスは、自動的にバインドされたWebサービスを使用して作成されています。 |
「OK」をクリックします。
図27-9に示すように、BPELプロセスの上部にあるSOAコンポジット・エディタに、「ヒューマン・タスク」アイコンが表示されます。
「ヒューマン・タスク」アイコンをダブルクリックします。
ヒューマン・タスク・エディタが表示されます。ヒューマン・タスクの設計を開始します。
ヒューマン・タスクを設計する手順は、次のとおりです。
「タスクのタイトル」フィールドに、Request for Vacation
と入力します。
結果のデフォルト値(「APPROVE」および「REJECT」)をそのまま使用します。このタスクの場合、これらの結果は、休暇申請に対するマネージャの操作に2つの選択肢があることを示しています。
エディタの左側にある「データ」タブをクリックします。
「追加」アイコンをクリックして、タスク・ペイロードを指定します。
「文字列パラメータの追加」を選択します。
「タスク・パラメータの追加」ダイアログが表示されます。XSDファイル内の要素を表すパラメータを作成します。これにより、ペイロード・データがワークフロー・タスクで使用できるようになります。
「要素」を選択します。
「要素」フィールドの右側にある「検索」アイコンをクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」→「VacationRequest.xsd」→「VacationRequestProcessRequest」の順に開いて選択し、「OK」をクリックします。図27-10に詳細を示します。
「ワークリストにより編集可能」チェック・ボックスが選択されている必要があります。この選択によって、実行時にOracle BPM Worklistからこのパラメータを変更するオプションが提供されます。
「タスク・パラメータの追加」ダイアログで、「OK」をクリックします。
エディタの左側にある「割当て」タブをクリックします。
図27-11に示すように、「Stage1」の下部にある<Edit participant>ボックスがハイライト表示されます。
ヒューマン・タスク・エディタの上にある「編集」アイコンをクリックします。
「参加者タイプの編集」ダイアログが表示されます。このタスクに参加者を追加します。第27.2.1.1.2項「参加者タイプ」で説明したように、Oracle SOA Suiteには、特定のビジネス・ニーズに対応する参加者タイプと呼ばれる組込みパターンが複数用意されています。
「タイプ」リストに表示されている、デフォルトの参加者タイプの「単一」をそのまま使用します。休暇申請タスクを操作するのは単一の割当て先であるマネージャのため、このタイプを選択します。
「参加者名」表で、「追加」アイコンをクリックし、「ユーザーの追加」を選択します。
この参加者タイプは、タスクに対して単独で機能します。
「データ型」列をクリックし、表示されたリストから「式別」を選択します。図27-12に詳細を示します。
このアクションを使用すると、タスクのコンテンツによってタスクを動的に割り当てることができます。休暇申請を提出している従業員は、このタスクに渡されたパラメータ(第27.3.2.2.1項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」でインポートしたXSDファイル内のcreator
要素)から取得されます。このタスクは、その従業員のマネージャに自動的にルーティングされます。
「値」列で、「参照」アイコン(...)をクリックして、「式ビルダー」ダイアログを起動します。
「関数」セクションのドロップダウン・リストで、「Identity Service Functions」を選択します。
「getManager」を選択します。この関数によって、休暇申請タスクを作成したユーザーのマネージャが取得されます。
「関数」セクション上部にある「式に挿入」をクリックします。
関数のカッコ内にカーソルを置きます。
「スキーマ」セクションで、「task:task」→「task:payload」→「ns1:VacationRequestProcessRequest」→「ns1:creator」の順に展開します。
ここで、ns1はこの例のネームスペースであり、ユーザーのネームスペースとは異なる場合があります。
「式に挿入」をクリックします。
「式ビルダー」ダイアログの「式」セクションに、XPath式が表示されます。図27-13に詳細を示します。
「OK」をクリックして、「式ビルダー」ダイアログを閉じます。
「OK」をクリックして、「参加者タイプの追加」ダイアログを閉じます。
「ファイル」メニューから「すべて保存」を選択します。
ヒューマン・タスクを第27.3.2.2.1項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けます。
ヒューマン・タスクとBPELプロセス・サービス・コンポーネントを関連付ける手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「composite.xml」をダブルクリックします。
SOAコンポジット・エディタで、「VacationRequestProcess」BPELプロセス・サービス・コンポーネントをダブルクリックします。
BPELプロセスがOracle BPELデザイナに表示されます。
「コンポーネント・パレット」で、「SOAコンポーネント」を開きます。
「receiveInput」receiveアクティビティの下に、「Human Task」をドラッグ・アンド・ドロップします。
アクティビティをダブルクリックします。
「Human Task」ダイアログが表示されます。
「タスク定義」リストから、作成した「VacationRequestTask」タスクを選択します(現在表示されていない場合)。
ダイアログが図27-14に示すようにリフレッシュされ、他のフィールドが表示されます。
図27-15に示すように、「BPEL変数」列で「参照」アイコン(...)をクリックします。
「タスク・パラメータ」ダイアログが表示されます。
「タイプ」リストで「変数」を選択します。
「プロセス」→「変数」→「inputVariable」→「payload」→「ns1:VacationRequestProcessRequest」の順に展開します。図27-16に詳細を示します。
「OK」をクリックします。
完成すると、ダイアログは図27-17のようになります。
「OK」をクリックして「Human Task」ダイアログを閉じます。
図27-18に示すように、ヒューマン・タスク・アクティビティが表示されます。
SOAコンポジット・エディタに戻ります。BPELプロセス・サービス・コンポーネントとヒューマン・タスク・サービス・コンポーネントが自動的に接続されていることに注意してください。図27-19に詳細を示します。
「ファイル」メニューから「すべて保存」を選択します。
Oracle SOA Suiteがインストールされ、SOAインフラストラクチャで構成されたアプリケーション・サーバーへの接続を作成します。ここでは、Oracle WebLogic Serverへの接続を作成する方法について説明します。IBM WebSphere Serverなどの他のアプリケーション・サーバーへの接続を作成する方法は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。
アプリケーション・サーバー接続を作成する手順は、次のとおりです。
「ファイル」メイン・メニューから、「新規」→「接続」→「アプリケーション・サーバー接続」の順に選択します。
「OK」をクリックします。
「接続名」フィールドに、接続名を入力します。
「接続タイプ」リストで「WebLogic 10.3」を選択します。
「次へ」をクリックします。
「ユーザー名」フィールドに、weblogic
と入力します。
「パスワード」フィールドに、アプリケーション・サーバーに接続するためのパスワードを入力します。
「次へ」をクリックします。
SOAインフラストラクチャで構成されているアプリケーション・サーバーのホスト名を入力します。
「WebLogicドメイン」フィールドに、Oracle WebLogic Serverドメインを入力します。
「次へ」をクリックします。
「接続のテスト」をクリックします。
成功した場合は、図27-20に示すメッセージが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」を選択します。
接続を作成したアプリケーション・サーバーにデプロイします。
SOAコンポジット・アプリケーションをデプロイする手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「VacationRequest」プロジェクトを右クリックし、「デプロイ」→「VacationRequest」の順に選択します。
デプロイメント・ウィザードの各ページの指示に従い、プロジェクトをデプロイします。
プロジェクトがデプロイされます。
デプロイメントの詳細は、第41.7項「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
プロセス・インスタンスを開始する手順は、次のとおりです。
プロセス・インスタンスを開始する「Webサービスのテスト」ページへのアクセス方法は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
タスク・フォームのプロジェクトを作成します。これは、ヒューマン・タスクを作成したプロジェクトとは別のプロジェクトです。
タスク・フォームのプロジェクトを作成する手順は、次のとおりです。
「VacationRequestTask」ヒューマン・タスクをダブルクリックします。
ヒューマン・タスク・エディタが表示されます。
上部の「フォームの作成」メニューから、「タスク・フォームの自動生成」を選択します。図27-21に詳細を示します。
「プロジェクトの作成」ダイアログが表示されます。
「プロジェクト名」フィールドに、VacationRequestTaskFlow
と入力し、「OK」をクリックします。
「ファイル」メイン・メニューから「すべて保存」を選択します。
Oracle BPM Worklistでタスクを解決する手順は、次のとおりです。
次のURLを使用してOracle BPM Worklistに移動します。
http://hostname:7001/integration/worklistapp
Oracle BPM Worklistにログインします。
タスクを解決します。
タスク・フォームをデプロイする手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「VacationRequestTaskFlow」プロジェクトを右クリックし、「デプロイ」→「VacationRequestTaskFlow」の順に選択します。
デプロイメント・ウィザードの各ページの指示に従い、タスク・フォームをデプロイします。
タスク・フォームがデプロイされます。
デプロイメントの詳細は、第41.7項「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
Oracle BPM Worklistに戻ります。
Oracle BPM Worklistの下部に、タスク・フォームが表示されることに注意してください。
休暇申請のユースケースに加えて、他のチュートリアルも次のURLで取得できます。
https://soasamples.samplecode.oracle.com
表27-3に、複数のサンプルの概要を示します。すべてのサンプルは、ワークリスト・アプリケーションとワークフロー通知の使用を説明しています。サンプルの完全なリストについては、このURLを参照してください。
表27-3 エンドツーエンドの例
サンプル | 説明 | 名前 |
---|---|---|
デモ・コミュニティ・シード・アプリケーション |
デモ・コミュニティのシードを実行します。他のすべてのワークフロー・サンプルの前提条件となります。 |
workflow-001-DemoCommunitySeedApp |
休暇申請 |
承認または却下のため、マネージャに割り当てられる休暇申請を提出するサンプルを提供しています。また、このサンプルは、休暇申請のOracle ADFタスク・フォームを作成して、タスクを操作する方法を説明しています。 |
workflow-100-VacationRequest |
売上げ見積り要請 |
多重タスクに関連する複雑なワークフローのサンプルを提供しています。 |
workflow-102-SalesQuote |
契約承認 |
契約を承認するサンプルを提供しています。このサンプルは、タスクのデジタル署名を使用します。 |
workflow-104-ContractApproval |
反復設計 |
設計プロセスの中でワークフロー・タスクが割当て先との間を何度も通過できるサンプルを提供しています。拡張ルーティング・ルールでルーティング動作を実装します。 |
workflow-106-IterativeDesign |
ワークフロー・カスタマイズ |
ワークフロー・サービスAPI(タスク属性、ビュー名などのカスタム・リソース文字列など)にカスタマイズを実装する方法を示します。 |
workflow-110-workflowCustomizations |
MLSサンプル |
タスク・タイトルに複数の翻訳があるタスクの設定方法を示します。 |
workflow-114-MLSSample |
ワークフロー・イベント・コールバック |
ワークフロー・イベント・コールバックの使用方法を示します。タスク・ライフサイクル・イベントで生成されるワークフロー・イベントがOracle Mediatorによって使用されます。 |
workflow-116-WorkflowEventCallback |
ユーザー構成データ・マイグレータ |
ユーザー構成(ビュー、マップ済属性など)を、中間エクスポート・ファイルを介して、あるインスタンスから別のインスタンスに移動します。 |
workflow-117-UserConfigDataMigrator |
Javaサンプル |
Javaを使用してヒューマン・ワークフローと対話するサンプル各種を提供します。 |
workflow-118-JavaSamples |
この項では、ヒューマン・ワークフロー・アーキテクチャの概要を説明します。内容は次のとおりです。
タスクのライフ・サイクル中に様々な操作を実行するサービス。これには、ユーザーのタスクの問合せ、タスクに関連したメタデータ情報の取得などがあります。
ヒューマン・タスクは、次の2つの方法で使用します。
BPELプロセス・サービス・コンポーネントへの関連付け
スタンドアロン・モードでの使用
ヒューマン・タスクの期間におけるサービス・エンジンの役割。
リリース11g 以降、すべてのヒューマン・タスク・メタデータはメタデータ・サービス(MDS)リポジトリに保存されて管理されます。ワークフロー・サービスは、ビジネス・プロセスと人間の相互作用の様々な側面を処理する多数のサービスで構成されています。
図27-22は、次のワークフロー・サービス・コンポーネントを示しています。
タスク・サービスにより、タスク状態の管理およびタスクの永続性が提供されます。これらのサービスに加え、タスク・サービスでは、タスクの更新、完了、エスカレート、再割当てなどの操作が公開されます。タスク・サービスは、ユーザーに割り当てられているタスクを取得するためにOracle BPM Worklistで使用されます。また、このサービスでは、タスク状態が変化したときにユーザーやグループに通知を送信するかどうかも決定されます。タスク・サービスは、次のサービスで構成されます。
アイデンティティ・サービスは、Oracle WebLogic Server 11g のセキュリティ・インフラストラクチャまたはカスタム・ユーザー・リポジトリの上部に位置するWebサービスのシン・レイヤーです。これにより、ユーザーの認証および認可と、ユーザー・プロパティ、ロール、グループ・メンバーシップ、権限のルックアップが可能になります。
通知サービスは、電子メール、電話ボイス・メッセージ、IMおよびSMSのいずれかのチャネルを通じて、指定のユーザーに対して特定のコンテンツを含む通知を配信します。詳細は、第32.2項「ヒューマン・ワークフローからの通知」を参照してください。
ユーザー・メタデータ・サービスにより、ワークフロー・ユーザー関連のメタデータ(ユーザー作業キュー、プリファレンス、休暇、委任ルールなど)が管理されます。
ランタイム構成サービスは、タスク・サービスのランタイム環境で使用されるメタデータの管理メソッドを提供します。主に、タスク・ペイロード・マップ済属性マッピングの管理をサポートします。
エビデンス・サービス
エビデンス・サービスはデジタル署名されたワークフロー・タスクの保存と否認防止をサポートします。
図27-23は、サービスとビジネス・プロセス間の相互作用を示しています。
ヒューマン・タスクの使用方法には、次の2つがあります。
BPELプロセスへのヒューマン・タスクの関連付け
多くの場合、ヒューマン・タスクをBPELプロセスに関連付けます。BPELプロセスは、一連のアクティビティ(ヒューマン・タスク・アクティビティを含む)とサービスをエンドツーエンドのプロセス・フローに統合します。
スタンドアロンのヒューマン・タスク
SOAコンポジット・エディタでは、BPELプロセスに関連付けないスタンドアロン・コンポーネントとしてのヒューマン・タスクを作成することもできます。スタンドアロン・ヒューマン・タスク・サービス・コンポーネントは、アプリケーションで自動化されたアクティビティが必要のない環境で役に立ちます。スタンドアロンの場合、クライアントは独自にタスクを作成できます。
実行時、ヒューマン・タスク・サービス・コンポーネントのビジネス・ロジックおよび処理ルールは、ヒューマン・ワークフロー・サービス・エンジンによって実行されます。各サービス・コンポーネント(BPELプロセス、ヒューマン・ワークフロー、デシジョン・サービス(ビジネス・ルール)およびOracle Mediator)には、タスクを実行するための独自のサービス・エンジン・コンテナがあります。すべてのヒューマン・タスク・サービス・コンポーネントは、属しているSOAコンポジット・アプリケーションに関係なく、単一のヒューマン・タスク・サービス・エンジンで実行されます。
ヒューマン・ワークフロー・サービス・エンジンの構成、監視および管理の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。