OIM11gでは、SOA BPELワークフローと組み合わせて複雑な承認ルールを定義することができます。また、例えば典型的なjoiner-mover-leaverのサイクルといったユーザーライフサイクルの管理も可能です。
それでは、ユーザーが退職したり、例えば、何らかの理由でアカウントが無効状態になった場合に、当該ユーザーが処理していない承認処理はどうなるのでしょうか。ここで問題になるのは、対処しない承認者を待値続けるという状態のまま、エンドユーザーの要求が止まってしまう、ということです。
ソリューション
イベント検知のためにOIM11gのイベントハンドラと、SOA Workflow Services APIを組み合わせて利用すれば、中退者のタスクを合意済みユーザーに再割り当てすることで、この問題に簡単に対処することができます。
SOA Workflow Services API
http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_worklistcust.htm#BHAHBHID
このJDeveloperプロジェクトはOIMの定期的なタスクを実装します。このタスクは、ロック状態のユーザをスキャンし、未処理の承認タスクを彼らの上司に再割り当てするというものです。スケジュールされたタスクのMDSデータはconfigディレクトリにあります。このタスクはのOracle® Fusion Middleware Developer's Guide for Oracle Identity Managerの[6 Developing Scheduled Tasks]に記載の通り、OIMにロードすることができます。
Oracle® Fusion Middleware Developer's Guide for Oracle Identity Manager
6 Developing Scheduled Tasks
http://download.oracle.com/docs/cd/E21764_01/doc.1111/e14309/refsched.htm#CIHBFCJG
ロック状態もしくは無効状態になった瞬間に再割り当てするイベントハンドラで使用しているテクニックを使うことができます。一旦ユーザが無効状態になると、承認タスクの再割り当てができませんので、ユーザが向こうになる前に再割り当てする必要があることに注意して下さい。
タスクはスケジュールされたタスクに対し、正規表現を使って一致するすべてのユーザーをスキャンします。ヒットした各ユーザについて、Workflow Services APIを使って、IWorkflowConstants.TASK_STATE_ASSIGNEDまたはIWorkflowConstants.TASK_STATE_INFO_REQUESTED状態にあるユーザに割り当てられているタスクを復旧します。これは現時点でアクティブなタスクの再割り当てのみに関心があるためです。getTasksForUser()メソッドを参照してください。OIMは、次のコードを使用してSOA環境からパラメータ(ユーザ名、パスワード、SOAのURL)を入手することができます。
対象ユーザに現在割り当てられている各タスクについて、reassignTask()メソッドを使って当該ユーザの上司にタスクを割り当てたり、上司が存在しない場合にはハードコードされたユーザを割り当てます。Workflow Services APIの鍵となる呼び出しがここで、wfCtxがワークフローコンテキストであり、taskSvcがタスクサービスへの参照であるということにご注意下さい。BPELConfig bpelConfig = Platform.getConfiguration().getBPELConfig();
サンプルコードでは、BPEL Configオブジェクトから、この再割り当てを行うために使用できるタスクサービスとワークフローコンテキストオブジェクトを回復する方法を確認できます。taskSvc.reassignTask(wfCtx, t.getSystemAttributes().getTaskId(), newAssignee);
結論
OIM11gを使うと、ユーザのライフサイクルイベントを迅速に検知し、対応することができます。ユーザがロックされたり、無効になったり、削除されたりしても、実行中のあらゆるビジネスプロセスが継続実行することを保証します。
参考資料
- SOA Workflow Services Developers Guide
http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_worklistcust.htm#BHAHBHID (Worklist APIの利用例) - Worklist Services APIを利用するには、以下のJarファイルが必要です。JDeveloperから利用するために、[ヘルプ]>[更新の確認]を使ってSOA Extensionをインストールして下さい。
- soa/modules/oracle.soa.fabric_11.1.1/bpm-infra.jar
- soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar
- soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
- oracle_common/modules/oracle.xdk_11.1.0/xml.jar
- oracle_common/modules/oracle.xdk_11.1.0/xmlparserv2.jar
- SOA Workflow Services API Javadoc
http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e10660/index.html?oracle/bpel/services/workflow/task/ITaskService.html
原文はこちら。
http://blogs.oracle.com/robsayin/entry/reassigning_leaver_tasks_in_oim11g
0 件のコメント:
コメントを投稿