ディスパッチャー
概要と主要な概念
ディスパッチャーはトランスポーターまたはオペレーターのグループをコントロールするために使用されます。タスクシーケンスはオブジェクトからディスパッチャーに送信され、ディスパッチャーは出力ポートに接続された輸送またはオペレーターにそのタスクシーケンスを委譲します。タスクシーケンスは、最終的にリクエストを受信するモバイルリソースによって実行されます。
ディスパッチャーオブジェクトは、タスクシーケンスのキューイングおよびルーティングロジックを実行します。モデラーのロジックに応じて、タスクシーケンスはキューに入れられるか、ディスパッチャーに渡された直後にディスパッチされます。
ポート
タスク実行者のチームを関連付けるには、入力ポートと出力ポートを使用します。ディスパッチャーの出力ポートをタスク実行者の入力ポートに接続すると、そのタスク実行者はディスパッチャーの「チーム」のメンバーになります。ディスパッチャーはタスクシーケンスを受信すると、ユーザーが定義したロジックに応じて、出力ポートに接続されているいずれかのタスク実行者にそのタスクシーケンスをディスパッチします。
ディスパッチロジック
ディスパッチャーはTaskSequence.dispatch()メソッドによってトリガーされたタスクシーケンスを受信すると、まずそのパス先関数を呼び出します。この関数はタスクシーケンスを渡すポート番号を返します。ディスパッチャーはその後すぐにそのポートに接続されているオブジェクトにタスクシーケンスを渡します。この関数がポート番号ではなく0を返した場合、タスクはディスパッチャーのタスクシーケンスキューに入れられます。これは、タスクシーケンスのキュー方法関数を呼び出すことによって行われます。このキュー方法は、タスクシーケンスに関連付けられている値を返し、キュー内のタスクシーケンスを並べ替える優先度を表します。優先度の高い値はキューの前方に移動し、低い値は後方に移動します。通常は、タスクシーケンスの優先度値を返すだけですが、キュー方法関数では、必要に応じてタスクシーケンスの優先度を動的に変更できます。ディスパッチャーは、キュー内のタスクシーケンスを順序付けるときに、実際にはキュー方法関数をキュー内のタスクシーケンスごとに1回ずつ複数回呼び出し、各優先度値を取得して新しいタスクシーケンスの優先度値と比較します。タスクシーケンスを配置する適切な場所を見つけたら、それに応じて新しいタスクシーケンスをランク付けします。
ディスパッチャーはすべてのタスク実行者のスーパークラスです。言い換えると、すべてのタスク実行者はディスパッチャーでもあります。つまり、オペレーターまたはトランスポーターは、タスクシーケンスを自分で実行するだけでなく、ディスパッチャーまたはチームリーダーとしてチームのその他のメンバーにタスクシーケンスを渡すこともできます。
イベント
ディスパッチャーはすべてのタスク実行者に共通の標準イベントをいくつか使用します。これらには次のものが含まれます。
- On Receive Task Sequence
- On Resource Available
- Pass To
- Queue Strategy
- On Draw
- On Reset
- On Message
- On Stop
- On Resume
Pass To
この関数はディスパッチャーがタスクシーケンスを受信すると起動します。
次のパラメータがあります。
イベントパラメータ | タイプ | 説明 |
---|---|---|
Task Sequence | ツリーノード | ディスパッチャーによって受信されたタスクシーケンス。 |
[パス先]フィールドの戻り値は、ディスパッチャーがタスクシーケンスを渡す出力ポートである必要があります。0が返された場合、タスクシーケンスは、使用可能なディスパッチャーまたはタスク実行者にタスクシーケンスを渡せるようになるまで、定義されたキュー方法に従って自動でキューに入れられます。0より大きい値が返された場合、タスクシーケンスは返されたポート番号にすぐに送信されます。-1の値が返された場合、ディスパッチャーは何も行わず、TaskSequence.move()メソッドとTaskSequence.dispatch()メソッドを使用するパス先関数内のディスパッチロジックがすべて完了したと想定します。
これらのイベントの説明については、「タスク実行者の概念 - イベント」を参照してください。
状態
ディスパッチャーはどの状態も実装していません。
統計
ディスパッチャーは統計を追跡しません。
プロパティパネル
ディスパッチャーオブジェクトでは、次のプロパティパネルを使用します。
プロパティ
ディスパッチャーオブジェクトは、次のプロパティを使用します。
プロパティ | タイプ |
---|---|
PassTo | 数字 |
QueueStrategy | 数字 |