タスクを構築するツールと方法
ツールと方法の概要
一般に、タスクを作成し、それらをタスク実行者に割り当てるための2つの基本的なツールがあります。
- 標準3Dオブジェクトロジック - 3D固定リソースの多くは、基本的なロードタスクやアンロードタスク、処理中にオペレーターの立会いを要求するなど、単純なタスクをタスク実行者に割り当てるために使用できるプロパティと基本ロジックを備えています。標準ロジックを使用するには、通常、ポート接続またはディスパッチャーオブジェクトを使用してタスク実行者を固定リソースに接続する必要があります。
- 処理フロー共有アセット - 処理フローでタスクシーケンスを設計することもできます。リソースやリストなどの共有アセットを使用して、特定のタスクに対するタスク実行者の割り当てを処理できます。
各方法には、それぞれ利点と欠点があります。これらについては、このトピックで詳しく説明します。タスクを構築するためのさまざまなツールや方法の使用について詳細な実践的ガイドが必要な場合は、タスクロジックチュートリアル1 - タスクロジックツールの実行もおすすめします。
標準ロジックを使用してタスクを作成する
標準ロジックの使用とは、ポート接続と3Dオブジェクトのプロパティを使用してタスクを作成し、タスク実行者に割り当てることを意味します。
たとえば、最も基本的なタスクは、タスク実行者を割り当てて1つの固定リソースから別の固定リソースにフローアイテムを輸送することです。このロジックを作成するには:
- 入出力ポート接続(A接続)を使用して2つの固定リソースを接続します。
- センターポート接続(S接続)を使用して、上流の固定リソースをタスク実行者に接続します。
- 上流の固定リソースをダブルクリックして、プロパティウィンドウを開きます。[フロー]タブで、[輸送を使用]チェックボックスをオンにします。
- このチェックボックスの横にあるボックスに、式
current.centerObjects[1]
を使用して、どのタスク実行者がこのタスクを実行するかを指定します。
式current.centerObjects[1]
は3つの部分から成ります。最初のcurrent
の部分は、現在の3Dオブジェクト(現在プロパティを編集しているオブジェクト)に接続されているものを使用することを意味します。後半のcenterObjects
は、センターポートを介して接続されているものを使用することを意味します。最後の[1]
の部分は、最初のセンターポートを介して接続されているタスク実行者を使用するように指示しています。
シミュレーションモデルで複数のタスク実行者を使用する場合は、通常、それらをディスパッチャーに接続する必要があります。ディスパッチャーは可用性やその他の要因に基づいて、タスク実行者にタスクを割り当てる処理を行います。
処理フロー内のリソースを使用してタスクを作成する
タスクを作成するための1つの方法は、リソース(処理フローの一種の共有アセット)を使用することです。
この種のシステムでは、処理フローを移動するトークンは通常、完了する必要があるタスクを表します。次にトークンは、3Dモデル内のタスク実行者またはタスク実行者のグループにリンクされているリソースを取得します。取得されたタスク実行者はその後タスクを完了し、タスクが完了するとリリースされます。
処理フロー内のリストを使用してタスクを作成する
タスクを作成するもう1つの方法は、リスト(処理フローのもう一種の共有アセット)を使用することです。
この種のシステムでは、1セットのトークンが処理フローを通過して、完了する必要があるタスクをリストにプッシュします。次に、モデル内の各タスク実行者を表す別のトークンのセットもあります。タスク実行者に関連付けられているトークンは、リストからタスクをプルして、それらのタスクを完了します。これらのタスクを完了した後、タスク実行者を表すトークンは処理フローをループして、リストからさらにタスクをプルできます。
ツールや方法を決定する
シミュレーションモデルの計画段階にあり、タスクロジックの設計に着手している場合、次の質問について考えてみることをおすすめします。
- タスクはどのように生成されますか?たとえば、固定リソースはタスクを生成しますか?固定リソースはタスクをリストにプッシュしますか?処理フロー内のイベントトリガーソースはタスクを生成しますか?
- タスクはどのようにタスク実行者に割り当てられますか?特定のタスクが他のタスクよりも優先されますか?FIFOロジック(先入れ先出し)以外のロジックを使用してタスク実行者にタスクを割り当てる必要はありますか。
- 一部のタスクの詳細は、シミュレーションモデルの条件の変化に基づいて変更する必要がありますか?たとえば、ロードアクティビティの目的地は、タスクがタスク実行者に割り当てられる時点で動的に決定される必要がありますか?
- タスク実行者は、タスクを完了するために協力する必要がありますか?これらは通常、協調タスクと呼ばれます。詳細については、「協調タスク」を参照してください。
- タスクを実行している間、タスク実行者をプリエンプトすることが必要になる場合がありますか?
- カスタムタスクを作成する必要がありますか?
シミュレーションモデルでタスクを作成して割り当てるために使用する方法は、シミュレーションプロジェクト固有のニーズとこれらの質問への回答に応じて大きく異なります。より複雑なタスクロジックを作成する予定の場合は、おそらく標準の3Dロジックではなく処理フローツールの使用を検討する必要があるでしょう。
このことを念頭に置いて、次のテーブルに、タスクを構築するためのさまざまなツールと方法の利点と欠点の概要を示します。
方法 | 利点 | 欠点 |
---|---|---|
標準の3Dロジック |
|
|
処理フロー内のリソース |
|
|
処理フロー内のリスト |
|
|
シミュレーションプロジェクトで1つの方法がうまくいかない場合、別のツールや方法にいつでも切り替えられることを忘れないでください。繰り返しますが、タスクロジックチュートリアル1 - タスクロジックツールを完了すると、タスクを構築するためのさまざまなツールや方法についてより深く理解できるようになります。シミュレーションプロジェクトに最適なアプローチが見つかるまで、実験を恐れないでください。