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ワークスペースにリンクします。
<
init
-param
=
"-param"
>
<
param
-name
=
"-name"
>application.name<
param
-value
=
"-value"
>OracleBPMProcessRolesApp</
init
>

< af:outputtext rendered = "#{securityContext.userInRole=['BPMProjectName.Rolename']}" value = "This will only be rendered when the user is part of the BPM Swimlane Role" ></ af:outputtext > |

ここまでできたら、ADF Task Formプロジェクトを再デプロイしましょう。
(上の画像の場合)ワークスペースにログインしているユーザがBPMプロジェクトSimpleTaskのUnsecureというスイムレーンのメンバーである場合に限り、Task Detailsフォームにテキストを表示します。
0 件のコメント:
コメントを投稿