タスク3.1 - サブフローと配列を使用する
タスクの概要
このチュートリアルタスクでは、オペレーターが一度に複数のアイテムを輸送する単純な3Dモデルを構築します。作業が完了すると、シミュレーションモデルは次の画像のように動作します。
この種のロジックを作成するには、配列とサブフローという2つの重要な概念について学ぶ必要があります。次のセクションでは、これらの概念を簡単に紹介し、詳細について他の関連資料にリンクします。
ラベルでの配列の使用方法
FlexSimでは、配列という用語は、必要に応じて複数の値を含むことができるデータ構造を指します。その配列の各要素は通常、インデックスによって識別されます。インデックスは、配列内の値の位置を示す番号です。
この3Dモデルでは、値の配列を含むラベルを使用します。オペレーターが輸送のためにアイテムをピックアップする準備ができているとき、処理フローの[リストからプル]アクティビティはリストから2~5つのフローアイテムをプルします(それぞれが輸送する必要があるアイテムを表します)。これらのフローアイテムへの参照は、値の配列を含む[GroupOfItems]というラベルに格納されます。各フローアイテムの参照には、1から始まる一意のインデックスが割り当てられます。各インデックスは、フローアイテムがリストからプルされた順序に基づいて割り当てられます。
次の画像は、GroupOfItems配列に含めることができる内容の例を示しています。
この例では、GroupOfItems配列に5つのフローアイテムへの参照が含まれています。この例では、[リストからプル]アクティビティが一度にリストから最大5つの項目をプルするため、配列には1~5つのインデックスがあります。各インデックスには特定の値があります。この場合、これは3Dモデル内の一意のフローアイテムへの参照です。
配列内のいずれかのフローアイテムを参照したい場合は、その特定のインデックスを使用する必要があります。そのインデックスを呼び出すと、現在の値が返されます。前の画像の例を使用すると、FlexScript式「token.GroupOfItems[2]
」は、3DモデルのBox11という名前のフローアイテムへの参照を返します。「token.GroupOfItems[4]
」という式は、3DモデルのBox17という名前のフローアイテムへの参照を返します。
配列を扱うときに便利なもう1つのFlexScript式に、「.length
」があります。この式は、特定の配列に含まれる要素の数を示す値を返します。前の画像の例を続けると、この配列には5つの要素があるため、FlexScript式「token.GroupOfItems.length
」は値5を返します。
サブフローの使用方法
サブ処理フロー(通常、略してサブフローと呼ばれる)は、処理フロー内の別のアクティビティまたはイベントによってトリガーされ実行を開始する、個別の処理フローまたは一連のアクティビティです。サブフローは、シミュレーションモデルまたは一般的な処理フローの特定のイベントによってトリガーされたときに実行される、自己完結型ロジックをまとめたものです。
サブフローは、処理フロー全体にわたり、処理フローアクティビティの特定のブロックを複数の場所で繰り返し作成する必要性を減らすことができます。つまり、冗長性を減らし、より効率的で整理された処理フローを作成できます。
この最初のチュートリアルタスクでは、フローアイテムをロードおよびアンロードするためのサブフローを作成します。オペレーターは一度に複数のフローアイテムをロードおよびアンロードするので、サブフローを作成してロードおよびアンロードロジックを処理するようにします。各フローアイテムのロードおよびアンロードを処理するために、アクティビティの長い文字列を作成する必要はなく、フローアイテムごとに独自のサブフローを実行できます。ロード処理とアンロード処理用に、それぞれ1つの単純なアクティビティブロックを作成するだけです。サブフローに関する主要な概念の詳細については、「サブ処理フロー」を参照してください。
ステップ1 3Dモデルを構築する
このステップでは、このチュートリアルの基本的な3Dモデルを構築します。ロード用とアンロード用の2つの平面を追加します。輸送タスクを処理するために、これら2つの平面と1人のオペレーターにさまざまな3Dオブジェクトを追加します。最後の数ステップで、いくつかの3Dオブジェクトグループも作成します。
作業が終了すると、モデルは次の画像のようになります。
このモデルを構築するには:
- 3Dモデルウィンドウが開いていてアクティブであることを確認します。ライブラリから、2つの[平面]([ビジュアル]で)をモデルにドラッグします。
- 最初の[平面]をクリックして選択します。[クイックプロパティ]で、名前を「ロード」に変更します。
- [カラーセレクター]をクリックして開き、薄い赤色を選択します。
- [Xサイズ] を「
7.00
」に、[Yサイズ]を「7.00
」に変更します。 - 2番目の[平面]をクリックして選択します。[クイックプロパティ]で、「Destination1」と名前を変更します。
- [カラーセレクター]をクリックして開き、薄いオレンジ色を選択してください。
- [Xサイズ] を「
13.00
」に、[Yサイズ]を「7.00
」に変更します。 - ライブラリから、次の3Dオブジェクトをモデルにドラッグして、それらを[ロード]平面に配置します。
- 1つのソース
- 1つのキュー
- 次のようにオブジェクトの名前を変更します。
- ライブラリから、次の3Dオブジェクトをモデルにドラッグし、[Destination1]平面に配置します。
- 1つのキュー
- 1つのプロセッサ
- 1つのシンク
- 次のオブジェクト間でポート接続(A接続)を作成します。
- [MainSource]から[MainQueue]へ
- Queue1からProcessor1
- Processor1からSink1
- ライブラリから、[オペレーター]をモデルにドラッグし、2つの平面の間に配置します。
- [Operator1]を右クリックしてメニューを開きます。[オブジェクトグループ]をポイントし、[新しいグループに追加]を選択して[新しいグループ]プロパティウィンドウを開きます。
- ウィンドウの上部にある名前ボックスで、グループの名前を「オペレーター」に変更します。ウィンドウを閉じます。
- [Queue1]を右クリックしてメニューを開きます。[オブジェクトグループ]をポイントし、[新しいグループに追加]を選択して[新しいグループ]プロパティウィンドウを開きます。
- ウィンドウ上部の[名前]ボックスで、グループの名前を[目的地]に変更し、ウィンドウを閉じます。
- [ソース]をクリックして、右側でそのプロパティを表示します。[ソース]セクションで、[時刻0に到着]ボックスをオンにします。
- [到着時間間隔]ボックスに「
5
」と入力します。
オブジェクト | 新しい名前 |
---|---|
Source1 | MainSource |
Queue1 | MainQueue |
モデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ2 処理フローにアクティビティを追加する
このステップでは、アクティビティと共有アセットを処理フローに追加します。これらのアクティビティは、最終的に3Dモデルの輸送ロジックをコントロールします。作業が完了すると、処理フローは次の画像のようになります。
現時点では、これらのアクティビティの追加と処理フローへの接続のみを行います。後のステップで、プロパティを編集してロジックを追加します。
これらのアクティビティを追加して接続するには:
- メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。新しい処理フローを作成するには、[一般的な処理フローを追加]を選択します。
- 処理フローをアクティブにした状態で、[プロパティ]で処理フローの名前を「TransportTasks」に変更します。
- 5つの[コンテナ]形状([表示]の下)を処理フローに追加します。
- 形状の名前を次のように変更します。
- 共有アセット
- MainQueueがアイテムをリストにプッシュ
- オペレーターのタスク
- ロードのサブフロー
- アンロードのサブフロー
- [プロパティ]で、カラーセレクターを使用して[ロードのサブフロー]形状の色を赤に変更します。
- 前のステップを繰り返して、[ロードのサブフロー]図形の色をオレンジ色に変更します。
- [共有アセット]図形で、以下の共有アセットを追加します。
- 1つのリスト
- 1つのリソース
- 共有アセットの名前を次のように変更します。
- [MainQueueがアイテムをリストにプッシュ]図形で、次のアクティビティを追加してスタックブロックを作成します。
- 1つの[イベントトリガーソース]([トークンの作成]の下)
- 1つの[リストにプッシュ]([共有アセット]の下)
- 1つの[シンク]([ベーシック]の下)
- アクティビティの名前を次のように変更します。
- [オペレーターのタスク]図形で、次のアクティビティを追加してスタックブロックを作成します。
- 1つの[スケジュールソース]([トークン作成]の下)
- 1つの[リソースを取得]([共有アセット]の下)
- 1つの[ラベルを割り当てる]([ベーシック]の下)
- [オペレーターのタスク]図形で、次のアクティビティを追加して別のスタックブロックを作成します。
- 1つの[移動]([タスクシーケンス]の下)
- 1つの[リストからのプル]([共有アセット]の下)
- 2つの[サブフローを実行]アクティビティ([サブフロー]の下)
- アクティビティの名前を次のように変更します。
- [ロードのサブフロー]図形で、次のアクティビティを追加して別のスタックブロックを作成します。
- 1つの[開始]([サブフロー]の下)
- 1つの[ロード]([タスクシーケンス]の下)
- 1つの[終了]([サブフロー]の下)
- アクティビティの名前を次のように変更します。
- [アンロードのサブフロー]図形で、次のアクティビティを追加して別のスタックブロックを作成します。
- 1つの[開始]([サブフロー]の下)
- 1つの[ラベルを割り当てる]([ベーシック]の下)
- 1つの[アンロード]([タスクシーケンス]の下)
- 1つの[終了]([サブフロー]の下)
- アクティビティの名前を次のように変更します。
- 次のアクティビティ間でコネクターを作成します。
- [ラベルを割り当て:MainQueue]から[MainQueueに移動]まで
- [サブフローを実行:アンロード]から[MainQueueに移動]までループバック
- [サブフローを実行:ロード]アクティビティを右クリックしメニューを開きます。[アクティビティビジュアルを編集]を選択してプロパティウィンドウを開きます。
- [背景色]セレクターを開き、[明るい赤色]を選択します。
- この処理を繰り返して、[ロードのサブフロー]図形のすべてのアクティビティの色を明るい赤色に変更します。
- [サブフローを実行:アンロード]アクティビティを右クリックしメニューを開きます。[アクティビティビジュアルを編集]を選択してプロパティウィンドウを開きます。
- [背景色]セレクターを開き、明るいオレンジ色を選択します。
- この処理を繰り返して、[アンロードのサブフロー]図形のすべてのアクティビティの色を明るいオレンジ色に変更します。
共有アセット | 新しい名前 |
---|---|
リスト | リスト:ItemsToTransport |
リソース | リソース:演算子 |
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:アイテムがMainQueueに入る |
リストにプッシュ | リストにプッシュ:ItemsToTransport |
シンク | シンク:アイテムがプッシュ済み |
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:オペレーターのトークンを作成 |
取得 | オペレーターを取得 |
ラベルを割り当て | ラベルを割り当て:MainQueue |
移動 | MainQueueへの移動 |
リストからプル | リストからプル:ItemsToTransport |
サブフローを実行(1番目) | サブフローを実行:ロード中 |
サブフローを実行(2番目) | サブフローを実行:アンロード中 |
アクティビティ | 新しい名前 |
---|---|
開始 | ロードのサブフローを開始 |
ロード | MainQueueでアイテムをロード |
終了 | ロードのサブフローを終了 |
アクティビティ | 新しい名前 |
---|---|
開始 | アンロードのサブフローを開始 |
ラベルを割り当て | ラベルを割り当て:目的地 |
アンロード | 目的地でアイテムをアンロード |
終了 | アンロードのサブフローを終了 |
処理フローがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ3 リストにプッシュロジックを作成する
このステップでは、[MainQueueのアクティビティのプロパティがタスクをリストへプッシュ]図形のアクティビティのプロパティを編集します。つまり、フローアイテムがキューに入ると、フローアイテムはリストにプッシュされ、輸送されるまでそこで待機します。
各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
リスト:輸送するアイテム | このリストには、目的地キューに移動する準備ができているMainQueue内のすべてのフローアイテムへの参照が格納されます。ここではデフォルト設定を使用します。 |
リソース:演算子 | この共有アクティビティを3Dモデルの[オペレーター]グループにリンクします。これにより、このグループで、輸送タスク向けのオペレーターを取得できます。 |
ソース:アイテムがMainQueueに入る | [イベントトリガーソース]は、3Dモデルでイベントをリッスンするイベントリスニングアクティビティです。フローアイテムがQueue3に入ると、このアクティビティはトークンを作成し、これを次の下流アクティビティにリリースします。このトークンに、イベントをトリガーする特定のフローアイテムへの参照を含む、[FlowItem]という名前のラベルを割り当てます。 |
リストにプッシュ:輸送するアイテム | このアクティビティは、キューにあるすべてのフローアイテムを[輸送するアイテム]リストにプッシュします。アイテムがリストにプッシュされると、[FlowItem]ラベルを使用して特定のフローアイテムへの参照が保持されます。 |
シンク:アイテムがプッシュ済み | このアクティビティは、処理フローからトークンを削除します。デフォルト設定を使用します。 |
この機能を作成するには:
- [リソース:オペレーター]共有アセットをクリックし、選択します。[プロパティ]で、[参照]ボックスの横にある矢印をクリックして、メニューを開きます。[グループ]をポイントして、[オペレーター]を選択します。
- [ソース:アイテムがMainQueueに入る]アクティビティをクリックして選択します。[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで、[MainQueue]をクリックしてメニューを開きます。[MainQueue:エントリ時]を選択します。
- [プロパティ]の[ラベルの割り当て]テーブルで、[ラベル名]列の下の[入るアイテム]行にあるセルをクリックします。「FlowItem」と入力します。
- [オペレーション]の[入るアイテム]行にあるセルをクリックしてメニューを開きます。[割り当てる]を選択します。
- [リストにプッシュ:輸送するアイテム]アクティビティをクリックして選択します。[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [リスト:輸送するアイテム]共有アセットをクリックして選択します。このアクティビティと共有アセットが青い線でリンクされます。
- [プロパティ]で[プッシュ値]ボックスの横にある矢印をクリックして、メニューを開きます。[Token Label]をポイントし、次に[FlowItem]を選択します。
シミュレーションモデルを保存することをおすすめします。
ステップ4 オペレーターのタスクロジックを追加する
各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
ソース:オペレーターのトークンを作成 | シミュレーションが開始すると、このアクティビティは[オペレーター]グループの各オペレーターにトークンを作成します。このアクティビティを設定し、このチュートリアルステップで設定するNumberOfOperators処理フロー変数を参照します。このアクティビティは、シミュレーションの開始時にグループ内のオペレーターの数を参照して、作成するトークンの数を決定します。 |
オペレーターを取得 | このアクティビティは、輸送タスクを処理するためのリソース(オペレーターの1つ)を取得しようとします。オペレーターがタスクで作業できない場合、トークンはオペレーターが使用可能になるまでこのアクティビティで待機します。オペレーターがタスクで作業ができる場合は、トークンがリソースを取得し、そのトークンを次の下流オブジェクトにリリースします。リソースが取得されると、トークンに、取得した特定のオペレーターへの参照を含む[Operator]という名前のラベルを割り当てます。 |
ラベルを割り当て:MainQueue | このアクティビティは、3DモデルのMainQueueオブジェクトへの参照を含む[MainQueue]というラベルを作成します。 |
MainQueueへの移動 | このアクティビティは、オペレーターにMainQueueへ移動するように指示します。[ラベルを割り当て]アクティビティで作成した[MainQueue]ラベルを使用します。 |
この機能を作成するには:
- 処理フローの空白スペースをクリックして、何も選択されていないことを確認します。[クイックプロパティ]で[その他のプロパティ]ボタンをクリックします。
- [変数]タブで[追加]ボタン をクリックして新しい変数を作成します。
- [名前]ボックスで、変数の名前を「NumberOfOperators」に変更します。
- [タイプ]メニューが[数]に設定されていることを確認します。
- [デフォルト値]ボックスで、現在の値を削除し、「
Group("Operators").length
」と入力します。 - [OK]ボタンをクリックしてウィンドウを閉じ、変更を保存します。
- [ソース:オペレーターのトークンを作成]アクティビティをクリックして選択します。[プロパティ]の[到着]テーブルで、[量]列の下のセルをクリックします。そのセルを選択した状態で、[到着1:量]ボックスの横にある矢印をクリックしてメニューを開きます。[処理フロー変数]をポイントし、[NumberOfOperators]を選択します。
- [オペレーターを取得]アクティビティをクリックして選択します。アクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [リソース:オペレーター]共有アセットをクリックし、選択します。このアクティビティと共有アセットが青い線でリンクされます。
- [ラベルに割り当てる]ボックスで、現在のテキストを削除して「
token.Operator
」と入力します。 - [ラベルを割り当て:MainQueue]をクリックして選択します。[プロパティ]で、[追加]ボタンをクリックして新しいラベルを追加します。
- [名前]ボックスに、「
MainQueue
」と入力します。 - [値]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで[MainQueue]をクリックしてメニューを開きます。[ロード/MainQueue]を選択します。
- [MainQueueに移動]アクティビティをクリックして選択します。[プロパティ]で、[実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントしてから、[オペレーター]を選択します。
- [目的地]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントしてから[MainQueue]を選択します。
シミュレーションモデルを保存することをおすすめします。
ステップ5 ロードのサブフローを設定する
このステップでは、オペレーターのロードロジックを設定します。リストから一定数のアイテムをプルしてから、MainQueueでその数のアイテムをロードするようにオペレーターに指示します。これをすべて行うには、配列とアイテムのロード専用のサブフローを使用します。
各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
リストからプル:ItemsToTransport | このアクティビティは、[輸送するアイテム]リストから最大5つのフローアイテムをプルします。トークンに[GroupofItems]というラベルを割り当てます。このラベルには、リストからプルされた各フローアイテムへの参照を伴う配列が含まれます。 |
サブフローを実行:ロード中 | このアクティビティは子トークンを作成し、それらをロードのサブフローに送信します。このアクティビティのロジックを設定して、前のアクティビティのリストからプルされた各アイテムの子トークンを作成します。また[MyItem]と呼ばれる子トークンのラベルに、個別フローアイテムごとの参照を付けます。 |
ロードのサブフローを開始 | すべてのサブフローは[開始]アクティビティで始まる必要があります。[サブフローを実行]アクティビティが子トークンをサブフローに送信すると、常にそれらがこのアクティビティに送信されます。このアクティビティにはデフォルト設定を使用します。 |
MainQueueでアイテムをロード | 各子トークンがこのアクティビティに到達すると、どのフローアイテムをロードし、どの場所からそれらをロードするかをオペレーターに指示します。このタスクを実行すべきオペレーターを示す[オペレーター]ラベルを使用し、MainQueueからどのアイテムをロードするべきかをオペレーターに指示する各子トークンの[MyItem]ラベルを使用します。 |
ロードのサブフローを終了 | すべてのサブフローは[終了]アクティビティで終了する必要があります。[サブフローを実行]アクティビティの親トークンは、そのすべての子トークンが[終了]アクティビティに到達するまで、そのアクティビティで待機します。このアクティビティにはデフォルト設定を使用します。 |
この機能を作成するには:
- [リストからプル:ItemsToTransport]アクティビティをクリックして選択します。アクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [リスト:ItemsToTransport]共有アセットをクリックし選択します。このアクティビティと共有アセットが青い線でリンクされます。
- [要求番号]ボックスに「
5.00
」と入力します。 - [要求番号]ボックスに「
2.00
」と入力します。 - [割り当て先]オプションが選択されていることを確認します。このオプションの下のボックスに「
token.GroupOfItems
」と入力します。 - [サブフローを実行:ロード]アクティビティをクリックして選択します。アクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [ロードのサブフロー]図形で、[ロードのサブフローを開始]アクティビティをクリックしてサンプリングします。
- [プロパティ]で、[量]ボックスの横にある矢印をクリックしてメニューを開きます。[ピックリストオプション]ウィンドウを開くには、[配列サイズ]を選択します。
- [ピックリストオプション]ウィンドウで、[配列]ボックスの横にある矢印をクリックしてメニューを開きます。[ラベル]をポイントして[token.GroupOfItems]を選択します。[ピックリストオプション]の外側をクリックすると、正しい式が自動的に生成されます。
- [追加]ボタン をクリックしてラベルを追加します。
- [名前]ボックスに、「
MyItem
」と入力します。 - [値]ボックスの横にある矢印をクリックして、メニューを開きます。[配列]をポイントし、[ラベル配列からの値]を選択して[ピックリストオプション]ウィンドウを開きます。
- [ピックリストオプション]ウィンドウで、[ラベル]ボックスの横にある矢印をクリックしてメニューを開きます。[GroupOfItems]を選択します。
- [インデックス]ボックスの横にある矢印をクリックしてメニューを開きます。[creationRank]を選択します。[ピックリストオプション]の外側をクリックすると、正しい式が自動的に生成されます。
- [ロードのサブフロー]図形で、[MainQueueでアイテムをロード]アクティビティをクリックして選択します。[クイックプロパティ]で、[実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントしてから、[オペレーター]を選択します。
- [アイテム]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[MyItem]を選択します。
シミュレーションモデルを保存することをおすすめします。
ステップ6 アンロードのサブフローを設定する
このステップでは、オペレーターのアンロードロジックを設定します。アンロードのサブフローはロードのサブフローと同様に動作しますが、オペレーターが指定された目的地でアイテムをアンロードする点が異なります。
各アクティビティと共有アセットの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
サブフローを実行:アンロード中 | このアクティビティは子トークンを作成し、それらをアンロードのサブフローに送信します。このアクティビティの設定は、[サブフローを実行:ロード]アクティビティと同じです。このアクティビティは、前のアクティビティのリストからプルされた各アイテムの子トークンを作成します。また、子トークンの[MyItem]というトークンのラベルに、個別フローアイテムごとの参照を付加します。 |
アンロードのサブフローを開始 | すべてのサブフローは[開始]アクティビティで始まる必要があります。[サブフローを実行]アクティビティが子トークンをサブフローに送信すると、常にそれらがこのアクティビティに送信されます。このアクティビティにはデフォルト設定を使用します。 |
ラベルを割り当て:目的地 | このアクティビティは、その目的地を設定する子トークンにラベルを作成します。ここでは、3Dモデルで[Queue1]をサンプリングして、それをすべてのトークンの目的地として設定します。 |
目的地でアイテムをアンロード | 各子トークンがこのアクティビティに到達すると、どのフローアイテムをアンロードするか、およびそれらをどの場所からロードするかをオペレーターに指示します。このタスクを実行すべきオペレーターを示す[オペレーター]ラベルを使用し、MainQueueからどのアイテムをロードするべきかをオペレーターに指示する各子トークンの[MyItem]ラベルを使用します。前のアクティビティで設定した[目的地]ラベルは、3Dモデルの[Queue1]でアイテムをアンロードするようにオペレーターに指示します。 |
アンロードのサブフローを終了 | すべてのサブフローは[終了]アクティビティで終了する必要があります。[サブフローを実行]アクティビティの親トークンは、そのすべての子トークンが[終了]アクティビティに到達するまで、そのアクティビティで待機します。このアクティビティにはデフォルト設定を使用します。 |
この機能を作成するには:
- [サブフローを実行:アンロード]アクティビティをクリックして選択します。アクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- [アンロードのサブフロー]図形で、[アンロードのサブフローを開始]アクティビティをクリックしてサンプリングします。
- [プロパティ]で、[量]ボックスの横にある矢印をクリックしてメニューを開きます。[ピックリストオプション]ウィンドウを開くには、[配列サイズ]を選択します。
- [ピックリストオプション]ウィンドウで、[配列]ボックスの横にある矢印をクリックしてメニューを開きます。[ラベル]をポイントして[token.GroupOfItems]を選択します。[ピックリストオプション]の外側をクリックすると、正しい式が自動的に生成されます。
- [追加]ボタン をクリックしてラベルを追加します。
- [名前]ボックスに、「
MyItem
」と入力します。 - [値]ボックスの横にある矢印をクリックして、メニューを開きます。[配列]をポイントし、[ラベル配列からの値]を選択して[ピックリストオプション]ウィンドウを開きます。
- [ピックリストオプション]ウィンドウで、[ラベル]ボックスの横にある矢印をクリックしてメニューを開きます。[GroupOfItems]を選択します。
- [インデックス]ボックスの横にある矢印をクリックしてメニューを開きます。[creationRank]を選択します。[ピックリストオプション]の外側をクリックすると、正しい式が自動的に生成されます。
- [ラベルを割り当て:目的地]アクティビティをクリックして選択します。[プロパティ]で、[追加]ボタンをクリックしてラベルを追加します。
- [名前]ボックスに、「
Destination
」と入力します。 - [値]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで[Queue1]をクリックして、メニューを開きます。サンプリングするには、[Destination1/Queue1]を選択します。
- [アンロードのサブフロー]図形で、[目的地でアイテムをアンロード]アクティビティをクリックして選択します。[クイックプロパティ]で、[実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントしてから、[オペレーター]を選択します。
- [アイテム]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[MyItem]を選択します。
- [ステーション]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントして、[目的地]を選択します。
シミュレーションモデルを保存することをおすすめします。
ステップ7 モデルを実行する
モデルをリセットして実行します。
ご覧のとおり、オペレーターはMainQueueで複数のアイテムをロードし、[Queue1]でそれらすべてをアンロードします。必要に応じて、2つのキュー間の距離を広げて、それがオペレーターの効率にどのように影響するかを確認できます。
結論
このチュートリアルのタスクでは、リストを使用してタスクをオペレーターに割り当てる方法と、配列とサブフローが処理される方法について簡単に紹介しました。次のチュートリアルでは、目的地を追加する際にモデルになんらかの複雑さを追加する方法を学びます。モデル内の特定のさまざまな条件や制約に基づいて、オペレーターがフローアイテムをアンロードする場所を変更するロジックを構築します。「チュートリアルタスク3.2 - 条件付きタスクを追加する」に進みます。