![]() | |
Sun Java™ System Identity Manager 7.1 配備ツール |
第 1 章
Identity Manager IDE の使用Identity Manager Integrated Development Environment (Identity Manager IDE) とは、使用している配備で Sun JavaTM System Identity Manager (Identity Manager) オブジェクトを表示、カスタマイズ、およびデバッグできる Java アプリケーションのことです。
ここでは、Identity Manager IDE の使用方法について説明します。この章で説明する内容は次のとおりです。
概要Identity Manager IDE は、ご使用の環境で、オブジェクトをグラフィカルに XML ベースで表示します。このアプリケーションを使用して次のタスクを実行できます。
この節の残りの部分では、Identity Manager IDE の全般的な高レベルの概要を説明します。
主な機能
Identity Manager IDE によって提供される主な機能は、次のとおりです。
- プロジェクトのプロジェクトベース、ディレクトリベース、または実行時の表示が可能な統合されたエクスプローラウィンドウ
- Identity Manager IDE プロジェクトが設定ビルド環境 (CBE) と統合されている
- ドキュメント変更のためのアクションメニュー
- カスタムエディタ。次のものがあります。
- フォーム、規則、およびワークフローのための統合されたデバッガ
- スタンドアロンおよびライブラリの規則を確認するための規則テスター
- 外部ブラウザ内でフォームをテストするためのフォームテスター
- Identity Manager ビュー (ユーザービューなど) をチェックアウト、変更、チェックインできるビューのチェックアウト機能
- CVS の統合
BPE と比較した場合の Identity Manager IDE
Identity Manager IDE は、完全に統合された NetBeans プラグインで、Identity Manager のビジネスプロセスエディタ (BPE) アプリケーションに代わるよう設計されています。Identity Manager IDE には、BPE と比べて次の利点があります。
- 配備のベストプラクティスにより近づきます。次のことが可能です。
- エディタ、パレット、デバッガ、およびナビゲーションにプラットフォームサポートを提供します
- XML 要素および属性にコード補完を適用することにより、未完コードを削減します。
- コンテキスト情報が提供され、統合ツールを使用することにより、編集が容易になります。
注
BPE は現在も下位互換性のサポート対象です。
BPE の使用方法の詳細については、次を参照してください。付録 A 「ビジネスプロセスエディタの使用方法」
Identity Manager IDE のインストールここでは、Identity Manager IDE アプリケーションのインストールと設定の手順を説明します。
注
Identity Manager のプロジェクトが version 7.1 リリースで大幅に変更されたため、version 7.1 の .nbm は、JDK 1.5 と NetBeans 5.5 を必要とします。したがって、version 7.0 の .nbm で作成されたすべてのプロジェクトをアップグレードする必要があります。手順については、「version 7.0 プロジェクトのアップグレード」を参照してください。
開始する前に
Identity Manager IDE を実行するには、次のものが必要になります。
version 7.0 プロジェクトのアップグレード
7.0 の .nbm から 7.1 の .nbm にアップグレードするには、次の手順を実行する必要があります。
- JDK インストールを JDK 1.5 にアップグレードします。
- 現在の NetBeans インストールを NetBeans 5.5 にアップグレードします。
- Identity Manager 7.1 の .nbm を NetBeans 5.5 インストール内にインストールします。
- 新しい Identity Manager プロジェクトを作成します。
ここでは、必要に応じて「通常」、「リモート」のいずれかのプロジェクトを作成できます。これらのプロジェクトタイプの詳細については、「プロジェクトとは何か」を参照してください。
- 古いプロジェクトの objects ディレクトリの内容を、新しいプロジェクトの src/objects ディレクトリにコピーします。
モジュールのインストール
Identity Manager IDE は、NetBeans に登録する必要のあるモジュールプラグインとしてパッケージ化されています。モジュールをインストールして登録するには、次の手順に従います。
- NetBeans 5.5 を開始します。
- NetBeans メニューバーで、「Tools」>「Update Center」の順に選択します。
- アップデートセンターウィザードが表示されたら (図 1-1)、「Install Manually Downloaded Modules」を選択して、「Next」をクリックします。
図 1-1 モジュールの場所を選択
- 「Select Modules to Install」パネル (図 1-2) で「Add」をクリックし、Identity Manager IDE NetBeans プラグインファイル (com-sun-idm-ide.nbm) を特定して選択します。このファイルは、Identity Manager の image ディレクトリ内にあります。
図 1-2 インストールするモジュールの指定
- 「Next」をクリックすると、「Select Modules to Install」パネルが表示されます。「Next」を再度クリックしてモジュールをダウンロードします。
- Identity Manager IDE 使用許諾契約書が表示されたら、「Accept」をクリックします。
- 「Download Modules」パネルが表示され、ダウンロード中のモジュールの状態が表示されます。「Next」をクリックします。
- 「View Certificates and Install Modules」パネルが表示され (図 1-3)、ダウンロードしたモジュールが一覧で示されます。モジュール名の横にあるチェックボックスを有効にします。
図 1-3 証明書を表示するモジュールの選択
- 署名のないモジュールをインストールするかどうかを確認するポップアップが表示されます。
- 「Finish」をクリックします。
NetBeans は Identity Manager IDE モジュールをインストールします。
これで、次の作業が可能になります。
Identity Manager IDE インタフェースの操作Identity Manager IDE のインタフェース (図 1-4 に示す) は、IdM メニュー (NetBeans のトップレベルメニューバー上に配置) と、次の各ウィンドウで構成されています。
図 1-4 Identity Manager IDE ユーザーインタフェース
この節では、IdM メニューと Identity Manager IDE の各ウィンドウを紹介します。説明する内容は次のとおりです。
IdM メニュー
Identity Manager IDE アプリケーションのインストールと設定が完了すると、IdM メニューが NetBeans のトップレベルメニューバーから利用可能になります。
IdM メニューを使えば、NetBeans Explorer で現在選択されているノードが何であれ、そのノードに適したアクションを選択できます。次に例を示します。
表 1-1 では、IdM メニューのすべてのオプションについて説明します。
ヒント
- IdM メニューのほとんどのオプションは、プロジェクトツリー内のオブジェクトを右クリックしたときに表示されるポップアップメニューからも選択可能です。
- これらの IdM オプションの使用方法に関する追加情報については、「組み込みリポジトリの管理」、「リポジトリオブジェクトの操作」、および「Identity Manager IDE デバッガの操作」の各節を参照してください。
表 1-1 IdM メニューのオプション
選択
実行されるアクション
Repository > Explore
「Explore Repository」ウィンドウを開き、Identity Manager IDE リポジトリの内容を参照できるようにします。1 つ以上のオブジェクトを選択したあと、次の操作を行えます。
Repository > Open Object
あるオブジェクトをエディタウィンドウ内で開きます。
注: ローカルファイルシステム上のオブジェクトしか開けません。リポジトリからまだダウンロードされていないオブジェクトを開こうとすると、Identity Manager IDE によって自動的に、そのオブジェクトがローカルファイルシステムにダウンロードされ、その後にそのオブジェクトがエディタ内で開かれます。
Repository > Checkout View
編集のためにユーザービューなどの特定のビューをリポジトリからチェックアウトします。
Repository > Upload Objects
ローカルファイルシステムのオブジェクトをリポジトリにアップロードします。詳細については、こちらを参照してください。
Repository > Diff Objects
ローカルファイルシステムのあるディレクトリ内のすべてのオブジェクトを、リポジトリ内の対応するオブジェクトと比較します。
Identity Manager IDE は、そのディレクトリ内のすべてのオブジェクトに対する差分処理をファイルシステム内で下方に再帰的に繰り返したあと、ローカルとリモートの XML コードを構文強調表示と行番号付きで左右に並べて比較します。
Repository > Manage Embedded Repository
注: このメニューオプションは、Identity Manager Project (Remote) の場合や独自のリポジトリを指定する場合は使用できません。
「Manage Embedded Repository」ダイアログを開きます。このダイアログでは、現在のプロジェクトに対する次のリポジトリ設定を変更できます。
- Repository Location: 別のリポジトリ場所を指定します。
- Initialize Repository: これが有効になっていると、Identity Manager IDE は既存のデータファイルを削除し、idm.war から init.xml ファイルをインポートします。単にリポジトリの場所をすでに初期化された別のリポジトリに変更する場合には、このオプションを有効にしないでください。
- Automatically Publish Identity Manager Objects: これが有効になっていると、ユーザーがプロジェクトを実行またはデバッグするたびに、Identity Manager IDE はプロジェクト内のすべての Identity Manager オブジェクトをリポジトリに自動的にアップロードします。
Repository > Reload Object
現在のプロジェクト内のオブジェクトを、リポジトリにある同じオブジェクトの新しいバージョンで置き換えるまたは上書きします。
Run LH command
Identity Manager IDE 内から lh コマンド (lh console や lh setup など) を実行します。
Set Identity Manager Instance
「Set Identity Manager Instance」ダイアログを開きます。このダイアログでは、ある特定のプロジェクトのコンテキストで次のアクションをどの Identity Manager インスタンスに適用するかを制御できます。
Debug Project
Repository > Explore
Repository > Open Project
Checkout View
Upload Object(s)
Diff Object(s)
Reload Object
Test Form
Test Rule詳細は、「Identity Manager インスタンスの設定」を参照してください。
Clear Credentials Cache
ユーザーが「Remember Password」オプションを有効にしている場合に Identity Manager IDE が記憶しているパスワードが削除されます。
Options
- Identity Manager IDE がリポジトリからオブジェクトをダウンロードする前に、自動生成されたリポジトリ ID のうち、指定された表現に一致するものをすべて削除します。ただし、ハードコードされた定義済みの ID は削除されません。
この機能は、あるリポジトリから別のリポジトリにオブジェクトを移動する場合に役立ちます。- 「Exclude lastModDate」、「Exclude Ids」、または「Apply pattern substitution」オプションを有効または無効にすることで差分オプションを指定します。オブジェクトの差分処理の詳細については、「差分オプションの使用」を参照してください。
Test Form
ブラウザ内でフォームをテストします。
Test Rule
スタンドアロンおよびライブラリの規則に対して行なった変更を検証します。
エクスプローラウィンドウ
エクスプローラウィンドウは Identity Manager IDE の右上にあり、次の 3 つのウィンドウで構成されています。
プロジェクトウィンドウ
プロジェクトウィンドウは、Identity Manager IDE を開いたときにエクスプローラ内にデフォルトで表示され、開いているすべてのプロジェクトを垂直な論理ビューで示します。
プロジェクトノードを展開すると、プロジェクト内の次の XML オブジェクトが階層ビューで示されます。
XML オブジェクトを構成するほとんどの要素も、プロジェクトツリーのノードで表されます。
注
デフォルトでは、オブジェクトノードは、XML オブジェクト内と同じ順序でプロジェクトツリー内に表示されます。ただし、「Change Order」、「Insert Before」、「Insert After」、「Move Up」、または「Move Down」ポップアップメニューオプションを使えば、ツリー内 (および XML オブジェクト内) でのそれらの順序を変更できます。これらのオプションについては、表 1-2 を参照してください。
図 1-5 に、さまざまなトップレベルの XML ファイル、およびいくつかの変数ノード、ライブラリノード、規則ノード、および引数ノードを示します。
図 1-5 プロジェクトウィンドウ
このウィンドウで任意のノードを右クリックすると、そのノードに関係する各種タスクの実行を可能にするオプションを含む、ポップアップメニューが表示されます。
注
メニューオプションのいくつかは NetBeans アプリケーションによって提供されていますが、このマニュアルではそれらのオプションについては説明しません。
それらのオプションについては、NetBeans のオンラインヘルプや製品マニュアルを参照してください。
表 1-2 に、Identity Manager IDE に関係するポップアップメニューオプションの概要を示します。
ファイルウィンドウ
ファイルウィンドウを選択してノードを展開すると、プロジェクトウィンドウでは表示されないファイルやフォルダを含め、プロジェクトがディレクトリベースで表示されます。
プロジェクトビルドスクリプトやプロパティーファイルなどのプロジェクト設定ファイルを、開いたり、編集したりすることができます。
実行時ウィンドウ
実行時ウィンドウは、DTD および XML スキーマカタログの下にある Identity Manager カタログ (waveset.dtd) に読み取り専用アクセスする場合に選択します。
エディタウィンドウ
エディタウィンドウにはツールバーと表示エリアがあり、デザインビューとソースエディタビューでオブジェクトを操作できます。
- デザインビュー: このビューは、次のものを操作する場合に使用します。
- 規則オブジェクトを操作するための式ビルダー。追加情報については、「規則のデザインビュー」を参照してください。
- ワークフロープロセスおよびワークフローサブプロセスオブジェクトのグラフィカル表現。追加情報については、「ワークフローのデザインビュー」を参照してください。
- ソースエディタビュー: このビューは、オブジェクトの XML ソースを操作する場合に使用します。
追加情報については、「ソースエディタビュー」を参照してください。ツールバー上のほかのボタンは、どちらのビューを選択したかに応じて変わります。
注
パレットウィンドウからエディタウィンドウには、項目をドラッグすることができます。たとえば、次のようにします。
項目をデザインビューにドラッグすると、プロジェクトおよびファイルの両方のビューの XML ソースとノードツリーが更新されます。詳細については、「パレットウィンドウ」を参照してください。
規則のデザインビュー
この節では、規則とワークフローのデザインビューエディタについて説明します。
規則のデザインビューエディタは、規則の論理構造を確認したり規則のプロパティーを変更したりしやすくするための式ビルダー (図 1-6) を提供します。
図 1-6 規則のデザインビューの例
ある規則をデザインビューで開くには、その規則をプロジェクトウィンドウでダブルクリックするか、その規則のノードを選択してから「Design」ボタンをクリックします。
式ビルダーを使用する手順については、「「Expression Builder」ダイアログの使用」を参照してください。
ワークフローのデザインビュー
ワークフローのデザインビューエディタにはワークフローが図示され (図 1-7)、図中の各ノードは特定のプロセスアクティビティーを、線は遷移を表現します。
図 1-7 ワークフローのデザインビューの例
ワークフローのデザインビューを操作するには、あるワークフローをプロジェクトウィンドウでダブルクリックするか、そのワークフローのノードを選択してから「Design」ボタンをクリックします。
デザインビューでは、ツールバーを使用して次のタスクを実行できます。
これらのボタンに加え、ワークフローセレクタメニューを使用して (このツールバーにも用意されている)、デザインビューでワークフローやワークフローのサブプロセスを選択して作業できます。
ワークフローをデザインビューで編集すると、ワークフローライブラリから読み込まれる項目が、パレットウィンドウに表示されます。これらの項目をパレットからドラッグしてデザインビューにドロップし、図の中にアクティビティーノードを作成することができます。このとき、プロジェクトビューとファイルビューの XML ソースとノードツリーも更新されます。詳細については、「パレットウィンドウ」を参照してください。
ソースエディタビュー
ソースエディタは完全な機能を備えたテキストエディタであり、選択されたオブジェクトのフィルタリングされていない XML を表示します。さらに、ソースエディタは、エクスプローラプロジェクトウィンドウおよびデバッガと統合されています。
ソースエディタビューを開くには、次のいずれかを実行します。
表 1-4 では、ソースエディタビューで提供されるツールバーボタンについて説明しています。各タスクのキーボードショートカットも示しています。
表 1-4 ソースエディタビューのツールバーボタン (およびショートカット)
使用するボタン
実行されるタスク
![]()
「Back」 (Alt+K) および「Forward」 (Alt+L): これらのボタンをクリックすると、「Source Editor」ウィンドウで行なった直前の編集に戻るか、または次の編集に進みます。
![]()
これらのボタンを使用して、カーソルの挿入ポイントを次のように移動します。
![]()
これらのボタンを使用して、次のように機能をオンまたはオフに切り替えます。
![]()
「Next Bookmark」 (F2) および「Previous Bookmark」 (Shift+F2): これらのボタンをクリックすると、XML ソース内の次のブックマークまたは直前のブックマークを検出します。
![]()
「Next Matching Word」 (Ctrl+L) および「Previous Matching Word」 (Ctrl+K): XML ソース内で単語を選択してからこれらのボタンをクリックすると、その単語の次または直前の出現を検出します。
![]()
「Shift Line Left」 (Ctrl+D) および「Shift Line Right」 (Ctrl+T): これらボタンをクリックすると、選択した行のインデントがタブ一段分減少または増加します。
![]()
「Start Macro Recording」 (Ctrl+J S) および「Stop Macro Recording」 (Ctrl+J E): これらのボタンをクリックして、キーストロークやカーソルの移動を含む、マクロの記録を開始または停止します。
![]()
これらのボタンを使用して、次のように XML ソースを検査または妥当性検査します。
- 「Check XML」 (Alt+F9): このボタンをクリックすると、オブジェクトの XML が正しく整形式であるかを検査します。出力ウィンドウには XML ソースのエラーが特定され、通常はソースエディタ内のその行へのハイパーリンクが提供されて、問題を訂正することができます。
- 「Validate XML」 (Alt+Shift+F9): このボタンをクリックすると、オブジェクトの XML を DTD に対して妥当性検査します。妥当性検査情報は出力ウィンドウに表示され、通常はソースエディタビュー内の特定の行に移動するハイパーリンクが提供されます。このリンク先で XML を表示または修正できます。
ソースエディタ内でブレークポイント (プロセス実行内での個別の停止ポイント) を設定するには、XML タグのすぐ横の左マージンをクリックします。たとえば、<WFProcess...> タグの横のマージンをクリックすると、ワークフローの開始位置にブレークポイントを設定できます。
図 1-9 にブレークポイントの例を示します。
図 1-9 ブレークポイントの例
パレットからのドラッグ
編集のためにオブジェクトを選択すると、パレットウィンドウ (こちらを参照) が通常 Identity Manager IDE の右上に、ワークフローライブラリおよび XPRESS カテゴリの項目とともに自動的に表示されます。項目を「Palette」からソースエディタの行にドロップして、XML ソース内のそのポイントに XML テキストを作成できます。
呼び出しの挿入
ソースエディタで開かれた XML ファイル内で右クリックすると、次の挿入オプションを含むポップアップメニューが表示されます。
いずれかのオプションを選択すると「Insert Invoke」ダイアログが開くので、そこで次の情報を指定します。
図 1-10 に、JavaDoc が表示された「Insert Invoke」ダイアログの例を示します。
図 1-10 JavaDoc を含む「Insert Instance Invoke」ダイアログの例
「OK」をクリックすると、Identity Manager IDE によって、XML ソース内のその位置に XML テキストが自動生成されます。
注
ワークフローのプロセスまたはサブプロセスを操作している場合、単純な計算を実行したり Java クラスや JavaScript を呼び出して複雑な処理を行なったりするために、「アクション」式を追加できます。
パレットウィンドウ
パレットウィンドウ (図 1-11 など) を使えば、XML を入力することなしに、エディタウィンドウ内に表示された電子メールテンプレート、フォーム、汎用オブジェクト、ライブラリ、ワークフロープロセス、またはワークフローサブプロセスオブジェクトに要素を「ドラッグ&ドロップ」できます。
図 1-11 Delete User オブジェクトのパレットウィンドウの例
たとえば、フィールドをフォームオブジェクトにドラッグしたり、規則をライブラリオブジェクトにドラッグしたり、ワークフローサービス、承認、ユーザー、およびワークフロータスクをワークフロープロセスやワークフローサブプロセスオブジェクトにドラッグしたりできます。
プロジェクトツリーでオブジェクトをダブルクリックすると、パレットウィンドウが通常は Identity Manager IDE の右上に表示され、次のように編集ビューの種類に応じてさまざまな要素にアクセスできるようになります。
項目をいずれかのエディタウィンドウにドラッグすると、XML ソース、プロジェクト/ファイルビュー内のノードツリーの両方が更新されます。
注
オブジェクトに要素を追加したあと、プロジェクトツリー内および XML オブジェクト内におけるそれらの要素の順序を、各種ポップアップメニューオプションを使って変更できます。「Change Order」、「Insert Before」、「Insert After」、「Move Up」、「Move Down」の各オプションについては、表 1-2 を参照してください。
プロパティーウィンドウ
Identity Manager IDE のプロパティーウィンドウは、電子メールテンプレート、フォーム、汎用オブジェクト、ライブラリ、規則、ワークフロープロセス、およびワークフローサブプロセスオブジェクトに関連付けられた XML 要素に対応する、1 枚のプロパティーシートから構成されます。このプロパティーシートを使えば、オブジェクト名、ファイルサイズ、変更時刻、結果情報など、選択されたオブジェクトのプロパティーを表示および編集できます。
次のいずれかの方法で、プロパティーウィンドウを開きます。
プロパティーウィンドウが開いているときに、オブジェクトノードをダブルクリックしてウィンドウの内容を更新することができます。
図 1-12 プロパティーウィンドウの例
注
プロパティーシートを使ってオブジェクトの XML 要素を変更する手順については、「オブジェクトの編集」を参照してください。
ヒント
プロパティーウィンドウを使用しない方法として、ツリー内でオブジェクトノードを右クリックし、ポップアップメニューから「Properties」を選択する方法があります。表示される「Properties」ダイアログには、プロパティーウィンドウの場合と同じオブジェクトプロパティーシートが含まれます。
出力ウィンドウ
出力ウィンドウには、Identity Manager IDE がデバッグ中にエラーを検出したときに返すメッセージが表示されます。このメッセージには通常、エラーの原因となったソースコードの行へのハイパーリンクが含まれます。
出力ウィンドウはデバッガを実行すると自動的に開きますが、メインメニューバーで「Window」>「Output」の順に選択して開くこともできます。
図 1-13 出力ウィンドウの例
デバッガウィンドウ
Identity Manager IDE デバッガは、Java デバッガと BPE に備わっているデバッガの両方に似ています。コード内で行、グローバル、ビュー、またはフォームサイクルにブレークポイントを設定し、デバッガを開始して XML 内でコードを停止することができます。
さらに、Identity Manager IDE デバッガは、規則テスターおよびフォームテスターと統合されているほか、ウォッチポイントを追加して特定の変数の値を表示できるようにもなっています (これらの機能についてはこの章で後述する)。
デバッガには、XML ソースのトラブルシューティングに便利な次のウィンドウが提供されています。
ブレークポイントウィンドウ
ブレークポイントウィンドウには、現プロジェクトに設定したすべてのブレークポイントが、ブレークポイントの簡単な説明およびブレークポイントが現在有効か無効かを示すブール型フラグとともに一覧表示されます。
メインメニューバーで「Window」>「Debugging」>「Breakpoints」の順に選択すると、ブレークポイントウィンドウが開きます。
図 1-14 ブレークポイントウィンドウの例
ブレークポイントウィンドウで「Enabled」プロパティーを変更することにより、ブレークポイントを有効化または無効化できます。
呼び出しスタックウィンドウ
デバッガを実行すると、Identity Manager IDE は自動的に呼び出しスタックウィンドウを起動します。
デバッガがブレークポイントに達すると、スレッドがブレークポイントに到達するまでに実行した一連の呼び出しである実行スタックが、呼び出しスタックウィンドウに表示されます。XPRESS では、これらの呼び出しは BLOCK や CASE などの XPRESS 操作です。
追加の関数が呼び出しチェーンに出現する場合、これらの関数は順番に一覧表示されます。このリストはスタックトレースと呼ばれ、リストにはプログラムのライフサイクルのその時点での実行スタックの構造が表示されます。
注
呼び出しスタックウィンドウを閉じるかまたは別の理由でこのウィンドウが利用できなくなった場合は、メインメニューバーから「Window」>「Debugging」>「Call Stack」の順に選択することで、もう一度ウィンドウを開くことができます。
ローカル変数ウィンドウ
ローカル変数ウィンドウには、デバッガがブレークポイントで停止したときに、現時点の実行範囲内にあるすべての変数がリストされます。変数は、次のタイプの値を表します。
デバッグがアクティブでないときや、実行がブレークポイントで停止していないときは、ローカル変数ウィンドウは空白になります。
現在の要素が XPRESS 終了タグである場合、デバッガを停止すると、最後の評価の結果がローカル変数ウィンドウに表示されます。この評価値は、最後の値が意味を持つ他のタグにも適用されます。たとえば、Identity Manager が <Argument> タグをワークフローサブプロセスに対して評価すると、引数値がローカル変数ウィンドウに表示されます。
ウォッチポイントウィンドウ
デバッガでは、ウォッチポイントを使用でき、デバッガ実行時に変数や式の値に加えられる変更を追跡することができます。有効な XPRESS 式であれば、ウォッチポイントになります。
ウォッチポイントを指定すると、プロジェクトをデバッグするときに監視対象になるすべての変数、式、タイプ、および値がウォッチポイントウィンドウに一覧表示されます。このリストには、XML ソース内のオブジェクトタイプに移動するハイパーリンクが含まれている場合もあります。
デバッガを起動すると、Identity Manager IDE はウォッチポイントウィンドウを自動的に起動します。または、メインメニューバーから「Window」>「Debugging」>「Watches」の順に選択することもできます。
キーボードショートカットの使用
NetBeans を使用することにより、Identity Manager IDE ではさまざまなキーボードキーの組み合わせを使って、コマンドを実行したり、Identity Manager IDE 内でナビゲートしたりすることができます。次の操作が可能です。
使用可能なキーボードショートカットの詳細な説明、およびそれらの使用手順については、オンラインヘルプを参照してください。
Identity Manager IDE プロジェクトの操作Identity Manager IDE を効果的に使用するには、Identity Manager IDE プロジェクトの一部の基本的な概念について理解することも必要です。ここでは、次の内容を説明します。
プロジェクトとは何か
「プロジェクト」とは、ある配備のすべてのカスタマイズを制御するソースファイル (JSP、Java、および Identity Manager オブジェクト) やビルドスクリプトなどのコレクションのことです。
プロジェクトは特定のリポジトリに関連付けられます。複数のプロジェクトを 1 つのリポジトリに関連付けることは可能ですが、1 つのプロジェクトにつき 1 つのリポジトリにしか関連付けられません。
Identity Manager IDE 向けに次のいずれかのタイプのプロジェクトを作成できます。
プロジェクトの作成
新規プロジェクトを作成するには、次の手順に従います。
- 「File」>「New Project」の順に選択します。
- 新規プロジェクトウィザードが表示されたら (図 1-15)、「Categories」リストから「Web」を選択して、作成するプロジェクトのタイプを指定します。
図 1-15 新規プロジェクトウィザード: カテゴリの指定
- 「Projects」リストから、次のサンプル Identity Manager プロジェクトの 1 つを選択します。
- 完了したら、「Next」をクリックします。
- 完全なプロジェクトを選択した場合は、「Identity Manager プロジェクトの作成」の節に進んでください。
- リモートプロジェクトを選択した場合は、「Identity Manager Project (Remote) の作成」の節に進んでください。
Identity Manager IDE は、さまざまなバージョンのサーバーと連携動作するようになりました。
各 Identity Manager IDE プロジェクトはある特定の Identity Manager バージョンに関連付けられるため、Identity Manager IDE では、互換性バンドル (Identity Manager JAR ファイルと、バージョン固有の情報を含むいくつかの XML レジストリを提供する ZIP ファイル) が、サポートされている Identity Manager バージョンごとに必要となります。
<Identity Manager のインストールルート>/sample/ide-bundle.zip
注
現時点では、複数の Identity Manager バージョンを同じプロジェクトから管理することはできません。別のバージョンのサーバーに対して、単純なデバッグを実行したり単純な調整を施したりする必要がある場合には、そのサーバー用に別のリモートプロジェクト (こちらを参照) を作成します。
また、Identity Manager IDE を使って既存のプロジェクトを新しいバージョンにアップグレードすることもできません。このタスクは、次のようにして手動で実行する必要があります。
Identity Manager プロジェクトの作成
完全なプロジェクトの作成を完了するには、次の手順を実行します。
- プロジェクトのデフォルトの名前、場所、および Identity Manager プロジェクトの格納先となるフォルダを含む「Name and Location」パネルが表示されます。
- 「Identity Manager WAR File Location」画面が表示されたら、Identity Manager の idm.war ファイルへのパスを指定したあと、「Next」をクリックします。
図 1-17 新規プロジェクトウィザード: WAR ファイルの場所の指定
- 「Repository Setup」画面 (図 1-18) が表示されたら、次のいずれかのリポジトリ設定オプションを選択します。
- 組み込みリポジトリを Identity Manager IDE に作成させる場合は、「Create Embedded Repository」オプションを有効にし、手順 4 に進みます。
注
「Create Embedded Repository」を選択すると、Identity Manager IDE によって、デフォルトの「sandbox」CBE ターゲットに対する組み込みリポジトリが作成されます。
追加のターゲットを指定した場合、その追加ターゲットに対して 「Manage Embedded Repository」も選択するか、あるいは lh setup または setRepo コマンドを実行する必要があります。
- 既存のリポジトリを別のプロジェクトから再利用する場合には、「Skip Repository Setup」オプションを有効にし、「リポジトリの手動設定」の手順に進みます。
図 1-18 新規プロジェクトウィザード: リポジトリの設定
- 組み込みリポジトリのデータファイル用のディレクトリを指定します。
- 既存のデータファイルを削除し、idm.war から init.xml ファイルをインポートするには、「Initialize Repository」を有効にします。
- プロジェクトを実行またはデバッグするたびにプロジェクト内のすべての Identity Manager オブジェクトをリポジトリに自動的にパブリッシュするには、「Automatically Publish Identity Manager Objects」を有効にします。
- 「Finish」をクリックします。
Identity Manager IDE がリポジトリの設定を行なっている間、「Creating Project」ダイアログが表示されます。Identity Manager IDE がデータファイルを削除し、init.xml ファイルをインポートするため、この処理には多少の時間がかかります。
ダイアログが閉じると設定が完了し、BUILD SUCCESSFUL というメッセージが Identity Manager IDE の出力ウィンドウに表示されます。
エクスプローラウィンドウで「Files」タブを選択し、トップレベルのノードを展開すれば、新しいプロジェクトに関連付けられたファイルを確認できます。
注
新しいプロジェクトを作成すると、Identity Manager IDE によって自動的に、README.txt ファイルが作成されます。
プロジェクトのファイルシステムの詳しい概要を表示する (あるいは別の CBE で動作するようにプロジェクトの構造を変更する) には、ファイルウィンドウで README.txt をダブルクリックします。すると、エディタウィンドウに情報が表示されます。
リポジトリの手動設定
Identity Manager でサポートされている任意のタイプのリポジトリを使用するようにプロジェクトを設定することができます。
注
リポジトリの手動設定は、現在選択されている CBE ターゲットのリポジトリに影響を与えます。詳細は、「Identity Manager インスタンスの設定」を参照してください。
設定手順はリポジトリのタイプごとに異なるため、次の例は、そのプロセスを示すために提供されたものです。
MySQL リポジトリを設定するには、次の手順を実行します。
- mysqljdbc.jar をプロジェクトの custom/WEB-INF/lib ディレクトリにコピーします。
- Identity Manager IDE のプロジェクトウィンドウで、project name を右クリックし、ポップアップメニューから「Run LH Command」を選択します。
- 「Enter LH Command to Run」ダイアログが表示されたら、「LH Command」フィールドに setup と入力したあと、「OK」をクリックします。
出力ウィンドウの下に「Input」フィールドが表示され、いくつかの概要情報を含む Sun 設定ウィザードが表示されます。
- 情報を読み終わったら、「Next」をクリックします。
- 「Locate the Repository」画面が表示されたら、次の情報を入力したあと、「Next」をクリックします。
- 「Setup Demo?」画面が表示され、デモ環境の設定を継続するかどうかを尋ねられます。「No, I will configure Identity Manager myself」をクリックしてから「Next」をクリックします。
- 「Save Configuration」画面が表示されたら、「Execute」をクリックすることで、init.xml ファイルのインポートと Identity Manager 設定の保存を行います。
- インポートが完了したら、「Done」をクリックします。
Identity Manager Project (Remote) の作成
リモートプロジェクトの作成を完了するには、次の手順を実行します。
- プロジェクトのデフォルトの名前、場所、および Identity Manager プロジェクトの格納先となるフォルダを含む「Name and Location」パネルが表示されます。
- 接続先サーバーのバージョンに対応する IDE 互換性バンドルを指定したあと、「Next」をクリックします。
リモートプロジェクトの場合、IDE 互換性バンドルファイルは <Identity Manager のインストールルート>/sample/ide-bundle.zip 内に格納されています。
図 1-20 新規プロジェクトウィザード: IDE 互換性バンドルファイルの場所の指定
- 「Identity Manager Server Settings」画面 (図 1-21) が表示されたら、次の情報を入力して開発用 Identity Manager インスタンスへの接続方法を定義したあと、「Finish」をクリックします。
- 「Host」 - プロジェクトが実行されているホストの名前を入力します。
- 「Port」: ディレクトリサーバーが待機する TCP ポートの番号を入力します。
Identity Manager IDE で接続を開くときに SSL を使用する場合は、「Secure Connection」ボックスを有効にします。
- 「Context Path」: Identity Manager インストールのコンテキストルート (/idm など) を入力します。
- 「User」: 管理者のユーザー名を入力します。
- 「Password」: 管理者のパスワードを入力します。
Identity Manager IDE がパスワードを記憶して、将来のセッションでパスワードが自動的に入力されるようにする場合は、「Remember Password」ボックスを有効にします。
図 1-21 新規プロジェクトウィザード: サーバー設定の指定
- 「Finish」をクリックします。
既存プロジェクトの選択
既存のプロジェクトを開くには、次の手順に従います。
- 「File」>「Open Project」の順に選択します。
- 「Open Project」ダイアログが表示されたら (図 1-22)、使用するプロジェクトフォルダを参照して「Open Project Folder」をクリックします。
図 1-22 「Open Project」ダイアログ
すでに 1 つまたは複数のプロジェクトが開かれている場合は、右上の「Open as Main Project」チェックボックスがアクティブになります。
- このプロジェクトをメインプロジェクトとして指定する場合は、このボックスを有効にします。
- 「Open Project Folder」をクリックすると、選択したプロジェクトがエクスプローラウィンドウに追加されます。
Identity Manager インスタンスの設定
ある特定のプロジェクトのコンテキストで次のアクションをどの Identity Manager インスタンスに適用するかを制御するには、「Set Identity Manager Instance」機能を使用します。
「Set Identity Manager Instance」ダイアログ (図 1-23) を開くには、次のいずれかの方法を使用します。
プロジェクトの接続設定の確認
プロジェクトの外部接続設定を表示するには、「Identity Manager Instance」の次のオプションのいずれかを有効にします。
現在の CBE ターゲットの設定
すべてのビルドアクション (「Build Project」、「Run Project」、および「Debug Project」) に対する現在の CBE ターゲットを指定するには、次の手順に従います。
- 「Current CBE Target」メニューからターゲットを選択します。
注
選択されたターゲットは、各 *-target.properties ファイル内の %%CUSTOM_SERVER_REPOSITORY%% を指定することで、どのリポジトリが使用または設定されるかも制御します。
たとえば、CBE ターゲットを dev に設定し、「IdM」>「Repository」>「Manage Embedded Repository」の順に選択した場合 (あるいは「IdM」>「Run LH Command」の順に選択し、setRepo または setup と入力した場合)、Identity Manager IDE は dev-target.properties 内を検索して %%CUSTOM_SERVER_REPOSITORY%% を取得しますが、その内容は nbproject/private/dev-ServerRepository.xml です。次に Identity Manager IDE は、nbproject/private/dev-ServerRepository.xml を指定されたリポジトリに設定します。
- 1 つ以上のファイルをリポジトリにアップロードするたびに、<target-name>.properties 内で定義されたパターン置換を Identity Manager IDE に適用させる場合は、「Apply Pattern Substitutions on File Upload」ボックスを有効にします (ここで、target-name は「Current CBE Target」で選択されたターゲットである)。
ターゲットが複数存在する場合のこの機能がどのように動作するかを確認するために、次のようにして、2 つのリポジトリを使って 2 つのターゲットを作成します。
- 新しい (フル機能版の) Identity Manager プロジェクトを作成し、「Repository Setup」画面が表示されたら「Create Embedded Repository」を選択します。
- 「Finish」をクリックすることで、リポジトリを作成し、現在のターゲットを「sandbox」に設定します。
- アプリケーションサーバーを起動します。
「Projects」タブからプロジェクトノードを右クリックし、メニューから「Run Project」を選択します。
- Identity Manager のブラウザが開いたらログインし、sandbox-user という名前のユーザーを作成します。
アカウントの作成後に「List Accounts」タブを選択すると、sandbox-user が表示されるはずです。
- アプリケーションサーバーを停止します。
Identity Manager IDE の「Runtime」タブから「Servers」ノードを展開し、「Bundled Tomcat」を右クリックしたあと、ポップアップメニューから「Stop」を選択します。
- サーバーが停止したら、Identity Manager IDE の「Projects」タブに戻ってプロジェクトノードを右クリックし、「Set Identity Manager Instance」を選択します。
- 「Set Identity Manager Instance」ダイアログが表示されたら、「Current CBE Target」を dev に変更したあと、「OK」をクリックします。
- プロジェクトのクリーンアップを確認するプロンプトが表示されたら、「Yes」を選択します。
- 次に、dev ターゲット用のリポジトリを作成します。
- 出力ウィンドウに BUILD SUCCESSFUL メッセージが表示されたら、プロジェクトノードを右クリックし、「Run Project」を選択します。
NetBeans のログに、Preparing image for environment target: dev と記録されます。
- Identity Manager にログインし、dev-user という名前の新しいユーザーを作成します。
ここで「List Accounts」タブを選択すると、新しい dev-user が表示されるはずですが、sandbox-user は表示されません。
- 元の sandbox ターゲットに切り替えます。
- Identity Manager にログインし、「List Accounts」を選択すると、sandbox-user が利用可能になっていることがわかります。
組み込みリポジトリの管理現在のプロジェクトに対する次のリポジトリ設定を変更するには、「IdM」>「Repository」>「Manage Embedded Repository」の順に選択します。
注
組み込みリポジトリの管理は、現在選択されている CBE ターゲットのリポジトリに影響を与えます。詳細は、「Identity Manager インスタンスの設定」を参照してください。
- Repository Location: 別のリポジトリ場所を指定します。
- Initialize Repository: これが有効になっていると、Identity Manager IDE は既存のデータファイルを削除し、idm.war から init.xml ファイルをインポートします。
既存のプロジェクトのリポジトリを再利用する場合は、このオプションを無効にしてください。
- Automatically Publish Identity Manager Objects: これが有効化されると、ユーザーがプロジェクトを実行またはデバッグするたびに、Identity Manager IDE はプロジェクト内のすべての Identity Manager オブジェクトをリポジトリに自動的にアップロードします。
リポジトリオブジェクトの操作Identity Manager IDE では、BPE の場合のように直接リポジトリ内で作業するのではなく、ローカルファイルシステム上でリポジトリオブジェクトを操作できます。
ここでは、次の内容を説明します。
サポートされているオブジェクトタイプ
Identity Manager IDE では、次のオブジェクトタイプを操作できます。
- 設定オブジェクト: フォームとワークフロープロセスを含む持続オブジェクト。
- 電子メールテンプレート: さまざまな変更やアクションの通知をユーザーや管理者に送信するために使用されるテンプレート。たとえば、保留中のリクエストを承認者に通知したり、パスワードがリセットされたことをユーザーに通知したりするために、電子メールテンプレートを使用することができます。
- フォーム: Web ページに関連付けられ、ブラウザでユーザー表示属性をそのページにどのように表示するかについての規則が含まれているオブジェクト。フォームにはビジネスロジックを組み込むことができ、通常は、ユーザーに表示する前に、表示データを処理するために使用します。
- 汎用オブジェクト: 名前と値のペアの単純なコレクションなどのビューを表すために通常使用されるオブジェクト。汎用オブジェクトは、タイプ <Object> の <Extension> を取ります。
- ライブラリ: 密接に関連するオブジェクト (通常は規則) をリポジトリで単一オブジェクトに編成するために使用されるオブジェクト。オブジェクトをライブラリに編成することで、ワークフローやフォームの設計者は、有用なオブジェクトを識別しやすくなります。
- メタビュー: Identity Manager において、メタビューはすべてのリソースの統合画面であり、一群のリソースを表示し、リソース上の属性がどのようなフローで処理されるかを表示するための共通データモデルを提供します。
- 規則: XPRESS、XML オブジェクト、または JavaScript 言語で作成された関数を含む Identity Manager リポジトリ内のオブジェクト。Identity Manager 内では、規則は頻繁に使用されるロジックや、フォーム、ワークフロー、およびロール内で再利用される静的な変数を格納します。
- ワークフロープロセス: ワークフローは論理的で反復可能なプロセスであり、ドキュメント、情報、またはタスクが、ある関与者から別の関与者に渡されます。Identity Manager ワークフローは、アカウントの作成、更新、有効化、無効化、および削除を管理する複数のプロセスで構成されています。
- ワークフローサブプロセス: ワークフローに組み込むワークフローサブプロセスを作成するために使用するオブジェクト。
ビューのチェックアウト
Identity Manager IDE を使用することにより、編集のためにユーザービューなどの特定のビューをリポジトリからチェックアウトできます。
注
通常は、ビューのチェックアウト機能を使用してユーザーを更新しないでください。ビューの動作を理解する助けとして、この機能を紹介しているにすぎません。Identity Manager のユーザーを更新するには、Identity Manager Web インタフェースを使用します。
ビューをチェックアウトするには、次の手順に従います。
Identity Manager IDE で、ビューのコンテンツがツリー形式で開かれます。
編集後に、ほかの XML オブジェクトと同様に、ビューを右クリックしてリポジトリにチェックインします。
リポジトリからのオブジェクトの取得
Identity Manager IDE を使用することの利点の 1 つは、リポジトリの外でオブジェクトをダウンロードおよび変更できることです。また、必要であれば、リポジトリからオブジェクトを再読み込みし、ローカルファイルシステム上で変更したオブジェクトをそのオブジェクトで置き換えることもできます。
この節では、リポジトリからオブジェクトを取得するための方法をいくつか説明します。具体的には次のとおりです。
オブジェクトのダウンロード
リポジトリからローカルファイルシステムへ初めてオブジェクトをダウンロードする場合は、次の手順に従ってください。
- 「Custom Identity Manager Objects」ノードを右クリックし、「Repository」>「Explore」の順に選択すると、「Explore Repository」ダイアログが表示されます (図 1-24)。
図 1-24 「Explore Repository」ダイアログ
- ノードを展開してリポジトリ内のオブジェクトを参照し、ダウンロードするオブジェクトをツリーから選択します。
- 「Download」をクリックします。
選択したオブジェクトノード、およびオブジェクト内の個々の要素を表す子が、Identity Manager IDE によってエクスプローラ内の「Custom Identity Manager Objects」ツリーに追加されます。子ノードをダブルクリックすると、その XML 要素がエディタ内に、そのプロパティーシートがプロパティーウィンドウ内に、それぞれ表示されます。
オブジェクトを開く
ローカルファイルシステム上で開くオブジェクトの名前がすでにわかっている場合には、「Open Objects」オプションを使って大量のオブジェクト (リポジトリなど) の中から単一のオブジェクトをすばやく探してダウンロードします。
「Open Objects」オプションを使用するには、次の手順に従います。
- IdM メニューから「IdM」>「Repository」>「Open Object」の順に選択します (あるいは、「Custom Identity Manager Objects」ノードを右クリックし、「Open Object」を選択する)。
「Open」ダイアログが表示されます。
- このダイアログ上のオプションを使ってオブジェクトの検索条件を指定します。
- Object Type: 検索するオブジェクトのタイプを選択します。
注
「Common Configuration Object Types」がデフォルトで選択されますが、これを使えば、デフォルトでシステム内に読み込まれるすべての設定オブジェクト (設定、電子メールテンプレート、フォーム、汎用オブジェクト、ライブラリ、規則、ワークフロープロセス、およびワークフローサブプロセス) を検索できます。
一般に、異なるオブジェクトタイプを検索したり、検索結果が最大結果数を超えたりしないかぎり、オブジェクトタイプを変更する必要はありません。
- Object Name: オブジェクト名の一部または全部をこのテキストフィールドに入力します。
オブジェクト名としてアスタリスク (*) を指定すれば、リポジトリ内の特定タイプのすべてのオブジェクトにアクセスできます。
オブジェクト名の入力を始めると、一致する項目のリストが「Matching Objects」フィールドに表示されます。新しい文字を入力するたびに、表示される結果が絞られていきます。たとえば、「Create User」の一部として Creat と入力すると、多数の結果が表示されます (例については図 1-25 を参照)。
Create のようにエントリをさらに入力すると、条件がより具体的になるため、結果が絞られます。
図 1-25 「Open Object」ダイアログ
- Case Sensitive: 「Object Name」フィールドに一致するオブジェクト名を検索する際に、大文字と小文字を区別する制約を加える場合に、このボックスを有効にします。
- 「Matching Objects」リストから開くオブジェクトを選択したあと、「Open」をクリックするかEnter キーを押すと、Identity Manager IDE 内でそのオブジェクトが開きます。
オブジェクト参照を開く
プロジェクトツリー内でノードを右クリックすると、特定の参照 (ObjectRef、FormRef、FieldRef、Workflow Subprocess など) の参照先となっているオブジェクトを開くことができます。ツリー内でオブジェクトを表現するオブジェクトノードを右クリックすると、ポップアップメニューから「Open object name」(ここで、object name はそれぞれ Reference、Form、Field、External Process のいずれか) を選択できます。
たとえば、Default User Library オブジェクト参照を Tabbed User Form に追加するには、次の手順に従います。
- Tabbed User Form をダウンロードし、「Includes」ノードが表示されるまでノードを展開します。
- 「Includes」ノードを右クリックし、「Add an Object Reference」を選択します。
ローカルファイルシステム上にまだオブジェクト参照が存在していないので、「Add Object Reference」ダイアログが表示されます。
- あるオブジェクトを参照して選択することも、「Name」フィールドにオブジェクト名を直接入力することもできます。Default User Library オブジェクトを選択してから「OK」をクリックすると、その新しいオブジェクトがツリー内の「Includes」ノードの下に追加されます。
- ここで、新しい Default User Library オブジェクト参照ノードを右クリックして「Open Reference」を選択すると、Identity Manager IDE によって、Default User Library オブジェクト参照のフォームがダウンロードされ、その XML ソースがソースエディタ内で開かれます。
- ソースエディタ内のオブジェクト参照フォームを閉じます。
- オブジェクト参照ノードを再度右クリックし、Default User Library 参照を開きます。
Default User Library フォームがソースエディタ内で開かれますが、このフォームはすでにローカルファイルシステム上に存在しているため、ダウンロードされることはありません。
オブジェクトの再読み込み
現在のプロジェクト内のオブジェクトを、リポジトリにある同じオブジェクトの新しいバージョンで置き換えるまたは上書きするには、次の手順に従います。
選択したオブジェクトノード、およびオブジェクト内の個々の要素を表す子が、エクスプローラに表示されます。子ノードをダブルクリックして、ノードの XML 要素に移動し、要素をプロパティーシートに表示することができます。
オブジェクト ID の削除
あるリポジトリから別のリポジトリへのオブジェクトの移動が容易に行えるよう、リポジトリからオブジェクトをダウンロードする前に自動生成されたすべてのリポジトリ ID を削除するように Identity Manager IDE を設定することができます。
Identity Manager IDE は指定された表現に一致するすべてのオブジェクト ID とオブジェクト参照 ID を検索して削除しますが、その際、ハードコードされた定義済みの ID が削除されることはありません。
この機能を設定するには、次の手順に従います。
リポジトリへのオブジェクトのアップロード
新規または変更したオブジェクトをローカルファイルシステムからリポジトリにアップロードするには、次の手順に従います。
オブジェクトの自動アップロード
新しいプロジェクトを作成するときに、「Automatically Publish Identity Manager Objects」オプションを有効にすることができますが、これを有効にすると、プロジェクトを実行またはデバッグするたびに、Identity Manager IDE によってすべての Identity Manager オブジェクトがリポジトリに自動的にアップロードされます。
手順については、「Identity Manager プロジェクトの作成」を参照してください。
プロジェクトの作成後にこのオプションを有効にするには、「Manage Embedded Repository」ダイアログ (「IdM」>「Repository」>「Manage Embedded Repository」) を使用します。
CBE パターン置換の使用
Identity Manager IDE では、組み込みまたは外部の Identity Manager インスタンスにオブジェクトをアップロードする際に、CBE (設定ビルド環境) パターン置換ファイルを使用できます。
メインメニューバーから「IdM」>「Set Identity Manager Instance」の順に選択すると、「Set Identity Manager Instance」ダイアログが表示されます。「Apply Pattern Substitutions on File Upload」を有効にすると、1 つ以上のオブジェクトをアップロードするたびに、target-name.properties (ここで、target-name は「Current CBE Target」で選択されたターゲット) 内に定義されたパターン置換が適用されます。
たとえば、sandbox-target.properties はデフォルトのターゲットであり、%%SMTP_HOST%%=mail.xyzcompany.com を定義しています。ユーザーは、sandbox-target.properties 内の mail.xyzcompany.com を自身の SMTP サーバーの名前で置き換えたあと、Identity Manager オブジェクトファイル内で %%SMTP_HOST%% 変数を必要に応じて使用できます。
新しいオブジェクトの作成
プロジェクトに新規オブジェクトを作成するには、次の手順に従います。
Identity Manager IDE は、選択されたオブジェクトタイプノードの下の子として、新しいオブジェクトをツリーに追加します。また、新規オブジェクトの XML ソースがソースエディタビューに表示されます。
注
Identity Manager IDE では、各 XML ソースファイルにただ 1 つのオブジェクトだけが含まれていることを前提にしています。
そのため、複数のオブジェクトを含む XML ファイルを使用すると (wfresource.xml サンプルなど Identity Manager とともに配布されているファイルを含む)、オブジェクトはプロジェクトウィンドウにノードとして表示されず、パレット内で使用可能になりません。さらに、そのコンテキストメニューには Identity Manager IDE アクションが一切含まれません。
しかし、これらの XML ファイルをプロジェクトの「Objects」ディレクトリに配置すると、Identity Manager IDE はそれらのファイルをプレーンテキストとして扱うため、「File」ツリーで表示することができ、直接ファイルを開いて編集することもできます。
オブジェクトの編集
この節では、プロジェクト内のオブジェクトを編集する方法について説明します。この情報には次のものが含まれます。
オブジェクトプロパティーの編集
電子メールテンプレート、フォーム、ライブラリ、およびワークフローオブジェクトのプロパティーを変更するには、Identity Manager IDE プロパティーウィンドウを使用します。
たとえば、「Account Deletion Approval」オブジェクトノードをクリックすると、次のプロパティーシート (図 1-26) がプロパティーウィンドウ内に表示されます。
図 1-26 プロパティーの例
ヒント
プロパティーウィンドウを使用しない方法として、オブジェクトノードを右クリックし、ポップアップメニューから「Properties」を選択する方法があります。表示される「Properties」ダイアログには、プロパティーウィンドウの場合と同じオブジェクトプロパティーシートが含まれます。
プロパティーシートには、次の機能の一部または全部が含まれます。
- テキストフィールド: 単純値または複合値を次のように編集できるようにします。
- 単純値フィールド: 新しい文字列または整数値をテキストフィールドに直接入力します。値を変更したり新しい値を追加したあとで、次のようにします。
- 複合値フィールド: 既存の値をクリックすると「Expression Builder」ダイアログ (「「Expression Builder」ダイアログの使用」を参照) が開き、式を編集できるようになります。
- 省略記号 (...) ボタン: テキストフィールドに表示されたオブジェクト値を編集するための代替手段を提供します。
- ドロップダウンメニュー: いくつかの具体的な値を含むリストから値を選択するか、プロパティー名をダブルクリックして使用可能な値を順番に切り替えます。
- チェックボックス: クリックしてプロパティーを有効または無効にします。
「Expression Builder」ダイアログの使用
プロパティーウィンドウ内での操作中に複合値フィールドをクリックするか省略記号ボタンをクリックすると、図 1-27 に示すような、オブジェクトの XML 式を編集するための「Expression Builder」ダイアログが開きます。
図 1-27 「Expression Builder」ダイアログの 2 つの例
「Expression Builder」ダイアログの構成要素は、次のとおりです。
- 選択された式要素に対する一連の編集オプションを提供する編集オプション区画。
- 選択された式に関係する一般情報や JavaDoc 情報を提供する情報区画 (ほとんどの編集オプション区画の最下部に配置される)。
注
規則のデザインビューでも式ビルダー (図 1-6 を参照) が提供されていますが、これは、ユーザーが規則の論理構造を確認したり規則のプロパティーを変更したりしやすくするためです。
表 1-5 では、さまざまな編集オプションについて説明します。
表 1-5 式ビルダーのオプション
編集オプション
説明
次のいずれかの式タイプを選択して新しい式要素を追加します。
- XPRESS Object > Select String、List、Map、または Integer。
- Reference
- Expression > Select Logical > Logical type 、Strings > String type、Lists > List type、Variables > Define a variable、Math > Math type、Control > Control type。
- Object Access > Select New、Invoke (Static または Instance)、または Get。
- Diagnostics > Select Script、Trace、または Print。
- Rule
- XML Object > Select String、List、Map、または Integer。
選択された式を削除します。
「Move Up」/「Move Down」ボタン
要素を XML 式内で上方または下方に移動します。
「Wrap Object」オプション
(ツリービューで要素を右クリックした場合にのみ利用可能)ある式要素 (string など) を別の式要素 (concat など) の内側にラップします。
このオプションは、すでに定義済みの引数を必要とする関数呼び出しを含めるのを忘れた場合に役立ちます。たとえば、firstname 属性への参照を定義し、その参照を concat 内にラップした場合、secondname 属性への参照を concat の引数として定義でき、その結果は次のようになります。
<concat>
<ref>firstname</ref>
<ref>secondname</ref>
</concat>
要素の式タイプを次のいずれかに変更します。
- XPRESS Object > Select String、List、Map、または Integer。
- Reference
- Expression > Select Logical > Logical type 、Strings > String type、Lists > List type、Variables > Define a variable、Math > Math type、Control > Control type。
- Object Access > Select New、Invoke (Static または Instance)、または Get。
- Diagnostics > Select Script、Trace、または Print。
- Rule
- XML Object > Select String、List、Map、または Integer。
矢印ボタン
![]()
最近アクセスした式編集パネル間を移動します (ブラウザの「戻る」/「進む」ボタンに類似)。
「Type」/「Value」テーブル
選択された式内で現在使用されている式タイプを表示および編集します。
「Style」ボタン
式のスタイルを「Simple」、「Calculated」のいずれかに設定します。
「Value」フィールドと「<> Name」フィールド
現在の単純な文字列または整数を置換します。
「Trace」ボックス
IDM 内で XPRESS が動作している間、トレース診断を出力します
「Browse JavaDoc」ボタン
呼び出し式の作成時に JavaDoc 情報を表示します。
このボタンをクリックすると「JavaDoc」ダイアログが開き、「Class Names」メニューと「Method Names」メニューから項目を選択できるようになります。あるメニュー項目をクリックするか、その項目上でマウスを静止させると、関連する JavaDoc 情報を含むポップアップが表示されます。
式を編集するには、次のいずれかを行います。
オブジェクトへの要素の追加
オブジェクトに新しい要素 (子要素) を追加するには、XML ソースを直接編集するか、ポップアップメニューの「Add」オプションを使用します。
「Add」オプションを使用するには、次の手順に従います。
- 子要素の追加先となるオブジェクトノードを右クリックし、ポップアップメニューから「Add element_type」を選択します。
図 1-28 アクションへの要素の追加
注
オブジェクトタイプによって、どの element_type を追加できるかが決まります。たとえば、ワークフローのプロセスまたはサブプロセスを操作している場合であれば、単純な計算を実行したり Java クラスや JavaScript を呼び出して複雑な処理を行なったりするために、「アクション」を追加できます。続いて、そのアクションオブジェクトに引数、フォーム、結果、戻り値、または変数を追加できます。
- 「Add element_type」ダイアログが表示されたら、プロパティーシートを使って新しい要素の名前やその他のプロパティーを指定します (「オブジェクトプロパティーの編集」を参照)。
たとえば、アクションオブジェクトに結果を追加する場合には、「Add Result」ダイアログが表示されます。
図 1-29 「Add Result」ダイアログ
- 「OK」をクリックすると、Identity Manager IDE によって、選択されたオブジェクトノードの下に新しい要素が追加されます。また、新規オブジェクトの XML ソースがソースエディタビューに表示されます。
オブジェクトの削除
ローカルファイルシステム上のプロジェクトからオブジェクトを削除するには、次の手順に従います。
Identity Manager IDE リポジトリからオブジェクトを削除するには、次の手順に従います。
- NetBeans メニューバーで「IdM」>「Repository」>「Explore」の順に選択します。
- 「Explore Repository」ウィンドウが表示されたら、オブジェクトノードを展開して削除するオブジェクトを見つけます。
- 1 つ以上のオブジェクトを選択したあと、「Delete」ボタンをクリックします。
注
この「Delete」ボタンを使って個々の規則をライブラリから削除することはできません。1 つ以上の規則をライブラリから削除するには、ライブラリの全体をローカルファイルシステムにダウンロードし、規則を削除したあと、ライブラリを元のリポジトリにアップロードする必要があります。
削除されたすべてのオブジェクトは、リポジトリから即座に削除されます。
差分オプションの使用
Identity Manager IDE では、ローカルファイルシステム上のディレクトリまたは単一オブジェクトとリポジトリ内の対応するオブジェクトとの比較 (差分処理) を行なったあと、その差分を左右に並べて表示することができます。
グローバルな差分オプションの設定
「IdM」>「Options」を選択すると、「Repository Options」ダイアログが開きます。このダイアログでは、次のグローバルな差分処理オプション (デフォルトではすべて有効) を指定できます。
- Exclude lastModDate: オブジェクトの差分処理時に Identity Manager IDE が lastModDate の変更を除外するかどうかを制御します。
- Exclude ids: オブジェクトの差分処理時に Identity Manager IDE が自動生成されたすべてのリポジトリ ID を除外するかどうかを制御します。
- Apply pattern substitution: オブジェクトの差分処理時に Identity Manager IDE が *-target.properties ファイル (設定ビルド環境 (CBE) パターン置換ファイル) を適用するかどうかを制御します。
注
- 「Exclude lastModDate」および「Exclude ids」オプションは、リポジトリ側のオブジェクトにしか影響を与えません。
- 上記オプションのいずれかを変更すると、Identity Manager IDE のアクティブなウィンドウがユーザーの選択に基づいて自動更新されます。
たとえば、「Identity Differences」タブの「Options」をクリックして「Repository Options」ダイアログを開き、「Exclude ids」オプションを無効にした場合、「Identity Differences」タブに表示された情報は Identity Manager IDE によって自動更新されますが、エディタ内の差分ウィンドウは更新されません。
オブジェクトの差分処理
オブジェクトに対するすべての変更を保存し終わると、次の各節で説明するように、あるディレクトリまたは単一オブジェクトの内容に対して差分処理を行えます。
ディレクトリの差分処理
あるディレクトリの内容に対して差分処理を行うには、次のようにします。
Identity Manager IDE によってすべてのオブジェクトの差分処理が、ファイルシステム内で下方に再帰的に繰り返されたあと、その結果が「Identity Differences」タブ (図 1-30) に表示されます。
図 1-30 「Identity Differences」タブ
このタブの構成要素は次のとおりです。
- 表 1-6 で説明するアイコンとボタン
表 1-6 「Identity Differences」タブ: 差分アイコン/ボタン
クリックするアイコンまたはボタン
実行されるタスク
Refresh
ローカルファイルシステムからオブジェクトのすべての変更内容を取得し、それらのオブジェクトの差分処理を再実行したあと、「Identity Differences」タブの差分情報を再表示します。
重要: 「Reload All」、「Upload All」、または「Diff All」オプションを使用する前に、「Refresh」をクリックして「Identity Differences」タブに一覧表示されたオブジェクトの最新の変更内容のすべてを取り込む必要があります。
Diff All
選択されたディレクトリに含まれるすべてのオブジェクトの差分処理を行います。
あるディレクトリの内容に対する差分処理を行うと、その追加処理として、Identity Manager IDE によって、ローカルまたはリポジトリ内で変更されたすべてのオブジェクトの名前がエディタのドロップダウンメニューに設定されます。このリストからあるオブジェクトを選択すると、その差分ウィンドウがエディタ内に表示されます。
Reload All
「Identity Differences」タブに一覧表示されたすべての変更済みオブジェクトを、リポジトリ内の対応するオブジェクトで置き換えます。
Upload All
「Identity Differences」タブに一覧表示されたすべての変更済みオブジェクトを、リポジトリにアップロードします。
フィルタボタン: これらのボタンの任意の組み合わせを選択することで、「Identity Differences」テーブルにおける結果の表示方法を制御します。
Options
「グローバルな差分オプションの設定」で説明したグローバルな差分処理オプションを指定する場合にクリックします
注
すべてのオブジェクトの再読み込み、アップロード、または差分処理を行う前に、「Refresh」をクリックして「Identity Differences」タブに一覧表示されたオブジェクトの最新の変更内容を取得する必要があります。「Refresh」を実行しなかった場合、「Identity Differences」タブに表示された古いバージョンのオブジェクトが Identity Manager IDE によって使用されることになります。
「Identity Differences」タブのいずれかのアイコンまたは「Options」ボタンを使用すると、「Identity Differences」タブに表示された情報は Identity Manager IDE によって自動更新されますが、エディタ内の差分ウィンドウは更新されません。
単一オブジェクトの差分処理
ある単一オブジェクトの内容に対して差分処理を行うには、次のようにします。
Identity Manager IDE のエディタウィンドウが更新され、図 1-31に示すように、そのオブジェクトのローカルビューとリモートビューが表示されます。
図 1-31 左右に並べて表示した例
また、エディタウィンドウには、表 1-7 で説明するアイコンとボタンも備わっています。
表 1-7 エディタの差分アイコン/ボタン
クリックするアイコンまたはボタン
実行されるタスク
Refresh
ローカルファイルシステムからオブジェクトのすべての変更内容を取得し、オブジェクトの差分処理を再実行したあと、エディタ内の差分情報を再表示します。
重要: 「Replace local with repository」または「Upload local to repository」オプションを使用する前に、「Refresh」をクリックしてそのオブジェクトに対する最新の変更内容を含めておく必要があります。
Replace local with repository
変更済みのローカルオブジェクトをリポジトリ内の対応するオブジェクトで置き換えます。
Upload local to repository
変更済みのローカルオブジェクトをリポジトリにアップロードします。
Options
「グローバルな差分オプションの設定」で説明したグローバルな差分処理オプションを指定する場合にクリックします
注
差分処理ウィンドウが開いていて、かつユーザーがエディタのいずれかのアイコンまたは「Options」ボタンをクリックした場合、差分処理ウィンドウ内に表示された情報は Identity Manager IDE によって自動更新されますが、「Identity Differences」タブは更新されません。
XML の操作この節では、ソースエディタウィンドウでの XML の操作方法について説明します。これらの情報は、次のように構成されています。
XML の編集
あるオブジェクトの XML を編集するには、次の手順に従います。
オブジェクトのフィルタリングされていない XML がソースエディタに表示されたら、必要に応じて XML を編集、検査、および妥当性検査できます。
注
プロジェクトウィンドウまたはファイルウィンドウにまだ表示されていないオブジェクトを編集するには、「IdM」>「Repository」>「Open Objects」の順に選択します。「Open Objects」ダイアログでオブジェクト名とオブジェクトタイプの全部 (または一部) を指定することで、ローカルファイルシステム上でそのオブジェクトを検索します。
リポジトリからダウンロードされていないオブジェクトを開こうとすると、Identity Manager IDE によって自動的に、そのオブジェクトがローカルファイルシステムにダウンロードされ、その後にそのオブジェクトがエディタ内で開かれます。
Identity Manager IDE には次のように、オブジェクトの XML を編集するためのオプションがいくつか用意されています。
- ソースエディタウィンドウで情報を直接入力する。
- プロジェクトウィンドウでオブジェクトノードを右クリックし、ポップアップメニューから「Add」ダイアログにアクセスし、そこで必要な情報を入力する。
- ワークフローライブラリおよび XPRESS カテゴリの項目が表示されたパレットウィンドウを使用する。項目を「Palette」からソースエディタの行にドロップして、XML ソース内のそのポイントに XML テキストを作成できます。
- ソースエディタに表示された XML ファイル内で右クリックし、インスタンスまたは static 呼び出し文をを挿入する。詳細については、「呼び出しの挿入」を参照してください。
自動補完の使用
Identity Manager IDE はインストール時に waveset.dtd 定義ファイルを登録し、これによって XML 要素と属性の自動補完が可能になります。
自動補完機能を使用するには、XML 要素または属性の入力を開始し、それから Ctrl+Spacebar を押します。NetBeans は、要素を自動補完するために使用できる要素と属性のリストを表示します。
不正な形式の XML の識別と修正
Identity Manager IDE に読み込んだファイルに不正な形式の XML が含まれている場合、またはファイルに加えた編集が定義 (DTD) ファイルに従っていない場合には、プロジェクトウィンドウとファイルウィンドウでオブジェクトの最上位の親に赤色のエラーアイコンが表示されます。
図 1-32 エラーアイコン
プロパティーウィンドウが開いている場合、そのウィンドウの説明領域にエラーメッセージが表示されます。あるいは、無効なファイルのツールヒント情報を使ってエラーメッセージを表示させることもできます。それには、そのファイルのノードの上でマウスを静止させます。
オブジェクトに不正な形式の XML が含まれていると、次のようになります。
ソースエディタウィンドウで右クリックして、ポップアップメニューから「Validate XML」を選択すると、形式が不正な XML ソースへのリンクを含む結果が出力ウィンドウに表示されます。このリンクをクリックすると、Identity Manager IDE がソースエディタウィンドウで不正な形式の XML の次の行を強調表示するため、容易に問題を検出して修正することができます。
XML の妥当性検査
ソースエディタで右クリックしてコンテキストメニューから「Validate XML」を選択することにより、オブジェクトの XML をただちに妥当性検査できます。
出力ウィンドウで結果を確認します。次のようなメッセージが表示されるはずです。
XML validation started.
file:/H:/IdentityMgr/IDM_IDE_Project/Idm/objects/
System%20Configuration.xml...XML validation finished.
Identity Manager IDE デバッガの操作Identity Manager IDE には、Identity Manager のフォーム、規則、およびワークフローのデバッグに使用できるグラフィカルなデバッガが用意されています。このデバッガを使用して、ブレークポイントとウォッチポイントの設定、コードのステップスルー、変数の検査と変更、クラスと呼び出しスタックの検査、スレッドの監視、および複数セッションの実行を行えます。
ここでは、Identity Manager IDE デバッガの使用法を説明します。手続き型プログラミング言語のコードデバッガを使用した経験があれば、この節で使用されている用語の理解は難しくありません。説明する内容は次のとおりです。
警告
Identity Manager IDE デバッガはデフォルトで有効になっていますが、デバッグ終了後には必ずデバッガを無効にし、他のユーザーが誤って本稼働環境のアプリケーションサーバーに接続することのないようにします。
デバッガを無効にする手順については、「デバッガの無効化」を参照してください。
注
Identity Manager IDE デバッガを使用するときには、次の事柄に注意します。
- 本稼働環境でデバッガを使用しない。
ブレークポイントの設定はグローバルな設定です。したがって、Identity Manager IDE はブレークポイントに達すると、着信リクエストスレッドを中断します。- プロジェクトのプロパティーに指定されるユーザーは、Identity Manager 管理者機能を持っている必要がある。
ただし、デバッガは、ほかのユーザーをシステムからロックアウトし、ほかのユーザーのセッションからの重要なデータを含む変数を表示するスレッドを中断できることに注意してください。この権限を悪用すると多大な影響があることを考慮して、権限を割り当てるときには十分に注意してください。- デバッガを実行するユーザーにアプリケーションサーバーのプライベートコピーを割り当てる必要がある。
複数のユーザーが同じアプリケーションサーバー上で開発作業を行なっており、あるユーザーがデバッガをそのサーバーに接続した場合、それ以外のユーザーはブレークポイントに到達してロックアウトされます。- デバッガはクラスタをサポートしません。
- ワークフロー、フォーム、およびビューの詳細については、『Sun JavaTM SystemIdentity Manager ワークフロー、フォーム、およびビュー』のマニュアルを参照してください。
デバッガの開始
Identity Manager IDE デバッガを開始するには、メインメニューバーから「Run」>「Debug Main Project」の順に選択します。
デバッグセッションを開始すると、Identity Manager IDE はプログラムに関するランタイム情報を表示する一連のデバッガウィンドウを自動的に開きます。これらのウィンドウで次の操作ができます。
ブレークポイントの設定
コードの特定の行を実行する前にオブジェクトの実行を停止するには、デバッガの breakpoint コマンドを使用します。
注
ブレークポイントの設定は、グローバルな設定となることに注意してください。デバッガは指定されたブレークポイントに達すると、着信リクエストスレッドを中断します。このアクションは、どのユーザーがリクエストを作成したかにかかわらず実行されます。
デバッガ使用中は、フォームやワークフローをどこで起動したかにかかわらず、ブレークポイントが適用されます。ほとんどのデバッガではソース上の位置にしかブレークポイントを設定できませんが、Identity Manager IDE のデバッガでは「Refresh view」などの概念的な実行ポイントにもブレークポイントを設定できます。この場合、デバッガはビューの更新操作が発生するたびに操作を中断します。そこで、「Refresh view」にステップインし、進行中の基礎となるフォーム処理を監視できます。
すべてのソースブレークポイントの要約をブレークポイントウィンドウに表示できます。通常、このウィンドウは Identity Manager IDE の左下隅にあります。ブレークポイントウィンドウでブレークポイントをクリックして、ソースエディタ内の対応するブレークポイントに移動することもできます。
ブレークポイントで停止すると、デバッガは現在の実行ポイントの範囲内にある変数も表示します。
図 1-33 ブレークポイントウィンドウ
ブレークポイントを設定する最も簡単な方法は、ブレークポイントを追加するタグの真横の、ソースエディタの左マージン部分をクリックすることです。
メインメニューから「Run」>「New Breakpoint」の順に選択することもできます。「New Breakpoint」ダイアログが表示されたら、「Debugger」メニューから「XPRESS」を選択します。ダイアログの内容が変更され、次のオプションが提供されます。
Identity Manager に添付されているチュートリアルサンプルには、ブレークポイントの使い方の例が示されています。「Identity Manager IDE チュートリアルの使用: フォーム、規則、およびワークフローのデバッグ」を参照してください。
ウォッチポイントの使用
Identity Manager IDE デバッガでは、有効な XPRESS 式であればどの式でもウォッチポイントとして使用することができます。ウォッチポイントには 2 つの目的があります。
デバッガを最初に起動したとき、およびステップ実行中に中断するたび、またはブレークポイントで、デバッガはその時点のコンテキストでウォッチポイントを評価します。また、ウォッチポイントを追加または変更するたびに、デバッガはウォッチポイントを再評価します。
Identity Manager に添付されているチュートリアル (debugger-tutorial-workflow1.xml) には、ウォッチポイントの使い方の例が示されています。「例 1: ワークフローと規則をデバッグする」を参照してください。
実行プロセスのステップスルー
ステップスルーとは、実行中のプロセスの関数を逐次、計画的に分析する処理のことです。
用語
ステップイン、ステップオーバー、およびステップアウトは、言語の構造によって実行順が暗黙的に決定される手続き型プログラミング言語のデバッガに由来する用語です。しかし、Identity Manager のフォームとワークフローでは、コード内で要素が出現する順序はその実行順に影響しません。
したがって、これらの用語が Identity Manager IDE やビジネスプロセスエディタ (BPE) で使用される場合、多少異なった意味を持ちます。
- ステップアウト: 実行スタックが現在よりも 1 少なくなるまで、増分的に移動することを指します。ステップオーバーに類似しています。次の実行ポイントが、異なる親の実行スタックを持つ場合は、代わりにそこで停止します。
ヒント
次のヒントは、実行中のプロセスに正常にステップスルーさせるのに役立つ情報です。
- デバッガでのステップインを、デバッグタスクのコンテキストで実現可能な範囲で細かく設定します。これは、デバッグにとって重要な可能性がある要素を空過するのを避けるために役立ちます。
- ステップ実行は、プログラムの実行順を変更しません。プログラムの実行順は、デバッガを接続しない場合と同じです。目に見える実行部分をスキップ可能です (ただし、それでも実行自体は行われる)。
- コードのステップスルーをできるだけ小さくしたい場合は、ステップインを使用します。
- start タグと end タグの間で、内容に関して問題が発生しそうにないと思われるときは、ステップオーバーを使用します。デバッガはこの要素をスキップしますが、これらのタグ内のコードは引き続き実行されます。
表 1-8 は、Identity Manager IDE デバッガによる、次のコードサンプルの処理方法のスナップショットを示します。
表 1-8 デバッグプロセスの例
実行順
結果
<A>, <B/>, </A>, <D/>
「step-into」をクリックすると、デバッガはこの実行順で行を強調表示します。
「step-over」をクリックすると、デバッガは <A>、</A> を強調表示します。
(B をスキップして)、<D/> を強調表示します。<A>, <D/>, <B/>, </A>
「step-over」をクリックすると、<A>、<D/>、<B/>、</A> の順でコード行が表示されます (この場合、ステップオーバーはステップインと同じ)。
フォームのデバッグ
ここでは、匿名ソースの操作方法を説明し、フォームテスターユーティリティーの設定および起動の手順を示します。
Identity Manager フォームエンジンがフォームを処理する方法の詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。
匿名ソースの操作
フォームをステップスルーするときに、デバッガは匿名ソースを識別できます。匿名ソースとは、Login フォームや MissingFields など、一時的に作成されるフォームまたはフォームの一部のことで、Identity Manager リポジトリにある持続的フォームは該当しません。
これらのフォームはリポジトリに存在しせず、固有の識別子を持たないため、匿名ソースには個別のブレークポイントを設定することができません。ただし、「ブレークポイントの設定」で説明されている方法で「All anonymous sources breakpoint」を設定すると、匿名ソースに対してステップスルーはできます。
この設定により、デバッガは直接の XPRESS ソースを持たないポイントで実行を停止することができます。結果として、デバッガは匿名ソースからの行を検出するたびに中断します。
フォームテスターの設定および起動
Identity Manager IDE には、外部ブラウザでのフォームのテストを可能にするフォームテスターが用意されています。フォームテスターはデバッガに統合されているため、フォームのトラブルシューティングも可能です。
フォームをテストするには、次の手順に従います。
Identity Manager IDE は、ブラウザウィンドウに新規 Identity Manager セッションを起動し、Identity Manager 管理者ユーザーインタフェースのコンテキストでフォームを表示します。さらに、アップロードされたフォームに関する情報が Identity Manager IDE リポジトリの出力ウィンドウに表示されます。
注
Identity Manager には、フォームをデバッグする方法を理解するのに役立つチュートリアル (debugger-tutorial-workflow1.xml) が提供されています。手順については、「Identity Manager IDE チュートリアルの使用: フォーム、規則、およびワークフローのデバッグ」を参照してください。
規則のテスト
Identity Manager IDE が提供する規則テスターを使えば、スタンドアロン規則やライブラリ規則をソースエディタ内で編集する際に、それらの規則を検証できます。ソースエディタで規則のすべての引数の値を指定したあと、規則を「実行」します (トレース文を組み込むこともできる)。
次のいずれかの方法で、フォームテスターを起動できます。
次の例は、規則テスターの動作方法を示すために提供されています。
例 1: スタンドアロン規則をテストする
この例では、単純なスタンドアロン規則をテストする方法を示します。
- 「Custom Identity Manager Object」を右クリックし、「Repository」>「Explore」の順に選択することで、リポジトリ内のオブジェクトを表示します。
- 「Explore Repository」ダイアログで「Rules」ノードを展開し、Accountname First dot Last をダブルクリックして、この規則を開きます。
- 「Rule Tester Inputs」ウィンドウを右クリックして、メニューから「Add value」を選択します。
- 「New Value」ダイアログが表示されたら、次の情報を入力し、「OK」をクリックします。
- もう一度、「Rule Tester Inputs」ウィンドウを右クリックし、次の情報でもう 1 つの新しい値を入力します。
- 「Name」: global.lastname
- 「Type」: String
- 「Value」: mylast
「Rule Tester Inputs」ウィンドウは、図 1-34 のようになります。
図 1-34 「Rule Tester Inputs」ウィンドウ
- これで、規則をテストできます。
NetBeans メニューバーから「IdM」>「Test Rule」の順に選択するか、あるいはソースエディタウィンドウで右クリックし、ポップアップメニューから「Test Rule」を選択します。
次のような出力が、「Rule Tester Output」ウィンドウに表示されるはずです。
<String>myfirst.mylast</String>
<String>myfirst.mylast</String>
<String>myfirst.mylast</String>
- 次に、規則のテストとデバッガの実行を同時に試行します。
デバッガがまだ実行されていない場合は、メインメニューバーの「Debug Main Project」ボタンをクリックします。
- ソースエディタウィンドウに移動し、XML 内で <Rule> タグの横のマージンをクリックして、ブレークポイントを追加します。
- 「Window」>「Debugging」>「Breakpoints」の順に選択すると、ブレークポイントウィンドウが開きます。
- ソースエディタで、<Rule> 要素内の任意の位置で右クリックし、ポップアップメニューから「Test Rule」を選択します。
ブレークポイントでデバッガが停止します (ブレークポイントウィンドウ内の結果を参照)。
- 「Step Into」ボタン
を 7 回クリックして規則をステップスルーし、ローカル変数ウィンドウの結果を監視します。
- 「Continue」をクリックして、「Rule Tester Output」ウィンドウの結果を監視します。
例 2: ライブラリ規則をテストする
ライブラリ規則のテストは、スタンドアロン規則のテストに非常に似ています。
- 必要に応じて、リポジトリから Alpha Numeric Rules ライブラリをダウンロードし、ノードをダブルクリックしてソースエディタでこのライブラリ規則を開きます。
- 「Alpha Numeric Rules」のノードを順次展開し、stringToChars 規則が表示されたらダブルクリックします。
この規則は形式引数を宣言しているため、「Rule Tester Inputs」ウィンドウには testStr 引数が表示されます。
- testStr 引数に値を指定します (「Rule Tester Inputs」ウィンドウで引数名を右クリックし、「Add value」を選択し、「New Value」ダイアログに値を入力する)。
- ソースエディタで右クリックし、「Test Rule」を選択して規則を実行し、「Rule Tester Output」ウィンドウで結果を監視します。
注
Identity Manager には、規則をデバッグする方法を理解するのに役立つチュートリアル (debugger-tutorial-workflow1.xml) が提供されています。手順については、「Identity Manager IDE チュートリアルの使用: フォーム、規則、およびワークフローのデバッグ」を参照してください。
ワークフローのデバッグ
ワークフローは単一の Java スレッドによって実行され、呼び出しスタックウィンドウで単一の Java スレッドによって表現されます。ただし、ワークフローの内部で、各アクティビティーは個別の仮想スレッドになります。
ワークフロー実行の間、ワークフローエンジンは仮想スレッドのキューを循環的に処理します。各仮想スレッドは、次の表で説明する状態のいずれかになります。
表 1-9 仮想スレッドの状態
ワークフローアクティビティーの状態
定義
準備完了
遷移したばかりのアクティビティーを特定します (この状態はごく一時的であり、アクションは通常、準備完了と指定された直後に実行を開始する)。
実行中
現在実行中であるか、まだ実行されていない 1 つ以上のアクションを含むアクティビティーを特定します。
これは論理状態であり、Java スレッドがその時点でそのアクションを実行していることを意味しません。現在実行中のアクションは、必ず太字または通常のフォントで表示されます。
実行中ではないアクションは、斜体で表示されます。保留中のアウトバウンド
アクティビティー内のすべてのアクションが実行された直後のアクティビティーを特定します。このようなアクティビティーは、保留中のアウトバウンド状態に移行します。この状態のアクションは、アウトバウンド遷移の発生を待機します。OR 分岐の場合、アクションは 1 つの遷移が発生するまでこの状態です。AND 分岐の場合、その条件が true と評価されるすべての遷移が発生するまで、アクションはこの状態です。
非アクティブ
すべての遷移が発生済みのアクティビティーを特定します。
保留中のインバウンド
そのアクティビティーが AND 合流である仮想スレッドを特定します。これは、この仮想スレッドへの 1 回の遷移が発生したが、プロセスはまだほかの遷移を待機していることを意味します。
すべての遷移が完了したあとで、ワークフロープロセスは実行を開始します。
変更のあとでワークフローのリビジョンを妥当性検査するには、プロジェクトウィンドウでオブジェクトまたはプロセスを選択してから、「Tools」>「Validate」の順に選択してテストします。出力ウィンドウでメッセージを確認します。
注
Identity Manager には、ワークフローをデバッグする方法を理解するのに役立つチュートリアル (debugger-tutorial-workflow1.xml) が提供されています。手順については、「Identity Manager IDE チュートリアルの使用: フォーム、規則、およびワークフローのデバッグ」を参照してください。
Identity Manager IDE チュートリアルの使用: フォーム、規則、およびワークフローのデバッグ
Identity Manager には、フォーム、規則、およびワークフローにデバッガを使用する方法を習得するのに役立つチュートリアル (debugger-tutorial-workflow1.xml) が提供されています。このチュートリアルには、サンプルのフォーム、規則、ワークフローが含まれており、この節を通して同じサンプルが使用されます。
この節は、次のように構成されています。
はじめに
debugger-tutorial-workflow1.xml チュートリアルを使用するには、次の操作を行います。
- 次のいずれかの方法で、debugger-tutorial-workflow1.xml ファイルをインポートします。
- debugger-tutorial-workflow1 と debugger-tutorial-workflow2 をリポジトリからプロジェクトにダウンロードします。手順については、「リポジトリからのオブジェクトの取得」を参照してください。
- アプリケーションサーバーを再起動したあと、メインメニューバーで「Run」>「Debug Main Project」の順に選択して、Identity Manager IDE デバッガを起動します。
例 1: ワークフローと規則をデバッグする
この例では、ワークフローのデバッグと規則の実行をステップインおよびステップスルーする方法を含む、簡単なワークフローとワークフローを使用する規則とをデバッグする方法を示します。
この練習を完了するには、次のステップを実行する必要があります。
ステップ 1: プロセスの起動
ワークフローのデバッグプロセスを起動するには、次の手順に従います。
- プロジェクトウィンドウで debugger-tutorial-workflow1.xml ノードを展開します。
- debugger-tutorial-workflow1.xml ノードをダブルクリックして、ソースエディタに XML を表示します (必要に応じて「Source」ボタンをクリックする)。
図 1-35 debugger-tutorial-workflow1.xml ソースを開いたところ
- <WFProcess> タグの左のマージンを 1 回クリックして、ワークフローの開始位置にブレークポイントを設定します。
- 必要に応じて、メインメニューバーで「Debug Main Project」ボタンをクリックして、Identity Manager IDE デバッガを起動します。
- Identity Manager にログインしたあと、「Server Tasks」 >「Run Tasks」の順に選択します。
- 「Available Tasks」ページが表示されたら、「Name」列で debugger-tutorial-workflow1.xml をクリックします。
Identity Manager IDE のソースエディタをチェックして、指定したブレークポイントでデバッグが停止したかを確認します。
次の点にも注意してください。
「Thread」の下には実行スタックが表示されます。このスタックは逆順のスタックトレースであり、呼び出し元の関数が上に、呼び出される関数が下に表示されます (これは、ほとんどのデバッガでの実行トレースの表示とは逆の順序)。
スタックの一番上のフレームは「Checkin View (ProcessViewer)」という名前であり、これは、ワークフローがその時点で ProcessViewer の checkinView メソッドによって呼び出されていることを示します。このスタックフレームの Java ソースコードにはアクセスできないため、このフレームをクリックしても新しい情報は表示されません。ただし、スタックフレームは、ワークフローがどの場所から起動されているかについてのコンテキストを提供します。
スタック内の次のフレームは、ワークフロープロセス (<WFProcess>) の開始位置である現在の実行ポイントに対応しているため、強調表示されています。
これで、実行を開始する準備が完了しました。次のステップでは、実行手順を説明します。
ステップ 2: 実行の開始
実行を開始するには、次の手順に従います。
- Identity Manager IDE のメインメニューバーで「Step-Into」ボタン
をクリックします。
デバッガが開始アクティビティーに移動します。実行スタックに「Virtual Thread [start, step=0] (executing)」が含まれていることを確認してください。これは、現在実行中の状態である開始アクティビティーの仮想スレッドがあることを示します。
図 1-36 開始アクティビティーの仮想スレッド
- debugger-tutorial-workflow1 フレーム (2 レベル上) をダブルクリックして WFProcess を強調表示します。そこには、呼び出し側の位置が表示されます。
- 呼び出しスタックウィンドウ内の太字のエントリをダブルクリックして、現在の行に戻ります。
- 「step-into」をもう一度クリックします。
デバッガはソースエディタの </Activity> 行に移動し、呼び出しスタックウィンドウが表示されている場合は、「Virtual Thread [start, step=0]」が保留中のアウトバウンドになります。
これで、次のステップ 3 に進むことができます。
ステップ 3: getFirstName スレッドのステップスルー
getFirstName スレッドをステップスルーするには、次の手順に従います。
- 「step-into」をクリックします。
デバッガでは、getFirstName への遷移が強調表示されます。
- 「step-into」をもう一度クリックします。
呼び出しスタックウィンドウをもう一度チェックし、デバッガがこの遷移の結果として getFirstName の新規仮想スレッドを作成し、現時点でこの仮想スレッドが準備完了の状態になっていることを確認してください。
図 1-37 開始アクティビティーの仮想スレッド
「Virtual Thread [start, step=0]」が保留中のアウトバウンドのままであることに注意してください。これは、この仮想スレッドが and-split 操作であるため、可能性のある遷移をすべて引き受ける必要があるからです。
- 「step-into」をもう一度クリックします。
デバッガはソースエディタの getFirstName アクティビティーにジャンプし、呼び出しスタックウィンドウでは状態が準備完了から実行中に変わります。
- 「step-into」をもう一度クリックします。
デバッガは get アクションに移動します。
- ここで、「Step-Into」をあと 3 回、またはデバッガがソースエディタ内で </set> タグに達するまでクリックします。
ローカル変数ウィンドウをチェックして、</set> の結果として firstName 値が <String>myfirstname</String> に設定されていることを確認します。
図 1-38 firstName の新しい値
- ウォッチポイント表現を追加します。
デバッガはウォッチポイント表現を評価しますが、その値は手順 5 で設定した値である <String>myfirstname</String> になるはずです。
ステップ 4: getLastName スレッドのステップインおよびステップオーバー
次の手順に従って、getLastName スレッドをステップインおよびステップオーバーします。
- 「Step-Into」をあと 3 回、またはソースエディタ内でデバッガが getFirstName の </Activity> 行に達するまでクリックします。
呼び出しスタックウィンドウで、Virtual Thread (getFirstName, step=1) が、保留中のアウトバウンドになっていることを確認します。
- 「step-into」をクリックします。
デバッガは、Virtual Thread (start, step=0) に戻り、getLastName への遷移の処理を開始しようとします。
- 「step-into」をクリックします。
Virtual Thread (start, step=0) は、すべての遷移の処理が完了したので、非アクティブになります。この遷移の結果として、getLastName が準備完了の状態になります。
- 「step-into」をクリックします。
この時点で、Virtual Thread (start, step=0) は非アクティブであるために消えて、デバッガは Virtual Thread (getLastName, step=2) に移動し、これが実行中の状態になります。
- 「step-over」ボタン
をクリックして、getLastName の終わりまでスキップします。
ローカル変数ウィンドウを確認すると、lastName 変数が <String>mylirstname</String> に設定されているはずです。getFirstName および getLastName の両方の仮想スレッドは、保留中のアウトバウンド状態です。
- 「step-into」をクリックします。
ソースエディタをチェックし、デバッガが getFirstName から computeFullName へ遷移しつつあることを確認してください。
- 「step-into」をクリックします。
呼び出しスタックウィンドウで、getFirstName は非アクティブになり、新しく「Virtual Thread (computeFullName, step=3)」が作成されます。
図 1-39 新しい computeFullName 仮想スレッド
このスレッドは、getLastName からのインバウンド遷移をまだ待機しているため、「pending inbound」状態です (待機が発生するのは、これが and-join 操作であるため。or-join 操作の場合は、プロセスの状態がただちに「ready」になる)。
- 「step-into」をクリックします。
デバッガは getLastName から computeFullName への遷移に遷移します。
ステップ 5: computeFullName 処理のステップイン
次の手順を使用して、computeFullName 処理にステップインします。
- 「step-into」をクリックします。
この遷移により、「Virtual Thread (computeFullName, step=3)」の状態が、保留中のインバウンドから準備完了に変化します。
- 「step-into」をクリックします。
この時点で、Virtual Thread (computeFullName, step=3) の状態は、実行中です。
- 「step-into」をあと 5 回クリックします。
ソースエディタを確認すると、デバッガが firstName の </argument> タグ上にあり、ローカル変数ウィンドウで Last Value が <String>myfirstname</String> になっています。この値は firstName 引数に渡されます。
ステップ 6: 規則処理のステップスルー
規則処理をステップスルーするには、次の手順に従います。
- 「step-into」をあと 3 回クリックします。
デバッガが「compute-full-name」規則にステップインします。
- 呼び出しスタックウィンドウで、フレームをクリックして 1 つ上のフレーム上に移動します。
debugger-tutorial-workflow1 内の <rule> 呼び出しが強調表示され、規則の呼び出し元の場所を示します。
- 太字の行をダブルクリックして、その行を再選択します。
- 「Step-Into」をあと 3 回、またはデバッガが </ref> タグに達するまでクリックします。
ここでローカル変数ウィンドウを確認すると、Last Value エントリは、<ref>firstName</ref> の結果である <String>myfirstname</String> になっています。
- 「Step-Into」をあと 3 回、またはデバッガが </concat> タグに達するまでクリックします。
Last Value エントリは、<concat> 式の結果である <String>myfirstname mylastname</String> になっています。
- 「Step-Into」をあと 2 回クリックします。デバッガは </rule> タグに戻ります。
ステップ 7: ワークフロープロセスの完了
ワークフロープロセスを完了するには、次の手順に従います。
- </set> 要素に達するまで「step-into」をクリックします。
fullname 変数が <String>myfirstname mylastname</String> に更新されています。
- 「step-into」をあと 2 回クリックします。
この時点で、「Virtual Thread (computeFullName, step=3)」の状態は、保留中のアウトバウンドです。
- 「Step-Into」をあと 5 回クリックします。
end が準備完了、続いて実行中になり、そのあとデバッガは </WFProcess> タグに達します。これは、プロセスが完了したことを示します。
- 「step-into」をクリックします。
呼び出しスタックウィンドウには「After Checkin View」と表示されます。これは、ワークフローを呼び出した、ビューのチェックイン操作が完了したことを示します。
- Identity Manager IDE メインメニューバーの「Continue」ボタンをクリックして、実行を再開します。
ブラウザの要求がタイムアウトしていない場合、プロセスダイアグラムを伴う「Task Results」ダイアグラムが表示されます。
例 2: 手動アクションとフォームを含むワークフローのデバッグ
この例では、手動アクションとフォームを含む、サンプルワークフローのデバッグ方法を説明します。debugger-tutorial-workflow2 チュートリアルファイルを使用し、次の手順を実行します。
- debugger-tutorial-workflow2.xml をダブルクリックして、ソースエディタに XML を表示します。
- <WFProcess...> タグにブレークポイントを設定します。
- 必要に応じて、Identity Manager IDE メインメニューバーで「Debug Main Project」ボタン
をクリックします。
- Identity Manager にログインし、「Server Tasks」>「Run Tasks」の順にナビゲートします。
- 「Available Tasks」ページが表示されたら、「Name」列から debugger-tutorial-workflow2 を選択します。
設定したブレークポイントでデバッガが停止していることを確認します。
図 1-40 新しいブレークポイント
- 「Step-Into」を 6 回、または、デバッガが <ManualAction... name='getNameAction'> に達するまでクリックします。
- 「step-into」をクリックします。
- 別のスレッドでフォーム処理が発生するという説明の「Stepping into Manual Action」ダイアログが表示されたら、「Yes」または「Always」をクリックします。
- 処理が行われていることを確認するために、ブレークポイントを <Form> タグに設定します。
フォーム処理が完了すると、ワークフローは別のスレッドでの実行を継続します。その結果、</ManualAction> にブレークポイントを設定して、フォームが処理を完了したあとのワークフロー処理を監視する必要があります。
デバッガでは、指定どおりに <Form> タグと </ManualAction> タグにブレークポイントが設定されています。加えて、呼び出しスタックウィンドウには「After Checkin view」が示されます。ワークフロー処理は可能なかぎり (手動アクションが完了するまで) 進行済みであるため、ワークフロープロセスからのステップアウトが完了します。
- 「Continue」をクリックします。デバッガは <Form> 要素に設定されたブレークポイントで処理を停止します。
呼び出しスタックウィンドウで、次のエントリに注目します。
- このフォームには <Derivation> 式が含まれないため、「Continue」をクリックして次の処理フェーズに進みます。フォーム処理の「HTML Generation (root component)」パスが開始されます。
HTML 生成フェーズ (root コンポーネント)
root コンポーネントの HTML を生成するには、次の手順に従います。
HTML 生成 (サブコンポーネント)
サブコンポーネントの HTML を生成するには、次の手順に従います。
- 「Step-Into」を 13 回、または、デバッガが </Form> タグに達するまでクリックします。
デバッガはこれらの各フィールドを反復処理し、それらの表示プロパティーを評価します。
- 「Continue」をクリックします。
実行が再開されたため、デバッガには中断されたスレッドは表示されません。Identity Manager ブラウザウィンドウに制御が戻ります。
- Identity Manager ブラウザウィンドウに戻り、入力を求められたら姓と名を入力して「Save」をクリックします。
デバッガフレームに戻り、デバッガがブレークポイントで中断していることを確認します。
- ローカル変数ウィンドウで、変数サブツリーを展開して、今入力した名前が firstName および lastName の値として表示されることを確認します。
デバッガはこの時点で、フォーム処理の確認フェーズです。
確認
このフォームには確認フィールドがないため、処理は発生しません。「Continue」をクリックして、フォーム処理の検証フェーズを開始します。
検証と展開
このフォームには検証式が含まれないため、明示的な処理は発生しません。
- 「Continue」をクリックして検証フェーズをスキップし、フォーム処理の展開フェーズに進みます。
- 「step-into」を 6 回クリックします。
デバッガは variables.fullName フィールドの <Expansion> の <rule> タグに移動します。
- 「Step-Into」を 5 回クリックします。デバッガは <Rule> 要素にステップインします。
- 「Step-Into」を 7 回、または、デバッガが </Rule> 要素に達するまでクリックします。
「Last Value」に姓名が入ります。
- 「step-into」をもう一度クリックすると、フォームでの処理が再開します。
- 「step-into」をもう一度クリックします。
トップレベルの variables.fullName には、実行されたばかりの展開式の値が格納されています。フォーム処理中はフォーム出力が独自の一時的な form_outputs データ構造に保持され、そこではパスの式が平坦化されるため、この値は variables データ構造の子ではなくトップレベルのエンティティーとなります。
フォーム処理のあと、フォーム出力は元のビューに同化されます。暗黙的な変数 form_inputs および form_outputs において、form_inputs は未変更の作業項目ビューを示し、form_outputs は、フォーム処理の完了後にビューに同化される出力フィールドを示します。
一般に、form_inputs はビューを特定し、form_outputs にはビューに同化されるデータが含まれます。ただし、Active Sync フォームのように、必ずしもすべてのフォームがビューに結び付けられるわけではありません。フォームエンジンは一般的なデータマッピングエンジンであり、フォーム入力からフォーム出力へのマッピングを行います。ビューハンドラは、フォームエンジンにビューを渡す処理と、出力をビューに戻して反映する処理を受け持ちます。
- 「Continue」をクリックします。
デバッガは </ManualAction> ブレークポイントに到達します。これは、デバッガが手動アクションにステップインしたときにすでに設定したブレークポイントです。firstName 変数および lastName 変数は、入力した値です。fullName 値は、実行されたばかりの展開式の結果です。
- 「Step-Into」を 5 回、<ManualAction... name='displayNameAction'> に達するまでクリックします。
- 「step-into」をもう一度クリックします (プロンプトが表示されたら「Yes」または「Always」をクリックする)。
- 「Continue」をクリックします。
この時点で、デバッガは displayNameForm の「Derivation」パスの位置です。
取得と HTML 生成 (root コンポーネント)
取得フェーズと HTML 生成フェーズを完了するには、次の手順に従います。
- 「Continue」をクリックして、displayNameForm の HTML 生成 (root コンポーネント) 処理を開始します。
- 「Step-Into」を 8 回、または、デバッガが subTitle の </Property> 要素に達するまでクリックします。
- 「Continue」を 2 回クリックします。
デバッガは次のメッセージを表示します。
No suspended threads because execution has resumed.Control has now returned to the browser window.
- Identity Manager ブラウザウィンドウに戻ります。
表示される情報は、入力したものと同じです。
- 「Save」をクリックして、デバッガフレームに戻ります。
この時点で、デバッガは「Confirmation」パスの位置であり、displayNameForm を処理しています。
検証と展開
検証と展開を開始するには、次の手順に従います。
- 「Continue」をクリックして検証パスを開始します。
- 「Continue」をクリックして展開パスを開始します。
- 「Continue」をもう一度クリックします。
手動アクションが完了したため、この時点でデバッガは </ManualAction> タグの位置です。この時点で、ワークフロー処理は再開されています。
- 「Step-Into」を 5 回、または、デバッガがワークフローの実行が完了したことを示す </WFProcess> タグに達するまでクリックします。
- 「Continue」をクリックします。
- Identity Manager ウィンドウに戻ると、ワークフロープロセスダイアグラムが表示されているはずです。「OK」をクリックします。
例 3: タブ付きユーザーフォームと更新ビューのデバッグ
このサンプルデバッグの手順では、フォームまたはワークフローを起動した場所に関係なく、デバッガのブレークポイントがどのように適用されるかを示します。
この手順を完了するには、次のステップを実行する必要があります。
ブレークポイントの設定
ブレークポイントを設定するには、次の手順に従います。
新規ユーザーの作成
新規ユーザーを作成するには、次の手順に従います。
「Before Refresh View」結果の表示
Identity Manager IDE に戻り、次の点を確認します。
ローカル変数ウィンドウで、グローバルサブツリーを展開して、フォームで入力した firstname と lastname の値を探します。fullname の値は、この時点では「null」です。
「After Refresh View」結果の表示
「After Refresh View」の結果を表示する手順は、次のとおりです。
- 「Continue」をクリックします。
呼び出しスタックウィンドウには、「After Refresh View」が一覧表示されます。ここには、更新操作が発生した直後のビューの状態が表示されます。fullname の値はこの時点では「jean faux」です。
- 「Continue」をもう一度クリックします。
フォームが実行を再開します。Identity Manager ブラウザウィンドウに戻って、「First Name」を jean2 に変更します。別のタブをクリックして、もう一度更新をトリガーします。
Identity Manager IDE ソースエディタに戻ると、フォーム処理は「Before Refresh View」の箇所で中断しています。
フォームのステップスルー
フォームをステップスルーするには、次の手順に従います。
- 「step-into」をクリックして、実行内の姓名の展開部分を表示します。
呼び出しスタックウィンドウに「Before Expansion,」が一覧表示されます。これは、フォームの変数が展開されていないことを示します。
- 「step-into」をもう一度クリックします。
呼び出しスタックウィンドウに「Before Expansion, iteration=0」がリストされます。これは、最初の「Expansion」パスの前にフォーム変数が出現することを示します。
- 「step-into」をもう一度クリックします。
呼び出しスタックウィンドウに匿名ソース (Tabbed User Form (Anonymous, line: 3)(begin)) が一覧表示されます。匿名ソースは一時的に作成されるラッパーフォームであり、MissingFields フォームに関連します。
- タブ付きユーザーフォームの先頭に達するまで、「step-into」をさらに 2 回クリックします。
- <Field name='global.fullName'>」に達するまで「step-into」をクリックし続けます (約 20 〜 30 回のステップイン操作)。
- 15 回または </Field> 要素に達するまで「Step-Into」をクリックします。
ステップ操作中に、</concat> タグの Last Value エントリが、jean2 faux になっており、form_outputs 値が global.fullname: jean2 faux になっていることを確認します。
フォーム処理の完了
フォーム処理を完了するには、次の手順に従います。
- 「Step-Out」を 7 回クリックします。
この時点で、呼び出しスタックウィンドウが示す内容は次のようになるはずです。
Refresh View (User)
After Expansionローカル変数ウィンドウには、すべての展開が実行されたあとのフォーム変数の状態が表示されます。
- 「Step-Out」をもう一度クリックします。
これで、「After Refresh View」に到達しました。ローカル変数ウィンドウには、ビュー変数が表示されています。
- グローバルサブツリーを展開します。
この時点で、fullname の値は「jean2 faux」です。
- 「Continue」をクリックします。
Java と XPRESS のデバッグ
次の例では、カスタム Java コードを作成およびコンパイルする方法と、XPRESS デバッガと Java デバッガの両方を同時に使用する方法を示します。
- 次の手順を実行してカスタム Java コードを作成します。
- 次の手順を実行してこの Java コードを呼び出す規則を作成します。
- プロジェクトウィンドウで、「Custom Identity Manager Objects」を右クリックし、ポップアップメニューから「New」>「File/Folder」を選択します。
- 「New File」ダイアログが表示されたら、「Categories」リストから「Sun Identity Manager Objects」を選択したあと、「File Types」リストから「Rule」を選択します。
図 1-41 「Rule」ファイルタイプの選択
- 完了したら、「Next」をクリックします。
- 「New Rule」画面が表示されたら、「File Name」フィールドに Test Rule と入力してから「Finish」をクリックします。
図 1-42 「Rule」ファイルタイプの選択
プロジェクトウィンドウが更新され、Test Rule.xml が表示されます。
- Test Rule.xml を選択したあと、エディタウィンドウの「Source」タブをクリックしてその XML を表示します。
- 必要であれば、<Rule name='New Rule' を <Rule name='Test Rule' に変更します。
- 次のメソッド呼び出しを挿入したあと、規則を保存します。
- 次の手順を実行することで、カスタム Java コードのビルドとアプリケーションサーバーの起動を行います。
- プロジェクトノードを右クリックし、「Debug Project」を選択します。
Identity Manager IDE が Web アプリケーションをビルドし、サーバーを起動し終わるまで待ちます (所要時間は数分)。
- プロンプトが表示されたら、パスワードを入力します。
ログファイルを確認すれば、この規則が自動的にアップロードされたことがわかります。
- ブラウザウィンドウが表示されたら、それは閉じてしまってかまいません。
ブラウザを無効にするには、プロジェクトを右クリックし、「Properties」を選択します。「Project Properties」ウィンドウで「Display Browser on Run」のチェックを外します。
- Java コード内と XPRESS コード内にブレークポイントを設定します。
- 規則テスターを使って両方のブレークポイントを呼び出します。
- NetBeans メニューバーから「Window」>「Rule Tester Inputs」の順に選択することで、「Rule Tester Inputs」ウィンドウを開きます。
- プロジェクトウィンドウで Test Rule.xml を選択します。
- 「Rule Tester Inputs」ウィンドウを右クリックして、「Add value」を選択します。「New Value」ダイアログが表示されたら、次の情報を入力し、「OK」をクリックします。
- 「Rule Tester Inputs」ウィンドウをもう一度右クリックして、「Add value」を選択します。「New Value」ダイアログが表示されたら、次の情報を入力し、「OK」をクリックします。
- Test Rule.xml ノードを展開し、「Test Rule」を右クリックしたあと、ポップアップメニューから「Test Rule」を選択します。
- 規則を保存するかどうかを確認するメッセージが表示されたら、「Always」をクリックします。
この時点で、規則のブレークポイントに達しています。
- 「Step-Into」ボタン
を 6 回クリックして、Java コード内のブレークポイントに到達させます。
この時点で Java デバッガが有効になっており、ローカル変数ウィンドウに Java 変数が表示されるようになっています。
注
Java と XPRESS を同時にデバッグしている場合、実際には 2 つのデバッガが同時に動作しており、両者は互いを認識していません。どちらのデバッガも、独自のブレークポイントとステップイン状態を保持しています。
Java コード内にブレークポイントが存在していないかぎり、ステップインを実行しても、XPRESS コードから Java コードへのステップインが発生することはありません。
- 「Continue」をクリックします。
XPRESS デバッガ内の </invoke> タグに戻っていることに注意してください。また、Last Value にも、呼び出し結果として myvalue1myvalue2 と表示されているはずです。
注
Java コードを離れるときには、常に「Continue」をクリックして Java デバッガの実行を再開するようにしてください。Java デバッガをステップ状態で離れると、デバッグのパフォーマンスが大幅に低下します。
- 「Continue」を再度クリックして、「Rule Tester Output」ウィンドウ内で規則の結果を確認します。
- 規則を次のように変更したあと、再実行します。
- Java コードを次のように変更したあと、再実行します。
デバッガの停止
Identity Manager IDE デバッガを停止するには、メインメニューバーから「Run」>「Finish Debugging Session」の順に選択します。
デバッガの無効化
デバッグ終了後には必ずデバッガを無効にし、他のユーザーが誤って本稼働環境のアプリケーションサーバーに接続することのないようにします。
デバッガを無効化するには、次の手順に従います。
- 「Projects」タブから、「Generic Objects」ノードを展開し、「System Configuration」をダブルクリックして、ソースエディタウィンドウに XML を表示します。
- 下方へスクロールするか「Edit」>「Find」を使用して serverSettings.default.debugger.enabled 属性を探し、その値を false に変更します。
<Attribute name='serverSettings'>
<Object>
<Attribute name='default'>
<Object>
<Attribute name='debugger'>
<Object>
<Attribute name='enabled'>
<Boolean>false</Boolean>
</Attribute>
- メインメニューバーで、「File」>「Save」の順に選択して、変更を保存します。
- アプリケーションサーバーを再起動します。
テスト環境の外部でのデバッガの実行
デバッグが必要な問題が本稼働環境に見つかった場合は、その問題をテスト環境で再現してデバッグを試みるのが最善です。デバッガでブレークポイントを設定すると、大量のトラフィックが発生している本稼働環境内のアプリケーションサーバーを短時間のうちに停止させる可能性があります。ブレークポイントを設定する位置によっては、他者がシステムを使用できないようにブロックすることも可能です。
独立したテスト環境でデバッグを実行できない場合は、次の手順に従います。
- クラスタ内のノードのうちの 1 つをオフラインにすることにより、すべての有効なトラフィックをクラスタのサブセットに振り分けます (以後、このタスクの説明では、このノードを server-a とする)。
- Identity Manager IDE を使用し、SystemConfiguration serverSettings.server-a.debugger.enabled プロパティーを true に設定してシステム設定オブジェクトを編集します。
- server-a を再起動し、システム設定オブジェクトのプロパティー設定の変更を有効にします。
- 適切なホスト (server-a)、ポート、コンテキストパス、ユーザー、およびパスワードを指定して、プロジェクト設定を変更します。
- デバッガを開始します。
- デバッグが終了したら、serverSettings.server-a.debugger.enabled を false に設定し、server-a を再起動して、稼働中の本稼働環境にデバッガが接続しないようにします。
- server-a をオンラインのクラスタに再統合します。
NetBeans からの Identity Manager IDE のアンインストール何らかの理由で、Identity Manager IDE モジュールを NetBeans からアンインストールする場合は、次の手順を実行します。
- 必要に応じて、NetBeans を開きます。
- NetBeans メニューバーで「Tools」>「Module Manager」の順に選択します。
「Module Manager」ダイアログが表示され (図 1-43)、インストール済みのモジュールがすべてリストされます。「Active」列には、その中の有効なモジュールが示されます。
注
Identity Manager IDE では、必要のないモジュールを無効化することにより、起動時間を最小化し、メモリーを節約することができます。無効化されたモジュールはインストールディレクトリから削除されず、単に Identity Manager IDE によって無視されます。無効化されたモジュールは、いつでもふたたび有効にすることができます。
図 1-43 アンインストールするモジュールの選択
- モジュールのリストから Sun Identity Manager を選択します。
- 「Uninstall」をクリックします。
- Sun Identity Manager モジュールをアンインストールすることを確認するポップアップが表示されます。「OK」をクリックして、アンインストールプロセスを続行します。
- プロセスが完了したら、モジュールマネージャーを閉じます。
Identity Manager IDE のトラブルシューティングこの節では、Identity Manager IDE の問題のトラブルシューティング時に必要となる可能性のある情報を提供します。
削除不能エラー
次の状況下では、削除不能を示すエラーメッセージが表示される可能性があります。
メモリー不足エラー
Identity Manager IDE を使用した作業中にメモリー不足エラーが発生する場合には、NetBeans のメモリー設定値を増やす必要があるかもしれません。対処方法については、NetBeans 製品マニュアルを参照してください。
「Tomcat Manager」ダイアログが表示され、ユーザー名とパスワードを要求される
標準の Identity Manager IDE プロジェクトの操作中にバンドル版の Tomcat インスタンスを起動すると「Tomcat Manager」ダイアログが表示される場合、それは一般に、次のいずれかの状態を示しています。
バンドル版 Tomcat サーバーの一部として格納されている資格が、「Server Manager」の「Username」および「Password」フィールドに格納されている資格と一致する必要があります。フィールドの値の詳細については、次の Web サイトを参照してください。
http://wiki.netbeans.org/wiki/view/FaqInstallationDefaultTomcatPassword
バンドル版 Tomcat のポート番号と格納された資格をチェックするには、次の手順に従います。