処理フロー統計

処理フロー統計の概要

以下のトピックは、処理フローで利用できるあらゆる各種統計の参照ページとして記載されています。特定の統計で収集される情報の種類が不明の場合は、このトピックで参照できます。また、統計値、統計のさまざまな使用方法、統計に関連するコマンドについても説明します。

アクティビティ統計

処理フローのあらゆるアクティビティは、次の2つの統計を保持します。

  • 入力 - アクティビティに入ったトークンの数
  • 出力 - アクティビティを出たトークンの数

さらに、トークンを待機させる可能性のあるアクティビティは、次の2つの統計を保持します。

  • コンテンツ - 現在アクティビティにあるトークンの数
  • 滞在時間 - 各トークンがアクティビティに費やす時間

[バッチ]アクティビティでは、さらに多くの統計が保持されます。このような統計については、「バッチ統計」ページで確認できます。

共有アセット統計

共有アセット(Resourceオブジェクト、Listオブジェクト、Zoneオブジェクト)は、以下に説明するとおり、少なくとも8つの統計を保持します。

  • 入力 - アセットを使用し始めたトークンの数
  • 出力 - アセットの使用を終了したトークンの数
  • コンテンツ - 現在アセットを使用しているトークンの数
  • 滞在時間 - アセットを使用して各トークンが費やす時間
  • RequestInput - アセットの使用を要求したトークンの数
  • RequestOutput - アセットの使用を要求したトークンの数と、その後アセットを使用したトークンの数や使用できなかったトークンの数
  • RequestContent - アセットを使用するために待機しているトークンの数
  • RequestStaytime - アセットを使用するためにトークンが費やす待機時間

これらの統計についての詳細とその他の統計については、各「共有アセット」の参照ページで確認できます。

統計値とタイプについて

次のとおり、各統計では4つの値にアクセスできます。

  • 現在 - 統計の現在値
  • 最小 - 統計で最小の記録値
  • 最大 - 統計で最大の記録値
  • 平均 - 統計の平均値

さらに、各統計は次に示す3つのタイプのいずれかに分類できます。

  • 増加 - この統計は常に増加します。名前に入力または出力が付く統計はすべて増加統計にあたります。増加統計は増加するのみのため、最小値、最大値、平均値には意味がありません。現在値は合計値とも呼ばれます。
  • レベル - この統計は、タンク内の流体面のように時間とともに増減します。名前にコンテンツが付く統計はすべてレベル統計にあたります。レベル統計は有意な現在値、最小値、最大値、平均値を提供します(平均は時間加重されます)。
  • ストリーム - この統計は、個々のオブジェクトから取得した値を表します。たとえば、滞在時間はトークンがアクティビティを離れるたびに更新されますが、現在の滞在時間は、単に最後のトークンの滞在時間であるため通常は参考になりません。ストリーム統計によって、有用な最小値、最大値、時間加重された平均値が提供されます。

イベント

イベントの詳細については、「イベントリスニング」ページを参照してください。

[処理フロー]アクティビティには、以下のイベントがあります。

エントリ時

[エントリ時]は、トークンがアクティビティに到着したときに起動します。

次のパラメータがあります。

イベントパラメータ タイプ 説明
インスタンス オブジェクト トークンが属する処理フローインスタンス
アクティビティ ツリーノード トークンが到着したアクティビティ
トークン トークン アクティビティに入ろうとしているトークン

終了時

[終了時]は、トークンがアクティビティを離れるときに起動します。

次のパラメータがあります。

イベントパラメータ タイプ 説明
インスタンス オブジェクト トークンが属する処理フローインスタンス
アクティビティ ツリーノード トークンが離れようとしているアクティビティ
トークン トークン アクティビティを離れようとしているトークン

手動リリース時

通常、[手動リリース時]はトークンクラスのリリース方法や[トークンをリリース]アクティビティを使用して、トークンが早期にアクティビティから離れるよう強制されるときに起動します。

次のパラメータがあります。

イベントパラメータ タイプ 説明
インスタンス オブジェクト トークンが属する処理フローインスタンス
アクティビティ ツリーノード トークンが離れようとしているアクティビティ
トークン トークン アクティビティを離れようとしているトークン
目的地 分散 トークンが離れようとしている接続

コンテンツ変更時

アクティビティのコンテンツが変更されるたびにこのイベントが起動します。これは、トークンがアクティビティに入るときや出るときに発生します。すべてのアクティビティにこのイベントがあるわけではないことに注意してください。

このイベントにはパラメータがありません。

入力変更時

トークンがアクティビティに入ると、このイベントが起動します。

このイベントにはパラメータがありません。

出力変更時

トークンがアクティビティを離れると、このイベントが起動します。

このイベントにはパラメータがありません。

滞在時間変更時

[出力変更時]イベントの直後にトークンがアクティビティを離れると、このイベントが起動します。すべてのアクティビティにこのイベントがあるわけではないことに注意してください。

このイベントにはパラメータがありません。

イベントとしての統計

処理フローでは、イベントをリッスンすることに加え、統計をリッスンできます。このようなイベントは、[値変更]イベントと呼ばれ、統計値が変更されるたびに起動します。

コマンド

getstatコマンドを使用すると、FlexScriptでアクティビティや共有アセットからデータを取得できます。このコマンドには、オブジェクト、統計名、値フラグが必要です。次の例は、このコマンドの使用方法を示しています。


// This is the code header given by most process flow objects.
// The comments are added here for clarification.
treenode current = param(1); // This is the instance, meaning the object that owns the 
Process Flow
treenode activity = param(2); // This is the activity or shared asset
treenode token = param(3);
treenode processFlow = ownerobject(activity);

// Here is where you would put your code. The following code gets the average content
double avgContent = getstat(
					// getstat requires between 4 and 6 parameters:
	activity,       // 1. the object (shared asset or activity) that has the statistic
	"Content",      // 2. the name of the statistic
	STAT_AVERAGE,   // 3. the desired value from the statistic (could also be STAT_CURRENT, STAT_MIN, or STAT_MAX)
					// 4. an optional parameter the instance object (usually current)
					// 5. an additional parameter to help resolve which data to get
					// 6. an additional parameter to help resolve which data to get
);
		

たとえば、[遅延]アクティビティの現在のコンテンツを取得するには、次のコマンドを使用します。

getstat(delayActivity, "Content", STAT_CURRENT)

[処理フロー]アクティビティの出力を取得するには、以下を使用します。

getstat(activity, "Input", STAT_CURRENT)

getstatコマンドでアクセスできる統計はすべて追跡変数を使用するため、全統計の現在値、最小値、最大値、平均値にアクセスできます。3番目のパラメータであるフラグを使用して、必要な値を指定します。たとえば、アクティビティの平均滞在時間を取得するには、以下を使用します。

getstat(activity, "Staytime", STAT_AVERAGE)

統計名は非常に重要である点に注意してください。名前は、オブジェクトが保持する統計の名前と一致する必要があります。たとえば、ソースアクティビティは「コンテンツ」統計を保持しないでください。この場合、getstatコマンドは0を返します。

インスタンス化された処理フローの統計

[タスク実行者]や[固定リソース処理フロー]内のアクティビティの統計を取得する場合は、getstatコマンドに4番目のパラメータを渡す必要があります。この4番目のパラメータは、インスタンスオブジェクトの名前です。たとえば、Processor3が処理フローに接続されており、そのフローから統計を取得する場合は、次のようなものが必要です。

getstat(activity, "Output", STAT_CURRENT, "Processor3")

一般処理フロー、またはインスタンスを1つのみ持つ処理フローの場合、このパラメータは無視されます。

統計リスト

[リスト]アクティビティは、リスト全体の統計を保持します。

  • 入力 - リストにプッシュされたエントリの総数
  • 出力 - リストからプルされたエントリの総数
  • コンテンツ - 現在リストにあるエントリの総数
  • 滞在時間 - リストにあるエントリの滞在時間
  • BackOrderInput - リストに作成されたバックオーダーの総数
  • BackOrderOutput - 完了したバックオーダーの総数
  • BackOrderContent - リストにあるバックオーダーの現在の数
  • BackOrderStaytime - 各バックオーダーがリストに残る時間

同じ統計は、リストのパーティションごとに保持されます。統計名の前に「Partition」という単語を付けてください。

たとえば、次の2行のコードは、リストと特定のパーティションのエントリ数を取得します。


		getstat(globallist("list"), "Content", STAT_CURRENT);
		getstat(globallist("list"), "PartitionContent", STAT_CURRENT, 0, 1);
		

4番目のパラメータである0は、一般的な処理フローの場合は無視されるインスタンスオブジェクトのパラメータです。5番目はパーティションIDです。返される値はその特定のパーティションの統計値です。

パーティションが空の場合、リストはデフォルトで破棄される点に注意してください。この場合、そのパーティションの統計もクリアされます。[リストのプロパティ]ウィンドウの[デッドパーティションを保持]チェックボックスをオンにすると、これを防ぐことができます。このオプションを使用すると、多くのパーティションで大量のメモリを使用する可能性があるため注意してください。

ゾーン統計

[ゾーン]は、他の共有アセットが持つ統計を保持しますが、各サブセットの統計も保持します。たとえば、「SmallItems」というゾーンにサブセットがある場合、そのサブセットのコンテンツを次のように取得できます。

getstat(zone, "SubsetContent", STAT_CURRENT, 0, "SmallItems")

この場合も、4番目のパラメータはインスタンスパラメータであり、一般処理フローでは無視されます。5番目は統計を必要とするサブセットの名前です。

サブセット計算のデータを取得することもできます。次のように、必要な計算の名前を6番目のパラメータとして指定します。

getstat(zone, "CalculationInput", STAT_CURRENT, 0, "SmallItems", "TotalWeight")