タスク2.9 - タイプ別時間単位出力
タスクの概要
このタスクでは、1時間ごとに各タイプの合計出力を記録する統計コレクターを作成します。
このタスクは、このシリーズのタスク1で使用されたものと同じモデルをベースにしています。モデルを開く方法については、そのタスクを参照してください。
ステップ1 統計コレクターにイベントを追加する
このステップでは、統計コレクターにイベントを追加します。そのためには、次の手順を実行します。
- 画面の左側にある[ツールボックス]タブをクリックして、ボタンをクリックし、新しいツールを追加します。[統計]セクションに移動して、[統計コレクター]を選択します。これにより、プロパティウィンドウが開きます。
- 最上部にあるフィールドをクリックして、統計コレクターの名前を「OutputByHourByType」に変更します。
- [イベント]タブで、サンプラーボタンをクリックします。その後で、ツールボックスの[ストレージシステム]をクリックします。[スロット終了時]オプションを選択します。
- [行の値]フィールドに、「
data.item.Type
」と入力します。 - [イベント]タブの左上にあるプラスボタンをクリックします。[タイマーイベントを作成]オプションを選択します。
- このイベントの名前を「毎時 - 終了」に設定します。
- [初回]プロパティの横にある三角形ボタンをクリックして、[1時間]オプションを選択します。
- [リピート間隔]プロパティの横にある三角形ボタンをクリックして、[毎時]オプションを選択します。
- [行の値]フィールドに、「
collector.getAllRowValues()
」と書き込みます。 - [このイベント後に関係した行を終了する]ボックスをオンにします。
- [イベント]タブの左上にあるプラスボタンをクリックします。[タイマーイベントを作成]オプションを選択します。
- このイベントの名前を「毎時 - 開始」に設定します。
- [初回]プロパティの横にある矢印をクリックして、[リセット時]オプションを選択します。
- [リピート間隔]プロパティの横にある三角形ボタンをクリックして、[毎時]オプションを選択します。
- [行の値]プロパティの横にある三角形ボタンをクリックして、[グローバルテーブル列から]を選択します。
- ポップアップで、[テーブル]プロパティが[ProductInfo]に設定されていることを確認します。
- [列]プロパティを[タイプ]に設定します。
- ポップアップの外側をクリックして閉じます。
説明
このステップでは、次の3つのイベントをリッスンしました。
- ストレージシステムのスロット終了時イベント
- 1時間後に発生し、その後は1時間おきに発生するタイマーイベント
- モデルがリセットされたときに発生し、その後は1時間おきに発生するタイマーイベント
1つ目のイベントの行の値は、単一の値(ストレージシステムを出たアイテムのタイプ)です。2つ目のイベントの行の値は、統計コレクター内で現在アクティブになっているすべての行の値のセットです。3つ目のイベントの行の値は、ProductInfoテーブルの[情報]列内のすべての値です。発生したイベントに関係なく、各行の値は有効なタイプです。
これらのイベントのそれぞれに特定の目的があります。スロット終了時イベントは、統計コレクターに、そのタイプに関連付けられたラベルのインクリメントを許可します。1つ目のタイマーイベントは、統計コレクターに、指定された時間の合計の表示と行の終了を許可します。3つ目のイベントは、次の時間の処理全体を再起動します。
ステップ2 統計コレクターに列を追加する
このステップでは、統計コレクターに列を追加します。そのためには、次の手順を実行します。
- [列]タブをクリックします。
- ボタンをクリックして、[列の追加]を選択します。
- 列の名前を「時間」に設定します。
- [行の追加の値]フィールドの横にある矢印をクリックして、[時間]を選択してから、[モデル日付/時刻]を選択します。
- もう一度、ボタンをクリックして、[列の追加]を選択します。
- [名前]フィールドで、この列の名前を「タイプ」に変更します。
- [行の追加の値]フィールドの横にある矢印をクリックして、[データ]をポイントし、[行の値]を選択します。
- [保管タイプ]プロパティを[整数]に設定します。
- もう一度、ボタンをクリックして、[列の追加]を選択します。
- [名前]フィールドで、この列の名前を「出力」に変更します。
- [イベントの値]フィールドを[
data.row.Output
]に設定します。 - [保管タイプ]プロパティを[整数]に設定します。
- [イベント/列の接続]エリアで、毎時 - 終了イベントを選択して、[出力]ボックスをオンにし、このイベントを[出力]列に接続します。
説明
このステップでは、3つの列(時間、タイプ、および出力)を追加しました。[時間]列と[タイプ]列は単純です。各時間の開始時点で、この2つの列に現在時刻と各行に関連付けられたタイプが記録されます。3つ目の列には、行が追加されたときに値が記録されません。代わりに、毎時 - 終了イベントを待機します。そのイベントが発生すると、この列にdata
エンティティ上の行ラベルである出力の値が記録されます。
あと1つ残ったタスクは、出力ラベルに正しいデータが含まれていることを確認することです。この操作は次のステップで行います。
ステップ3 統計コレクターにトリガーを追加する
このステップでは、統計コレクターにトリガーを追加します。そのためには、次の手順を実行します。
- [トリガー]タブをクリックします。
- プラスボタンをクリックして、[行の更新時]を選択します。
- 行の更新時トリガーでプラスボタンをクリックして、[行ラベルを増加]を選択します。
- ポップアップで、[増加]フィールドを[
"Output"
]に設定します。インクリメント量はすでに1
に設定されているはずです。 - [適用]ボタンをクリックします。
ツールボックスでOutputByHourByTypeコレクターを右クリックして、[テーブルを表示]オプションを選択できます。モデルをリセットして実行すると、テーブルに1時間ごとのタイプ別出力が記録される様子が表示されます。データの入力を確認するには、モデルをできるだけ高速で実行する必要があります。
説明
モデルをリセットすると、毎時 - 開始イベントが発生します。このイベントでは、ProductInfoテーブルから収集されたタイプ値の配列が生成されます。これにより、タイプ値ごとに1つずつの行がテーブルに追加されます。[時間]列と[タイプ]列に値が入力されますが、[出力]列は空白のままです。
アイテムが在庫を出るときに、統計コレクターがそのタイプを決定します。そのタイプ用の行がすでに存在することと、スロット終了時イベントがどの列にも接続されていないことから、テーブルは変化しません。ただし、そのタイプの行の行の更新時イベントが発生します。このトリガーで、出力という名前の行ラベルをインクリメントするコードを追加しました。そのため、指定されたタイプの出力の数がカウントされています。
1時間ごとに、両方のタイマーイベントが発生します。毎時 - 終了イベントが最初に発生します。これは、リストで上位に掲載れているためです。このイベントによって、現在の行の値がその行の値として生成されるため、3つすべてのアクティブな行が更新されます。このイベントは[出力]列に接続されているため、最後にこの列に[出力]行のラベルが記録されます。その後、このイベントによって行が終了されるため、行の値は忘れられ、行のラベルは破棄されます。
最後に、毎時 - 開始イベントが再度発生します。今回も、ProductInfoテーブルからすべてのタイプの値が生成されます。統計コレクターはこれらの値を記憶していないため、タイプごとに新しい行を追加して、処理全体をもう一度開始します。
ステップ4 チャートを作成する
ここでは、統計コレクター内のデータを時間プロットとして表示するチャートを作成します。そのためには、次の手順を実行します。
- 画面の最上部にある[ダッシュボード]ボタンをクリックして、[ダッシュボードを追加]オプションを選択します。
- ダッシュボードビューがアクティブになっている状態で、左側のライブラリに移動します。[基本のチャートタイプ]セクションで、[時間プロット]チャートを探してダッシュボードにドラッグします。これにより、新しいチャートのプロパティウィンドウが開きます。
- [データソース]フィールドをクリックして、オプションから[OutputByHourByType]コレクターを選択します。
- [X値]プロパティを[時間]列に設定します。
- [Y値]プロパティを[出力]列に設定します。
- [色で分割]リストで、[タイプ]ボックスをオンにします。
- [設定]で、[スタイルを描画]プロパティを[線と点]に変更します。
- [テキスト]タブをクリックします。
- [カスタムタイトル]ボックスをオンにして、カスタムタイトルを「タイプ別出力」に設定します。
- [列ヘッダーを表示]エリアで、[タイプ]ボックスをオンにします。
- [色]タブをクリックします。
- [値を編集]ボタンをクリックして、[すべての色を削除]を選択します。
- プラスボタンを3回クリックして、3つの色を追加します。
- [適用]ボタンをクリックします。
これで、モデルをリセットして実行すると、OutputByHourByTypeコレクターの時間プロットを示すチャートを表示できます。前回と同様に、モデルを実行してから結果が表示されるまで、しばらく時間がかかる場合があります。