Sun Java ロゴ     前へ      目次      次へ     

Sun ロゴ
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 を起動するには、次の手順に従います。

  1. Identity Manager のインストールディレクトリに移動します。
  2. 次のコマンドで環境変数を設定します。
  3. set WSHOME=<Path_to_idm_directory>
    set JAVA_HOME=<path_to_jdk>

    UNIX システムで BPE を起動するには、次のコマンドも入力する必要があります。

    export WSHOME JAVA_HOME

  4. idm¥bin ディレクトリに移動し、「lh config」と入力して BPE を起動します。
    図 A-1 に示すように、「Workspace location」ダイアログが表示されます。
  5. 図 A-1 BPE の「Workspace location」ダイアログ
    BPE の「ワークスペースの場所」ダイアログボックス

「Workspace location」ダイアログを使用して、新しいワークスペースを作成するか、既存のワークスペースを選択します。これら両方の処理の手順については、次の節で説明します。

ワークスペースの指定

ワークスペースは、リポジトリ接続情報 (デフォルトのサーバーやパスワードなど)、オプション、BPE デバッガによって設定されたブレークポイント、オープンソース、および自動保存されたファイルを保存するためのメカニズムです。

ワークスペースは特定のリポジトリに固定されます。1 つのリポジトリに複数のワークスペースを関連付けることができますが、ワークスペースごとに作成できるリポジトリは 1 つだけです。

BPE には、Identity Manager リポジトリへの 2 種類の接続があります。

この節では、次の手順を説明します。

新規ワークスペースの作成

新しいワークスペースを作成するには、次の手順に従います。

  1. 「Workspace location」ダイアログで、新規ワークスペースの一意の名前を「Workspace Directory」フィールドに入力して「OK」をクリックします。
  2. まだ存在しないワークスペースの名前を指定すると、新規ワークスペースの作成ウィザードが表示され、ワークスペースのディレクトリを指定するように指示されます。

  3. 「Workspace Directory」フィールドにディレクトリ名を入力して、「Next」をクリックします。
  4. 「Connection Information」ダイアログが表示され、ワークスペースの接続情報を指定できます。

    図 A-2 BPE の「Connection Information」ダイアログ
    BPE の「接続情報」ダイアログ

  5. 「Editor connection」情報を次のように指定します。
    1. 接続タイプを選択します。
      • ローカル (デフォルトで選択): ローカルリポジトリ内のオブジェクトに対する、BPE の操作を有効にする場合に選択します。

        ローカル接続を指定すると、BPE は WSHOME 内の ServerRepository.xml を使用してリポジトリに接続します (「SOAP URL」フィールドは無効になる)。

      • SOAP: 異なるリポジトリ内のオブジェクトに対する、BPE の操作を有効にする場合に選択します。

        SOAP 接続を指定すると、BPE デバッガのデフォルト接続タイプとして、同時に SOAP を指定することになります。

    2. SOAP 接続を使用する場合は、「SOAP URL」フィールドに完全修飾 URL を入力します。たとえば、「http://localhost:8080/<idm>/servlet/rpcrouter2」と入力します。<idm> は Identity Manager をインストールしたディレクトリです。
    3. Identity Manager でリポジトリへのこの接続をテストするには、「Test Connection」を有効にします。
  6. BPE デバッガの「Debugger connection」情報を次のように指定します。
  7. すでに述べたように、エディタ接続タイプに対して SOAP を選択した場合は、デフォルトのデバッガ接続タイプをデフォルトで SOAP に設定します。「Debugger connection」領域のすべてのオプションは無効になります。

    1. 接続タイプを選択し、SOAP URL を指定します (必要な場合)。
    2. Identity Manager でリポジトリへのこの接続をテストするには、「Test Connection」を有効にします。
  8. 次の資格情報を指定します。
    1. 「User」にログイン名を、「Password」にパスワードを入力します。
    2. BPE にログインするたびに、これらの資格情報をデフォルトで使用する場合、「Remember Password」オプションを選択します。
  9. 「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 を指定するには、次の手順に従います。

  1. 「Tools」>「Options」の順に選択して「Editor Options」ダイアログを開きます。
  2. 図 A-3 「Editor Options」ダイアログ
    BPE の「Editor Options」ダイアログ

  3. 「Preferred webbrowser」で「JDIC」オプションを選択します (このオプションは、アプリケーションが 1.4 よりも前のバージョンの JRE を実行している場合は表示されない)。

    • Windows 用の JDIC を有効にするには、Internet Explorer をインストールする必要があります (Mozilla は現時点で、Windows 上ではサポートされていない)。
    • Linux または Solaris 上で JDIC を有効にするには、Mozilla をインストールする必要があります。現時点でサポートされているデスクトップは GNOME のみです。
    • また、MOZILLA_FIVE_HOME 環境変数を、Mozilla インストールのルートディレクトリに設定する必要もあります。

x86 版 Solaris 10 以降用の JDIC を設定するには、次の手順に従います。

  1. https://jdic.dev.java.net から jdic-0.9.1-bin-cross-platform.zip をダウンロードします。
  2. zip ファイルを展開します。
  3. <wshome>/WEB-INF/lib/jdic.jarjdic-0.9.1-bin-cross-platform/jdic.jar と置き換えます。
  4. 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 のプロセスまたはオブジェクトを読み込むには、次の手順に従います。

  1. メニューバーから「File」>「Open Repository Object」の順に選択します。

  2. ヒント

    Ctrl-O のショートカットも使用できます (BPE のショートカットの完全な一覧については、「キーボードショートカットの使用」を参照)。


  3. 「Login」ダイアログで入力を求められたら、Identity Manager Configurator の名前とパスワードを入力して「Login」をクリックします。
  4. 図 A-7 のような「Select objects to edit」ダイアログが表示されます。

    図 A-7 「Select objects to edit」ダイアログ (「Library」オプションを展開)
    BPE の「Select objects to edit」ダイアログ: 「ライブラリ」オブジェクトオプションを表示

    このダイアログには、次のオブジェクトタイプを含む、オブジェクトの一覧が表示されます。

    • ワークフロープロセス
    • ライブラリ
    • ワークフローサブプロセス
    • 汎用オブジェクト
    • フォーム
    • 設定オブジェクト
    • 規則
    • メタビュー
    • 電子メールテンプレート
    • 表示される項目は、Identity Manager の実装によって異なる場合があります。

  5. オブジェクトタイプをダブルクリックすると、そのタイプに対して表示アクセス権のあるオブジェクトがすべて表示されます。
  6. プロセスまたはオブジェクトを選択して「OK」をクリックします。

エディタオプションの設定

BPE を起動するたびに好みの設定が反映されるように、各種のオプションを設定できます。エディタで作業するたびに、これらのオプションを個別に設定することもできます。

エディタオプションを設定するには、「Tools」>「Options」の順に選択して「Editor Options」ダイアログを開きます。

図 A-8 「Editor Options」ダイアログ

「Editor Options」ダイアログ

このダイアログのオプションを使用して、次の設定を指定できます。

ワークフローリビジョンの検証

カスタマイズプロセスの各段階で、ワークフローのリビジョンを検証できます。

BPE では、プロセスのステータスを示す、検証メッセージが表示されます。

ワークフローのリビジョンを検証するには、次の手順に従います。

  1. インジケータをクリックして、そのプロセスアクションを表示します。
  2. 変更を行ったあとに、「Re-validate」をクリックしてプロセスを再テストし、エラーが修正されたことを確認して、別のエラーをチェックします。
  3. ワークフローのダイアグラムビューにカーソルをドラッグします。
  4. アクティビティーがビューに表示されます。


    ヒント

    最初のアクティビティーよりもあとに作成した、すべてのアクティビティーには番号が付けられます。2 つを超えるアクティビティーを作成する前に、類似のアクティビティーの番号を再設定してください。


変更の保存

プロセスまたはオブジェクトへの変更を保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。「Save」を選択すると、最後に保存された場所 (リポジトリまたは最後に保存されたファイルのどちらか) にオブジェクトが保存されます。同じオブジェクトの複数のコピーを、異なる状態で、また複数の異なるファイルまたはリポジトリで開くことができます。


「File」>「Save As File」の順に選択して、オブジェクトまたはプロセスを XML テキストファイルに保存することもできます。ファイルへの保存は <ファイル名>.xml の形式で行います。


XPRESS の挿入

BPE の「XML」区画で規則、ワークフロー、設定オブジェクト、汎用オブジェクト、またはフォームを編集中に、カーソルが置かれている任意の場所に XPRESS 要素の XML テンプレートをすばやく挿入できます。

  1. 新しい XPRESS 文を追加する場所にカーソルを置きます。
  2. マウスの右ボタンをクリックして「New」メニューを表示します。
  3. XML に追加する XPRESS 文の種類を選択します。
  4. たとえば、カーソル挿入ポイントに空の cond 文を追加するには、「New」>「Logical」>「cond」の順に選択します。次の図に示すように、内容が空の cond 文が表示されます。

    図 A-9 XML への XPRESS 関数挿入メニュー
    メニューを使用して XPRESS 関数を XML に挿入します。

  5. 必要に応じて文を完成します。

無効な位置に XPRESS 要素を挿入した場合、新しいコード行の左隣に 1 つまたは 2 つの赤のドット (インジケータ) が表示されます。これらは、挿入されたコードの最初の行と最後の行を示します。これらのインジケータの詳細は、「Validating Workflow Revisions」を参照してください。

図 A-10 XPRESS 関数の挿入

XPRESS 関数の挿入

キーボードショートカットの使用

BPE では、タスクを実行するための、次のキーボードショートカットがサポートされています。

表 A-1 BPE のキーボードショートカット

キーボートコマンド/キー

アクション

Ctrl-C

コピー

Ctrl-O

開く (リポジトリオブジェクト)

Ctrl-R

ソースの更新

Ctrl-S

保存 (リポジトリオブジェクト)

Ctrl-V

貼り付け

Ctrl-X

切り取り

Delete

削除

F5

現在の行の選択

F6

ステップアウト

F7

ステップイン

F8

ステップオーバー

F9

続行 (デバッグ)


Javadoc へのアクセス

XML を表示するすべての BPE ウィンドウからは、次のようにして、すべての公開メソッドクラスの Javadoc にアクセスできます。

  1. XML ウィンドウ内で右クリックして、カスケードメニューを表示します。
  2. 「New」>「Browse Javadoc」の順に選択します。
  3. 図 A-11 Javadoc を開く
    Javadoc を開く方法

  4. カスケードメニューから、次のいずれかのオプションを選択します。メニューには次のパッケージが含まれており、これらのパッケージはさらにコンポーネントクラスに分かれています。
    • 「com.waveset.object」: この親クラスに従属する、すべてのクラスを表示します。
    • 「com.waveset.ui」: この親クラスに従属する、すべてのクラスを表示します。
    • 「com.waveset.util」: この親クラスに従属する、すべてのクラスを表示します。
    • 「com.waveset.util.jms」: この親クラスに従属する、すべてのクラスを表示します。
  5. 「All Classes」: Javadoc クラスのフレームビューを表示します。ブラウザ内で、このビューから各クラスの Javadoc にジャンプできます。
  6. これらのメニューオプションのいずれかを選択すると、クラスの Javadoc を表示するブラウザウィンドウが開きます。

メソッド参照の挿入

メソッド呼び出しを XML に挿入するには、クラス Javadoc のメソッド要約セクションにアクセスします。メソッドの要約で、メソッド名の前にある選択ボタンをクリックします。

図 A-12 getUser メソッドの選択

getUser メソッドの選択

カーソル挿入ポイントの位置に、XML からメソッドを呼び出すために必要な <invoke> 要素が BPE によって挿入されます。


ヒント

文の呼び出し構文および XML を事前に確認するには、「Validate」をクリックします。



汎用オブジェクトと設定オブジェクトの操作

Identity Manager の基本オブジェクトモデルは、持続オブジェクトモデルです。Identity Manager のほぼすべての操作は、オブジェクトの作成によって実行するため、持続オブジェクト API は Lighthouse をカスタマイズおよび制御するための基本オブジェクトモデルです。

ここでは、持続オブジェクトの操作についての情報を提供します。説明する内容は次のとおりです。

共通持続オブジェクトクラス

PersistentObject はすべての持続オブジェクトの共通基底クラスであり、Identity Manager をカスタマイズおよび制御するための基本オブジェクトモデルを提供します。PersistentObject は、すべての持続オブジェクトに共通のインフラストラクチャーの一部である Java クラスの集合で構成されます。

これらの共通 PersistentObject クラスには、次のものが含まれます。

オブジェクトの表示と編集

BPE を使用して、最もカスタマイズされることが多い、2 種類の持続オブジェクトを表示および編集できます。

以降の節では、設定オブジェクトタイプおよび汎用オブジェクトタイプの概要を説明します。詳細は、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。

設定オブジェクト

BPE では、フォームおよびワークフローに直接アクセスできます。ただし BPE には、カスタムビューアと関連付けられていない、その他の設定オブジェクトへのアクセス手段も用意されています。これらのその他設定オブジェクトには、「Configuration Object」カテゴリの下にある「BPE」からアクセスできます。

BPE では、次の図に示すように、これらの各種設定オブジェクトのリストが左区画のツリービューに表示されます。

図 A-13 BPE での設定オブジェクトのツリー表示

BPE での設定オブジェクトのツリー表示

ツリービューでオブジェクト名をダブルクリックすると、オブジェクトウィンドウが表示されます。このウィンドウには、「Main」、「Repository」、および「XML」の 3 つのオブジェクトビュー (タブ) があります。

たとえば、ツリービューで「User Extended Attributes」をダブルクリックすると、次のダイアログが表示されます。

図 A-14 オブジェクトの「User Extended Attributes」ダイアログ

オブジェクトダイアログの「Main」、「Repository」、「XML」タブ

BPE ウィンドウの左区画では、未フィルタの XML 形式でも、設定オブジェクトが表示されます。たとえば、次の図のようになります。

図 A-15 BPE での調整設定オブジェクトの XML 表示

BPE での調整設定オブジェクトの XML 表示

汎用オブジェクト

汎用オブジェクトは名前/値ペアの単純なコレクションであり、ビューを表現するために使用できます。BPE では、これらの名前/値ペアが属性のデータ型とともに列形式で一覧表示されます。有効なデータ型には Boolean、int、string、xmlobject などがあります。

図 A-16 BPE での汎用オブジェクト (System Configuration) の属性表示

BPE での汎用オブジェクト (System Configuration) の属性表示

多くのカスタマイズでは、汎用オブジェクトタイプの System Configuration オブジェクトを編集する必要があります。

新しいオブジェクトの作成

新しい設定オブジェクトまたは汎用オブジェクトを作成するには、次の手順に従います。

  1. 「File」>「New」の順に選択し、「Generic Object」または「Configuration:New Configuration」を選択します。
  2. 「Configuration:New GenericObject」または「Configuration:New Configuration」ダイアログが開き、メインパネルが表示されます。

  3. 「Name」フィールドに新しいオブジェクト名を入力します。
  4. BPE のメインウィンドウで、新しいオブジェクト名がツリービューに追加されます。また、次の処理が行われます。

    • 汎用オブジェクトを作成した場合は、空の「Attributes」区画が次のように表示されます。
    • 図 A-17 BPE での新規汎用オブジェクトの表示
      新規汎用オブジェクトの表示

    • 設定オブジェクトを作成した場合は、BPE で次のウィンドウが表示されます。このウィンドウには、新しい XML オブジェクトのテンプレートが表示されます。
    • 図 A-18 BPE での新規設定オブジェクトの表示
      新規設定オブジェクトの表示

  5. 汎用オブジェクトを作成する場合は、次のように属性を追加し、必要に応じて手順を繰り返します。
    1. 「Attributes」区画の下部にある「New」をクリックします。属性リストの一番下に、新しい属性フィールドが表示されます。「New Attribute」を選択し、その属性の名前を入力します。
    2. 「Type」列で「null」をクリックしてデータタイプを割り当てるか、またはドロップダウンメニューからデータタイプを選択します。
    3. 図 A-19 BPE の汎用オブジェクト表示の新規属性
      BPE での汎用オブジェクト新規属性の表示


      属性を削除するには、属性名をクリックしてから「Delete」をクリックします。


  6. 「File」>「Save in Repository」の順に選択して、新しいオブジェクトをリポジトリに保存します。

新規設定オブジェクトの検証

BPE のメインウィンドウの右区画で「Validate」をクリックすると、新規設定オブジェクトの XML をただちに確認できます。


規則の作成と編集

BPE を使用して、次の操作を行うことができます。

この節では、BPE を使用して規則を作成および編集するための情報および手順を示します。説明する内容は次のとおりです。

BPE インタフェースの使用方法

規則のカスタマイズを開始する前に、BPE インタフェースのナビゲーションおよび使用方法の基本を理解する必要があります。規則を操作するとき、初期状態の BPE インタフェースは、表示区画、メニューバー、操作メニュー、および「Rule」ダイアログで構成されます。


BPE のインタフェースは、オブジェクトタイプまたはプロセスの選択に応じて変化します。


この節では、規則の作成と編集に関係するインタフェースについて説明します。説明する内容は次のとおりです。

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」タブビュー)

「規則」ダイアログの「Main」タブ

このダイアログの次のオプションを使用して、規則を定義します。

規則要素の編集 (フィールド値の型の変更)

フィールド値の型の選択によっては、ダイアログ内の一部のフィールドの動作が異なる場合があります。

次のいずれかの方法で、値の型を変更できます。

表示タイプの変更

ダイアグラムビューでの情報表示形式を変更するには、次の手順に従います。

  1. 右クリックして操作メニューを表示します。
  2. 「Display」を選択し、表示タイプを選択します。
  3. 表示タイプには次のものがあります。

    • 「XML」 - XPRESS または JavaScript ソースを表示します。XML ソースを直接編集する場合は、この表示タイプを選択します。
    • 図 A-27 XML 表示
      BPE での XPRESS コードの表示

    • 「Graphical」 - 式ノードのツリーを表示します。この表示タイプでは、構造の概要を確認できます。

    • スペースの都合のため、図 A-28 には選択した規則の一部のみを示しています。


      図 A-28 グラフィカル表示
      BPE での構造の表示

    • 「Property Sheet」 - プロパティーを一覧表示します。一部のプロパティーは直接編集できます。

      その他のプロパティーについては、別のダイアログを開くことが必要な場合があります。
      新しい式を作成するときは、「Property Sheet」表示タイプを使用すると効率的に作業できます。このビューでは、グラフィカルビューを使用する場合と比べて、式の引数をすばやく入力できます。

      図 A-29 プロパティーシート表示
      メソッドのプロパティーシート

    • 「Configuration」 - 引数の情報をプロパティーシート形式で一覧表示します (図 A-30 を参照)。加えて、ルールの作成者が、データベース内でルールを説明するために使用したコメントも表示されます。
    • 図 A-30 設定表示
      コメントと引数を表示する設定テーブル

規則の参照

Identity Manager からアクセスできる規則を参照および選択するには、次の方法を使用します。

規則要約の詳細の検討

ツリー区画で規則名をダブルクリックすると、規則の要素が一覧表示されます。
「Rule」ダイアログには、次のタブがあります。

「Main」タブ

このタブを選択すると、要素の引数プロパティー (各引数の名前や値など) にアクセスできます。見やすくするために、引数の順序を変更することもできます。このリストで順序を変更しても、規則の解釈は変わりません。

「Main」タブでは、規則に関して、「Rule」ダイアログの「Main」ビュー (図 A-32 を参照) と同じ情報が表示されます。

図 A-32 「Main」タブ表示

要素の「Main」タブ

「Repository」タブ


規則ライブラリに含まれていない規則には、「Repository」タブがあります。


「Repository」タブを選択すると、選択した規則についての次の情報を表示できます。

図 A-33 「Repository」タブ表示

要素の「リポジトリ」タブ

表 A-2 「Repository」タブのフィールド 

フィールド

説明

Type

リポジトリオブジェクトのタイプを特定します。この値は常に「Rule」です。

Subtype

サブタイプを識別します (存在する場合)。規則のサブタイプは現在、Reconciliation インタフェースの内部でのみ実装されています。

デフォルトは「None」です。

Name

「Rule」ダイアログの名前フィールドで割り当てられます。

Id

Identity Manager によって割り当てられる識別番号。

Creator

規則を作成したアカウントを一覧表示します。

CreateDate

オブジェクトの作成時に Identity Manager によって割り当てられた日付。

Modification Date

オブジェクトが最後に変更された日付。

Organization

規則が保存される組織を識別します。

Authorization Type

(省略可能) 管理権限を持たないユーザーに、個別操作のアクセス権を付与します。
たとえば、EndUserRule 認証タイプは、Identity Manager ユーザーインタフェース内のフォームから規則を呼び出す権限をユーザーに付与します。

「Repository」タブに含まれるのは、主に読み取り専用の情報ですが、次の値は変更が可能です。

「XML」タブ

「XML」タブを選択すると、選択した XML のコードを表示して直接編集できます。「OK」をクリックして保存する前に、「Validate」をクリックすると、変更内容を検証できます。XML パーサー は、waveset.dtd を使用して規則の XML を検証します。

図 A-34 「XML」タブ表示

要素の「XML」タブ

新しい規則の作成

新しい規則を作成するには、次の手順に従います。

  1. 「File」>「New」>「Rule」の順に選択します。「Rule: New Rule」ダイアログが表示されます。デフォルトでは「Main」タブが前面に表示されます。
  2. 図 A-35 「Rule: New Rule」ダイアログ
    「Rule: New Rule」ダイアログ (XML ビュー)

  3. 新しい規則の次のパラメータを指定します。
    • 「Name」 - 規則の名前を入力します。この名前は Identity Manager のインタフェースに表示されます。
    • 「Description」 (省略可能) - 規則の目的を説明するテキストを入力します。
    • 「Comments」 - <Comment> 要素を使用して、規則の本体に挿入されるテキストを入力します。
  4. 新しい規則に引数を追加するには、「New」をクリックします。
  5. 「Argument: Null」ダイアログが表示されたら、「Name」、「Value」、および「Comments」の各フィールドにテキストを入力して「OK」をクリックします。
  6. このテキストは「Arguments」テーブルに表示され、<RuleArgument> 要素として規則に挿入されます。

  7. 終了したら、「OK」をクリックして変更を保存します。

    • 引数を削除するには、「Delete」をクリックします。
    • 「Arguments」テーブル内での引数の位置を変更するには、「Move Up」または「Move Down」をクリックします。

規則要素の定義

関数、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」ダイアログ

データ型セレクタ

次の表に、有効な引数の型の一覧を示します。

表 A-3 有効な引数の型 

データ型

説明

String

単純文字列定数。

Reference

変数への単純参照。

Rule

ルールへの単純参照。

List

XML オブジェクトリストなどの静的リスト。この型はワークフローで頻繁に使用されますが、フォームではほとんど使用されません。

Expression

複合式。

Map

XML オブジェクトマップなどの静的マップ。ほとんど使用されません。

Integer

整数型の定数。値のセマンティクスをより明確にするために使用できます。文字列として指定できます。BPE により、文字列が正しい型に強制変換されます。

Boolean

ブール型の定数。値のセマンティクスをより明確にするために使用できます。文字列として指定できます。BPE により、文字列が正しい型に強制変換されます。Boolean 型の値は、文字列 true および false を使用して指定できます。

XML オブジェクト

複合オブジェクト。XML 表現を使用して、多数の複合オブジェクトの中から任意のものを指定できます。例には EncryptedData、Date、Message、TimePeriod、WavesetResult などがあります。

「Element」ダイアログ

「Element」ダイアログには、引数の名前と値が表示されます。

図 A-40 address 変数の要素ポップアップ

address 変数の要素ポップアップ

(グラフィカルビューのみ) 「Rule source」区画から「Element」ダイアログを表示するには、次のいずれかの手順に従います。

引数名をクリックしてダイアログを開く場合、引数のデータ型およびスタイル (「simple」または「calculated」) を変更できます。

さまざまなタイプの要素を定義できます (表 A-4 を参照)。要素のデータ型を変更するには、「Change Type」ボタンをクリックします。「Select Type」ポップアップが開き、選択した規則の要素に割り当てることのできるデータ型の一覧が表示されます。

新しい要素を作成するには、グラフィカルビューで右クリックし、メニューから「New」を選択し、要素タイプを選択します。このメニューに表示される要素タイプは、XPRESS 関数のカテゴリを表します。

表 A-4 XPRESS 関数カテゴリを表す要素タイプ  

メニューオプション

XPRESS 関数/呼び出し可能な追加操作...

Values

stringintegerlistmapmessagenull

Logical

ifeqneqgtltgtelteandornotcmpncmpisnullnotnullisTrueisFalse

String

concatsubstrupcasedowncaseindexOfmatchlengthsplittrimltrimrtrimztrimpad

Lists

listmapgetsetappendappendAllcontainscontainsAnycontainsAllinsertremoveremoveAllfilterdupfilternulllengthindexOf

Variables

  • 変数を定義する
  • 参照を作成する
  • 変数またはオブジェクトの属性に値を代入する

Math

addsubmultdivmod

Control

switchcasebreakwhiledolistblock

Rule

  • 新しい規則を作成する
  • 引数を作成する

Other

(functions, object access, diagnostics)

その他のオプションを表示する:

  • 関数には関数の定義、引数の定義、関数の呼び出しが含まれる
  • オブジェクトアクセスには newinvokegetobjectget、および set の各関数が含まれる
  • 診断には、JavaScript の作成または呼び出し、トレース、出力、およびブレークポイント関数のためのオプションが含まれる


これらの関数の詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』を参照してください。


BPE セッションで最近作成された要素タイプには、操作メニューの「Recent」オプションからもアクセスできます。

次の図では、「New」>「Strings」>「concat」の順に選択したときに表示される ウィンドウを示します。

図 A-41 「concat」ダイアログ

「concat」ダイアログ

「Object Access」ダイアログ

「Object Access」ダイアログを使用して、オブジェクトの操作や、オブジェクトを操作する Java メソッドの呼び出しを実行できます。

「Object Access」ダイアログを開くには、グラフィカル表示内で任意の場所を右クリックし、ポップアップメニューから「New」>「Other」>「Object Access」の順に選択し、操作オプションを選択します。

操作オプションとしては、表 A-5 で説明されているオプションのいずれかを選択できます。

表 A-5 オブジェクトアクセスのオプション 

オプション

説明

new

新しい Java オブジェクトを作成します。引数はクラスコンストラクタに渡されます。

invoke

「invoke」ダイアログを表示します。Java オブジェクトまたは Java クラスに対して Java メソッドを呼び出すために使用します。

getobj

「getobj」ダイアログを表示します。リポジトリからオブジェクトを取得するために使用します。

get

オブジェクトの内部から値を取得します。

最初の引数は List、GenericObject、または Object である必要があり、2 番目の引数は String または Integer である必要があります。

  • 最初の引数が List の場合、2 番目の引数は整数に強制変換され、リストのインデックスとして使用されます。
  • 最初の引数が GenericObject の場合、2 番目の引数は文字列に強制変換され、パス式として使用されます。
  • 最初の引数がその他の任意のオブジェクトである場合、2 番目の引数には JavaBean プロパティーの名前が想定されます。

set

変数またはオブジェクトの属性に値を代入します。

オブジェクトを作成するには、右クリックして操作メニューを表示し、「New」>「Other」>「Object Access」>「new」の順に選択します。

図 A-42 「new」ダイアログ

「オブジェクト作成」ダイアログ

要素詳細の編集

「Argument」ダイアログから、変数の値を定義できます。「Value」フィールドを使用して、単純文字列値を変数の初期値として入力します。代わりに、(Expression や Rule などの) 値の型を選択してから、「Edit」をクリックして値を入力する方法もあります。

図 A-43 は、ref 文の変数ウィンドウを示します。

図 A-43 「ref」ダイアログ

ref 文の編集

引数のタイプ (単純または複合) を指定できます。値が文字列型、ブール型、整数型などであり、テキストフィールドに引数の値を入力できる場合は「simple」を選択します。追加のポップアップが必要なリスト、XML オブジェクト、その他の式などを扱っている場合は、「calculated」を選択します。

「Diagnostics」ダイアログ

「Diagnostics」ダイアログを使用して、次の要素のデバッグまたは検証を実行できます。

「Diagnostics」ダイアログにアクセスするには、右区画内で操作メニューから「New」>「Other」>「Diagnostics」>「trace」の順に選択します。表 A-6 で説明されているオプションを選択して、その項目をデバッグします。

表 A-6 トレースオプション 

オプション

説明

JavaScript

独自の JavaScript を入力できる「Script」ダイアログを表示します。

trace

XPRESS 関数 <trace> を規則に挿入します。この関数は、この規則の評価時に XPRESS トレースを有効または無効にします。トレースを有効にする場合は true に、無効にする場合は false (または単に null) に設定します。

print

tan 引数の名前を入力できる「Print」ダイアログを表示します。この関数は、任意の数の式を含み、最後の式の結果を返す点で、block 関数に似ています。

Argument」フィールドに引数名を入力し、フィールドの隣にあるメニューから型を選択します。デフォルトは String です。

breakpoint

「Breakpoint」ポップアップを表示します。「OK」をクリックしてデバッグブレークポイントを設定します。

規則の編集

規則をカスタマイズする場合、変更を保存および検証して、規則が正確かつ予測どおりに完了することを確認する必要があります。保存したあとで、変更した規則を Identity Manager で使用するためにインポートします。

この節では、次の手順を説明します。

規則のロード

BPE で規則をロードするには、次の手順に従います。

  1. メニューバーから「File」>「Open Repository Object」の順に選択します。
  2. 表示された「Login」ダイアログで入力を求められたら、Identity Manager Configurator のユーザー名とパスワードを入力して「Login」をクリックします。
  3. 次の項目が表示されます。

    • ワークフロープロセス
    • ワークフローサブプロセス
    • フォーム
    • 規則
    • 電子メールテンプレート
    • ライブラリ
    • 汎用オブジェクト
    • 設定オブジェクト
    • メタビュー

    • 表示される項目は、Identity Manager の実装によって異なる場合があります。


  4. 「Rule」ノードを展開して、すべての既存の規則を表示します。
  5. ロードする規則を選択して「OK」をクリックします。

  6. 規則をはじめてロードする場合、右区画に表示される規則コンポーネントの表示が正しくない場合があります。右区画内で右クリックして「Layout」を選択すると、図が再表示されます。


変更の保存

規則への変更を保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。


「File」>「Save As File」の順に選択して、規則を XML テキストファイルとして保存することもできます。ファイルへの保存は <ファイル名>.xml の形式で行います。


変更の検証

カスタマイズプロセスの各段階で、規則への変更を検証できます。

BPE では、規則のステータスを示す検証メッセージが表示されます。

規則ライブラリ

規則ライブラリは、密接に関係する規則を、Identity Manager リポジトリ内の 1 つのオブジェクトに整理するための便利な手段として機能します。ライブラリを使用すると、リポジトリ内のオブジェクト数が削減され、フォームやワークフローの設計者は有用な規則を簡単に特定して呼び出せるようになるため、規則の保守が容易になります。

規則ライブラリは、XML の 設定オブジェクトとして定義されます。設定オブジェクトには、1 つ以上の規則オブジェクトを含む、ライブラリオブジェクトが含まれます。コード例 A-1 は、2 つの異なるアカウント ID 生成規則を含むライブラリを示します。

コード例 A-1 2 つのアカウント ID 生成規則を含むライブラリ 

<Configuration name='Account ID Rules'>

   <Extension>

      <Library>

         <Rule name='First Initial Last'>

            <expression>

               <concat>

                  <substr>

                     <ref>firstname</ref>

                     <i>0</i>

                     <i>1</i>

                  </substr>

                  <ref>lastname</ref>

               </concat>

            </expression>

         </Rule>

         <Rule name='First Dot Last'>

            <expression>

               <concat>

                  <ref>firstname</ref>

                  <s>.</s>

                  <ref>lastname</ref>

               </concat>

            </expression>

         </Rule>

      </Library>

   </Extension>

</Configuration>

ライブラリ内の規則は、XPRESS の <rule> 式を使用して参照します。name 属性の値は、ライブラリを含む設定オブジェクトの名前と、ライブラリ内部での規則の名前をコロンで連結した形式です。

たとえば次の式は、Account ID Rules という名前のライブラリに含まれる、First Dot Last という名前の規則を呼び出します。

<rule name='Account ID Rules:First Dot Last'/>

表示またはカスタマイズするライブラリの選択

表示または編集する規則ライブラリを選択するには、次の手順に従います。

  1. ビジネスプロセスエディタで、「File」>「Open Repository Object」の順に選択します。
  2. BPE では、規則ライブラリは次のアイコンで表されます。規則ライブラリのアイコン

  3. ツリービューで規則ライブラリオブジェクトを選択して「Edit」を選択します。
  4. 右側の編集区画内で右クリックしてから、「XML」タブを選択します。
  5. 図 A-44 規則ライブラリ (XML ビュー)
    「XML」タブの表示

これで、規則ライブラリの XML を編集できます。

既存のライブラリオブジェクトへの規則の追加

規則ライブラリをチェックアウトしたあとで、<Library> 要素の内部のどこかに <Rule> 要素を挿入することにより、新しい規則を追加できます。ライブラリ内部での規則の位置は重要ではありません。


ワークフロープロセスのカスタマイズ

ここでは、「Email Notification」の例を使用して、ワークフロープロセスをカスタマイズするために実行する手順全体を説明します。具体的には、次のことを行います。

  1. カスタムの Identity Manager 電子メールテンプレートを作成します。
  2. Identity Manager の「Create User」ワークフロープロセスをカスタマイズして、新しいテンプレートを使用し、会社の新しいユーザーに歓迎の電子メールを送信します。

    • この例で示す画面例は、プロセスを読み込むときのものとは多少異なる場合があります。結果として、コンポーネントの位置が違っていたり、プロセスの操作の一部が省略されていたりする場合がありますが、この例の目的にとって重要な違いではありません。
    • 多くのタスクはツリービューまたはダイアグラムビューから実行できますが、この例では主に BPE のツリービューを使用します。

ステップ 1: カスタム電子メールテンプレートの作成

カスタム電子メールテンプレートを作成するには、次のようにして、既存の Identity Manager 電子メールテンプレートを開いて変更します。

  1. BPE のメニューバーから、「File」>「Open Repository Object」>「Email Templates」の順に選択します。
  2. 「selection」ダイアログ (図 A-45) が表示されたら、「Account Creation Notification」テンプレートを選択して「OK」をクリックします。
  3. 図 A-45 電子メールテンプレートの選択
    電子メール通知のパート 1、ステップ 1

  4. 選択した電子メールテンプレートが BPE で表示されたら、テンプレート名を右クリックし、ポップアップメニューから「Copy」を選択します。
  5. もう一度右クリックして「Paste」を選択します。
  6. 電子メールテンプレートのコピーがリストビューに表示されます。


    ヒント

    貼り付けを行うときは、マウスカーソルが項目を覆っていないことと、どの項目も選択されていないことを確認してください。これらの条件が満たされていない場合、貼り付け操作は無視されます。


  7. リストビューで新しい電子メールテンプレートをダブルクリックして、テンプレートを開きます。
  8. 「Name」フィールドに「User Creation Notification」と入力して、テンプレート名を変更します。
  9. 図 A-46 新しいテンプレートの名前変更
    電子メール通知のパート 1、ステップ 3

  10. 新しく作成した「User Creation Notification」テンプレートで、「Subject」および「Body」フィールドを必要に応じて変更します。
  11. 図 A-47 ユーザー作成通知電子メールテンプレートのカスタマイズ
    電子メール通知のパート 1、ステップ 4

    Identity Manager アカウントまたは電子メールアドレスのコンマ区切りのリストを、「Cc」フィールドに追加することもできます。

  12. 完了したら、「OK」をクリックします。
  13. テンプレートを保存してリポジトリにチェックインするには、メニューバーから「File」>「Save in Repository」の順に選択します。

これで、「Create User」ワークフロープロセスを変更する準備ができました。次の手順に進みます。

ステップ 2: ワークフロープロセスのカスタマイズ

次の手順に従って、新しい電子メールテンプレートを使用するように「Create User」ワークフロープロセスを変更します。

  1. BPE で「File」>「Open Repository Object」>「Workflow Processes」の順に選択して、ワークフロープロセスをロードします。
  2. 編集可能な Identity Manager オブジェクトを含むダイアログが表示されます。

  3. 「Create User」ワークフロープロセスを選択して「OK」をクリックします。
  4. 図 A-48 ワークフロープロセスのロード
    電子メール通知のパート 2、ステップ 1

    「Create User」ワークフローが表示されます。

  5. ツリービューで、「Create User」プロセスを右クリックし、ポップアップメニューから「New」>「Activity」の順に選択します。
  6. 図 A-49 アクティビティーの作成と命名
    電子メール通知のパート 2、ステップ 2

    ツリービュー内のアクティビティーリストの一番下に、activity1 という名前の新しいアクティビティーが表示されます。

  7. activity1 をダブルクリックして「Activity」ダイアログを開きます。
  8. 「Name」フィールドに「Email User」と入力して、アクティビティー名を変更します。
  9. デフォルトの「Create User」ワークフローでは、アカウントが作成されたことをアカウント要求者に通知するステップ (Notify) は端まで直接遷移します。

    新しいステップをワークフローに含めるには、この遷移を削除し、新しい遷移 (Notify と Email User の間、および Email User から端へ) を作成し、プロセスが終了する前に新しいユーザーに電子メールを送信する必要があります。

  10. 「Notify」を右クリックして「Edit」を選択します。
  11. 「Activity」ダイアログの「Transitions」領域で、端を選択して「Delete」をクリックすることにより、その遷移を削除します。
  12. 「Transitions」領域で、「New」をクリックして遷移を追加します。
  13. 「Transitions」ダイアログが表示されたら、リストから「Email User」を選択して「Done」をクリックします。
  14. 図 A-50 遷移の作成と変更
    電子メール通知のパート 2、ステップ 3

  15. BPE のツリービューで「Email User」を右クリックし、「New」>「Transitions」の順に選択して遷移を作成し、「Transitions」ダイアログを開きます。
  16. 端を選択して「OK」をクリックします。
  17. 次に、新しい「Email User」アクティビティーに対して、電子メール操作とその受信者を定義する操作を作成する必要があります。ツリービューで「Email User」を右クリックし、「New」、「Action」を選択して「Action」ダイアログを開きます。
  18. 「Type」オプションで「Application」ボタンを選択します。
  19. 「Name」フィールドに、新しい操作の名前を入力します。
  20. 「Application」メニューから「email」を選択します。
  21. 図 A-51 操作の作成
    電子メール通知のパート 2、ステップ 4

  22. 「Argument」テーブルに新しい選択が表示されます。次の情報を入力します。
    • template: 新しいテンプレート名「User Creation Notification」を入力します。
    • toAddress: ユーザーの $(user.waveset.email) 変数を入力します。
  23. New」をクリックして、引数をテーブルに追加します。引数に accountId という名前を付け、この引数の値として「$(accountId)」と入力します。
  24. 図 A-52 操作の作成
    電子メール通知のパート 2、ステップ 4

  25. 完了したら、「OK」をクリックします。
  26. BPE のメニューバーから「File」>「Save in Repository」の順に選択して、プロセスを保存し、リポジトリに再びチェックインします。

保存したあとは、Identity Manager を使用してユーザーを作成することにより、新しいプロセスをテストできます。簡潔にするため、ここでは新しいユーザーの承認者またはリソースを選択しません。ユーザーの作成時に新しい歓迎メッセージの到着を確認できるように、自分の電子メールアドレス、または自分が確認できる電子メールアドレスを使用します。


ワークフロー、フォーム、規則のデバッグ

BPE には、ワークフロー、規則、フォーム用のグラフィカルデバッガが含まれています。BPE のデバッガを使用して、ブレークポイントを視覚的に設定したり、ワークフローまたはフォームをブレークポイントまで実行したり、プロセス実行を停止して変数を検証したりできます。

手続き型プログラミング言語のコードデバッガを使用した経験があれば、この節で使用されている用語の理解は難しくありません。

ビュー、ワークフロー、フォームの詳細については、『Sun JavaTM System Identity Manager ワークフロー、フォーム、およびビュー』のそれぞれの該当する章を参照してください。

この節では、BPE のデバッガの使用方法を説明します。説明する内容は次のとおりです。

使用にあたっての推奨事項

BPE のデバッガは、次の条件に当てはまる場合にのみ使用してください。

クラスタの使用は、BPE デバッガとの組み合わせではサポートされていません。

テスト環境の外部でのデバッガの実行

デバッグが必要な問題が本稼働環境に見つかった場合は、その問題をテスト環境で再現してデバッグしてください。デバッガでブレークポイントを設定すると、大量のトラフィックが発生している本稼働環境内のアプリケーションサーバーを短時間のうちに停止させる可能性があります。また、ブレークポイントを設定する位置によっては、ユーザーがシステムの利用をブロックされる可能性があります。

独立したテスト環境でデバッグを実行できない場合は、次の手順に従います。

  1. クラスタ内のノードのうちの 1 つをオフラインにすることにより、すべての有効なトラフィックをクラスタのサブセットに振り分けます (以後、このタスクの説明では、このノードを server-a とする)。
  2. BPE を使用して、システム設定オブジェクトを編集します。SystemConfiguration serverSettings.server-a.debugger.enabled プロパティーを true に設定します。
  3. BPE でのシステム設定オブジェクトへのアクセス方法の詳細については、「ステップ 2: システム設定オブジェクトの編集」を参照してください。

  4. server-a を再起動し、システム設定オブジェクトのプロパティー設定の変更を有効にします。
  5. 「Tools」>「Debugger」の順に選択して、デバッガを起動します。
  6. 新しいワークスペースを作成します。このワークスペースで、デバッガ接続は次の URL を使用します。
  7. server-a:<port>

    デバッグが完了したら、次の手順に従います。

  8. serverSettings.server-a.debugger.enabledfalse に設定し、server-a を再起動して、稼働中の本稼働環境にデバッガが接続しないようにします。
  9. server-a をオンラインのクラスタに再統合します。

デバッガの無効化

本稼働環境では、誰かが誤ってデバッガをアプリケーションサーバーに接続することを防ぐために、serverSettings.server-a.debugger.enabled プロパティーを常に無効にしてください。

デバッガを無効にするには、システム設定オブジェクトの serverSettings.<server>.debugger.enabled プロパティーを false に設定します。

デバッガのメインウィンドウの使用

デバッガのメインウィンドウでは、選択したオブジェクトの XML が表示され、そのオブジェクトの実行についての情報が提供されます。このウィンドウから、次の操作を実行できます。

メインウィンドウには、以降で説明する次の領域が含まれています。

ソース領域

「Sources」領域には、選択したオブジェクトの未フィルタの XML が表示されます。

「XML」パネルの左余白には、ブレークポイントを設定できるコード内のポイントを示す、一連のボックスが表示されます。<WFProcess...> タグのすぐ近くにあるボックスをクリックすると、ワークフローの開始位置にブレークポイントが設定されます。

図 A-54 BPE デバッガのメインウィンドウの「Source」パネル

BPE デバッガのメインウィンドウ: 「ソース」パネル

実行スタック

実行スタックは、選択したオブジェクト内のどの関数が実行中であるかを特定します。この領域には、実行中の関数の名前と、その関数を呼び出した関数の名前が一覧表示されます。

追加の関数が呼び出しチェーンに出現する場合、これらの関数は順番に一覧表示されます。このリストは「stack trace」とも呼ばれ、プログラムのライフサイクルにおけるこの時点での実行スタックの構造を表示します。

図 A-55 BPE デバッガのメインウィンドウの「Execution Stack」パネル

BPE デバッガ: メインウィンドウの「実行スタック」パネル

「Variables」領域

「Variables」領域には、現在の実行のポイントで、現在スコープ内にあるすべての変数が一覧表示されます。変数オブジェクト名をクリックすると、そのオブジェクトが展開され、各変数の名前が表示されます。

図 A-56 BPE メインウィンドウの「Variables」パネル

BPE デバッガの「変数」パネル

「Variables Not Available」領域

「Variables Not Available」領域は、デバッグがアクティブでない場合、または選択したスタックフレームが現在のスタックフレームでない場合に表示されます。

「Last Result」領域

現在の要素が XPRESS の終了タグである場合、「Last Result」領域にはその評価の結果が表示されます。これは、最後の値が意味を持つ、その他のタグにも適用されます。たとえば、<Argument> のワークフローへのサブプロセスが評価される過程で、この領域にはその引数の値が表示されます。この領域は、デバッグが現在進行中でない場合は使用できません。

図 A-57 BPE デバッガのメインウィンドウの「Last Result」パネル

BPE デバッガ: メインウィンドウの「最後の結果」パネル

「Last Result Not Available」領域

「Last Result Not Available」領域は、デバッグがアクティブでない場合に表示されます。

ブレークポイントの設定

「Breakpoint」は、特定のコード行を実行する前に、オブジェクトの実行を停止するためにデバッガが使用するコマンドです。Identity Manager のデバッガでは、コードのブレークポイントは、フォームまたはワークフローの起動された場所に関係なく適用されます。

ほとんどのデバッガではソース上の位置にしかブレークポイントを設定できませんが、BPE のデバッガでは、「Refresh view」などの概念的な実行ポイントにもブレークポイントを設定できます。この場合、デバッガは「Refresh view」操作が発生した時点で中断します。その後、更新ビューにステップインし、処理が進行中の配下のフォームを確認できます。

ブレークポイントの設定はグローバル設定です。つまり、ブレークポイントを設定すると、指定されたブレークポイントに到達した時点で着信要求スレッドが中断します。これは、どのユーザーが要求を行っているかに関係なく発生します。

ブレークポイントの設定

ソースの全ブレークポイントの要約を表示するには、「Sources」タブをクリックします。「Breakpoints」区画に、ソースの全ブレークポイントが一覧表示されます。ブレークポイントをクリックすると、特定のブレークポイントに移動します。

ブレークポイントのタイプ

「Breakpoints」領域には、次のタイプのブレークポイント設定があります。

指定されたタブをクリックすることにより、各タイプのブレークポイントにアクセスします。

実行プロセスのステップスルー

ステップスルーとは、実行中のプロセスの関数を逐次、計画的に分析する処理のことです。

用語

ステップイン、ステップオーバー、およびステップアウトは、言語の構造によって実行順が暗黙的に決定される手続き型プログラミング言語のデバッガに由来する用語です。ただし、Identity Manager のフォームおよびワークフローでは、コード内で要素が出現する順序はその実行順に影響しません。

このため、これらの用語はビジネスプロセスエディタで使用するときには、多少異なった意味を持ちます。

全般的なヒント

次に示すのは、実行プロセスのステップスルーを活用するために役立つヒントの一覧です。

表 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: システム設定オブジェクトの編集

システム設定オブジェクトを編集するには、次の手順に従います。

  1. BPE で、次の順に選択することにより、編集するシステム設定オブジェクトを開きます。
    「File」>「Open Repository Object」>「Generic Objects」>「System Configuration」
  2. ツリービューで、serverSettings および default 属性を展開し、debugger を選択します。
  3. 「Attributes」パネルで、「Value」列をクリックしてデバッグを有効にします。
  4. 「File」>「Save in Repository」の順に選択して、変更を保存します。
  5. アプリケーションサーバーを再起動します。

  6. 警告

    本稼働環境ではこのプロパティーを有効にしないでください。


ステップ 3: デバッガの起動

アプリケーションサーバーの再起動が完了すると、「Tools」>「Debugger」の順に選択して BPE デバッガを起動できるようになります。

例: タブ付きユーザーフォームと更新ビューのデバッグ

ここでは、サンプルのデバッグ手順を通じて、フォームまたはワークフローの呼び出し元の場所に関係なく、デバッガのブレークポイントがどのように適用されるかを示します。

このサンプル手順は、次の各ステップで構成されます。

  1. ブレークポイントの設定
  2. 新規ユーザーの作成
  3. 「Before Refresh View」結果の表示
  4. 「After Refresh View」結果の表示
  5. フォームのステップスルー
  6. フォーム処理の完了
ブレークポイントの設定

ブレークポイントを設定するには、次の手順に従います。

  1. 「Breakpoints」パネルの「View cycle」タブをクリックします。
  2. 「Refresh view」をチェックします。これで、実行中にビューが更新されるたびに、デバッガでブレークポイントが実行されるようになります。
新規ユーザーの作成

新規ユーザーを作成するには、次の手順に従います。

  1. Identity Manager で、「Accounts」>「New」...「User」の順に選択します。
  2. 名 (例: 「jean」) と姓 (例: 「faux」) を入力します。
  3. 「ID」タブをクリックして、ビューの更新操作をトリガーします。
「Before Refresh View」結果の表示

デバッガフレームに戻ります。このフレームはこの時点で、「Refresh view」に設定したブレークポイントで中断した状態です。「Execution Stack」には「Before Refresh View」が表示されます。これは、更新操作が発生する直前のビューの状態を示します。「Variables」パネルには、更新される直前のビューが表示されます。

図 A-61 例 1: 「Before Refresh View」ブレークポイントでの中断のデバッグ

例 1: 「ビューの更新前」ブレークポイントでの中断のデバッグ

グローバルサブツリーを展開し、フォームで入力した firstname および firstname の値を探します。fullname の値は、この時点では「null」です。

「After Refresh View」結果の表示

「After Refresh View」の結果を表示する手順は、次のとおりです。

  1. 「Continue」をクリックします。
  2. 「Execution Stack」には「After Refresh View」が一覧表示されます。ここには、更新操作が発生した直後のビューの状態が表示されます。fullname の値はこの時点では「jean faux」です。

    図 A-62 例 1: 「After Refresh View」ブレークポイントでの中断のデバッグ
    例 1: 「ビューの更新後」ブレークポイントでの中断のデバッグ

  3. 「Continue」をもう一度クリックします。
  4. フォームの実行が再開されます。ブラウザウィンドウに戻ります。「Name」を「jean2」に変更し、「ID」タブをもう一度クリックして、更新をもう一度トリガーします。

  5. デバッガフレームに戻ります。
  6. フォーム処理は「Before Refresh View」の箇所で中断されます。

フォームのステップスルー

フォームをステップスルーするには、次の手順に従います。

  1. 「step-into」をクリックして、実行内の姓名の展開部分を表示します。
  2. デバッガに「Before Expansion」が表示されます。これは、フォームの変数が展開されていないことを示します。

    図 A-63 例 1: 「Before First Expansion」パスでの中断のデバッグ
    例 1: 「Before First Expansion」パスでの中断のデバッグ

  3. 「step-into」をもう一度クリックします。
  4. デバッガに「Before Expansion, iteration=0」と表示されます。これは、最初の「Expansion」パスの前にフォーム変数が出現することを示します。

  5. 「step-into」をもう一度クリックします。
  6. この時点で、デバッガは匿名ソース上にあります。匿名ソースは一時的に作成されるラッパーフォームであり、MissingFields フォームに関連します。

    図 A-64 例 1: タブ付きユーザーフォームの開始時点へのステップイン
    例 1: タブ付きユーザーフォームの開始時点へのステップイン

  7. タブ付きユーザーフォームの先頭に達するまで、「step-into」をさらに 2 回クリックします。
  8. <Field name='global.fullName'>」に達するまで「step-into」をクリックし続けます (約 20 〜 30 回のステップイン操作)。
  9. 15 回または </Field> 要素に達するまで「step-into」をクリックします。
  10. ステップの間、</concat> タグの最後の結果は「jean2 faux」です。

    form_outputs の内容は「global.fullname: jean2 faux」です。

    図 A-65 例 1: タブ付きユーザーフォームのデバッグ完了
    例 1: タブ付きユーザーフォームのデバッグ完了

フォーム処理の完了

フォーム処理を完了するには、次の手順に従います。

  1. 「Step-out」を 7 回クリックします。
  2. この時点で、スタックが示す内容は次のようになるはずです。

    Refresh View (User)
    After Expansion

    「Variables」パネルは、すべての展開が実行されたあとのフォーム変数の状態を反映します。

  3. 「Step-out」をもう一度クリックします。
  4. これで、「After Refresh View」に到達しました。この時点で表示される変数は、ビュー変数です。

  5. グローバルサブツリーを展開します。
  6. この時点で、fullname の値は「jean2 faux」です。

  7. 「Continue」をクリックします。

ワークフローのデバッグ

ここでは、ワークフローのデバッグに関する情報を示します。

ワークフロー実行モデル

ワークフローは単一の Java スレッドによって実行され、「Execution Stack」パネルで単一の Java スレッドによって表されます。ただし、ワークフローの内部で、各アクティビティーは個別の仮想スレッドになります。

ワークフロー実行の間、ワークフローエンジンは仮想スレッドのキューを循環的に処理します。各仮想スレッドは、次の表で説明する状態のいずれかになります。

表 A-8 仮想スレッドの状態

ワークフローアクティビティーの状態

定義

準備完了

遷移したばかりのアクティビティーを特定します (この状態はごく一時的であり、アクションは通常、準備完了と指定された直後に実行を開始する)。

実行中

現在実行中であるか、まだ実行されていない 1 つ以上のアクションを含むアクティビティーを特定します。

これは論理状態であり、Java スレッドがその時点でそのアクションを実行していることを意味しません。その時点で実行中のアクションは常に、デバッガで強調表示されているアクションです。

保留中のアウトバウンド

アクティビティー内のすべてのアクションが実行された直後のアクティビティーを特定します。このようなアクティビティーは、保留中のアウトバウンド状態に移行します。この状態のアクションは、アウトバウンド遷移の発生を待機します。OR 分岐の場合、アクションは 1 つの遷移が発生するまでこの状態です。AND 分岐の場合、その条件が true と評価されるすべての遷移が発生するまで、アクションはこの状態です。

非アクティブ

すべての遷移が発生済みのアクティビティーを特定します。

保留中のインバウンド

そのアクティビティーが AND 合流である仮想スレッドを特定します。これは、この仮想スレッドへの 1 回の遷移が発生したが、プロセスはまだほかの遷移を待機していることを意味します。

すべての遷移が完了したあとで、ワークフロープロセスは実行を開始します。

例 1: ワークフローと規則のデバッグ

ここで示す例は、BPE デバッガおよび debugger-tutorial-workflow1 (Identity Manager に付属) で提供されるワークフローを使用して、サンプルのワークフローと規則をデバッグする方法を示します。この例では、ワークフローのデバッグおよび規則の実行で、ステップインおよびステップスルーする方法を示します。

この例では、次の手順を実行します。

  1. プロセスの起動
  2. 実行の開始
  3. getFirstName スレッドのステップスルー
  4. getlastname スレッドのステップインおよびステップオーバー
  5. computefullname 処理のステップイン
  6. 規則処理のステップスルー
  7. ワークフロー処理の完了
ステップ 1: プロセスの起動

ワークフローのデバッグプロセスを起動するには、次の手順に従います。

  1. デバッガのメインウィンドウから、「File」>「Open Repository Object」の順に選択します。
  2. 「debugger-tutorial-workflow1」をクリックします。
  3. XML 表示の左余白に小さなボックスがあります。これらのボックスは、コードに挿入できる潜在的なブレークポイントを示します。

    図 A-66 最初のブレークポイントの設定
    例 2: 最初のブレークポイントの設定

  4. <WFProcess> タグのすぐ近くにあるボックスをクリックして、ワークフローの開始位置にブレークポイントを設定します。
  5. Identity Manager にログインし、「Tasks」>「Run Tasks」の順に選択します。
  6. 「debugger-tutorial-workflow1」をクリックします。
  7. デバッガフレームには、ブレークポイントでデバッグが停止したことが示されます。

    図 A-67 ブレークポイントでのデバッグ停止
    例 2: ブレークポイントでのデバッグ停止

    次のことに注意してください。

    • 「Execution Stack」パネル - 「Execution Stack」パネルの上部に、「Thread [thread name] (suspended)」と表示されます。これは、指定された名前のスレッドによってこのワークフローが現在実行中であり、設定されたブレークポイントの位置で中断されていることを示します。

      「Thread」の下には実行スタックが表示されます。このスタックは逆順のスタックトレースであり、呼び出し元の関数が上に、呼び出される関数が下に表示されます (これは、ほとんどのデバッガでの実行トレースの表示とは逆の順序)。

      スタックの一番上のフレームは「Checkin View (ProcessViewer)」という名前であり、これは、ワークフローがその時点で ProcessViewer の checkinView メソッドによって呼び出されていることを示します。このスタックフレームの Java ソースコードにはアクセスできないため、このフレームをクリックしても新しい情報は表示されません。ただし、スタックフレームは、ワークフローがどの場所から起動されているかについてのコンテキストを提供します。

      スタック内の次のフレームは、ワークフロープロセス (<WFProcess>) の開始位置である現在の実行ポイントに対応しているため、強調表示されています。

    • 「Variables」パネル - 現在の実行ポイントの位置で、現在スコープ内にあるすべての変数が一覧表示されます。次の変数が表示されます。
      • Interactive - この変数は、ビューによってプロセスへの入力として渡されます。
      • WF_CASE_OWNER, WF_CASE_RESULT, WF_CONTEXT - これらの変数は、暗黙的なワークフロー変数です。
      • firstName, fullname, lastName - これらの変数は、<Variable> 宣言を使用してワークフロー内で宣言されます。
  8. 「Debug」>「Current Line (F5)」の順に選択して、現在の実行行をふたたび強調表示します。
ステップ 2: 実行の開始

実行を開始するには、次の手順に従います。

  1. 「step-into」をクリックします。
  2. この時点で、デバッガは開始アクティビティーに移動します。実行スタックに「Virtual Thread [start, step=0] (executing)」が含まれていることを確認してください。これは、現在実行中の状態である開始アクティビティーの仮想スレッドがあることを示します。

    図 A-68 最初の仮想スレッドの実行へのステップイン
    例 2: 最初の仮想スレッドの実行へのステップイン

  3. debugger-tutorial-workflow-1」フレームの 2 レベル上をクリックして、「WFProcess」を強調表示します。これにより、呼び出し元の位置が示されます。
  4. F5 キーを押して現在の行に戻ります。
  5. 「step-into」をクリックします。
  6. この時点で、デバッガは </Activity> の位置に移動し、開始仮想スレッドは、保留中のアウトバウンドの状態になります。

ステップ 3: getFirstName スレッドのステップスルー

次の手順を使用して、getFirstName スレッドをステップスルーします。

  1. 「step-into」をクリックします。
  2. この時点で、デバッガでは getFirstName への遷移が強調表示されています。

  3. 「step-into」をクリックします。
  4. この遷移の結果として、getFirstName の新しい仮想スレッドが作成されています。この時点で、この仮想スレッドは準備完了の状態です。開始仮想スレッドはまだ、保留中のアウトバウンド状態です (これは AND 分岐操作であるため、すべての可能な遷移が発生する必要がある)。

    図 A-69 例 2: getFirstName の実行へのステップイン
    例 2: getFirstName の実行へのステップイン

  5. 「step-into」をもう一度クリックします。
  6. デバッガは getFirstName アクティビティーにジャンプします。状態は、準備完了から実行中に変化します。

  7. 「step-into」をクリックします。
  8. デバッガは、get アクションに移動します。

  9. 「step-into」をあと 3 回、またはデバッガが </set> タグに達するまでクリックします。
  10. 「Variables」パネルで、</set> の結果として firstName が「myfirstname」に設定されたことが示されます。

ステップ 4: getLastName スレッドのステップインとステップオーバー

次の手順を使用して、getLastName スレッドをステップインおよびステップオーバーします。

  1. 「step-into」をあと 3 回、またはデバッガが getFirstName</Activity> に達するまでクリックします。
  2. この時点で、getFirstName 仮想スレッドの状態は、保留中のアウトバウンドです。

  3. 「step-into」をクリックします。
  4. デバッガは開始仮想スレッドに戻り、getLastName への遷移を処理する準備をします。

  5. 「step-into」をクリックします。
  6. すべての遷移が処理されたため、開始は非アクティブになります。この遷移により、この時点で getLastName は「ready」状態です。

  7. 「step-into」をクリックします。
  8. 開始仮想スレッドは非アクティブであるため、この時点でなくなります。デバッグは、この時点で実行中の状態である getLastName 仮想スレッドに移動します。

  9. 「step-over」をクリックして、getLastName の終わりまでスキップします。
  10. 「Variables」パネルで、lastName 変数は「mylastname」に設定されています。getFirstName および getLastName の両方の仮想スレッドは、保留中のアウトバウンド状態です。

  11. 「step-into」をクリックします。
  12. デバッガは getFirstName から computeFullName に遷移します。

  13. 「step-into」をクリックします。
  14. getFirstName は非アクティブになり、新しい仮想スレッド computeFullName が作成されます。このスレッドは、getLastName からのインバウンド遷移をまだ待機しているため、「pending inbound」状態です (待機が発生するのは、これが and-join 操作であるためです。or-join 操作の場合は、プロセスの状態がただちに「ready」になる)。

  15. 「step-into」をクリックします。
  16. デバッガは getLastName から computeFullName に遷移します。

    図 A-70 getFirstName から computeFullName へのデバッガ遷移
    例 2: getFirstName から computeFullName へのデバッガ遷移

ステップ 5: computeFullName 処理へのステップイン

次の手順を使用して、computeFullName 処理にステップインします。

  1. 「step-into」をクリックします。
  2. この遷移により、computeFullName 仮想スレッドの状態が、保留中のインバウンドから準備完了に変化します。

  3. 「step-into」をクリックします。
  4. この時点で、computeFullName の状態は、実行中です。

  5. 「step-into」をあと 5 回クリックします。
  6. この時点で、デバッガは firstName</argument> タグの位置です。「last result」パネルには「<String>myfirstname</String>」と表示されます。この値は firstName 引数に渡されます。

    図 A-71 computeFullName 処理へのステップイン
    例 2: computeFullName 処理へのステップイン

ステップ 6: 規則処理のステップスルー

規則処理をステップスルーするには、次の手順に従います。

  1. 「step-into」をあと 3 回クリックします。
  2. デバッガが「Compute-Full-Name」規則にステップインします。実行スタックで、フレームをクリックして 1 つ上のフレームに移動します。debugger-tutorial-workflow-1 内の <rule> 呼び出しが強調表示され、規則の呼び出し元の場所を示します。F5 キーを押して現在の行を再選択します。

  3. 「step-into」をあと 3 回、またはデバッガが </ref> タグに達するまでクリックします。
  4. 「last result」パネルには、「<String>myfirstname</String>」と表示されます。これは、「<ref>firstName</ref>」の結果です。

  5. 「step-into」をあと 3 回、またはデバッガが </concat>  タグに達するまでクリックします。
  6. 「last result」パネルには、<concat> 式の結果が表示されます。

    <String>myfirstname mylastname</String>

  7. 「step-into」をあと 2 回クリックします。デバッグは </rule> タグに戻ります。
ステップ 7: ワークフロープロセスの完了

ワークフロープロセスを完了するには、次の手順に従います。

  1. </set> 要素に達するまで「step-into」をクリックします。
  2. fullname 変数が「myfirstname mylastname」に更新されています。

  3. 「step-into」をあと 2 回クリックします。
  4. この時点で、computeFullName の状態は、保留中のアウトバウンドです。

  5. 「step-into」をあと 4 回クリックします。end の状態が、準備完了、実行中、と順に変化します。
  6. デバッガは </WFProcess> タグに到達し、プロセスが完了したことを示します。

  7. 「step-into」をクリックします。
  8. 「Execution Stack」には「After Checkin view」と表示されます。これは、ワークフローを呼び出した、ビューのチェックイン操作が完了したことを示します。

    図 A-72 例 2: 「Check-in View」操作の完了
    例 2: チェックイン操作の完了

  9. 「Continue」をクリックして実行を再開します。
  10. ブラウザの要求がタイムアウトしていない場合、プロセスダイアグラムを伴う「Task Results」ダイアグラムが表示されます。

例 2: 手動アクションとフォームを含むワークフローのデバッグ and a Form

ここで示す例では、手動アクションとフォームを含む、サンプルワークフローのデバッグ方法を説明します。

デバッガのチュートリアルファイルにある workflow2 を使用し、次の手順を実行します。

  1. 「File」>「Open Repository Object」の順に選択します。
  2. 「Workflow Processes」を展開し、debugger-tutorial-workflow2 を選択します。
  3. <WFProcess...> タグにブレークポイントを設定します。
  4. Identity Manager にログインし、「Tasks」>「Run Tasks」の順に選択します。
  5. debugger-tutorial-workflow2 をクリックします。
  6. 設定したブレークポイントでデバッガが停止します。

  7. 「step-into」を 6 回、つまり、デバッガが「<ManualAction... name='getNameAction'>)」に達するまでクリックします。
  8. 図 A-73 手動アクションへのステップイン
    例 3: 手動アクションへのステップイン

  9. 「step-into」をクリックします。
  10. 別のスレッドでフォーム処理が発生するという説明のダイアログが表示されたら、<Form> タグにブレークポイントを設定して、処理の発生を確認します。
  11. 図 A-74 「Stepping Into Manual Action」ダイアログ
    例 3: デバッガの「手動アクションにステップイン」ダイアログ

  12. 「Yes」または「Always」を選択します。
  13. フォーム処理が完了したあとで、ワークフローは別のスレッドでの実行を継続します。その結果、</ManualAction> にブレークポイントを設定して、フォームが処理を完了したあとのワークフロー処理を監視する必要があります。

    図 A-75 フォームの開始を示すブレークポイント
    例 3: フォームの開始を示すブレークポイント

    デバッガでは、指示どおりに、<Form> タグおよび </ManualAction> タグにブレークポイントが設定されています。加えて、「Execution Stack」には「After Checkin view」が示されます。ワークフロー処理は可能なかぎり (手動アクションが完了するまで) 進行済みであるため、ワークフロープロセスからのステップアウトが完了します。

  14. 「Continue」をクリックします。デバッガは <Form> 要素に設定されたブレークポイントで処理を停止します。
  15. 図 A-76 手動アクション処理を表示するデバッガ
    例 3: 手動アクション処理を表示するデバッガ

    「Execution Stack」領域には次の内容が表示されます。

    • 「Checkout View (WorkItem:...)」 - 特定の作業項目に対し、ビューのチェックアウトのコンテキストで処理が発生していることを示します。
    • 「ManualAction forms」 - 作業項目ビューに対して作用し、変数オブジェクトを通じてワークフロー変数を操作します。変数オブジェクトを展開して、null でないワークフロー変数を表示します。
    • 取得 - フォーム実行が「Derivation」パス上にあることを示します。
  16. このフォームには <Derivation> 式が含まれないため、「Continue」をクリックして次のフェーズまたは処理に進みます。フォーム処理の「HTML Generation (root component)」パスが開始されます。
HTML 生成フェーズ (root コンポーネント)

root コンポーネントの HTML を生成するには、次の手順に従います。

  1. 「step-into」を 2 回クリックします。
  2. デバッガはタイトルの <Property> 要素の処理を完了した状態になります。「last result」パネルには、このプロパティーの値が表示されます。

  3. 「step-into」をあと 3 回クリックします。
  4. このパスではページの root 要素の構築のみを扱うため、デバッガはフォーム内のフィールドをスキップし、</Form> 要素に直接移動します。

  5. 「Continue」をクリックします。
  6. フォーム処理の「HTML Generation (subcomponents)」パスが開始します。

HTML 生成 (サブコンポーネント)

サブコンポーネントの HTML を生成するには、次の手順に従います。

  1. 「step-into」を 13 回、またはデバッガが </Form> タグに達するまでクリックします。
  2. デバッガはこれらの各フィールドを反復処理し、それらの表示プロパティーを評価します。

  3. 「Continue」をクリックします。
  4. 実行が再開されたため、デバッガには中断されたスレッドは表示されません。ブラウザウィンドウに制御が戻ります。

  5. ブラウザウィンドウに戻り、入力を求められたら姓と名を入力して「Save」をクリックします。
  6. デバッガフレームに戻ります。この時点で、デバッガはブレークポイントで中断しています。

  7. 「Variables」サブツリーを展開します。
  8. firstName および lastName は、入力したばかりの値です。デバッガはこの時点で、フォーム処理の確認フェーズです。

    図 A-77 フォーム処理の確認フェーズ
    フォーム処理の確認フェーズ

確認

このフォームには確認フィールドがないため、処理は発生しません。「Continue」をクリックして、フォーム処理の検証フェーズを開始します。

検証と展開

このフォームには検証式が含まれないため、明示的な処理は発生しません。

  1. 「Continue」をクリックして検証フェーズをスキップします。
  2. この時点では、フォーム処理の展開フェーズです。

  3. 「step-into」を 6 回クリックします。
  4. この時点で、デバッガは variables.fullName フィールドの <Expansion><rule> タグの位置です。

    図 A-78 規則処理へのステップイン
    例 3: 規則処理へのステップイン

  5. 「step-into」を 5 回クリックします。デバッガは <rule> 要素にステップインした状態になります。
  6. 「step-into」を 7 回、またはデバッガが </Rule> 要素に達するまでクリックします。
  7. 「last result」に姓名が表示されます。

  8. 「step-into」をもう一度クリックすると、フォームでの処理が再開します。
  9. 「step-into」をもう一度クリックします。
  10. トップレベルの variables.fullName には、実行されたばかりの展開式の値が格納されています。これは、variables データ構造の子ではなくトップレベルのエンティティーです。その理由は、フォーム処理の間、フォーム出力は専用の一時的な form_outputs データ構造に、パス式が平坦化されて保持されるためです。

    フォーム処理のあと、フォーム出力は元のビューに同化されます。暗黙的な変数 form_inputs および form_outputs において、form_inputs は未変更の作業項目ビューを示し、form_outputs は、フォーム処理の完了後にビューに同化される出力フィールドを示します。

    図 A-79 デバッガでの variable.fullName の実行完了の表示
    例 3: デバッガでの variable.fullName の実行完了の表示

    一般に、form_inputs はビューを特定し、form_outputs にはビューに同化されるデータが含まれます。ただし、Active Sync フォームのように、必ずしもすべてのフォームがビューに結び付けられるわけではありません。フォームエンジンは一般的なデータマッピングエンジンであり、フォーム入力からフォーム出力へのマッピングを行います。ビューハンドラは、フォームエンジンにビューを渡す処理と、出力をビューに戻して反映する処理を受け持ちます。

  11. 「Continue」をクリックします。
  12. デバッガは </ManualAction> ブレークポイントに到達します。これは、デバッガが手動アクションにステップインする時点よりも前に設定されたブレークポイントです。変数 firstName および lastName は入力した値です。fullName は、実行されたばかりの展開式の結果です。

    図 A-80 デバッガでの展開式の結果表示
    例 3: デバッガでの展開式の結果表示

  13. 「step-into」を 5 回、<ManualAction... name='displayNameAction'> に達するまでクリックします。
  14. 「step-into」をもう一度クリックします (選択を求められた場合、「Yes」または「Always」を選択する)。
  15. 「Continue」をクリックします。
  16. この時点で、デバッガは displayNameForm の「Derivation」パスの位置です。

取得と HTML 生成 (root コンポーネント)

取得フェーズと HTML 生成フェーズを完了するには、次の手順に従います。

  1. 「Continue」をクリックして、displayNameForm の HTML 生成 (root コンポーネント) 処理を開始します。
  2. 「step-into」を 8 回、またはデバッガが subTitle</Property> 要素に達するまでクリックします。
  3. 「Continue」を 2 回クリックします。
  4. デバッガは次のメッセージを表示します。

    No suspended threads because execution has resumed. Control has now returned to the browser window.

  5. ブラウザウィンドウに戻ります。
  6. 表示される情報は、入力したものと同じです。

  7. 「Save」をクリックしてデバッガフレームに戻ります。
  8. この時点で、デバッガは「Confirmation」パスの位置であり、displayNameForm. を処理しています。

検証と展開

検証と展開を開始するには、次の手順に従います。

  1. 「Continue」をクリックして検証パスを開始します。
  2. 「Continue」をクリックして展開パスを開始します。
  3. 「Continue」をもう一度クリックします。
  4. 手動アクションが完了したため、この時点でデバッガは </ManualAction> タグの位置です。この時点で、ワークフロー処理は再開されています。

  5. 「step-into」を 5 回、またはデバッガが </WFProcess> タグに達するまでクリックします。このタグは、ワークフローが実行を完了したことを示しています。
  6. 「Continue」をクリックします。
  7. デバッガは次のメッセージを表示します。

    No suspended threads because execution has resumed. Control has now returned to the browser window.

  8. ブラウザウィンドウに戻り、ワークフロープロセスダイアグラムを監視します。

フォームのデバッグ

フォームは一連のパスで処理されます。どのパスが進行中かに応じて、特定の要素が処理され、ほかの要素は無視されます。デバッガのメインウィンドウの実行スタックは、フォーム処理の現在のフェーズを示します。最も外側のフォームに先行する実行スタックフレームには、常にパスの名前があります。

取得

フォーム実行の取得フェーズの間、フォームエンジンは各フィールドを反復処理し、個々の <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」タブを選択します。デバッガは以降、匿名ソースの行に達するたびに実行を中断します。たとえば、ログインフォームをデバッグするには、このオプションを選択してログインページに移動します。



前へ      目次      次へ     


Part No: 820-1583.   Copyright 2006 Sun Microsystems, Inc. All rights reserved.