ヘッダーをスキップ
Oracle Workflow APIリファレンス リリース2.6.3.5 部品番号: B15622-01
|
通知後関数
通知アクティビティに対して、1つの通知後関数を関連付けることができます。ワークフロー・エンジンでは、通知の配信後に、通知のステータス更新に応じて通知後関数が実行されます。たとえば、通知の受信者が通知を転送して譲渡したときに、通知後関数が実行されるように指定できます。 通知後関数をバックエンド・ロジックで実行し、転送や譲渡が適切かどうかを検証したり、他にサポートしているロジックを実行することもできます。
通知後関数はPL/SQLプロシージャの一種で、関数アクティビティで必要な標準APIと同じものを使用して記述されています。 『Oracle Workflow開発者ガイド』の関数アクティビティがコールするPL/SQLプロシージャの標準APIに関する項を参照してください。
通知後関数を指定すると、ワークフロー・エンジンでは、最初にコンテキスト情報が設定されます。この情報は、次の2種類のグローバル・エンジン変数を介して、関数で使用されます。 通知後関数がコールされるモードによって、変数の値は異なる場合があります。
- WF_ENGINE.context_nid: 通知ID。RUNモードまたはTIMEOUTモードでは、通知アクティビティの「ロールの拡張」プロパティがオンになっている場合、この変数にはロールの個々のメンバーに送信された通知の通知グループIDが含まれます。
- WF_ENGINE.context_user: 通知のステータスの更新処理を実行する職責を持つユーザー。
- RESPOND、FORWARD、TRANSFER、QUESTIONまたはANSWERモードでは、ユーザーが自分で処理を行った場合、通知インタフェースに応じてWF_ENGINE.context_userの値が異なります。 ユーザーが「通知の詳細」Webページを介して処理を行った場合、WF_ENGINE.context_userはログインしたユーザーのユーザー名に設定されます。 受信者が電子メールを介して処理を行った場合、この変数は'email:'<email_address>に設定されます。
- RESPOND、FORWARD、TRANSFER、QUESTIONまたはANSWERモードでは、ユーザーがワークリスト・アクセス機能を使用してそのユーザーの「ワークリスト」Webページにアクセスし、別のユーザーのかわりに処理を行った場合、WF_ENGINE.context_userはそのワークリストが属する別のユーザーのユーザー名に設定されます。
- RUNまたはTIMEOUTモードでは、WF_ENGINE.context_userは通知アクティビティの実行者として割り当てられたロールに設定されます。
- WF_ENGINE.context_user_comment: 通知に追加されたコメント。
- RESPONDモードでは、通知に特殊なWF_NOTE Respondメッセージ属性が定義されている場合、この変数は、その属性に入力されたコメントに設定されます。
- FORWARDまたはTRANSFERモードでは、この変数は、通知が再割当されたときに入力されたコメントに設定されます。
- QUESTIONモードでは、この変数は、詳細の要求が発行されたときに入力された要求詳細に設定されます。
- ANSWERモードでは、この変数は、詳細の要求に応答して指定された応答情報に設定されます。
- WF_ENGINE.context_recipient_role: 通知の受信者として現在指定されているロール。 この値は、WF_ENGINE.context_user変数の値と同じになるか、またはコンテキスト・ユーザーがメンバーになっているグループ・ロールになります。
- WF_ENGINE.context_original_recipient: 通知の所有権および職責を持つロール。 通知が以前に再割当されている場合、この値は、WF_ENGINE.context_recipient_role変数の値と異なる場合があります。
- WF_ENGINE.context_from_role: 通知の「From」ロールとして現在指定されているロール。 「From」ロールが指定されていない場合、この変数はNULLになります。
- RESPONDモードでは、「From」ロールはNULLになるか、またはワークフロー・プロセスの特別なロジックによって設定されます。 『Oracle Workflow開発者ガイド』の#FROM_ROLE属性に関する項を参照してください。
- FORWARDまたはTRANSFERモードでは、「From」ロールは通知を再割当したロールになります。
- QUESTIONモードでは、「From」ロールは、詳細の要求を送信したロールになります。
- ANSWERモードでは、「From」ロールは、応答情報を送信したロールになります。
- WF_ENGINE.context_new_role: 通知に対する処理が送信される新しいロール。
- RESPONDモードでは、この変数はNULLです。
- FORWARDまたはTRANSFERモードでは、この変数は、通知が再割当される新しい受信者ロールに設定されます。
- QUESTIONモードでは、この変数は、詳細の要求が送信されるロールに設定されます。
- ANSWERモードでは、この変数は、詳細の要求を送信し、応答を受信するロールに設定されます。
- WF_ENGINE.context_more_info_role: 最新の詳細の要求が送信されたロール。 この通知に対してこのような要求が以前に発行されていない場合、この変数はNULLになります。
- WF_ENGINE.context_user_key: 通知がワークフロー・プロセスの一部として送信され、このプロセス・インスタンスにユーザー・キーが設定されている場合、WF_ENGINE.context_user_keyはそのユーザー・キーに設定されます。 それ以外の場合、この変数はNULLです。
- WF_ENGINE.context_proxy: RESPOND、FORWARD、TRANSFER、QUESTION、またはANSWERモードでは、その処理を行ったユーザーが、ワークリスト・アクセス機能を使用して別のユーザーのかわりに処理を行った場合、WF_ENGINE.context_proxyの値は、ログインして処理を行ったユーザー名になります。 それ以外の場合、この変数はNULLです。
これらのグローバル・エンジン変数は、PL/SQL関数内で参照できます。
注意: RUNモードおよびTIMEOUTモードでは、WF_ENGINE.context_nidおよびWF_ENGINE.context_user変数のみが設定されます。
注意: Oracle Workflowの以前のバージョンのWF_ENGINE.context_text変数は、WF_ENGINE.context_userおよびWF_ENGINE.context_new_role変数に置換されます。 下位互換性を保つため、Oracle Workflowの現行バージョンでもWF_ENGINE.context_text変数は認識されますが、将来的にも、該当する場合は新しいWF_ENGINE.context_userおよびWF_ENGINE.context_new_role変数のみを使用するようにしてください。
通知のステータスが変わると、通知のコールバック関数は、通知のステータス(RESPOND、FORWARD、TRANSFER、QUESTIONまたはANSWER)と一致するモードで通知後関数を実行します。
受信者が応答すると、ワークフロー・エンジンは最初にVALIDATEモードで通知後関数を実行します。これにより、応答を受け入れる前に応答値を検証できます。 次に、ワークフロー・エンジンはRESPONDモードで通知後関数を実行して、応答を記録します。 最後に、通知システムがRESPONDモードで通知後関数の実行を終了すると、ワークフロー・エンジンは自動的にその通知後関数をRUNモードで再実行します。 このモードでは、通知後関数で投票集計のような追加の処理を実行できます。
通知アクティビティがタイムアウトになると、ワークフロー・エンジンはそのアクティビティの通知後関数をTIMEOUTモードで実行します。投票アクティビティの場合、TIMEOUTモードのロジックでは、タイムアウトになるまでに受け取った投票の集計方法を識別する必要があります。
通知後関数が完了すると、2つのグローバル・エンジン変数は無効になります。
最終手順として、通知後関数がTRANSFERモードで実行され、通知アクティビティの「ロールの拡張」がオフになっている場合は、その通知に割り当てられているユーザーが指定の新規ロール名に設定されます。
注意: 通知後関数でERROR:<errcode>が戻されるか、例外が発生すると、ワークフロー・エンジンは処理を中止します。 たとえば、通知後関数をFORWARDモードで実行した場合に、転送先のロールが不正なために例外が発生すると、エラーが表示され、転送処理を実行できなくなります。通知の受信者は、もう一度なんらかの処理を行うように要求されます。
関連項目
通知モデル
Copyright © 2003, 2004, Oracle. All rights reserved.