処理フローツールを使用する主な利点の1つは、処理フローでシミュレーションモデルのロジックを視覚的に見られることです。コードと比較してデバッグとトラブルシューティングがはるかに簡単になります。このトピックでは、処理フローのトラブルシューティングに使用できるさまざまなツールと方法について説明します。
処理フローのトラブルシューティングを行うには、まず処理フローの各ステップを検証することをお勧めします。シミュレーションコントロールバーの[ステップ]ボタンを使用して、通常のシミュレーションモデルで行うのと同様に処理フローの各ステップを検証できます。
[実行]ボタンをクリックする代わりに[ステップ]ボタンをクリックすると、処理フローモデルで発生する次のイベントにシミュレーションを進めることができます。これにより、エラーメッセージの原因となったトークンや、期待どおりの動作をしなかったトークンを確認できます。
特定のトークンをクリックして、そのプロパティに関する詳細情報を確認することもできます。トークンのプロパティを表示する方法の詳細については、「トークンのプロパティ」を参照してください。
処理フローに多数の異なるトークンがある場合は、処理フローの各ステップを通して特定のトークンを追跡するのが難しい場合があります。この問題は、1つのトークンを追跡することで解決できます。詳細については、「トークンを視覚的に追跡する」および「追跡履歴を使用してトークンを追跡する」を参照してください。
必要に応じて、処理フロー内を移動するトークンを視覚的に追跡できます。トークンが視覚的に追跡されている場合、そのトークンのコピーが処理フローの外側に表示され、特定のトークンが処理フロー内を移動するのを簡単に追跡できます。
処理フローから視覚的追跡を直接有効にするには:
すべての現在のトークンの概要を表示し、追跡するトークンを選択するには:
処理フロー内を移動するトークンの履歴をきめ細かく表示させることができます。追跡履歴を表示する機能を設定するには、まず履歴を追跡する機能を有効にする必要があります。その後、さまざまな方法で追跡履歴を表示できます。
追跡履歴を有効にするには、まず、処理フロー内のどのアクティビティで追跡履歴を開始し、どのアクティビティで終了するのかを決める必要があります。たとえば、処理フロー全体を追跡する場合は、処理フローの開始時に[ソース]アクティビティの追跡を開始し、トークンが[シンク]または[終了]に送信されると追跡が自動で終了します。どのアクティビティでも追跡のオンとオフを切り替えることができます。
追跡履歴を設定するには:
あるいは、処理フロー内の任意のアクティビティを右クリックしてメニューを開くこともできます。[トレース履歴]をポイントし、[トレースを開始]または[トレースを終了]を選択して追跡をオンまたはオフにします。
追跡履歴を表示するには:
トークンのリストの下にある[追跡履歴を表示]ボタンをクリックして[トレース履歴]ウィンドウを開き、ドロップダウンから目的のトークンを選択することもできます。
また、処理フロービューでトークンをクリックし、クイックプロパティの[トレース履歴]ボタンをクリックして、トークンの追跡履歴を表示することもできます。
[トレース履歴]ウィンドウが開いている場合、処理フロービューでは、id.indexの形式で入力した各アクティビティの左側に、そのトークンの履歴が表示されます。idはトークンID番号で、インデックスは追跡履歴データのインデックスに対応します。
[トレース履歴]ウィンドウには、アクティビティ履歴とアクティビティプロファイルという2組の情報が表示されます。
モデル内の一部の問題は、そのモデル内のイベントによってアクティビティの同期実行がトリガーされることにより発生する場合があります。たとえば、コンベヤなどの固定リソースに複数のフローアイテムがあるとします。処理フローで[イベントトリガーソース]や[イベントを待つ]などのイベントリスニングのアクティビティを使用してフローアイテムをリリースするタイミングを判断すると、コンベヤ上のすべてのアイテムが誤ってリリースされる可能性があります。
この問題は、FlexSimがイベントリスニングのアクティビティのロジスティクスを処理する方法に起因して生じるものです(詳細については、「イベントリスニングについての主要な概念」を参照してください)。 これは[イベントを待つ]または[イベントトリガーソース]が特定のイベントをリッスンしているときに多く発生します。その後、そのイベントが発生すると、本来トリガーされるイベントとそれに続いてイベントをトリガーするロジックとの間に遅延を生じることなく、モデル内のイベントを不用意に起動させる可能性のある1つ以上の他のアクティビティがイベントの後に続くことがあります。ロジックが短期間に発生するため、元のイベントが「息継ぎ」をして処理中の作業を終了する時間が与えられません。これらの問題の影響を受ける可能性があるイベントの種類は次のとおりです。
このような場合、イベントリスニングのアクティビティの後に[遅延]アクティビティを追加し、遅延時間を0秒に設定することで問題を解決できます。このアクティビティを追加すると、本来トリガーされるイベントが、トークンが移動する前に行っていた処理を完了させることができます(このアクティビティの詳細については、「遅延」を参照してください)。
0秒遅れを使用するもう1つの利点は、これを行うことで、[ステップ]ボタンを使用してデバッグしやすくなることです(詳細については、「ステップボタンを使用する」を参照してください)。 アクティビティが外部イベントによってトリガーされる場合、実際には何か他の処理が行われる直前に計算を行ったり戻り値を定義したりする必要があれば、処理フローはすべてのアクティビティを強制的に同期して実行させる必要があります。したがって、遅延時間0の[遅延]アクティビティを追加して明示的に指示しない限り、イベントによってトリガーされるアクティビティは同期して実行されます。この遅延により、イベントをトリガーしたオブジェクトがそのイベントロジックを終了できます。
トークンのプロパティは、トークンに関する詳細情報を提供するため、特定のトークンに何が起こっているのかを正確に理解するのに特に役立ちます。シミュレーションの実行中に[停止]ボタンを押すとシミュレーションが中断されます。次に、特定のトークンをクリックすると、次の画像に示すように、[クイックプロパティ]ペインに[トークンのプロパティ]が表示されます。
このペインには次の設定があります。
選択したトークンが子である場合、または子を持つ場合、[関係]ペインも表示されます。
ペインには次の設定があります。
選択したトークンに共有アセットが割り当てられている場合(リソースを取得、リストからプッシュ/プルされた、またはゾーンに入った場合)、[共有アセット]ペインも表示されます。
ペインには次の設定があります。
上のプロパティはすべて、トークンの[プロパティ]ウィンドウで開くこともできます。トークンのプロパティウィンドウは、クイックプロパティの[トークンプロパティ]ペインで[ポップアウト]ボタンを使用するか、処理フロービューでトークンをダブルクリックすることで利用できます。
[トークン]ウィンドウでは、現在処理フローにあるすべてのトークンを表示、編集、管理できます。このウィンドウは、処理フロー内の空白をクリックして開くことができます(他に何も選択されていないことを確認してください)。[クイックプロパティ]で、[トークンを表示]ボタンをクリックしてこのウィンドウを開きます。
[アクティビティ]ウィンドウでは、現在処理フローにあるすべてのアクティビティを表示、編集、管理できます。このウィンドウは、処理フロー内の空白をクリックして開くことができます(他に何も選択されていないことを確認してください)。[クイックプロパティ]で、[アクティビティを表示]ボタンをクリックしてこのウィンドウを開きます。
処理フローにリストとのやり取りが含まれている場合は、リストのエントリの確認が必要となる可能性があります。これらのエントリおよびバックオーダーは、[リストのプロパティ]の[エントリを表示]ボタンまたは[バックオーダーを表示]ボタンをクリックすると表示できます。