![]() | |
Sun Java™ System Identity Manager 7.0 配備ツール |
付録 A
ビジネスプロセスエディタの使用方法この付録では、ビジネスプロセスエディタ (BPE) の使用方法を説明します。この章で説明する内容は次のとおりです。
概要ビジネスプロセスエディタ (BPE) は Swing ベースのスタンドアロン Java アプリケーションで、Sun JavaTM System Identity Manager のワークフロー、フォーム、規則、一般オブジェクト、設定オブジェクト、およびビューを、グラフィカルにフォームベースで表示します。
BPE を使用して、環境に合わせて Identity Manager を次のようにカスタマイズします。
BPE の起動と設定
注
BPE を実行するには、ローカルシステムに Identity Manager がインストールされており、Identity Manager への Configurator レベルのアクセス権を付与されている必要があります。
この節では、BPE の起動および設定方法を説明します。説明内容は次のとおりです。
BPE の起動
コマンド行から BPE を起動するには、次の手順に従います。
- Identity Manager のインストールディレクトリに移動します。
- 次のコマンドで環境変数を設定します。
set WSHOME=<Path_to_idm_directory>
set JAVA_HOME=<path_to_jdk>UNIX システムで BPE を起動するには、次のコマンドも入力する必要があります。
export WSHOME JAVA_HOME
- idm¥bin ディレクトリに移動し、「lh config」と入力して BPE を起動します。
図 A-1 に示すように、「Workspace location」ダイアログが表示されます。図 A-1 BPE の「Workspace location」ダイアログ
「Workspace location」ダイアログを使用して、新しいワークスペースを作成するか、既存のワークスペースを選択します。これら両方の処理の手順については、次の節で説明します。
ワークスペースの指定
ワークスペースは、リポジトリ接続情報 (デフォルトのサーバーやパスワードなど)、オプション、BPE デバッガによって設定されたブレークポイント、オープンソース、および自動保存されたファイルを保存するためのメカニズムです。
ワークスペースは特定のリポジトリに固定されます。1 つのリポジトリに複数のワークスペースを関連付けることができますが、ワークスペースごとに作成できるリポジトリは 1 つだけです。
BPE には、Identity Manager リポジトリへの 2 種類の接続があります。
この節では、次の手順を説明します。
新規ワークスペースの作成
新しいワークスペースを作成するには、次の手順に従います。
- 「Workspace location」ダイアログで、新規ワークスペースの一意の名前を「Workspace Directory」フィールドに入力して「OK」をクリックします。
まだ存在しないワークスペースの名前を指定すると、新規ワークスペースの作成ウィザードが表示され、ワークスペースのディレクトリを指定するように指示されます。
- 「Workspace Directory」フィールドにディレクトリ名を入力して、「Next」をクリックします。
「Connection Information」ダイアログが表示され、ワークスペースの接続情報を指定できます。
図 A-2 BPE の「Connection Information」ダイアログ
- 「Editor connection」情報を次のように指定します。
- BPE デバッガの「Debugger connection」情報を次のように指定します。
すでに述べたように、エディタ接続タイプに対して SOAP を選択した場合は、デフォルトのデバッガ接続タイプをデフォルトで SOAP に設定します。「Debugger connection」領域のすべてのオプションは無効になります。
- 次の資格情報を指定します。
- 「Finish」をクリックすると、新しいワークスペースが作成され、BPE のメインウィンドウが表示されます。
ワークスペースの選択
「Workspace location」ダイアログから、次のいずれかの方法で既存のワークスペースを選択します。
ワークスペースを選択したら、「OK」をクリックします。BPE のメインウィンドウが表示されます。
起動のトラブルシューティング
BPE が配下のサーバーに接続しようとしたとき、次のエラーメッセージが表示される場合があります。
HTTP 404 - /idm/servlet/rpcrouter2
Type Status report
message /idm/servlet/rpcrouter2 description
The requested resource (/idm/servlet/rpcrouter2) is not available
この接続エラーが発生した場合は、Identity Manager を実行しているブラウザインスタンスの URL フィールドを確認してください。フィールドにリストされている URL の最初の部分 (たとえば、http://localhost:8080/idm) は、デバッガ接続時に入力した URL と同一である必要があります。
JDIC の有効化
Web ブラウザパネルを「Form Preview」パネルに組み込む場合、優先する Web ブラウザとして JDIC を選択する必要があります。選択しない場合、Web ブラウザパネルは External webbrowser コマンドを使用して外部の Web ブラウザを起動します。
JDIC を指定するには、次の手順に従います。
x86 版 Solaris 10 以降用の JDIC を設定するには、次の手順に従います。
- https://jdic.dev.java.net から jdic-0.9.1-bin-cross-platform.zip をダウンロードします。
- zip ファイルを展開します。
- <wshome>/WEB-INF/lib/jdic.jar を jdic-0.9.1-bin-cross-platform/jdic.jar と置き換えます。
- jdic-0.9.1-bin-cross-platform/sunos/x86/* を <wshome>/bin/solaris/x86 にコピーします。
BPE での SSL の使用
SSL を使用するには、BPE で新規ワークスペースの作成ウィザードを開き、SOAP URL プロトコルを https に、ポート番号をアプリケーションの SSL ポートに変更します。
ビジネスプロセスエディタのナビゲーションIdentity Manager のプロセスまたはオブジェクトのカスタマイズを開始する前に、BPE で情報を操作、表示、入力する方法および選択を実行する方法について理解してください。
この情報は次の各節で構成されています。
BPE インタフェースの操作
BPE のインタフェースには、メニューバーと、選択のためのダイアログが含まれています。主な表示は 2 つのメイン区画に分かれています。
ツリービューの操作
左区画のツリービューには、タスク、フォーム、ビュー、または規則が階層的に表示されます。このビューには、個々の変数、アクティビティー、およびサブプロセスが順番に表示されます。アクションおよび遷移は各活動の下に入れ子にされます。図 A-4 は、ワークフローを強調したサンプルのツリービューです。
図 A-4 BPE のツリービュー
補助表示ビューの操作
BPE には、次の補助表示ビューがあります。
これらのビューが使用できるかどうかは、選択したオブジェクトタイプまたはプロセスによって異なります。
たとえば、フォームがブラウザに出現したとき、BPE はフォームのグラフィカル表示になります。このビューは、プロパティービューおよび一意のフォーム要素の XML 表示を補完します。これらのビューについては、次の節で説明します。
注
Identity Manager の各オブジェクトまたはワークフロープロセスに対して使用可能な表示タイプと、これらの追加ビューの操作方法の詳細は、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。
ダイアグラムビュー
ワークフローについては、インタフェースの右区画にダイアグラムビューが表示され、プロセスのグラフィカル表現を提供します。各アイコンは、特定のプロセスアクティビティーを表します。
図 A-5 ダイアグラムビュー (ワークフロー)
グラフィカルビュー
グラフィカルビューは BPE ウィンドウの右下区画に表示され、現在選択されているフォームをブラウザウィンドウでの表示と同様に表示します。
プロパティービュー
プロパティービューは BPE 表示の右上区画に表示され、現在選択されているフォーム内の要素についての情報を提供します。
図 A-6 プロパティービュー (フォーム)
プロセスまたはオブジェクトの読み込み
Identity Manager のプロセスまたはオブジェクトを読み込むには、次の手順に従います。
- メニューバーから「File」>「Open Repository Object」の順に選択します。
ヒント
Ctrl-O のショートカットも使用できます (BPE のショートカットの完全な一覧については、「キーボードショートカットの使用」を参照)。
- 「Login」ダイアログで入力を求められたら、Identity Manager Configurator の名前とパスワードを入力して「Login」をクリックします。
図 A-7 のような「Select objects to edit」ダイアログが表示されます。
図 A-7 「Select objects to edit」ダイアログ (「Library」オプションを展開)
このダイアログには、次のオブジェクトタイプを含む、オブジェクトの一覧が表示されます。
- オブジェクトタイプをダブルクリックすると、そのタイプに対して表示アクセス権のあるオブジェクトがすべて表示されます。
- プロセスまたはオブジェクトを選択して「OK」をクリックします。
エディタオプションの設定
BPE を起動するたびに好みの設定が反映されるように、各種のオプションを設定できます。エディタで作業するたびに、これらのオプションを個別に設定することもできます。
エディタオプションを設定するには、「Tools」>「Options」の順に選択して「Editor Options」ダイアログを開きます。
図 A-8 「Editor Options」ダイアログ
このダイアログのオプションを使用して、次の設定を指定できます。
- 「Form Server Port」 - HTML プレビューページのデフォルトポートを指定します。
このページはフォームの編集時に使用します。- 「Default Expression Style」 - フォーム、規則、およびワークフローでの式の表示オプションを制御します (「Graphical」または「XML」)。
- 「Initial Dialog Tab」 - 最前面に表示されるタブを制御します (「Main」または「XML」)。
- 「List Editor Style」 - リスト式のデフォルト表示を制御します。
リストはテーブル形式またはテキストボックスで表示できます。- 「Disable Type Selector」 - テキストボックスの隣に表示される「Type Selector」オプションを無効にします。タイプを変更するためのオプションは、引き続き「Edit」ダイアログから利用できます。
- 「Automatic Workflow Layout」 - 最初に開かれたときに、ワークフローアクティビティーの自動レイアウトを有効にします。
- 「Workflow Toolbox Style」 - ワークフローツールボックスの表示位置を、メインの BPE ウィンドウからの相対位置で指定します。次のオプションがあります。
- 「Preview Panel Context」 - 「Preview」区画に表示される情報の描画コンテキストを指定します。次のオプションがあります。
- 「Auto-save interval (in seconds)」 - BPE がセッションを自動保存する間隔を、秒数で指定します (デフォルトは 30 秒)。
- 「Preferred webbrowser」 - Web ブラウザの起動方法を指定します。
次のオプションがあります。- 「External webbrowser command」 - 外部 Web ブラウザを起動するための External webbrowser コマンドを指定します。
ワークフローリビジョンの検証
カスタマイズプロセスの各段階で、ワークフローのリビジョンを検証できます。
BPE では、プロセスのステータスを示す、検証メッセージが表示されます。
ワークフローのリビジョンを検証するには、次の手順に従います。
変更の保存
プロセスまたはオブジェクトへの変更を保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。「Save」を選択すると、最後に保存された場所 (リポジトリまたは最後に保存されたファイルのどちらか) にオブジェクトが保存されます。同じオブジェクトの複数のコピーを、異なる状態で、また複数の異なるファイルまたはリポジトリで開くことができます。
注
「File」>「Save As File」の順に選択して、オブジェクトまたはプロセスを XML テキストファイルに保存することもできます。ファイルへの保存は <ファイル名>.xml の形式で行います。
XPRESS の挿入
BPE の「XML」区画で規則、ワークフロー、設定オブジェクト、汎用オブジェクト、またはフォームを編集中に、カーソルが置かれている任意の場所に XPRESS 要素の XML テンプレートをすばやく挿入できます。
無効な位置に XPRESS 要素を挿入した場合、新しいコード行の左隣に 1 つまたは 2 つの赤のドット (インジケータ) が表示されます。これらは、挿入されたコードの最初の行と最後の行を示します。これらのインジケータの詳細は、「Validating Workflow Revisions」を参照してください。
図 A-10 XPRESS 関数の挿入
キーボードショートカットの使用
BPE では、タスクを実行するための、次のキーボードショートカットがサポートされています。
Javadoc へのアクセスXML を表示するすべての BPE ウィンドウからは、次のようにして、すべての公開メソッドクラスの Javadoc にアクセスできます。
- XML ウィンドウ内で右クリックして、カスケードメニューを表示します。
- 「New」>「Browse Javadoc」の順に選択します。
図 A-11 Javadoc を開く
- カスケードメニューから、次のいずれかのオプションを選択します。メニューには次のパッケージが含まれており、これらのパッケージはさらにコンポーネントクラスに分かれています。
- 「All Classes」: Javadoc クラスのフレームビューを表示します。ブラウザ内で、このビューから各クラスの Javadoc にジャンプできます。
これらのメニューオプションのいずれかを選択すると、クラスの Javadoc を表示するブラウザウィンドウが開きます。
メソッド参照の挿入
メソッド呼び出しを XML に挿入するには、クラス Javadoc のメソッド要約セクションにアクセスします。メソッドの要約で、メソッド名の前にある選択ボタンをクリックします。
図 A-12 getUser メソッドの選択
カーソル挿入ポイントの位置に、XML からメソッドを呼び出すために必要な <invoke> 要素が BPE によって挿入されます。
汎用オブジェクトと設定オブジェクトの操作Identity Manager の基本オブジェクトモデルは、持続オブジェクトモデルです。Identity Manager のほぼすべての操作は、オブジェクトの作成によって実行するため、持続オブジェクト API は Lighthouse をカスタマイズおよび制御するための基本オブジェクトモデルです。
ここでは、持続オブジェクトの操作についての情報を提供します。説明する内容は次のとおりです。
共通持続オブジェクトクラス
PersistentObject はすべての持続オブジェクトの共通基底クラスであり、Identity Manager をカスタマイズおよび制御するための基本オブジェクトモデルを提供します。PersistentObject は、すべての持続オブジェクトに共通のインフラストラクチャーの一部である Java クラスの集合で構成されます。
これらの共通 PersistentObject クラスには、次のものが含まれます。
- Type: 参照されるオブジェクトの型を示すために、多くのメソッドで使用される定数の集合。
- PersistentObject: すべてのリポジトリオブジェクトの共通基底クラス。最も重要なプロパティーは「ID」、「member object groups」、および「property list」です。
- ObjectRef: オブジェクトが別のオブジェクトを参照するとき、参照はこのオブジェクトに符号化されます。参照にはオブジェクトの型、名前、およびリポジトリ識別子が含まれます。
- Constants: 多数の異なるシステムコンポーネント用の、ランダム定数のコレクション。
- ObjectGroup: Identity Manager のインタフェース内で、組織を表すグループ。すべての持続オブジェクトは、少なくとも 1 つのオブジェクトグループに属する必要があります。特に指定しない場合、オブジェクトは最上位のグループに配置されます。
- Attribute: オブジェクトによってサポートされる共通属性を表す、定数オブジェクトのコレクション。多くの場合、オブジェクトクエリーを構築するときに内部的に使用されます。メソッドが Attribute 引数を取るとき、通常は、属性名を格納した文字列を引数に取る、対応したメソッドが存在します。
オブジェクトの表示と編集
BPE を使用して、最もカスタマイズされることが多い、2 種類の持続オブジェクトを表示および編集できます。
以降の節では、設定オブジェクトタイプおよび汎用オブジェクトタイプの概要を説明します。詳細は、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。
設定オブジェクト
BPE では、フォームおよびワークフローに直接アクセスできます。ただし BPE には、カスタムビューアと関連付けられていない、その他の設定オブジェクトへのアクセス手段も用意されています。これらのその他設定オブジェクトには、「Configuration Object」カテゴリの下にある「BPE」からアクセスできます。
BPE では、次の図に示すように、これらの各種設定オブジェクトのリストが左区画のツリービューに表示されます。
図 A-13 BPE での設定オブジェクトのツリー表示
ツリービューでオブジェクト名をダブルクリックすると、オブジェクトウィンドウが表示されます。このウィンドウには、「Main」、「Repository」、および「XML」の 3 つのオブジェクトビュー (タブ) があります。
たとえば、ツリービューで「User Extended Attributes」をダブルクリックすると、次のダイアログが表示されます。
図 A-14 オブジェクトの「User Extended Attributes」ダイアログ
BPE ウィンドウの左区画では、未フィルタの XML 形式でも、設定オブジェクトが表示されます。たとえば、次の図のようになります。
図 A-15 BPE での調整設定オブジェクトの XML 表示
汎用オブジェクト
汎用オブジェクトは名前/値ペアの単純なコレクションであり、ビューを表現するために使用できます。BPE では、これらの名前/値ペアが属性のデータ型とともに列形式で一覧表示されます。有効なデータ型には Boolean、int、string、xmlobject などがあります。
図 A-16 BPE での汎用オブジェクト (System Configuration) の属性表示
多くのカスタマイズでは、汎用オブジェクトタイプの System Configuration オブジェクトを編集する必要があります。
新しいオブジェクトの作成
新しい設定オブジェクトまたは汎用オブジェクトを作成するには、次の手順に従います。
- 「File」>「New」の順に選択し、「Generic Object」または「Configuration:New Configuration」を選択します。
「Configuration:New GenericObject」または「Configuration:New Configuration」ダイアログが開き、メインパネルが表示されます。
- 「Name」フィールドに新しいオブジェクト名を入力します。
BPE のメインウィンドウで、新しいオブジェクト名がツリービューに追加されます。また、次の処理が行われます。
- 汎用オブジェクトを作成する場合は、次のように属性を追加し、必要に応じて手順を繰り返します。
- 「File」>「Save in Repository」の順に選択して、新しいオブジェクトをリポジトリに保存します。
新規設定オブジェクトの検証
BPE のメインウィンドウの右区画で「Validate」をクリックすると、新規設定オブジェクトの XML をただちに確認できます。
規則の作成と編集BPE を使用して、次の操作を行うことができます。
この節では、BPE を使用して規則を作成および編集するための情報および手順を示します。説明する内容は次のとおりです。
注
BPE アプリケーションの起動手順は、「BPE の起動と設定」で説明しています。
BPE インタフェースの使用方法
規則のカスタマイズを開始する前に、BPE インタフェースのナビゲーションおよび使用方法の基本を理解する必要があります。規則を操作するとき、初期状態の BPE インタフェースは、表示区画、メニューバー、操作メニュー、および「Rule」ダイアログで構成されます。
この節では、規則の作成と編集に関係するインタフェースについて説明します。説明する内容は次のとおりです。
BPE の表示区画
規則を操作するとき、BPE のインタフェースには次の表示区画があります。
ツリービュー
インタフェースの左区画のツリービューには、選択した規則がスタンドアロンのアイコンとして一覧表示されます。
図 A-20 ツリービューでの規則表示
一般に、ツリービューにはタスク、フォーム、またはビューの階層が表示されます。階層では各要素が順番に表示され、親要素の下にサブ要素が入れ子にされます。
ただし、(規則ライブラリオブジェクト、ワークフロー、またはフォームにすでに取り込まれている場合を除いて) 規則は Identity Manager 内部の階層内に存在しないため、ツリービューに表示される規則間には階層関係はありません。その代わりに、ライブラリ、ワークフロー、またはフォームに取り込まれない規則は、単一のアイコンとしてツリービューに表示されます。
Rule source
インタフェース内の右上部分の「Rule source」区画には、規則のソース情報が表示されます。
図 A-21 「Rule source」区画
この区画では、右クリックしてカスケードメニューを表示し、次のタスクを実行できます。
この区画の上にあるボタンを使用して、次の操作を実行することもできます。
「Input」タブ
「Input」タブ区画は、ウィンドウの右下隅にデフォルトで表示されます。
図 A-22 「Input」タブ区画
このタブを使用して、テストのために規則に渡される引数を制御できます。このタブは基本的には、BPE の汎用オブジェクトエディタ (「汎用オブジェクト」を参照) と同じです。
この区画では、次の操作を実行できます。
「Result」タブ
「Result」タブを選択し、「Rule source」区画の上にある「Run」をクリックすると、選択した規則を実行できます。「Result」タブ区画には、規則の戻り値が XML 形式で表示されます。
図 A-23 「Result」タブ区画
「Trace」タブ
「Trace」タブを選択して、規則の実行中に XPRESS トレースをキャプチャします。
図 A-24 「Trace」タブ区画
メニュー選択
メニューバーまたは操作 (右クリック) メニューを使用して、インタフェース内で作業を実行できます。
ツリービューまたはダイアグラムビューで項目を選択して右クリックすると、その項目に対して実行できる操作がメニュー項目として表示されます。
「Rule」ダイアログ
個々の規則および規則要素には、要素の型および特性を定義するために使用できるダイアログが関連付けらています。
これらのダイアログにアクセスするには、ツリービューで規則名を右クリックします。選択した規則の「Rule」ダイアログが表示されます。デフォルトでは「Main」タブが前面に表示されます。たとえば、次の図のようになります。
図 A-25 「Rule」ダイアログ (「Main」タブビュー)
このダイアログの次のオプションを使用して、規則を定義します。
規則要素の編集 (フィールド値の型の変更)
フィールド値の型の選択によっては、ダイアログ内の一部のフィールドの動作が異なる場合があります。
次のいずれかの方法で、値の型を変更できます。
表示タイプの変更
ダイアグラムビューでの情報表示形式を変更するには、次の手順に従います。
- 右クリックして操作メニューを表示します。
- 「Display」を選択し、表示タイプを選択します。
表示タイプには次のものがあります。
- 「XML」 - XPRESS または JavaScript ソースを表示します。XML ソースを直接編集する場合は、この表示タイプを選択します。
図 A-27 XML 表示
- 「Graphical」 - 式ノードのツリーを表示します。この表示タイプでは、構造の概要を確認できます。
注
スペースの都合のため、図 A-28 には選択した規則の一部のみを示しています。
図 A-28 グラフィカル表示
- 「Property Sheet」 - プロパティーを一覧表示します。一部のプロパティーは直接編集できます。
- 「Configuration」 - 引数の情報をプロパティーシート形式で一覧表示します (図 A-30 を参照)。加えて、ルールの作成者が、データベース内でルールを説明するために使用したコメントも表示されます。
図 A-30 設定表示
規則の参照
Identity Manager からアクセスできる規則を参照および選択するには、次の方法を使用します。
「Select Rule」ダイアログ (図 A-31) が表示されたら、「Rule」ノードを展開し、編集可能な規則を選択します。
図 A-31 「Select Rule」ダイアログ
規則要約の詳細の検討
ツリー区画で規則名をダブルクリックすると、規則の要素が一覧表示されます。
「Rule」ダイアログには、次のタブがあります。「Main」タブ
このタブを選択すると、要素の引数プロパティー (各引数の名前や値など) にアクセスできます。見やすくするために、引数の順序を変更することもできます。このリストで順序を変更しても、規則の解釈は変わりません。
「Main」タブでは、規則に関して、「Rule」ダイアログの「Main」ビュー (図 A-32 を参照) と同じ情報が表示されます。
図 A-32 「Main」タブ表示
「Repository」タブ
「Repository」タブを選択すると、選択した規則についての次の情報を表示できます。
図 A-33 「Repository」タブ表示
「Repository」タブに含まれるのは、主に読み取り専用の情報ですが、次の値は変更が可能です。
- 「Organization」: 新しい組織割り当てをテキストフィールドに入力します。
- 「Authorization Type」: 新しい認証タイプをテキストフィールドに入力します。
注
規則のサブタイプの例については、「リソースアカウント除外規則サブタイプ」を参照してください。
「XML」タブ
「XML」タブを選択すると、選択した XML のコードを表示して直接編集できます。「OK」をクリックして保存する前に、「Validate」をクリックすると、変更内容を検証できます。XML パーサー は、waveset.dtd を使用して規則の XML を検証します。
図 A-34 「XML」タブ表示
新しい規則の作成
新しい規則を作成するには、次の手順に従います。
- 「File」>「New」>「Rule」の順に選択します。「Rule: New Rule」ダイアログが表示されます。デフォルトでは「Main」タブが前面に表示されます。
図 A-35 「Rule: New Rule」ダイアログ
- 新しい規則の次のパラメータを指定します。
- 新しい規則に引数を追加するには、「New」をクリックします。
- 「Argument: Null」ダイアログが表示されたら、「Name」、「Value」、および「Comments」の各フィールドにテキストを入力して「OK」をクリックします。
このテキストは「Arguments」テーブルに表示され、<RuleArgument> 要素として規則に挿入されます。
- 終了したら、「OK」をクリックして変更を保存します。
規則要素の定義
関数、XPRESS 文、複数のデータ型のうちの 1 つを、規則を構成する XML 要素にすることができます。次に示す BPE の「Rule Element」ダイアログを使用して、規則要素を作成または編集できます。
以降の節では、これらの各ダイアログについて詳しい情報を示します。
注
規則の構造の詳細は、「規則構文について」を参照してください。
「Argument」ダイアログ
「Argument」ダイアログを使用して、規則要素にアクセスしたり、規則要素を定義したりできます。
図 A-36 「Argument」ダイアログ
「Argument」ダイアログを開くには、次のいずれかの方法を使用します。
「Argument」ダイアログには、次の基本オプションがあります。
これらのオプションに加えて、表示または編集対象の要素のタイプによっては、その他のフィールドが「Argument」ダイアログに表示される場合があります。
たとえば、メソッド要素を表示している場合、クエリーメソッドに対して表示されるもの類似した、次のような「Argument」ダイアログが表示されます。
図 A-38 「Argument Popup」ダイアログ (メソッド)
引数のデータ型を変更するには、「Change Type」ボタンをクリックして「Select Type」ダイアログを表示します。
図 A-39 「Select Type」ダイアログ
次の表に、有効な引数の型の一覧を示します。
「Element」ダイアログ
「Element」ダイアログには、引数の名前と値が表示されます。
図 A-40 address 変数の要素ポップアップ
(グラフィカルビューのみ) 「Rule source」区画から「Element」ダイアログを表示するには、次のいずれかの手順に従います。
引数名をクリックしてダイアログを開く場合、引数のデータ型およびスタイル (「simple」または「calculated」) を変更できます。
さまざまなタイプの要素を定義できます (表 A-4 を参照)。要素のデータ型を変更するには、「Change Type」ボタンをクリックします。「Select Type」ポップアップが開き、選択した規則の要素に割り当てることのできるデータ型の一覧が表示されます。
新しい要素を作成するには、グラフィカルビューで右クリックし、メニューから「New」を選択し、要素タイプを選択します。このメニューに表示される要素タイプは、XPRESS 関数のカテゴリを表します。
BPE セッションで最近作成された要素タイプには、操作メニューの「Recent」オプションからもアクセスできます。
次の図では、「New」>「Strings」>「concat」の順に選択したときに表示される ウィンドウを示します。
図 A-41 「concat」ダイアログ
「Object Access」ダイアログ
「Object Access」ダイアログを使用して、オブジェクトの操作や、オブジェクトを操作する Java メソッドの呼び出しを実行できます。
「Object Access」ダイアログを開くには、グラフィカル表示内で任意の場所を右クリックし、ポップアップメニューから「New」>「Other」>「Object Access」の順に選択し、操作オプションを選択します。
操作オプションとしては、表 A-5 で説明されているオプションのいずれかを選択できます。
オブジェクトを作成するには、右クリックして操作メニューを表示し、「New」>「Other」>「Object Access」>「new」の順に選択します。
図 A-42 「new」ダイアログ
要素詳細の編集
「Argument」ダイアログから、変数の値を定義できます。「Value」フィールドを使用して、単純文字列値を変数の初期値として入力します。代わりに、(Expression や Rule などの) 値の型を選択してから、「Edit」をクリックして値を入力する方法もあります。
図 A-43 は、ref 文の変数ウィンドウを示します。
図 A-43 「ref」ダイアログ
引数のタイプ (単純または複合) を指定できます。値が文字列型、ブール型、整数型などであり、テキストフィールドに引数の値を入力できる場合は「simple」を選択します。追加のポップアップが必要なリスト、XML オブジェクト、その他の式などを扱っている場合は、「calculated」を選択します。
「Diagnostics」ダイアログ
「Diagnostics」ダイアログを使用して、次の要素のデバッグまたは検証を実行できます。
「Diagnostics」ダイアログにアクセスするには、右区画内で操作メニューから「New」>「Other」>「Diagnostics」>「trace」の順に選択します。表 A-6 で説明されているオプションを選択して、その項目をデバッグします。
規則の編集
規則をカスタマイズする場合、変更を保存および検証して、規則が正確かつ予測どおりに完了することを確認する必要があります。保存したあとで、変更した規則を Identity Manager で使用するためにインポートします。
この節では、次の手順を説明します。
規則のロード
BPE で規則をロードするには、次の手順に従います。
変更の保存
規則への変更を保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。
変更の検証
カスタマイズプロセスの各段階で、規則への変更を検証できます。
BPE では、規則のステータスを示す検証メッセージが表示されます。
規則ライブラリ
規則ライブラリは、密接に関係する規則を、Identity Manager リポジトリ内の 1 つのオブジェクトに整理するための便利な手段として機能します。ライブラリを使用すると、リポジトリ内のオブジェクト数が削減され、フォームやワークフローの設計者は有用な規則を簡単に特定して呼び出せるようになるため、規則の保守が容易になります。
規則ライブラリは、XML の 設定オブジェクトとして定義されます。設定オブジェクトには、1 つ以上の規則オブジェクトを含む、ライブラリオブジェクトが含まれます。コード例 A-1 は、2 つの異なるアカウント ID 生成規則を含むライブラリを示します。
ライブラリ内の規則は、XPRESS の <rule> 式を使用して参照します。name 属性の値は、ライブラリを含む設定オブジェクトの名前と、ライブラリ内部での規則の名前をコロンで連結した形式です。
たとえば次の式は、Account ID Rules という名前のライブラリに含まれる、First Dot Last という名前の規則を呼び出します。
<rule name='Account ID Rules:First Dot Last'/>
表示またはカスタマイズするライブラリの選択
表示または編集する規則ライブラリを選択するには、次の手順に従います。
これで、規則ライブラリの XML を編集できます。
既存のライブラリオブジェクトへの規則の追加
規則ライブラリをチェックアウトしたあとで、<Library> 要素の内部のどこかに <Rule> 要素を挿入することにより、新しい規則を追加できます。ライブラリ内部での規則の位置は重要ではありません。
ワークフロープロセスのカスタマイズここでは、「Email Notification」の例を使用して、ワークフロープロセスをカスタマイズするために実行する手順全体を説明します。具体的には、次のことを行います。
ステップ 1: カスタム電子メールテンプレートの作成
カスタム電子メールテンプレートを作成するには、次のようにして、既存の Identity Manager 電子メールテンプレートを開いて変更します。
- BPE のメニューバーから、「File」>「Open Repository Object」>「Email Templates」の順に選択します。
- 「selection」ダイアログ (図 A-45) が表示されたら、「Account Creation Notification」テンプレートを選択して「OK」をクリックします。
図 A-45 電子メールテンプレートの選択
- 選択した電子メールテンプレートが BPE で表示されたら、テンプレート名を右クリックし、ポップアップメニューから「Copy」を選択します。
- もう一度右クリックして「Paste」を選択します。
電子メールテンプレートのコピーがリストビューに表示されます。
- リストビューで新しい電子メールテンプレートをダブルクリックして、テンプレートを開きます。
- 「Name」フィールドに「User Creation Notification」と入力して、テンプレート名を変更します。
図 A-46 新しいテンプレートの名前変更
- 新しく作成した「User Creation Notification」テンプレートで、「Subject」および「Body」フィールドを必要に応じて変更します。
図 A-47 ユーザー作成通知電子メールテンプレートのカスタマイズ
Identity Manager アカウントまたは電子メールアドレスのコンマ区切りのリストを、「Cc」フィールドに追加することもできます。
- 完了したら、「OK」をクリックします。
- テンプレートを保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。
これで、「Create User」ワークフロープロセスを変更する準備ができました。次の手順に進みます。
ステップ 2: ワークフロープロセスのカスタマイズ
次の手順に従って、新しい電子メールテンプレートを使用するように「Create User」ワークフロープロセスを変更します。
- BPE で「File」>「Open Repository Object」>「Workflow Processes」の順に選択して、ワークフロープロセスをロードします。
編集可能な Identity Manager オブジェクトを含むダイアログが表示されます。
- 「Create User」ワークフロープロセスを選択して「OK」をクリックします。
図 A-48 ワークフロープロセスのロード
「Create User」ワークフローが表示されます。
- ツリービューで、「Create User」プロセスを右クリックし、ポップアップメニューから「New」>「Activity」の順に選択します。
図 A-49 アクティビティーの作成と命名
ツリービュー内のアクティビティーリストの一番下に、activity1 という名前の新しいアクティビティーが表示されます。
- activity1 をダブルクリックして「Activity」ダイアログを開きます。
- 「Name」フィールドに「Email User」と入力して、アクティビティー名を変更します。
デフォルトの「Create User」ワークフローでは、アカウントが作成されたことをアカウント要求者に通知するステップ (Notify) は端まで直接遷移します。
新しいステップをワークフローに含めるには、この遷移を削除し、新しい遷移 (Notify と Email User の間、および Email User から端へ) を作成し、プロセスが終了する前に新しいユーザーに電子メールを送信する必要があります。
- 「Notify」を右クリックして「Edit」を選択します。
- 「Activity」ダイアログの「Transitions」領域で、端を選択して「Delete」をクリックすることにより、その遷移を削除します。
- 「Transitions」領域で、「New」をクリックして遷移を追加します。
- 「Transitions」ダイアログが表示されたら、リストから「Email User」を選択して「Done」をクリックします。
図 A-50 遷移の作成と変更
- BPE のツリービューで「Email User」を右クリックし、「New」>「Transitions」の順に選択して遷移を作成し、「Transitions」ダイアログを開きます。
- 端を選択して「OK」をクリックします。
- 次に、新しい「Email User」アクティビティーに対して、電子メール操作とその受信者を定義する操作を作成する必要があります。ツリービューで「Email User」を右クリックし、「New」、「Action」を選択して「Action」ダイアログを開きます。
- 「Type」オプションで「Application」ボタンを選択します。
- 「Name」フィールドに、新しい操作の名前を入力します。
- 「Application」メニューから「email」を選択します。
図 A-51 操作の作成
- 「Argument」テーブルに新しい選択が表示されます。次の情報を入力します。
- 「New」をクリックして、引数をテーブルに追加します。引数に accountId という名前を付け、この引数の値として「$(accountId)」と入力します。
図 A-52 操作の作成
- 完了したら、「OK」をクリックします。
- BPE のメニューバーから「File」>「Save in Repository」の順に選択して、プロセスを保存し、リポジトリに再びチェックインします。
保存したあとは、Identity Manager を使用してユーザーを作成することにより、新しいプロセスをテストできます。簡潔にするため、ここでは新しいユーザーの承認者またはリソースを選択しません。ユーザーの作成時に新しい歓迎メッセージの到着を確認できるように、自分の電子メールアドレス、または自分が確認できる電子メールアドレスを使用します。
ワークフロー、フォーム、規則のデバッグBPE には、ワークフロー、規則、フォーム用のグラフィカルデバッガが含まれています。BPE のデバッガを使用して、ブレークポイントを視覚的に設定したり、ワークフローまたはフォームをブレークポイントまで実行したり、プロセス実行を停止して変数を検証したりできます。
手続き型プログラミング言語のコードデバッガを使用した経験があれば、この節で使用されている用語の理解は難しくありません。
ビュー、ワークフロー、フォームの詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』のそれぞれの該当する章を参照してください。
この節では、BPE のデバッガの使用方法を説明します。説明する内容は次のとおりです。
使用にあたっての推奨事項
BPE のデバッガは、次の条件に当てはまる場合にのみ使用してください。
- 開発環境またはテスト環境で使用する。本稼働環境ではデバッガを使用しないでください。ブレークポイントの設定はグローバル設定であるため、ブレークポイントに到達した時点で着信要求スレッドが中断されます。
- デバッガ実行権限をユーザーに割り当てる (この権限は Waveset Administrator 機能の一部として付与される)。デバッガでは、スレッドを中断させることができますが、これによってほかのユーザーがシステムからロックアウトされる可能性があります。また、ほかのユーザーのセッションの変数を表示できますが、この変数に重要なデータが含まれている可能性があります。この権限を悪用すると多大な影響があることを考慮して、権限を割り当てるときには十分に注意してください。
- ユーザーにはアプリケーションサーバーの非公開コピーを割り当てる。2 人のユーザーが同じアプリケーションサーバー上で開発を行っており、一方のユーザーがデバッガをそのサーバーに接続した場合、デバッガのブレークポイントに到達すると、そのサーバーを使用中のもう一方のユーザーがロックアウトされます。
クラスタの使用は、BPE デバッガとの組み合わせではサポートされていません。
テスト環境の外部でのデバッガの実行
デバッグが必要な問題が本稼働環境に見つかった場合は、その問題をテスト環境で再現してデバッグしてください。デバッガでブレークポイントを設定すると、大量のトラフィックが発生している本稼働環境内のアプリケーションサーバーを短時間のうちに停止させる可能性があります。また、ブレークポイントを設定する位置によっては、ユーザーがシステムの利用をブロックされる可能性があります。
独立したテスト環境でデバッグを実行できない場合は、次の手順に従います。
- クラスタ内のノードのうちの 1 つをオフラインにすることにより、すべての有効なトラフィックをクラスタのサブセットに振り分けます (以後、このタスクの説明では、このノードを server-a とする)。
- BPE を使用して、システム設定オブジェクトを編集します。SystemConfiguration serverSettings.server-a.debugger.enabled プロパティーを true に設定します。
BPE でのシステム設定オブジェクトへのアクセス方法の詳細については、「ステップ 2: システム設定オブジェクトの編集」を参照してください。
- server-a を再起動し、システム設定オブジェクトのプロパティー設定の変更を有効にします。
- 「Tools」>「Debugger」の順に選択して、デバッガを起動します。
- 新しいワークスペースを作成します。このワークスペースで、デバッガ接続は次の URL を使用します。
server-a:<port>
デバッグが完了したら、次の手順に従います。
- serverSettings.server-a.debugger.enabled を false に設定し、server-a を再起動して、稼働中の本稼働環境にデバッガが接続しないようにします。
- server-a をオンラインのクラスタに再統合します。
デバッガの無効化
本稼働環境では、誰かが誤ってデバッガをアプリケーションサーバーに接続することを防ぐために、serverSettings.server-a.debugger.enabled プロパティーを常に無効にしてください。
デバッガを無効にするには、システム設定オブジェクトの serverSettings.<server>.debugger.enabled プロパティーを false に設定します。
デバッガのメインウィンドウの使用
デバッガのメインウィンドウでは、選択したオブジェクトの XML が表示され、そのオブジェクトの実行についての情報が提供されます。このウィンドウから、次の操作を実行できます。
- デバッグプロセスの開始と停止
- プロセス実行のナビゲーション
- プロセス実行内での個別の停止ポイント (ブレークポイント) の設定。ブレークポイントの詳細については、「Setting Breakpoints」を参照してください。
図 A-53 BPE デバッガ: メインウィンドウ
注
BPE のデバッガには、タスクを実行するための多数のキーボードショートカットが用意されています。ショートカットの一覧については、「キーボードショートカットの使用」を参照してください。
メインウィンドウには、以降で説明する次の領域が含まれています。
ソース領域
「Sources」領域には、選択したオブジェクトの未フィルタの XML が表示されます。
「XML」パネルの左余白には、ブレークポイントを設定できるコード内のポイントを示す、一連のボックスが表示されます。<WFProcess...> タグのすぐ近くにあるボックスをクリックすると、ワークフローの開始位置にブレークポイントが設定されます。
図 A-54 BPE デバッガのメインウィンドウの「Source」パネル
実行スタック
実行スタックは、選択したオブジェクト内のどの関数が実行中であるかを特定します。この領域には、実行中の関数の名前と、その関数を呼び出した関数の名前が一覧表示されます。
追加の関数が呼び出しチェーンに出現する場合、これらの関数は順番に一覧表示されます。このリストは「stack trace」とも呼ばれ、プログラムのライフサイクルにおけるこの時点での実行スタックの構造を表示します。
図 A-55 BPE デバッガのメインウィンドウの「Execution Stack」パネル
「Variables」領域
「Variables」領域には、現在の実行のポイントで、現在スコープ内にあるすべての変数が一覧表示されます。変数オブジェクト名をクリックすると、そのオブジェクトが展開され、各変数の名前が表示されます。
図 A-56 BPE メインウィンドウの「Variables」パネル
「Variables Not Available」領域
「Variables Not Available」領域は、デバッグがアクティブでない場合、または選択したスタックフレームが現在のスタックフレームでない場合に表示されます。
「Last Result」領域
現在の要素が XPRESS の終了タグである場合、「Last Result」領域にはその評価の結果が表示されます。これは、最後の値が意味を持つ、その他のタグにも適用されます。たとえば、<Argument> のワークフローへのサブプロセスが評価される過程で、この領域にはその引数の値が表示されます。この領域は、デバッグが現在進行中でない場合は使用できません。
図 A-57 BPE デバッガのメインウィンドウの「Last Result」パネル
「Last Result Not Available」領域
「Last Result Not Available」領域は、デバッグがアクティブでない場合に表示されます。
ブレークポイントの設定
「Breakpoint」は、特定のコード行を実行する前に、オブジェクトの実行を停止するためにデバッガが使用するコマンドです。Identity Manager のデバッガでは、コードのブレークポイントは、フォームまたはワークフローの起動された場所に関係なく適用されます。
ほとんどのデバッガではソース上の位置にしかブレークポイントを設定できませんが、BPE のデバッガでは、「Refresh view」などの概念的な実行ポイントにもブレークポイントを設定できます。この場合、デバッガは「Refresh view」操作が発生した時点で中断します。その後、更新ビューにステップインし、処理が進行中の配下のフォームを確認できます。
ブレークポイントの設定はグローバル設定です。つまり、ブレークポイントを設定すると、指定されたブレークポイントに到達した時点で着信要求スレッドが中断します。これは、どのユーザーが要求を行っているかに関係なく発生します。
ブレークポイントの設定
ソースの全ブレークポイントの要約を表示するには、「Sources」タブをクリックします。「Breakpoints」区画に、ソースの全ブレークポイントが一覧表示されます。ブレークポイントをクリックすると、特定のブレークポイントに移動します。
ブレークポイントのタイプ
「Breakpoints」領域には、次のタイプのブレークポイント設定があります。
指定されたタブをクリックすることにより、各タイプのブレークポイントにアクセスします。
- プロセス実行中に発生するビュー処理に基づいて、コードにブレークポイントを設定するには、「View cycle」タブを選択します。このダイアログには、最も頻繁に呼び出されるビュー操作が一覧表示されます。一覧表示されたそれぞれのビュー操作は、各ビューで使用可能です。
図 A-59 BPE デバッガの「Breakpoints」パネル: 「View cycle」タブ
- フォーム処理の指定された段階に基づいて、コードにブレークポイントを設定するには、「Form cycle」タブを選択します。フォーム処理の段階については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。
図 A-60 BPE デバッガの「Breakpoints」パネル: 「Form cycle」タブ
実行プロセスのステップスルー
ステップスルーとは、実行中のプロセスの関数を逐次、計画的に分析する処理のことです。
用語
ステップイン、ステップオーバー、およびステップアウトは、言語の構造によって実行順が暗黙的に決定される手続き型プログラミング言語のデバッガに由来する用語です。ただし、Identity Manager のフォームおよびワークフローでは、コード内で要素が出現する順序はその実行順に影響しません。
このため、これらの用語はビジネスプロセスエディタで使用するときには、多少異なった意味を持ちます。
全般的なヒント
次に示すのは、実行プロセスのステップスルーを活用するために役立つヒントの一覧です。
- デバッガでのステップインを、デバッグタスクのコンテキストで実現可能な範囲で細かく設定します。これは、デバッグにとって重要な可能性がある要素を空過するのを避けるために役立ちます。
- ステップ実行は、プログラムの実行順を変更しません。プログラムの実行順は、デバッガを接続しない場合と同じです。目に見える実行部分をスキップ可能です (ただし、それでも実行自体は行われる)。
- コード内でステップをできるだけ小さくしたい場合は、「step-into」をクリックします。
- 開始タグと終了タグの間で、内容に関して問題が発生しそうにないと思われるときは、「step-over 」をクリックします。デバッガはこの要素をスキップしますが、これらのタグ内のコードは引き続き実行されます。
表 A-7 は、BPE のデバッガによる、次のコードサンプルの処理方法のスナップショットを示します。
<A>
<B/>
</A>
<D/>
(A、B、D は何らかの XML 要素)
表 A-7 デバッグプロセスの例
実行順
結果
<A>、<B/>、</A>、<D/>
「step-into」をクリックすると、デバッガはその実行順で行を強調表示します。
「step-over 」をクリックすると、デバッガは <A>、</A> (B をスキップ)、<D/> を強調表示します。
<A>、<D/>、<B/>、</A>
「step-over 」をクリックすると、<A>、<D/>、<B/>、</A> の順でコード行が表示されます (この場合、ステップオーバーはステップインと同じ)。
はじめに
BPE には、ワークフロー、フォーム、および規則に対する、デバッガの使用方法についてのチュートリアルが含まれています。デバッガに付属する sample/debugger-tutorial.xml ファイルは、サンプルのワークフロー、規則、およびフォームを含んでいます。この章では、これらのサンプルをチュートリアルに使用します。
ステップ 1: チュートリアルファイルのインポート
次のいずれかの方法で、チュートリアルファイルをインポートします。
ファイルが正常にインポートされたら、次のステップに進みます。
ステップ 2: システム設定オブジェクトの編集
システム設定オブジェクトを編集するには、次の手順に従います。
ステップ 3: デバッガの起動
アプリケーションサーバーの再起動が完了すると、「Tools」>「Debugger」の順に選択して BPE デバッガを起動できるようになります。
例: タブ付きユーザーフォームと更新ビューのデバッグ
ここでは、サンプルのデバッグ手順を通じて、フォームまたはワークフローの呼び出し元の場所に関係なく、デバッガのブレークポイントがどのように適用されるかを示します。
このサンプル手順は、次の各ステップで構成されます。
ブレークポイントの設定
ブレークポイントを設定するには、次の手順に従います。
新規ユーザーの作成
新規ユーザーを作成するには、次の手順に従います。
「Before Refresh View」結果の表示
デバッガフレームに戻ります。このフレームはこの時点で、「Refresh view」に設定したブレークポイントで中断した状態です。「Execution Stack」には「Before Refresh View」が表示されます。これは、更新操作が発生する直前のビューの状態を示します。「Variables」パネルには、更新される直前のビューが表示されます。
図 A-61 例 1: 「Before Refresh View」ブレークポイントでの中断のデバッグ
グローバルサブツリーを展開し、フォームで入力した firstname および firstname の値を探します。fullname の値は、この時点では「null」です。
「After Refresh View」結果の表示
「After Refresh View」の結果を表示する手順は、次のとおりです。
- 「Continue」をクリックします。
「Execution Stack」には「After Refresh View」が一覧表示されます。ここには、更新操作が発生した直後のビューの状態が表示されます。fullname の値はこの時点では「jean faux」です。
図 A-62 例 1: 「After Refresh View」ブレークポイントでの中断のデバッグ
- 「Continue」をもう一度クリックします。
フォームの実行が再開されます。ブラウザウィンドウに戻ります。「Name」を「jean2」に変更し、「ID」タブをもう一度クリックして、更新をもう一度トリガーします。
- デバッガフレームに戻ります。
フォーム処理は「Before Refresh View」の箇所で中断されます。
フォームのステップスルー
フォームをステップスルーするには、次の手順に従います。
- 「step-into」をクリックして、実行内の姓名の展開部分を表示します。
デバッガに「Before Expansion」が表示されます。これは、フォームの変数が展開されていないことを示します。
図 A-63 例 1: 「Before First Expansion」パスでの中断のデバッグ
- 「step-into」をもう一度クリックします。
デバッガに「Before Expansion, iteration=0」と表示されます。これは、最初の「Expansion」パスの前にフォーム変数が出現することを示します。
- 「step-into」をもう一度クリックします。
この時点で、デバッガは匿名ソース上にあります。匿名ソースは一時的に作成されるラッパーフォームであり、MissingFields フォームに関連します。
図 A-64 例 1: タブ付きユーザーフォームの開始時点へのステップイン
- タブ付きユーザーフォームの先頭に達するまで、「step-into」をさらに 2 回クリックします。
- 「<Field name='global.fullName'>」に達するまで「step-into」をクリックし続けます (約 20 〜 30 回のステップイン操作)。
- 15 回または </Field> 要素に達するまで「step-into」をクリックします。
ステップの間、</concat> タグの最後の結果は「jean2 faux」です。
form_outputs の内容は「global.fullname: jean2 faux」です。
図 A-65 例 1: タブ付きユーザーフォームのデバッグ完了
フォーム処理の完了
フォーム処理を完了するには、次の手順に従います。
ワークフローのデバッグ
ここでは、ワークフローのデバッグに関する情報を示します。
ワークフロー実行モデル
ワークフローは単一の Java スレッドによって実行され、「Execution Stack」パネルで単一の Java スレッドによって表されます。ただし、ワークフローの内部で、各アクティビティーは個別の仮想スレッドになります。
ワークフロー実行の間、ワークフローエンジンは仮想スレッドのキューを循環的に処理します。各仮想スレッドは、次の表で説明する状態のいずれかになります。
表 A-8 仮想スレッドの状態
ワークフローアクティビティーの状態
定義
準備完了
遷移したばかりのアクティビティーを特定します (この状態はごく一時的であり、アクションは通常、準備完了と指定された直後に実行を開始する)。
実行中
現在実行中であるか、まだ実行されていない 1 つ以上のアクションを含むアクティビティーを特定します。
これは論理状態であり、Java スレッドがその時点でそのアクションを実行していることを意味しません。その時点で実行中のアクションは常に、デバッガで強調表示されているアクションです。
保留中のアウトバウンド
アクティビティー内のすべてのアクションが実行された直後のアクティビティーを特定します。このようなアクティビティーは、保留中のアウトバウンド状態に移行します。この状態のアクションは、アウトバウンド遷移の発生を待機します。OR 分岐の場合、アクションは 1 つの遷移が発生するまでこの状態です。AND 分岐の場合、その条件が true と評価されるすべての遷移が発生するまで、アクションはこの状態です。
非アクティブ
すべての遷移が発生済みのアクティビティーを特定します。
保留中のインバウンド
そのアクティビティーが AND 合流である仮想スレッドを特定します。これは、この仮想スレッドへの 1 回の遷移が発生したが、プロセスはまだほかの遷移を待機していることを意味します。
すべての遷移が完了したあとで、ワークフロープロセスは実行を開始します。
例 1: ワークフローと規則のデバッグ
ここで示す例は、BPE デバッガおよび debugger-tutorial-workflow1 (Identity Manager に付属) で提供されるワークフローを使用して、サンプルのワークフローと規則をデバッグする方法を示します。この例では、ワークフローのデバッグおよび規則の実行で、ステップインおよびステップスルーする方法を示します。
この例では、次の手順を実行します。
ステップ 1: プロセスの起動
ワークフローのデバッグプロセスを起動するには、次の手順に従います。
- デバッガのメインウィンドウから、「File」>「Open Repository Object」の順に選択します。
- 「debugger-tutorial-workflow1」をクリックします。
XML 表示の左余白に小さなボックスがあります。これらのボックスは、コードに挿入できる潜在的なブレークポイントを示します。
図 A-66 最初のブレークポイントの設定
- <WFProcess> タグのすぐ近くにあるボックスをクリックして、ワークフローの開始位置にブレークポイントを設定します。
- Identity Manager にログインし、「Tasks」>「Run Tasks」の順に選択します。
- 「debugger-tutorial-workflow1」をクリックします。
デバッガフレームには、ブレークポイントでデバッグが停止したことが示されます。
図 A-67 ブレークポイントでのデバッグ停止
次のことに注意してください。
「Thread」の下には実行スタックが表示されます。このスタックは逆順のスタックトレースであり、呼び出し元の関数が上に、呼び出される関数が下に表示されます (これは、ほとんどのデバッガでの実行トレースの表示とは逆の順序)。
スタックの一番上のフレームは「Checkin View (ProcessViewer)」という名前であり、これは、ワークフローがその時点で ProcessViewer の checkinView メソッドによって呼び出されていることを示します。このスタックフレームの Java ソースコードにはアクセスできないため、このフレームをクリックしても新しい情報は表示されません。ただし、スタックフレームは、ワークフローがどの場所から起動されているかについてのコンテキストを提供します。
スタック内の次のフレームは、ワークフロープロセス (<WFProcess>) の開始位置である現在の実行ポイントに対応しているため、強調表示されています。
- 「Debug」>「Current Line (F5)」の順に選択して、現在の実行行をふたたび強調表示します。
ステップ 2: 実行の開始
実行を開始するには、次の手順に従います。
- 「step-into」をクリックします。
この時点で、デバッガは開始アクティビティーに移動します。実行スタックに「Virtual Thread [start, step=0] (executing)」が含まれていることを確認してください。これは、現在実行中の状態である開始アクティビティーの仮想スレッドがあることを示します。
図 A-68 最初の仮想スレッドの実行へのステップイン
- 「debugger-tutorial-workflow-1」フレームの 2 レベル上をクリックして、「WFProcess」を強調表示します。これにより、呼び出し元の位置が示されます。
- F5 キーを押して現在の行に戻ります。
- 「step-into」をクリックします。
この時点で、デバッガは </Activity> の位置に移動し、開始仮想スレッドは、保留中のアウトバウンドの状態になります。
ステップ 3: getFirstName スレッドのステップスルー
次の手順を使用して、getFirstName スレッドをステップスルーします。
- 「step-into」をクリックします。
この時点で、デバッガでは getFirstName への遷移が強調表示されています。
- 「step-into」をクリックします。
この遷移の結果として、getFirstName の新しい仮想スレッドが作成されています。この時点で、この仮想スレッドは準備完了の状態です。開始仮想スレッドはまだ、保留中のアウトバウンド状態です (これは AND 分岐操作であるため、すべての可能な遷移が発生する必要がある)。
図 A-69 例 2: getFirstName の実行へのステップイン
- 「step-into」をもう一度クリックします。
デバッガは getFirstName アクティビティーにジャンプします。状態は、準備完了から実行中に変化します。
- 「step-into」をクリックします。
デバッガは、get アクションに移動します。
- 「step-into」をあと 3 回、またはデバッガが </set> タグに達するまでクリックします。
「Variables」パネルで、</set> の結果として firstName が「myfirstname」に設定されたことが示されます。
ステップ 4: getLastName スレッドのステップインとステップオーバー
次の手順を使用して、getLastName スレッドをステップインおよびステップオーバーします。
- 「step-into」をあと 3 回、またはデバッガが getFirstName の </Activity> に達するまでクリックします。
この時点で、getFirstName 仮想スレッドの状態は、保留中のアウトバウンドです。
- 「step-into」をクリックします。
デバッガは開始仮想スレッドに戻り、getLastName への遷移を処理する準備をします。
- 「step-into」をクリックします。
すべての遷移が処理されたため、開始は非アクティブになります。この遷移により、この時点で getLastName は「ready」状態です。
- 「step-into」をクリックします。
開始仮想スレッドは非アクティブであるため、この時点でなくなります。デバッグは、この時点で実行中の状態である getLastName 仮想スレッドに移動します。
- 「step-over」をクリックして、getLastName の終わりまでスキップします。
「Variables」パネルで、lastName 変数は「mylastname」に設定されています。getFirstName および getLastName の両方の仮想スレッドは、保留中のアウトバウンド状態です。
- 「step-into」をクリックします。
デバッガは getFirstName から computeFullName に遷移します。
- 「step-into」をクリックします。
getFirstName は非アクティブになり、新しい仮想スレッド computeFullName が作成されます。このスレッドは、getLastName からのインバウンド遷移をまだ待機しているため、「pending inbound」状態です (待機が発生するのは、これが and-join 操作であるためです。or-join 操作の場合は、プロセスの状態がただちに「ready」になる)。
- 「step-into」をクリックします。
デバッガは getLastName から computeFullName に遷移します。
図 A-70 getFirstName から computeFullName へのデバッガ遷移
ステップ 5: computeFullName 処理へのステップイン
次の手順を使用して、computeFullName 処理にステップインします。
- 「step-into」をクリックします。
この遷移により、computeFullName 仮想スレッドの状態が、保留中のインバウンドから準備完了に変化します。
- 「step-into」をクリックします。
この時点で、computeFullName の状態は、実行中です。
- 「step-into」をあと 5 回クリックします。
この時点で、デバッガは firstName の </argument> タグの位置です。「last result」パネルには「<String>myfirstname</String>」と表示されます。この値は firstName 引数に渡されます。
図 A-71 computeFullName 処理へのステップイン
ステップ 6: 規則処理のステップスルー
規則処理をステップスルーするには、次の手順に従います。
- 「step-into」をあと 3 回クリックします。
デバッガが「Compute-Full-Name」規則にステップインします。実行スタックで、フレームをクリックして 1 つ上のフレームに移動します。debugger-tutorial-workflow-1 内の <rule> 呼び出しが強調表示され、規則の呼び出し元の場所を示します。F5 キーを押して現在の行を再選択します。
- 「step-into」をあと 3 回、またはデバッガが </ref> タグに達するまでクリックします。
「last result」パネルには、「<String>myfirstname</String>」と表示されます。これは、「<ref>firstName</ref>」の結果です。
- 「step-into」をあと 3 回、またはデバッガが </concat> タグに達するまでクリックします。
「last result」パネルには、<concat> 式の結果が表示されます。
<String>myfirstname mylastname</String>
- 「step-into」をあと 2 回クリックします。デバッグは </rule> タグに戻ります。
ステップ 7: ワークフロープロセスの完了
ワークフロープロセスを完了するには、次の手順に従います。
- </set> 要素に達するまで「step-into」をクリックします。
fullname 変数が「myfirstname mylastname」に更新されています。
- 「step-into」をあと 2 回クリックします。
この時点で、computeFullName の状態は、保留中のアウトバウンドです。
- 「step-into」をあと 4 回クリックします。end の状態が、準備完了、実行中、と順に変化します。
デバッガは </WFProcess> タグに到達し、プロセスが完了したことを示します。
- 「step-into」をクリックします。
「Execution Stack」には「After Checkin view」と表示されます。これは、ワークフローを呼び出した、ビューのチェックイン操作が完了したことを示します。
図 A-72 例 2: 「Check-in View」操作の完了
- 「Continue」をクリックして実行を再開します。
ブラウザの要求がタイムアウトしていない場合、プロセスダイアグラムを伴う「Task Results」ダイアグラムが表示されます。
例 2: 手動アクションとフォームを含むワークフローのデバッグ and a Form
ここで示す例では、手動アクションとフォームを含む、サンプルワークフローのデバッグ方法を説明します。
デバッガのチュートリアルファイルにある workflow2 を使用し、次の手順を実行します。
- 「File」>「Open Repository Object」の順に選択します。
- 「Workflow Processes」を展開し、debugger-tutorial-workflow2 を選択します。
- <WFProcess...> タグにブレークポイントを設定します。
- Identity Manager にログインし、「Tasks」>「Run Tasks」の順に選択します。
- debugger-tutorial-workflow2 をクリックします。
設定したブレークポイントでデバッガが停止します。
- 「step-into」を 6 回、つまり、デバッガが「<ManualAction... name='getNameAction'>)」に達するまでクリックします。
図 A-73 手動アクションへのステップイン
- 「step-into」をクリックします。
- 別のスレッドでフォーム処理が発生するという説明のダイアログが表示されたら、<Form> タグにブレークポイントを設定して、処理の発生を確認します。
図 A-74 「Stepping Into Manual Action」ダイアログ
- 「Yes」または「Always」を選択します。
フォーム処理が完了したあとで、ワークフローは別のスレッドでの実行を継続します。その結果、</ManualAction> にブレークポイントを設定して、フォームが処理を完了したあとのワークフロー処理を監視する必要があります。
図 A-75 フォームの開始を示すブレークポイント
デバッガでは、指示どおりに、<Form> タグおよび </ManualAction> タグにブレークポイントが設定されています。加えて、「Execution Stack」には「After Checkin view」が示されます。ワークフロー処理は可能なかぎり (手動アクションが完了するまで) 進行済みであるため、ワークフロープロセスからのステップアウトが完了します。
- 「Continue」をクリックします。デバッガは <Form> 要素に設定されたブレークポイントで処理を停止します。
図 A-76 手動アクション処理を表示するデバッガ
「Execution Stack」領域には次の内容が表示されます。
- このフォームには <Derivation> 式が含まれないため、「Continue」をクリックして次のフェーズまたは処理に進みます。フォーム処理の「HTML Generation (root component)」パスが開始されます。
HTML 生成フェーズ (root コンポーネント)
root コンポーネントの HTML を生成するには、次の手順に従います。
HTML 生成 (サブコンポーネント)
サブコンポーネントの HTML を生成するには、次の手順に従います。
- 「step-into」を 13 回、またはデバッガが </Form> タグに達するまでクリックします。
デバッガはこれらの各フィールドを反復処理し、それらの表示プロパティーを評価します。
- 「Continue」をクリックします。
実行が再開されたため、デバッガには中断されたスレッドは表示されません。ブラウザウィンドウに制御が戻ります。
- ブラウザウィンドウに戻り、入力を求められたら姓と名を入力して「Save」をクリックします。
デバッガフレームに戻ります。この時点で、デバッガはブレークポイントで中断しています。
- 「Variables」サブツリーを展開します。
firstName および lastName は、入力したばかりの値です。デバッガはこの時点で、フォーム処理の確認フェーズです。
図 A-77 フォーム処理の確認フェーズ
確認
このフォームには確認フィールドがないため、処理は発生しません。「Continue」をクリックして、フォーム処理の検証フェーズを開始します。
検証と展開
このフォームには検証式が含まれないため、明示的な処理は発生しません。
- 「Continue」をクリックして検証フェーズをスキップします。
この時点では、フォーム処理の展開フェーズです。
- 「step-into」を 6 回クリックします。
この時点で、デバッガは variables.fullName フィールドの <Expansion> の <rule> タグの位置です。
図 A-78 規則処理へのステップイン
- 「step-into」を 5 回クリックします。デバッガは <rule> 要素にステップインした状態になります。
- 「step-into」を 7 回、またはデバッガが </Rule> 要素に達するまでクリックします。
「last result」に姓名が表示されます。
- 「step-into」をもう一度クリックすると、フォームでの処理が再開します。
- 「step-into」をもう一度クリックします。
トップレベルの variables.fullName には、実行されたばかりの展開式の値が格納されています。これは、variables データ構造の子ではなくトップレベルのエンティティーです。その理由は、フォーム処理の間、フォーム出力は専用の一時的な form_outputs データ構造に、パス式が平坦化されて保持されるためです。
フォーム処理のあと、フォーム出力は元のビューに同化されます。暗黙的な変数 form_inputs および form_outputs において、form_inputs は未変更の作業項目ビューを示し、form_outputs は、フォーム処理の完了後にビューに同化される出力フィールドを示します。
図 A-79 デバッガでの variable.fullName の実行完了の表示
一般に、form_inputs はビューを特定し、form_outputs にはビューに同化されるデータが含まれます。ただし、Active Sync フォームのように、必ずしもすべてのフォームがビューに結び付けられるわけではありません。フォームエンジンは一般的なデータマッピングエンジンであり、フォーム入力からフォーム出力へのマッピングを行います。ビューハンドラは、フォームエンジンにビューを渡す処理と、出力をビューに戻して反映する処理を受け持ちます。
- 「Continue」をクリックします。
デバッガは </ManualAction> ブレークポイントに到達します。これは、デバッガが手動アクションにステップインする時点よりも前に設定されたブレークポイントです。変数 firstName および lastName は入力した値です。fullName は、実行されたばかりの展開式の結果です。
図 A-80 デバッガでの展開式の結果表示
- 「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.
- ブラウザウィンドウに戻ります。
表示される情報は、入力したものと同じです。
- 「Save」をクリックしてデバッガフレームに戻ります。
この時点で、デバッガは「Confirmation」パスの位置であり、displayNameForm. を処理しています。
検証と展開
検証と展開を開始するには、次の手順に従います。
- 「Continue」をクリックして検証パスを開始します。
- 「Continue」をクリックして展開パスを開始します。
- 「Continue」をもう一度クリックします。
手動アクションが完了したため、この時点でデバッガは </ManualAction> タグの位置です。この時点で、ワークフロー処理は再開されています。
- 「step-into」を 5 回、またはデバッガが </WFProcess> タグに達するまでクリックします。このタグは、ワークフローが実行を完了したことを示しています。
- 「Continue」をクリックします。
デバッガは次のメッセージを表示します。
No suspended threads because execution has resumed. Control has now returned to the browser window.
- ブラウザウィンドウに戻り、ワークフロープロセスダイアグラムを監視します。
フォームのデバッグ
フォームは一連のパスで処理されます。どのパスが進行中かに応じて、特定の要素が処理され、ほかの要素は無視されます。デバッガのメインウィンドウの実行スタックは、フォーム処理の現在のフェーズを示します。最も外側のフォームに先行する実行スタックフレームには、常にパスの名前があります。
取得
フォーム実行の取得フェーズの間、フォームエンジンは各フィールドを反復処理し、個々の <Disable> 式を処理します。
またフォームエンジンは、その <Disable> 式が false を返すフィールドについて、<Derivation> 式を処理します。
展開
デバッガは各フィールドを反復処理し、個々の <Disable> 式を処理します。その <Disable> 式が false を返すフィールドについて、デバッガは <Expansion> 式を処理します。
「Expansion」処理フェーズは、次のいずれかの条件が満たされるまで実行を継続します。
デフォルトでは、maxIterations は 1 に設定されています。結果として、デバッガは 1 つのパスしか作成しません。このため、展開の実行時に、「Execution Stack」パネルには「Expansion, iteration=0」と表示されます。
検証
デバッガは各フィールドを反復処理し、個々の <Disable> 式を処理します。
<Disable> フィールドが false を返すフィールドについて、フォームエンジンは次の要素も処理します。確認
デバッガは各フィールドを反復処理し、個々の <Disable> 式を処理します。<Disable> 式が false を返し、confirm 属性も持つフィールドについて、デバッガは confirm によって参照されるフィールドが、このフィールドと一致することを確認します。フィールドが一致しない場合、デバッガは「Variables」パネルで display.errors にエラーを追加します。
同化
デバッガは各フィールドを反復処理し、個々の <Disable> 式を処理します。その <Disable> 式が false を返すフィールドについて、デバッガはフィールドの <Display> 要素の <Property> オブジェクトを処理します。
このフェーズは通常はスキップされます。このフェーズは、display.mementos を含まない (ログインフォームなどの) 特定のフォームのみに関係します。これらのフォームではデータの同化後に、HTML コンポーネントを再構築するためにこのフェーズが必要です。
HTML 生成 (root コンポーネント)
デバッガは、トップレベルフォームおよびフォームの <FieldDisplay> 要素のみを反復処理します。このパスの目的は、トップレベル HTML コンポーネントを構築することです。直後に「HTML Generation (subcomponents)」パスが続きます。
HTML 生成 (サブコンポーネント)
デバッガは各フィールドを反復処理します。また、個々の <Disable> 式も処理します。その <Disable> 式が false を返すフィールドについて、デバッガはフィールドの <Display> 要素の <Property> 要素を処理します。
カスタムビュー処理
一部のビューでは、フォームに対して追加のパスが必要です。これらのパスの間、デバッガは各フィールドを反復処理し、個々の <Disable> 式を処理します。
匿名ソースの操作
フォームをステップスルーするとき、デバッガは匿名ソースを識別できます。匿名ソースは、一時的に生成されるフォーム (またはフォームの一部) です。結果として、匿名ソースは、Identity Manager リポジトリに格納される持続的フォームとは対応しません。匿名ソースの例には、ログインフォームや MissingFields フォームがあります。
匿名ソースは Identity Manager リポジトリに格納されず、一意の識別子を持たないため、匿名ソースには個別のブレークポイントを設定できません。
ただし、匿名ソースのステップスルーは可能です。
すべての匿名ソースにブレークポイントを設定するには、「Breakpoints」パネルで「Global」タブを選択します。デバッガは以降、匿名ソースの行に達するたびに実行を中断します。たとえば、ログインフォームをデバッグするには、このオプションを選択してログインページに移動します。