ディスパッチャー

概要と主要な概念

ディスパッチャーはトランスポーターまたはオペレーターのグループをコントロールするために使用されます。タスクシーケンスはオブジェクトからディスパッチャーに送信され、ディスパッチャーは出力ポートに接続された輸送またはオペレーターにそのタスクシーケンスを委譲します。タスクシーケンスは、最終的にリクエストを受信するモバイルリソースによって実行されます。

ディスパッチャーオブジェクトは、タスクシーケンスのキューイングおよびルーティングロジックを実行します。モデラーのロジックに応じて、タスクシーケンスはキューに入れられるか、ディスパッチャーに渡された直後にディスパッチされます。

ポート

タスク実行者のチームを関連付けるには、入力ポートと出力ポートを使用します。ディスパッチャーの出力ポートをタスク実行者の入力ポートに接続すると、そのタスク実行者はディスパッチャーの「チーム」のメンバーになります。ディスパッチャーはタスクシーケンスを受信すると、ユーザーが定義したロジックに応じて、出力ポートに接続されているいずれかのタスク実行者にそのタスクシーケンスをディスパッチします。

ディスパッチロジック

ディスパッチャーはTaskSequence.dispatch()メソッドによってトリガーされたタスクシーケンスを受信すると、まずそのパス先関数を呼び出します。この関数はタスクシーケンスを渡すポート番号を返します。ディスパッチャーはその後すぐにそのポートに接続されているオブジェクトにタスクシーケンスを渡します。この関数がポート番号ではなく0を返した場合、タスクはディスパッチャーのタスクシーケンスキューに入れられます。これは、タスクシーケンスのキュー方法関数を呼び出すことによって行われます。このキュー方法は、タスクシーケンスに関連付けられている値を返し、キュー内のタスクシーケンスを並べ替える優先度を表します。優先度の高い値はキューの前方に移動し、低い値は後方に移動します。通常は、タスクシーケンスの優先度値を返すだけですが、キュー方法関数では、必要に応じてタスクシーケンスの優先度を動的に変更できます。ディスパッチャーは、キュー内のタスクシーケンスを順序付けるときに、実際にはキュー方法関数をキュー内のタスクシーケンスごとに1回ずつ複数回呼び出し、各優先度値を取得して新しいタスクシーケンスの優先度値と比較します。タスクシーケンスを配置する適切な場所を見つけたら、それに応じて新しいタスクシーケンスをランク付けします。

ディスパッチャーはすべてのタスク実行者のスーパークラスです。言い換えると、すべてのタスク実行者はディスパッチャーでもあります。つまり、オペレーターまたはトランスポーターは、タスクシーケンスを自分で実行するだけでなく、ディスパッチャーまたはチームリーダーとしてチームのその他のメンバーにタスクシーケンスを渡すこともできます。

イベント

ディスパッチャーはすべてのタスク実行者に共通の標準イベントをいくつか使用します。これらには次のものが含まれます。

  • 受信タスクシーケンス時
  • リソース利用可能時
  • パス先
  • キュー方法
  • 描画時
  • リセット時
  • メッセージ時
  • 停止時
  • 再開時

パス先

この関数はディスパッチャーがタスクシーケンスを受信すると起動します。

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

イベントパラメータ タイプ 説明
タスクシーケンス ツリーノード ディスパッチャーによって受信されたタスクシーケンス。

[パス先]フィールドの戻り値は、ディスパッチャーがタスクシーケンスを渡す出力ポートである必要があります。0が返された場合、タスクシーケンスは、使用可能なディスパッチャーまたはタスク実行者にタスクシーケンスを渡せるようになるまで、定義されたキュー方法に従って自動でキューに入れられます。0より大きい値が返された場合、タスクシーケンスは返されたポート番号にすぐに送信されます。-1の値が返された場合、ディスパッチャーは何も行わず、TaskSequence.move()メソッドとTaskSequence.dispatch()メソッドを使用するパス先関数内のディスパッチロジックがすべて完了したと想定します。

これらのイベントの説明については、「タスク実行者の概念 - イベント」を参照してください。

状態

ディスパッチャーはどの状態も実装していません。

統計

ディスパッチャーは統計を追跡しません。

プロパティ

ディスパッチャーオブジェクトには、さまざまなプロパティを持つ4つのタブがあります。最後の3つのタブは、すべてのタスク実行者に共通の標準タブです。これらのタブのプロパティの詳細については、以下を参照してください。

[ディスパッチャー]タブのみがディスパッチャーオブジェクトに固有です。このタブのプロパティについては、この先のセクションで詳しく説明します。

パス先

このピックリストは、タスクシーケンスの送付先となる出力ポート番号を返します。0が返された場合、タスクシーケンスは、下に示されているキュー方法を使用してキューに入り、使用可能な最初のモバイルリソースに送付されます。-1が返された場合、ディスパッチャーは何も行いません。そのような場合は、movetasksequence()およびdispatchtasksequence()コマンドを使用して、ディスパッチロジックを自分で実行します。

キュー方法

このピックリストは、オブジェクトのタスクシーケンスキュー内でそれをランク付けするために使用されるタスクシーケンスの「優先度」値を返します。デフォルトでは、作成時にタスクシーケンスに与えられた優先度値を返しますが、ユーザーはこのフィールドでタスクシーケンスの優先度をカスタマイズすることもできます。