intra-mart Accel Platform IM-LogicDesigner チュートリアルガイド 第7版 2018-04-01

5.5. ロジックフローのデバッグ

この章では、ロジックフローのデバッグ機能について説明します。

5.5.1. ロジックフローのデバッグ機能とは

ロジックフローのデバッグ機能とは、ブラウザ上からロジックフローのステップ実行や、実行中のフローに流れるパラメータの参照などが行える機能です。
デバッグ機能を用いることで、以下のようなロジックフロー上の問題を解決することが可能です。
  • 作成したロジックフローが特定の入力で必ず失敗する(どのエレメントで失敗しているのか特定したい)。
  • あるタスクが想定とは違う処理を行う(そのタスクへ渡される実際の入力値と出力値を確認したい)。
  • 条件分岐や繰り返し処理が正しく動作していない(制御結果を確認したい)。
また、こうした問題解決以外にも、作成したロジックフローの簡単なテスト実行にも利用することができます。

5.5.2. デバッグ画面を表示する

ロジックフローのデバッグ画面は、ロジックフロー定義編集画面から開きます。
  1. 「サイトマップ」- 「LogicDesigner」-「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    一覧の中から、フロー定義ID「tutorial_flow」の行の編集アイコンをクリックします。
  2. ロジックフロー定義編集画面上部、ヘッダー内の「デバッグ」をクリックします。
    ../../../_images/view_debug1.png

    図:ヘッダー内の「デバッグ」

  3. ロジックフロー定義のデバッグ画面が新規にポップアップして表示されます。
    ../../../_images/view_debug2.png

    図:デバッグ画面

5.5.3. デバッグ画面の詳細

ロジックフローのデバッグ画面は、用途に応じて複数の区画(ペイン)に分かれています。
各ペインの詳細は以下の通りです。
../../../_images/debug_overview.png

図:デバッグ画面の全体図

  1. フローの実行・中断や、各種ペインの表示・非表示を切り替えることが出来るメニューヘッダです。

  2. デバッグを行うロジックフローの確認と、デバッグ実行時に処理をサスペンドするためのブレイクポイントの設定が出来る「ロジックフロー確認」ペインです。
    なお、あくまでフローの確認が主であるため、この画面上でのロジックフローの編集は行えません。
  3. 「ロジックフロー確認」ペイン上で選択したエレメントの詳細を表示する「タスク情報」ペインです。
    「ロジックフロー確認」ペインと同様に確認が主であるため、タスク情報ペイン内での設定変更は行えません。
    ただし、後述の「応用:ブレイクポイントを利用したデバッグ実行」で説明しているブレイクポイントの設定のみ、タスク情報ペイン内でも可能です。
  4. ロジックフローをデバッグ実行する上で関わる全ての変数情報の表示、および、編集が出来る「フロー定義の変数情報」ペインです。
    このペインで確認可能な変数情報は以下の通りです。
    • デバッグ実行時に渡す入出力値
    • 各エレメントの入出力の返す値
    • 定数値・変数といった事前に定義されている値
  5. デバッグ画面上の処理情報がログとして出力される「コンソール」ペインです。

5.5.4. ロジックフローをデバッグ実行する

ロジックフローをデバッグ実行する方法を説明します。
  1. デバッグ画面を開きます。

  2. メニューヘッダ内の「実行」をクリックします。

    ../../../_images/execute1.png

    図:ヘッダー内の「実行」

  3. デバッグ実行を行う上で必要な「入力値の設定」項目が表示されます。

    ../../../_images/execute2.png

    図:デバッグの実行設定画面

  4. 入力<object>配下のmessage<string>をクリックし、選択状態にします。

    ../../../_images/execute3.png

    図:デバッグの実行設定画面 - 入力のフォーカス

  5. 値一覧の左上の「値の編集」をクリックします。

    ../../../_images/execute4.png

    図:値の編集

  6. 値の編集を行う画面が表示されるので、入力欄に以下の値を設定します。
    (値の設定を行うことで、自動で画面上部の「値の入力」ラジオボタンがオンになることを確認してください)
    • 設定値 - 「IM-LogicDesigner Now Debug!!
    ../../../_images/execute5.png

    図:デバッグ用設定値の入力

  7. 値の編集画面下部の「決定」をクリックします。

    ../../../_images/execute6.png

    図:設定値の決定

  8. message<string>へ、設定した値が反映されていることを確認し、画面下部の「実行」をクリックします。

    ../../../_images/execute7.png

    図:設定の反映と実行

  9. デバッグの開始を確認するダイアログが表示されるので、「決定」をクリックします。

  10. ロジックフローが実行が完了した旨のメッセージが表示され、実行結果が「フロー定義の変数情報」、および、「コンソール」に反映されます。

    ../../../_images/execute9.png

    図:デバッグ実行の完了

以上で、ロジックフローのデバッグ実行が完了しました。

5.5.5. デバッグ実行の結果を確認する

ロジックフローをデバッグ実行する」でデバッグ実行した結果を確認します。
デバッグ実行を行った場合、通常のフロー実行時に得られる結果以外に、以下の実行結果が確認できます。
  • ロジックフローデバッグ実行時に各種変数へ割り当てられた値
  • ロジックフローの実行情報
ここでは、上記二点の確認を行います。

5.5.5.1. デバッグ実行時に各種変数へ割り当てられた値の確認

はじめに、実行時に各種変数へ割り当てられた値を確認します。
変数の確認は「フロー定義の変数情報」ペインから行います。
  1. フロー定義の変数情報を確認しやすくするため、以下を実施します。

    • 「タスク情報」ペイン、および、「コンソール」ペインの非表示化
    • 「フロー定義の変数情報」ペインの表示領域の拡大
    ../../../_images/check_variable1.png

    図:フロー定義の変数情報ペインの表示

    コラム

    表示領域の拡大

    「タスク情報」ペイン、「フロー定義の変数情報」ペイン、および、「コンソール」ペインは各ペインの端をドラッグ&ドロップすることで表示域を拡大・縮小することができます。
    作業環境の解像度によって表示情報が確認しづらい場合などに活用してください。
    ../../../_images/expand_view_area.png

    図:表示域拡大 - 「フロー定義の変数情報」ペインの例

  2. 「フロー定義の変数情報」ペイン内において、変数と値が以下のとおり設定されていることを確認してください。

    ../../../_images/check_variable2.png

    図:変数情報の確認

「フロー定義の変数情報」ペインでは、上記以外に「暗黙的な変数の利用」で紹介している暗黙的な変数についても値を確認できます。

コラム

変数情報のお気に入り機能

「フロー定義の変数情報」ペイン内の変数は左端に表示されているアイコンをクリックすることでお気に入りとして設定することが可能です。
../../../_images/favorite_variable1.png

図:お気に入り設定

お気に入り設定された変数は、「フロー定義の変数情報」ペインの右上の星アイコンをクリックすることでお気に入り設定された変数のみに絞り込んで表示することができます。
../../../_images/favorite_variable2.png

図:お気に入りの絞り込み表示

お気に入り設定を利用することで、特に注意して確認したい変数の変化を見逃しづらくなります。

5.5.5.2. 実行情報の確認

次に、ロジックフローの実行情報を確認します。
実行情報の確認は「コンソール」ペインから行います。
  1. フロー定義の実行情報を確認しやすくするため、以下を実施します。

    • 「タスク情報」ペイン、および、「フロー定義の変数情報」ペインの非表示化
    • 「コンソール」ペインの表示領域の拡大
    ../../../_images/check_console1.png

    図:コンソールペインの表示

  2. 「コンソール」ペイン内において、以下の内容が出力されていることを確認してください。

    • 実行されたフローのフローIDとバージョン情報のログ
    • 実行された順に、エレメントの実行IDとタスクIDのログ
    • フローの実行が正常に終了した旨のログ
    ../../../_images/check_console2.png

    図:実行情報の表示

「コンソール」ペインにはエレメントの情報ログが実行順に出力されるため、特に繰り返し処理や条件分岐と言った複雑な処理経路を辿るフローのデバッグ時に有用です。

コラム

エラーが発生した場合のコンソール

デバッグ実行時にエラーが発生した場合、発生したエラーに関するスタックトレースがコンソールに表示されます。
../../../_images/debug_error.png

図:コンソールにスタックトレースが表示される例

上記画像の例は、ユーザプロファイルを取得するためのユーザコードが指定されていなかった場合のスタックトレースです。
以上で、ロジックフローのデバッグ実行の結果が確認できました。

5.5.6. ロジックフローを順番にデバッグ実行する(ステップ実行)

ロジックフローのデバッグ機能では通常実行の他に、処理をエレメントごとにサスペンドしながらデバッグを行うステップ実行をサポートしています。
ステップ実行を利用することで、配置した各エレメントに想定した値が入力/出力されているか1つずつ確認しながらデバッグを行う事が可能です。
これは、これまで利用したことのないタスクやユーザ定義についての、エレメントレベルでの処理結果も踏まえた検証作業等に有用です。

5.5.6.1. ロジックフローのステップ実行

実際にロジックフローをステップ実行を利用してデバッグする方法を説明します。
  1. デバッグ画面を開きます。

  2. メニューヘッダ内の「ステップ実行」をクリックします。

    ../../../_images/execute_step1.png

    図:ヘッダー内の「ステップ実行」

  3. デバッグ実行を行う上で必要な「入力値の設定」項目が表示されます。
    ここでは、「ロジックフローをデバッグ実行する」と同様の手順で値を設定します。
    ../../../_images/execute_step2.png

    図:デバッグ用設定値の入力

  4. 画面下部の「実行」をクリックします。

  5. デバッグの開始を確認するダイアログが表示されるので、「決定」をクリックします。

  6. ロジックフローが実行され、「開始」制御要素と「ログ出力」タスクの間で処理がサスペンドしたことを表す矢印が表示されます。

    ../../../_images/execute_step3.png

    図:現在サスペンドしている位置の表示(矢印)

  7. 処理が「ログ出力」タスクの直前でサスペンドしていることを以下より確認してください。

    • 「コンソール」ペインには、フローが実行されたことを示すログのみが出力されている。
    • サーバのコンソールには、「ログ出力」タスクによるログが出力されていない。
  8. 再度「ステップ実行」をクリックします。

    ../../../_images/execute_step4.png

    図:「ステップ実行」のクリック(2回目)

  9. ロジックフローが再実行され、「ログ出力」タスクと「テキストメール送信」タスクの間に処理がサスペンドしたことを表す矢印が移動します。

    ../../../_images/execute_step5.png

    図:現在サスペンドしている位置の表示(矢印)

  10. 処理が「テキストメール送信」タスクの直前でサスペンドしていることを以下より確認してください。

    • 「コンソール」ペインには、「ログ出力」タスクの実行までのログが出力されている。
    • サーバのコンソールに、入力値として設定した「IM-LogicDesigner Now Debug!!」が表示されている。
    • 「テキストメール送信」タスクに関する処理結果が確認されていない。

5.5.6.2. 実行途中での変数の編集

ロジックフローのデバッグ機能では、実行途中で特定の変数の値を編集することが可能です。
ここでは、現在ロジックフロー上に流れている入力値(message)の値を変更し、それが後続の処理に反映されることを確認します。
  1. 「フロー定義の変数情報」ペインを表示します。

    ../../../_images/step_change_variable1.png

    図:ヘッダー内の「ステップ実行」

  2. 入力に設定されている、「IM-LogicDesigner Now Debug!!」文字列をダブルクリックします。

    ../../../_images/step_change_variable2.png

    図:値の編集操作

  3. 「値の編集」画面が表示されます。

    ../../../_images/step_change_variable3.png

    図:値の編集画面

  4. 入力欄に以下の値を設定します。

    • 設定値 - 「IM-LogicDesigner Debug Suspended!!
    ../../../_images/step_change_variable4.png

    図:変更する値の設定

  5. 値の編集画面下部の「決定」をクリックします。

  6. message<string>へ、設定した値が反映されていることを確認し、再度「ステップ実行」をクリックします。

    ../../../_images/step_change_variable5.png

    図:「ステップ実行」のクリック(3回目)

  7. ロジックフローが再実行され、「テキストメール送信」タスクと「終了」制御要素の間に処理がサスペンドしたことを表す矢印が移動します。

    ../../../_images/step_change_variable6.png

    図:現在サスペンドしている位置の表示(矢印)

  8. 処理が「終了」制御要素の直前でサスペンドしていることを以下より確認してください。

    • 「コンソール」ペインには、「テキストメール送信」タスクの実行までのログが出力されている。
    • テキストメールが送信され、その本文には「IM-LogicDesigner Debug Suspended!!」の文字列が設定されていること。
  9. 再度「ステップ実行」をクリックします。

    ../../../_images/step_change_variable7.png

    図:「ステップ実行」のクリック(4回目)

  10. 全ての実行処理が完了し、画面上部にロジックフローが実行が完了した旨のメッセージが表示されます。

    ../../../_images/step_change_variable8.png

    図:ステップ実行の完了

コラム

メールの送信環境が無い場合

メールの送信環境が無い場合は、「ログ出力」タスクの実行前に値を変更して動作の確認を行ってください。
以上で、ステップ実行を用いたロジックフローのデバッグ実行が完了しました。

5.5.7. 応用:ブレイクポイントを利用したデバッグ実行

長大なロジックフローにおける一部のエレメントの動作を検証したい場合、ブレイクポイントを利用したデバッグ実行を検討してください。
ブレイクポイントを利用することで、任意の位置でデバッグをサスペンドすることができます。
ここでは、ロジックフロー内の「テキストメール送信」タスクにブレイクポイントを設定し、デバッグ実行時に処理が「テキストメール送信」タスク実行直前でサスペンドすることを確認します。
  1. デバッグ画面を開きます。

  2. 「ロジックフロー確認」ペイン上の「テキストメール送信」タスクを選択します。

    ../../../_images/breakpoint1.png

    図:「テキストメール送信」タスクの選択

  3. 「タスク情報」ペイン下部、タスク設定の項目を以下のとおりに変更します。

    • ブレイクポイント - このタスクで一時停止する - チェックボックスをオンにする
    ../../../_images/breakpoint2.png

    図:ブレイクポイントの設定

  4. 「テキストメール送信」タスクの右上に、ブレイクポイントが設定されたことを表す停止マークが設定されたことを確認してください。

    ../../../_images/breakpoint3.png

    図:停止マーク

    コラム

    ブレイクポイントの設定

    ブレイクポイントは設定を行いたいエレメントをダブルクリックすることでも設定可能です。
  5. メニューヘッダ内の「実行」をクリックし、「ロジックフローをデバッグ実行する」と同様の手順で値を設定します。

    ../../../_images/breakpoint4.png

    図:デバッグ用設定値の入力

  6. 画面下部の「実行」をクリックします。

  7. デバッグの開始を確認するダイアログが表示されるので、「決定」をクリックします。

  8. ロジックフローが実行され、「ログ出力」タスクと「テキストメール送信」タスクの間に処理がサスペンドしたことを表す矢印が表示されます。

    ../../../_images/breakpoint5.png

    図:ブレイクポイントにより処理がサスペンド

  9. 処理が「テキストメール送信」タスクの直前でサスペンドしていることを以下より確認してください。

    • 「コンソール」ペインには、「ログ出力」タスクの実行までのログが出力されている。
    • サーバのコンソールに、入力値として設定した「IM-LogicDesigner Now Debug!!」が表示されている。
    • 「テキストメール送信」タスクに関する処理結果が確認されていない。
  10. 再度「実行」をクリックします。

    ../../../_images/breakpoint6.png

    図:「実行」をクリック(2回目)

  11. 全ての実行処理が完了し、画面上部にロジックフローが実行が完了した旨のメッセージが表示されます。

    ../../../_images/breakpoint7.png

    図:ブレイクポイントを用いたフロー実行の完了

以上で、ブレイクポイントを用いたロジックフローのデバッグ実行が完了しました。