ASTERIA

パラレルサブフローのデバッグ

はじめに

ASTERIA WARPのパラレルサブフローで実行されたフローをデバッグする方法を考えてみました。

フローのデバッグ実行とは

フロー内のコンポーネントにブレークポントを設定し、ブレークポイントで一時停止した箇所からステップ実行で1つずつ実行しながらその時の状態を確認することができる機能。

parallel_debug01.png

パラレルサブフローとは

ParallelSubFlowコンポーネントを使ってループ処理で別のフローを並列に実行することができる機能。
マルチコア、マルチCPU環境などでは、単純にループ処理を行うよりも効率的に処理を実行することが期待できる。

parallel_debug02.png

パラレルサブフローをデバッグするには

パラレルサブフローで実行されるサブフローは個別のスレッドとして並列実行用の実行エンジンに振り分けられるので、呼び出し元の親フローからステップイン実行で確認することはできない。
※FlowInvokerとして実行するフローも同様。
ただし呼び出されるフローは別スレッドとして実行されるのでParallelSubFlowコンポーネントで呼び出されるフローを「外部からフローを実行する」チェックボックスをオンにして

parallel_debug03.png

デバッグの待受状態にしておくことでデバッグすることは可能。

parallel_debug04.png

デバッグできるのは並列実行したフローの1つだけ。(おそらく最初に実行されたフロー)

parallel_debug05.png

おわりに

親フローからのステップイン実行はできませんが呼び出されるフローを待機状態にしておくことで並列実行されたうち1つのフローをデバッグできるようです。