実行中タスクのビューや変数コンテキストと相互に作用するインタフェースを定義するには、Identity Manager のフォームを使用します。フォームには、データ要素のセットにビジネスロジックと変換ロジックに使用する実行コンテキストがあります。各種タスクを実行する非常に強力で動的なフォームを作成できるとはいえ、フォームの複雑さを抑えれば効率が上がります。
次に、カスタマイズしたフォームのパフォーマンスを向上させる方法をいくつか説明します。
Identity Manager の新しいフォームを設計する際、システムインテグレーターは次の手順に従えばフォームのパフォーマンスを最適化できます。
管理者フォームのパフォーマンスを向上させるには、次の項目を実行します。
TargetResources を指定して、特定のリソースのみを取得して編集します。(詳細は、「ワークフローのチューニング」を参照してください。)
FormUtil.getResourceObjects または FormUtil.listResourceObjects を使用している場合は、変更頻度の低いオブジェクトに cacheList と cacheTimeout のキャッシュパラメータを使用します。
時間の掛かる計算とフェッチの結果は <Field> 要素に格納し、<Default> にある式で評価することで、演算が一度だけ行われるようにします。
update.constraints を使用して、実行時に取得されるリソースを制限します (『Sun Identity Manager Deployment Reference』の「Dynamic Tabbed User Form」を参照してください)。
バックグラウンドの承認を使用 (ManualAction の各所有者に 1 秒のタイムアウトを設定) して、ページ送信の高速化を図ります。
選択したパネルにかかわらず、ページの再読み込み時に Identity Manager が「タブパネルフォーム」のすべてのパネルに定義されているすべてのフィールドを必ず更新するようにしてください。
エンドユーザーフォームのパフォーマンスを向上させるには、次の項目を実行します。
TargetResources を使用して、ビューのチェックアウトを対象となるリソースアカウントのものだけに制限します。これにより、ビューのフェッチ時間が短縮され、TaskInstance と WorkItems で消費されるメモリーが少なくて済むようになります。
Identity Manager のユーザーオブジェクトのビュープロパティーと属性だけが対象となっている場合、WSUser を返す際に Session.getObject(Type, name) の使用を検討します (複数の延期タスクのトリガーの管理に役立ちます)。
通常はエンドユーザーのタスクの方がプロビジョニングタスクよりも WorkItems が多いため、エンドユーザーのタスクはWorkItem サイズに特に影響を受けやすくなります。
「ビュー」をチェックアウトして構築し、編集したあとでビュー全体にマージし直してチェックインする際には、一時的な汎用オブジェクトを使用することを検討します。
デフォルトの「ユーザーの作成」と「ユーザーの編集」インタフェースを使用する代わりに、スケーラブルフォームを使用するようにします。
ユーザーを編集する際にデフォルトのユーザーフォームを使用すると、ユーザーのアカウントを編集し始めた時点で Identity Manager はそのユーザーが所有しているリソースを取得します。多数のリソースを抱えるユーザーアカウントがある配備環境では、この時間の掛かりがちな操作によってパフォーマンスが低下する危険性があります。
フォームで実行される動作の中には、Identity Manager 外部のリソースを呼び出すものがあります。特にグループリストや電子メール配信リストのコンパイルなど、結果の値が長いリストになるような外部リソースへのアクセスは、Identity Manager のパフォーマンスに影響を与えることがあります。
このような呼び出し中のパフォーマンスを向上させるには、『Sun Identity Manager Deployment Reference』の「Java クラスを使用したフィールドデータの取得」のガイドラインに従ってください。
また、<Disable> 式のようなパフォーマンスに影響を受けやすい式で JavaScriptTM を使用するのは避けてください。組み込まれたトレース機能を使用する場合は、短い XPRESS 式の方がデバッグしやすいです。ワークフローアクションの複雑なロジックには JavaScript を使用します。
フォームの表示速度が低下した場合、debug/Show_Timings.jsp ページで問題を見つけ出すことができます。Formconvert.convertField() への呼び出しを探してください。これで、フィールドごとにその値の計算にどれくらい時間が掛かっているかがわかります。