https://blogs.oracle.com/bpmbestpractice/entry/bpm_adf_task_forms_checking
Focus
このエントリでは、ADFコンティストからBPMスイムレーンのロールやユーザに着目します。ADFTaskDetailフォームがあり、機能面でリッチでダイナミックにしようとしているところです。一般的な要件として、ワークスペースにログインしたユーザに基づいて、動的に異なる領域を表示する、というものがあります。おそらく、ユーザが属するスイムレーンのロールを知りたいのです。
トリックを知らなければ、思っている以上にこの要件を実現すること難しかったりします。
The Challenge
ここでのトリッキーな箇所はADF Task Detailsフォームが実際のところメインのワークスペースとは別のJava EEアプリケーションである、ということです。そのため、JavaやExpression Languageを使ってログインユーザを取得しようとすると、anonymousしかわからず、期待しているBPMロールは全く取得できません。どうしましょう?
The Magic
まず、BC4J SecurityライブラリをViewプロジェクトに追加します。
その後、JDeveloperを再起動します。
ADF Task DetailsアプリケーションのViewプロジェクトのweb.xmlで、JpsFilterセクションを探し、そこに以下のセクションを追加します。
これでアプリケーションをBPMワークスペースにリンクします。 その後、ADFフォームの動的な箇所で、BPMワークスペースにログインしたユーザが、任意のBPMプロセスのBPMスイムレーンに属しているか否かをチェックできます。このチェックの最善の方法は、JSFページでExpression Languageを使用することです。ここで単純にレンダリングフラグをtrueまたはfalseに変更すると、それによってセクションを隠したり表示したりします。 おそらく、承認者のスイムレーンと一般ユーザのレーンのタスクに同じフォームを再使用しているでしょう。 それだからこそ、承認者にこのフィールドを見てもらいたいのです。したがって、組み込みの機能を呼び出して、ユーザがBPMスイムレーンのロールに属しているかどうかを調べるのです。ロール名はBPMProject.RoleNameという形である必要があります。application.nameOracleBPMProcessRolesApp
ここまでできたら、ADF Task Formプロジェクトを再デプロイしましょう。
(上の画像の場合)ワークスペースにログインしているユーザがBPMプロジェクトSimpleTaskのUnsecureというスイムレーンのメンバーである場合に限り、Task Detailsフォームにテキストを表示します。
0 件のコメント:
コメントを投稿