タスク1.2 - 処理フローを使用したタスク
タスクの概要
このチュートリアルタスクでは、処理フローのタスクシーケンスを使用したタスク構築方法の基本を全般的に学びます。このチュートリアルでは、以下のような処理フローで作業する際の利点と欠点をいくつか説明します。
- 中間タスクを追加する
- 処理フローロジックと標準ロジックを組み合わせる
一連のさまざまなシミュレーションモデルを構築し、最終的に次の画像に類似したモデルを作成します。
ステップ1 3Dモデルをコピーして変更する
このステップでは、標準ロジックの構築に使用した元のシステムをコピーします。次のステップでは、代わりに処理フローロジックを使用するようにこのシステムを変更します。作業が完了すると、3Dモデルは次の画像のようになります。
平面をコピーするには:
- [Processor1A]をダブルクリックして、そのプロパティウィンドウを開きます。
- [プロセッサ]タブで、[設定時間]を「
0
」に変更します。 - [オペレーターを設定に使用]チェックボックスをオフにします。
- [OK]ボタンをクリックして変更を保存し、ウィンドウを閉じます。
- [StandardLogic]平面をクリックして選択します。
- [Ctrl + C]キーを押して、平面とその上にあるすべてのオブジェクトをコピーします。モデルの空白部分をクリックして、元の平面の選択を解除します。[Ctrl + V]を押して平面を貼り付けます。
- コピーした平面を選択した状態で、[クイックプロパティ]で平面の名前を「BasicProcessFlowLogic」に変更します。
- [色]ボックスの横にある矢印をクリックして、色選択ツールメニューを開きます。オレンジ色の最も淡い色合いを選択します。
- コピーされた平面上の各3Dオブジェクトの名前を、[Sink2]、[Operator2A]、[Processor2A]など、1から2に置き換えて変更します。
- ディスパッチャーからキューまでのセンターポート接続とディスパッチャーからProcessor2Bまでのセンターポート接続を削除します(Wキーを押したまま、2つのオブジェクトをクリックしてドラッグします)。
3Dモデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ2 処理フローを使用したタスクを作成する
このステップでは、一般的な処理フローにアクティビティを追加して、タスクシーケンスアクティビティを使用して輸送タスクロジックを作成する処理フローを構築します。
作業が完了すると、処理フローは次の画像のようになります。
現時点では、これらのアクティビティの追加と処理フローへの接続のみを行います。後のステップで、プロパティを編集して機能を追加します。
これらのアクティビティを追加して接続するには:
- メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。[Add a General Process Flow]を選択します。
- 処理フローの空白をクリックして、何も選択されていない状態にします。[クイックプロパティ]で、処理フローの名前を「TaskSequenceLogic」に変更します。
- 処理フローを開き有効にした状態で、ライブラリから[処理]形状([フローチャート]の下)を追加し、処理フローにドラッグします。
- [クイックプロパティ]で、形状の名前を「ベーシックなタスクシーケンス」に変更します。
- [色]ボックスの横にある矢印をクリックしてオレンジ色に変更します。BasicProcessFlowLogic平面の色と一致するようにオレンジ色を使用します。
- [ベーシックなタスクシーケンス]形状で、次のアクティビティを追加してスタックブロックを作成します。
- 1つの[イベントトリガーソース]([トークンの作成]の下)
- 1つの[タスクシーケンスを作成]([タスクシーケンス]の下)
- 1つの[ロード]([タスクシーケンス]の下)
- 1つの[アンロード]([タスクシーケンス]の下)
- 1つの[タスクシーケンスを終了]([タスクシーケンス]の下)
- 1つの[シンク]([ベーシック]の下)
- アクティビティの名前を次のように変更します。
アクティビティ | 新しい名前 |
---|---|
ソース | ソース:輸送するアイテム |
タスクシーケンスを作成 | ロードアンロードタスクを作成 |
ロード | アイテムをQueue2からロードする |
アンロード | プロセッサのアイテムをアンロード |
シンク | シンク:アイテムの処理完了 |
処理フローがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ3 処理フローロジックを作成する
このステップでは、処理フローのアクティビティのプロパティを編集します。各アクティビティの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
ソース:輸送するアイテム | [イベントトリガーソース]は、3Dモデルでイベントをリッスンするイベントリスニングアクティビティです。Queue2内のアイテムが輸送を見つけると、このアクティビティはトークンを作成し、それを次の下流アクティビティにリリースします。このトークンに、イベントをトリガーした特定のフローアイテムへの参照を含むFlowItemという名前のラベルと、アイテムが移動するプロセッサへの参照にするProcessorという名前のラベルを割り当てます。 |
ロードアンロードタスクを作成 | このアクティビティは、実行する唯一のシーケンスに次のいくつかのタスクアクティビティを定義する新しいタスクシーケンスを作成します。また、taskSequenceという名前のラベルをトークンに設定して、シーケンスに割り当てるタスクを指定します。さらに、タスクシーケンスをディスパッチャーに送信して、その一連のタスクをオペレーターのいずれかに割り当てます。 |
アイテムをQueue2でロードする | このアクティビティは、選択する必要があるフローアイテムと、そのフローアイテムの場所をオペレーターに指示します。また、taskSequenceラベルを使用して、このタスクが前に作成されたタスクシーケンスの一部であることを指定します。さらに、FlowItemラベルを使用して、輸送にロードするものを指定します。 |
プロセッサのアイテムをアンロード | このアクティビティは、フローアイテムをアンロードする場所をオペレーターに指示します。また、taskSequenceラベルを使用して、このタスクが前に作成されたタスクシーケンスの一部で、FlowItemラベルを使用してオペレーターに指示することを指定します。 |
タスクシーケンスを終了 | すべてのタスクアクティビティが終了すると、このアクティビティはタスクシーケンスを終了中に指定します。これにより、オペレーターを他のタスクに割り当てることができます。 |
シンク:アイテムの処理完了 | このアクティビティは、処理フローからトークンを削除します。デフォルト設定を使用します。 |
この機能を作成するには:
- 3Dモデルで、[Queue2]をダブルクリックして、そのプロパティウィンドウを開きます。[フロー]タブをクリックして、[輸送を使用]チェックボックスがオンになっていることを確認します。チェックボックスの横にある[輸送を使用]フィールドで、黒色の矢印をクリックしてピックリストオプションを起動します。[輸送参照なし]オプションを選択します(タスクを処理フロー内の輸送に割り当てることになります)。次のようになるはずです。
- [ソース:輸送するアイテム]アクティビティをクリックして選択します。このアクティビティの横にある[感嘆符]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで、[Queue2]をクリックして、メニューを開きます。メニューから[Queue2:輸送参照]を選択します。サンプリングされたオブジェクトの名前がアクティビティの横に表示されます。
- [クイックプロパティ]の[ラベルの割り当て]テーブルで、[ラベル名または値]列の下の[アイテム]行にあるセルをクリックします。「FlowItem」と入力します。[目的地]行の同じ列内のセルをクリックして、「Processor」と入力します。
- [オペレーション]の[アイテム]行にあるセルをクリックしてメニューを開きます。[割り当てる]を選択します。[目的地]行に対して同じことを繰り返します。
- [ロードアンロードを作成]アクティビティをクリックして選択します。[クイックプロパティ]で、[タスク実行者/ディスパッチャー]ボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで、[Dispatcher2]をクリックして、メニューを開きます。[BasicProcessFlowLogic/Dispatcher2]を選択します。[ロードアンロードタスクを作成]アクティビティ内の残りのオプションをデフォルトのままにします。
- [アイテムをQueue2からロード]アクティビティをクリックして選択します。[クイックプロパティ]で、[実行者/タスクシーケンス]フィールドに「token.taskSequence」と表示されていることを確認します。
- [アイテム]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[FlowItem]を選択します。
- [プロセッサのアイテムをアンロード]アクティビティをクリックして選択します。[クイックプロパティ]で、[実行者/タスクシーケンス]フィールドに「token.taskSequence」と表示されていることを確認します。
- [アイテム]ボックスに、「token.FlowItem」と入力します。
- [ステーション]ボックスに、「token.Processor」と入力します。
モデルをリセットして実行します。
オペレーターが標準3Dオブジェクトロジックで動作する方法と同様に、処理フローを使用するオペレーターは到着するフローアイテムをプロセッサに輸送します。また、処理フロー内のトークンは、フローアイテムが輸送タスクで移動するときにそのフローアイテムを表していることがわかります。
ステップ4 カスタムタスクを追加する
ここまでで、処理フローを使用して標準ロジックを単に複製する方法を学びました。このステップでは、処理フロー方法には標準ロジックよりも大きな利点があることがわかります。処理フロー方法は、カスタマイズをはるかに上手く処理できます。モデル化しようとしているビジネスシステムをよりよく表現するカスタムタスクを簡単に作成できます。
このステップでは、中間タスクを追加してタスクシーケンスをカスタマイズします。3Dモデルに形状(一種のビジュアルオブジェクト)を追加して、ステーションを表現します。ステーションでは、プロセッサでフローアイテムをアンロードする前に、オペレーターはフローアイテムをスキャンする必要があります。
次に、処理フローにスキャンタスクをシミュレーションする2つのアクティビティを追加して名前を変更します。作業が終了すると、処理フローは次の画像のようになります。
新しい2つのアクティビティが機能する方法の概要を次に示します。
アクティビティ | 説明 |
---|---|
ScanStation2に移動する | このアクティビティは、ScanStation2オブジェクトに移動するようオペレーターに指示します。 |
遅延:スキャンアイテム | このアクティビティは、コンピュータでフローアイテムをスキャンするのにかかる時間をシミュレーションします。遅延を1秒に設定します。 |
シミュレーションモデルにこれらの変更を適用するには:
- 3Dモデルをアクティブにして、[形状]([ビジュアル]の下)をドラッグして、[Processor2A]と[Processor2B]の近くに配置します。
- [形状]をダブルクリックして、[プロパティ]ウィンドウを開きます。
- ウィンドウの上部にある名前ボックスで、形状の名前を「ScanStation2」に変更します。
- [フラグ]グループの[一般]タブで[名前を表示]チェックボックスをオンにします。
- [OK]を押して変更を保存し、ウィンドウを閉じます。
- 処理フロー内の[ベーシックなタスクシーケンス]形状で、アクティビティのスタックブロックをクリックして選択します。
- [アイテムをQueue2からロードする]アクティビティの前後にある[リンク解除]ボタン をクリックして、スタックブロックからアイテムを分離します。
- ライブラリから[移動]アクティビティ([タスクシーケンス]の下)をドラッグし、[アイテムをQueue2からロード]アクティビティの後に挿入します。
- [遅延]アクティビティ([タスクシーケンス]の下)をドラッグし、[移動]アクティビティの後ろに挿入します。
- 2つの新しいアクティビティの名前を変更します。
- [ScanStation2に移動]アクティビティをクリックして選択します。[クイックプロパティ]で、[実行者/タスクシーケンス]ボックスに「token.taskSequence」と表示されていることを確認します。
- [目的地]ボックスの横にある[サンプラー]ボタン をクリックしてサンプリングモードに入ります。
- 3Dモデルで、[ScanStation2]をクリックして、メニューを開きます。[BasicProcessFlowLogic/ScanStation2]を選択します。
- 15.[遅延]アクティビティをクリックして選択します。[クイックプロパティ]の[遅延時間]ボックスで、現在のテキストを削除し、「
1.00
」と入力します。[実行者/タスクシーケンス]ボックスが「token.taskSequence」となっていることを確認してください。[状態]ボックスをデフォルトの[3- ビジー]のままにします。
アクティビティ | 新しい名前 |
---|---|
移動 | ScanStation2に移動する |
遅延 | 遅延:スキャンアイテム |
モデルをリセットして実行します。
見ていると、オペレーターはフローアイテムをスキャナに持ち込み、プロセッサにロードする前に短時間だけ遅延させることがわかります。単純な中間タスクをこの処理フローに挿入するのは比較的簡単だったことがわかります。残念ながら、Flexscriptでカスタムコードを記述せずに、これを標準ロジックで簡単に作成する方法はありません。
結論
これで、処理フロー内に輸送タスクが構築されたため、この利点を確認できます。
- 使いやすさ - 標準ロジックと同様に、処理フローのセットアップはそれほど難しくありませんが、いくつかのステップが増えます。また、手順はかなり直感的です。
- ロジックがより見やすい - 処理フローでロジックを構築すると、オペレーターがどのようにタスクを実行するかを正確に把握するのに便利です。処理フローツールのフローチャートに似たビジュアルはより直感的で、これにより、カスタムタスクのトラブルシューティングと設計を簡単に行うことができます。
- カスタマイズ可能 - 標準ロジックとは異なり、処理フローでカスタムタスクを作成するのは比較的簡単です。このチュートリアルでは、輸送タスク間に中間タスクを挿入するのは比較的簡単であることがわかります。標準の3Dロジックだけを使用して中間のカスタムタスクを追加することはもちろん可能ですが、そのためにはFlexScriptコードの記述方法を学ぶ必要があります。
ここまでで、処理フローでタスクを構築することの利点と欠点について、十分理解いただけたと思います。次のチュートリアルでは、リストを使用してタスクロジックを構築する方法について説明します。「チュートリアルタスク1.3 - リストを使用したタスク」に進みます。