タスク実行プログラムがタスクを処理する方法
タスク実行者がタスクを処理する方法の概要
このトピックでは、タスク実行者がタスクシーケンスを受信して実行する方法について説明します。シミュレーションモデルで複雑なタスクロジックを使用している場合は、FlexSimが背後でタスクロジックを処理する方法を理解するために、このトピックの概念を理解する必要があります。この知識は、潜在的なタスクロジックの問題を理解し、解決するのに役立ちます。特に、タスクディスパッチロジックとそれに関連する問題(タスクの優先度やプリエンプトなど)に関連します。
タスクシーケンスとタスク
このマニュアルやその他のFlexSimリソースで、タスクとタスクシーケンスという用語が同じ意味で使用されていることがあります。用語の使用が厳密でなくても大きな問題にはなりませんが、タスクとタスクシーケンスという用語には非常に特殊でユニークな技術的意味合いが含まれているため、理解することが重要です。
定義
タスク - タスク実行者によって実行される単一の命令またはアクション。例として、ロード、アンロード、移動などが挙げられます。
タスクシーケンス - タスク実行者によって通常は中断せずに順番に実行されるように意図された1つの以上のタスクの集合。タスクの実行順序を含むことに加えて、タスクシーケンスは、優先度とプリエンプトの値を保持し、ユーザー定義のラベル値を保存することもできます。
デフォルトで、タスク実行者は最初から最後まで、タスクシーケンス全体の中のすべてのタスクを処理します。その後、タスク実行者がタスクシーケンス内のすべてのタスクを終了すると、そのタスクシーケンスを終了/破壊してから、実行する次のタスクシーケンスを探します。
タスクシーケンスとタスクの比較:ディスパッチングに関する意味
タスクシーケンスとタスクの違いを理解することは、FlexSim上のディスパッチングロジックを理解して制御するうえで重要です。タスクはFlexSimで最も基本的な作業単位だとすると、タスクシーケンスは最も基本的なディスパッチング単位です。個別のタスクではなく、タスクシーケンスは、別々のキューまたはリストにディスパッチして移動させることができます。タスクシーケンスは、カスタム基準などに基づいて優先度を付けて選択できます。また、タスクシーケンスは特定のタスク実行順序を強制します。
タスク実行者がタスクシーケンスを処理する方法
タスク実行者は主に次の2つを追跡します。
- アクティブなタスクシーケンス - タスク実行者が現在作業しているタスクシーケンス。
- タスクシーケンスキュー - タスク実行者が割り当てられているタスクシーケンスのキュー。
タスク実行者のアクティブなタスクシーケンスは、その"activetasksequence"変数に移動することによってツリーに表示できます。
シミュレーション実行中に、タスク実行者がタスクシーケンスを受け取ると:
- 新しいタスクシーケンスが、タスク実行者のタスクシーケンスキューに追加されます。
- タスク実行者が現在アクティブなタスクシーケンスを持っていない場合、キューからタスクシーケンスを選択します。通常、タスク実行者は受け取った順序でタスクシーケンスを完了します。つまり、FIFOロジック(先入れ先出し)を使用してタスクを実行します。ただし、優先度の異なるタスクシーケンスを使用すると、タスク実行者は代わりに優先度に従ってタスクシーケンスを完了します。
- 選択したタスクシーケンスがアクティブなタスクシーケンスになります。
- タスク実行者は、タスクシーケンスに追加された順序でタスクシーケンス内のタスクを通常は中断せずに完了します。
- アクティブなタスクシーケンスの完了後、タスク実行者はキューから別のタスクシーケンスを選択し、プロセスはそれ自体を繰り返します。
ディスパッチャーとタスク実行者の比較
ディスパッチャーオブジェクトは、アクティブなタスクシーケンスがないことを除いて、タスク実行者と同様です。タスクシーケンスキューのみがあります。これにより、ディスパッチャークラスと、TaskExecuterおよびそのサブクラスが区別されます。
タスク実行者イベントとトリガー
タスク実行者には、タスクの作業中に実行する特定の一連のイベントとトリガーがあります(イベントとトリガーの情報については、「イベントについての主要な概念」を参照してください)。重要なイベントのいくつかは次のとおりです。
トリガー | 説明 |
---|---|
On Start Task | タスク実行者がタスクの実行を開始したときに起動。 |
On Finish Task | タスク実行者がタスクの実行を終了したときに起動。 |
On Resource Available | タスク実行者がタスクシーケンスを終了して別のタスクシーケンスを実行する準備が整ったときに起動。 |
On Load | タスク実行者がロードタスクの一部としてアイテムをロードしたときに起動。 |
On Unload | タスク実行者がアンロードタスクの一部としてアイテムをアンロードしたときに起動。 |
これらのトリガーのいずれかが起動したときに開始するように、カスタムアニメーションまたは処理フローアクティビティを設定できます。また、トリガーを使用して、タスク実行者が[On Resource Available]トリガーの起動時にグローバルリストからタスクシーケンスをプルするような作業検索システムを設計することもできます。利用可能なイベントとタスク実行者のためのトリガーのより詳細な説明については、「タスク実行者の概念 - イベント」を参照してください。