タスクシーケンスタイプ
タスクシーケンスタイプの概要
早見表がよければ、「タスクタイプリファレンスガイド」も参照できます。以下のセクションでは、各タスクタイプについて説明します。
TASKTYPE_TRAVEL
ここでは、タスク実行者は指定されたオブジェクトに移動します。これは接続先のナビゲータに移動リクエストを行うことで行われます。次にナビゲータはタスク実行者のコントロールを引き継ぎ、タスク実行者が目的地に到達し、ナビゲータがタスク実行者に移動タスクが終了したことを通知するまで、ナビゲータ自身のロジックに従ってチェス盤上のポーンのようにタスク実行者をプッシュします。タスク実行者がどのようにプッシュされるかは、ナビゲータのタイプに依存します。タスク実行者がネットワークに接続されている場合、その関連ナビゲータはネットワークナビゲータであり、タスク実行者をネットワークパスに沿ってプッシュします。
involved1 - 移動先のオブジェクト。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - これにより、移動オペレーションに求められる終了速度が指定されます。0の場合、目的の終了速度はタスク実行者の最大速度になります。正の値の場合、その値は終了速度として直接使用されます。終了速度が負の場合、機能性はナビゲータのロジックに依存します。標準のナビゲータ、すなわち、デフォルトナビゲータとネットワークナビゲータは、負の終了速度を終了速度0として解釈します。ただし、他の非標準ナビゲータでは、負の終了速度値を利用し、タスク実行者を目的地に移動させるロジックをカスタマイズすることがあります。その場合、モデラーは、移動タスクでさまざまな負の終了速度を使用し、カスタマイズした移動ロジックを実行できます。
var2 - ネットワークナビゲータに固有。この値が1の場合、オブジェクトはすでに接続されていても目的地ノードに移動します。
var3 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_TRAVEL, outobject(current,1))
TASKTYPE_LOAD
このタスクは、タスク実行者にステーションからアイテムをロードさせます。タスク実行者の[プロパティ]ページで[ロード/アンロードタスクのオフセットを移動]チェックボックスがオンになっている場合、ステーションからの位置を照会し、オフセット移動を使用することで、指定されたフローアイテムの場所に移動します。次に、タスク実行者はロード時間を計算します。ロード時間の終わりに、タスク実行者はアイテムを自身に移動します。固定リソースにロードする場合は、アイテムを移動する直前に固定リソースに通知し、固定リソースが自身のトラッキングデータを更新できるようにします。
involved1 - ロードするオブジェクト(通常はフローアイテム)
involved2 - ロード元のオブジェクト。
var1 - オブジェクトがステーションから出るときに通過する出力ポート。通常は0で問題ありません。
var2 - タスクに対して要求された終了速度。
var3 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_LOAD, item, current)
TASKTYPE_UNLOAD
このタスクは、タスク実行者にアイテムをステーションにアンロードさせます。タスク実行者の[プロパティ]ページで[ロード/アンロードタスクのオフセットを移動]チェックボックスがオンになっている場合、ステーションに照会し、オフセット移動を使用することで、ドロップオフの位置に移動します。次に、タスク実行者がアンロード時間を計算します。アンロード時間の終わりに、タスク実行者はアイテムをステーションに移動します。固定リソースからアンロードする場合は、アイテムを移動する直前に固定リソースに通知し、固定リソースが自身のトラッキングデータを更新できるようにします。
involved1 - アンロードするオブジェクト(通常はフローアイテム)。
involved2 - アンロードするオブジェクト。
var1 - オブジェクトがステーションに入るときに通過する入力ポート。コンバイナやセパレータにアンロードしない限り、通常は0です。コンバイナでは、その入力テーブルを更新する目的で、アイテムがどの入力ポートを通過するかを把握する必要があります。セパレータは0より大きい値を必要とします。
var2 - タスクに対して要求された終了速度。
var3 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_UNLOAD, item, outobject(current, 1))
TASKTYPE_BREAK
このタスクによって、タスク実行者は、下の図に示すように、現在アクティブなタスクシーケンスから新しいタスクシーケンスに「ブレイク」します。
関連するオブジェクトと変数を使用すると、ブレイク先のタスクシーケンスの検索方法をカスタマイズできます。デフォルトでは、タスク実行者はその「Break To Requirement」関数を呼び出します。この関数は、タスク実行者がブレイク先とするタスクシーケンスの参照を返します。ブレイクロジックでは、タスクシーケンスのクエリコマンドを利用してタスク実行者のタスクシーケンスキューを検索したり、createemptytasksequenceを利用して明示的にタスクシーケンスを作成したりできます。タスク実行者にブレイクさせない場合、NULLを返します。
involved1 - involved1が指定されている場合、モデル内のあるオブジェクトへの参照となります。「中断先の要件」を呼び出す代わりに、タスク実行者はこのオブジェクトにメッセージを送信します。ここでの唯一の違いは、ブレイク先となるタスクシーケンスを見つけるためのロジックを配置する場所です。デフォルトでは、ロジックは「Break To Requirement」で実行されますが、このパラメータが指定されている場合、ロジックをメッセージトリガーに書き込みます。ここでも、メッセージの戻り値はタスクシーケンスの参照でなければなりません。一般的にこの機能は、メッセージを介して中央の「モデルコントロールセンター」にロジックを集中させる場合に使用します。
involved2 - involved2が指定されている場合、タスク実行者のブレイク先となるタスクシーケンスの直接参照として解釈されます。これは、ブレイク入りのタスクシーケンスを作成した時点でブレイク先となるタスクシーケンスが正確に分かっている場合にのみ使用されます。このパラメータはそれほど頻繁には使用されません。タスクシーケンスを作成するとき、ブレイク先となるタスクシーケンスが正確にわかっている場合、元のタスクシーケンスにタスクを追加するだけであるためです。
var1 - このパラメータにより、ブレイクタスクを実行する前にタスク実行者のコンテンツを検査するかどうかが指定されます。デフォルト(0)では、タスクの実行者は、その現在のコンテンツがその[プロパティ]ページに指定されている最大コンテンツよりも少ない場合にのみ、ブレイクタスクを実行します。ただし、var1が0でない場合、タスク実行者はその現在のコンテンツを無視し、ブレイクタスクを実行します。このパラメータは、中断先の要件関数を呼び出す場合はparval(3)、メッセージを送信する場合はmsgparam(1)として渡されます。
var2 - このパラメータにより、上流ディスパッチャーからのタスクシーケンスの受信をタスク実行者が確認するかどうかが指定されます。デフォルト(0)では、タスク実行者はそのキューにタスクシーケンスがあるかどうかを確認します。キューが空の場合、またはそのキュー内のすべてのタスクシーケンスがすでに開始され、ブレイクされたタスクシーケンスの場合、その入力ポートが開き、上流ディスパッチャーからタスクシーケンスを受け取ります。ただし、var2がゼロでない場合、タスク実行者はそのブレイクロジックを呼び出す前に上流ディスパッチャーから何も受け取りません。このパラメータは、中断先の要件関数を呼び出す場合はparval(4)、メッセージを送信する場合はmsgparam(2)として渡されます。
var3 - これらのパラメータは、タスクがメッセージを送信する場合、parval(5)とparval(6)として中断先の要件に渡され、msgparam(3)としてvar 3がメッセージに渡されます。
var4 - var3と同じ
例
ts.addTask(TASKTYPE_BREAK, NULL, NULL)
// 基本のブレイク。[タスク行者]タブの「中断先の要件」が起動
ts.addTask(TASKTYPE_BREAK, centerobect(current, 1), NULL)
// オブジェクトのOnMessageトリガーにロジックが書き込まれる参照先オブジェクトにメッセージを送信
ts.addTask(TASKTYPE_BREAK, NULL, specificTaskSequence)
// 指定のタスクシーケンスを中断
TASKTYPE_CALLSUBTASKS
このタスクは、2番目のタスクが完了した直後に、元のタスクシーケンスの次のタスクに戻る点を除き、ブレイクタスクと似ています。次の図はこの仕組みを示しています。
ダイアグラムが示すように、タスクシーケンスAは「サブタスク呼び出し」タスクのところに到達するとタスクシーケンスBにブレイクします。タスクシーケンスBが完了した直後、タスクシーケンスAの次のタスクに戻ります。多くの場合、タスクシーケンスAが実際に「サブタスク呼び出し」タスクに到達するまでタスクシーケンスBは作成されません。これは、多くの場合、タスクシーケンスAを作成するとき、タスク実行者が「サブタスク呼び出し」タスクに到達したとき、タスク実行者に何をさせるのか正確にわかっていないためか、必要なオブジェクトの参照が前もって与えられないためです。たとえば、タスク実行者にモデルのある部分に移動させ、アイテムをロードさせ、モデルの別の部分に移動させ、アイテムをアンロードさせるとき、モデルの反対側にタスク実行者が到達するまでロードするアイテムの参照が与えられないことがあります。その場合、タスク実行者にモデルのその部分に移動させ、ロードするアイテムを把握します。ここで、タスク実行者がロード場所に到達したときに参照を解決できるように「サブタスク呼び出し」を使用します。サブタスクの呼び出しも階層化できます。つまり、タスクシーケンスBにも「サブタスク呼び出し」タイプを含めることができます。
タスク実行者が「サブタスク呼び出し」タスクに到達するときにタスクシーケンスを作成するように決めた場合、サブタスクを呼び出す関連オブジェクトはメッセージを受け取ります。そのオブジェクトのOnMessageトリガーで、createemptytasksequence()を使用して新しいタスクシーケンスを作成し、inserttask()を使用してタスクを挿入する必要がありますが、タスクシーケンスを送付しないでください。その代わり、新しく作成したタスクシーケンスの参照を返します。
involved1 - involved1が指定されている場合、モデル内のあるオブジェクトへの参照となります。"Break To Requirement"を呼び出す代わりに、タスク実行者は2つのうち、いずれかを行います。involved1がオブジェクト(オブジェクトデータのあるノード)の参照の場合、タスク実行者はinvolved1パラメータによって指定されるオブジェクトにメッセージを送信します。involved1がdll、flexscript、c++ノード(文字列データのあるノード)の参照の場合、そのノードでノード関数を呼び出し、それ自体の参照をparnode(1)として渡します。ここでのデフォルトケースとの唯一の違いは、ブレイク先となるタスクシーケンスを見つけるためのロジックを配置する場所です。デフォルトでは、ロジックは「Break To Requirement」で実行されますが、このパラメータが指定されている場合、ロジックをメッセージトリガーまたはノード関数に書き込みます。ここでも、メッセージ/ノード関数の戻り値はタスクシーケンスの参照でなければなりません。一般的にこの機能は、メッセージを介して中央の「モデルコントロールセンター」にロジックを集中させる場合に使用します。
involved2 - involved2が指定されている場合、タスク実行者のブレイク先となるタスクシーケンスの直接参照として解釈されます。これは、ブレイク入りのタスクシーケンスを作成した時点でブレイク先となるタスクシーケンスが正確に分かっている場合にのみ使用されます。このパラメータはそれほど頻繁には使用されません。元のタスクシーケンスを作成するとき、ブレイク先となるタスクシーケンスが正確にわかっている場合、タスクシーケンスにタスクを追加するだけであるためです。ただし、タスクシーケンスのさまざまな部分に対して異なる優先度とプリエンプト値を指定できます。そのため、タスクシーケンスの特定の部分をプリエンプトしない場合、その部分をサブルーチンタスクシーケンスにして元のタスクシーケンスとは異なる優先度を与えることができます。
var1 - var4 - これらのパラメータはparval(3)、parval(4)、parval(5)、parval(6)として中断先の要件に渡されます。メッセージを送信するとき、var1、var2、var3はそれぞれ、msgparam(1)、msgparam(2)、msgparam(3)としてメッセージに渡されます。ノード関数を呼び出すとき、var1、var2、var3、var4はparval(2)、parval(3)、parval(4)、parval(5)として渡されます。
例
ts.addTask(TASKTYPE_CALLSUBTASKS, NULL, NULL)
// [タスク実行者]タブの「中断先の要件」が起動
ts.addTask(TASKTYPE_CALLSUBTASKS, centerobect(current, 1), NULL)
// オブジェクトのOnMessageトリガーにロジックが書き込まれる参照先オブジェクトにメッセージを送信
ts.addTask(TASKTYPE_CALLSUBTASKS, NULL, specificTaskSequence)
// 指定のタスクシーケンスを中断
TASKTYPE_UTILIZE
このタスクにより、タスク実行者は所与の状態に進み、freeoperators()コマンドでその状態から解放されるまで待機します。このタスクはステーションでオペレーターに「何かをさせる」ときに頻繁に使用されますが、タスクシーケンスの作成時、そのオペレーターがしていることがいつ終わるのかはわかりません。そのような場合は、このタスクタイプを使用し、オペレーターが指定した状態に進むようにします。その後、オペレーターが作業を終えたとき、freeoperators()コマンドで解放します。これはOnProcessFinishやOnSetupFinishなどのトリガーから行うことができます。オペレーターに「何かをさせる」時間が始めからわかっている場合、代わりに遅延タスクを利用できます。
involved1 - 多くの場合、オペレーターの仕事がフローアイテムの処理に関係していれば、このパラメータがフローアイテムの参照になります。ステーションが停止した場合など、ステーションが参照され、オペレーターが呼び出されるときがあります。ここで、オペレーターはフローアイテムではなく、ステーションに対して作業しており、ステーションがinvolved1パラメータになります。必要であれば、このパラメータをNULLに指定できます。より具体的に言えば、このパラメータはfreeoperatorsコマンドと一致させるためのキーです。たとえば、このパラメータがフローアイテムの場合、freeoperatorsコマンドが呼び出されると、オペレーターが適切に解放されるように、同じフローアイテムをfreeoperatorsコマンドの2番目のパラメータに渡す必要があります。多くの場合、オペレーターのチームを使用します。メンバーそれぞれが求められる仕事を実行できます。そのような場合、タスクシーケンスをディスパッチャーに渡し、ディスパッチャーはチームのメンバーにそれを渡します。freeoperatorsを呼び出すとき、最終的にどのオペレーターが現れ、仕事を行ったか正確にわかりません。そのため、ディスパッチャーにfreeoperatorsコマンドを送信します。このfreeoperatorsコマンドで、このタスクに指定されているinvolved1パラメータに2番目のパラメータが一致するようにします。これにより、ディスパッチャーはそのチームに「involved1パラメータがこれのUtilizeタスクを行っている人は今すぐそのタスクを完了できます」と伝えることができます。これにより、ディスパッチャーは、間違ったタスクから他のオペレーターを解放することなく、正しいタスクから特定のオペレーターを解放できます。
involved2 - このパラメータは、オペレーターがそのオペレーションからプリエンプトされる可能性がある場合にのみ指定する必要があります。オペレーターは、タスクシーケンスのプリエンプトか、stopobject()か、グローバルTimeTableまたはグローバルMTBFテーブルでオペレーションからプリエンプトできます。オペレーターがUtilizeタスクからプリエンプトされる場合、オペレーターがUtilizeタスクに戻る前にfreeoperatorsコマンドが呼び出されると、問題が発生することがあります。オペレーターが何かをしているときにfreeoperatorsが呼び出されると、オペレーターは自身に適用されないと見なし、無視します。その後、オペレーターがオペレーションに戻っても解放されることがありません。モデリングロジックではすでに解放していると解釈されるためです。このinvolved2パラメータを使用することで、この問題を改善できます。involved2が指定されている場合、オペレーターの解放を担当するモデルのオブジェクトをポイントします。オペレーターはプリエンプトされると指定オブジェクトでstopobject()を呼び出します。これがオブジェクトを停止し、ほとんどの場合、オブジェクトでfreeoperatorsの呼び出しが停止します。オペレーターがUtilizeタスクに戻ると、ステーションでresumeobject()を呼び出し、作業は通常どおり再開されます。オペレーターはいずれ解放されます。プリエンプトについては、該当するヘルプセクションをご覧ください。
var1 - これはUtilizeタスク中にオペレーターが入る状態です。0の場合、タスク実行者はSTATE_UTILIZEに入ります。
var2 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_UTILIZE, item, NULL, STATE_UTILIZE)
TASKTYPE_STOPREQUESTBEGIN
このタスクにより、タスク実行者はinvolved1オブジェクトでstopobject()を呼び出します。詳細については、stopobject()コマンドのドキュメントを参照してください。
involved1 - このパラメータにより、stopobject()を呼び出すオブジェクトが指定されます。NULLの場合、タスク実行者は自身でstopobjectを呼び出します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - これは、停止したオブジェクトに入るように要求する状態です。
var2 - この変数は、このタスクを実行するタスク実行者がプリエンプトされる場合にのみ必要です。また、マイルストーンタスクを使用している場合にのみ必要です。この変数が0に設定されている場合、タスクがマイルストーンタスクの範囲内で、オブジェクトがその範囲内でプリエンプトされていても、そのタスクは一回のみ実行されます。この変数が1に設定されていて、タスクがマイルストーンタスクの範囲内にある場合、タスクはそのオブジェクトがプリエンプトされるたびに再度実行され、タスクをやり直す必要があります。デフォルトの値は0で、タスクは1回のみ実行されます。0の場合、コマンドの最初の実行で、タスク実行者はそれを再び実行しないフラグとして変数を2に変更します。
var3 - これはstopobjectコマンドのIDです。
var4 - これはstopobjectコマンドの優先度です。
例
ts.addTask(TASKTYPE_STOPREQUESTBEGIN, current)
TASKTYPE_STOPREQUESTFINISH
このタスクにより、タスク実行者はinvolved1オブジェクトでresumeobject()を呼び出します。詳細については、resumeobject()コマンドのドキュメントを参照してください。
involved1 - このパラメータにより、resumeobject()を呼び出すオブジェクトが指定されます。
involved2 - 該当なし
var1 - この変数は、このタスクを実行するタスク実行者がプリエンプトされる場合にのみ必要です。また、マイルストーンタスクを使用している場合にのみ必要です。この変数が0に設定されている場合、タスクがマイルストーンタスクの範囲内で、オブジェクトがその範囲内でプリエンプトされていても、そのタスクは一回のみ実行されます。この変数が1に設定されていて、タスクがマイルストーンタスクの範囲内にある場合、タスクはそのオブジェクトがプリエンプトされるたびに再度実行され、タスクをやり直す必要があります。デフォルトの値は0で、タスクは1回のみ実行されます。
var2 - これはresumeobject()コマンドのIDです。
var3 - 該当なし
var4 - この変数はタスク実行者により管理され、このタスクがすでに一度実行されているかどうかを伝えます。
例
ts.addTask(TASKTYPE_STOPREQUESTFINISH, current)
TASKTYPE_SENDMESSAGE
このタスクは廃止予定です。代わりにTASKTYPE_MESSAGEを使用してください。このタスクによって、タスク実行者はinvolved1オブジェクトにメッセージを送信します。
involved1 - Involved1はメッセージが送信されるオブジェクトです。NULLの場合、メッセージはタスク実行者自身に送信されます。
involved2 - Involved2により、メッセージトリガーのmsgsendingobjecが指定されます。NULLの場合、msgsendingobjectはタスク実行者自身です。通常、これはNULLになります。メッセージトリガー内でタスク実行者にアクセスできる唯一の方法であるためです。ただし、異なるオブジェクト「から」メッセージを送信することがあるため、このオプションが用意されています。
var1 - このパラメータは、メッセージトリガーでmsgparam(1)として渡されます。
var2 - このパラメータは、メッセージトリガーでmsgparam(2)として渡されます。
var3 - このパラメータは、メッセージトリガーでmsgparam(3)として渡されます。
var4 - このパラメータにより、送信されたメッセージが遅延メッセージになるかどうかが指定されます。0の場合、メッセージはただちに送信されます。-1の場合、メッセージは0時間後に遅延送信されます。それ以外の場合、指定した秒数の経過後にメッセージが送信されます。
例
ts.addTask(TASKTYPE_SENDMESSAGE, current, NULL, p1,p2,p3, delay)
TASKTYPE_MESSAGE
このタスクによって、タスク実行者はinvolved1オブジェクトにメッセージを送信します。
involved1 - Involved1はメッセージが送信されるオブジェクトです。NULLの場合、メッセージはタスク実行者自身に送信されます。
involved2 - Involved2により、メッセージトリガーのmsgsendingobjecが指定されます。NULLの場合、msgsendingobjectはタスク実行者自身です。通常、これはNULLになります。メッセージトリガー内でタスク実行者にアクセスできる唯一の方法であるためです。ただし、異なるオブジェクト「から」メッセージを送信することがあるため、このオプションが用意されています。
var1 - このパラメータにより、送信されたメッセージが遅延メッセージになるかどうかが指定されます。-1の場合、メッセージはただちに送信されます。0の場合、メッセージは0時間後に遅延送信されます。それ以外の場合、指定した秒数の経過後にメッセージが送信されます。遅延メッセージの送信は少しばかり冗長であると思われるかもしれません。遅延メッセージを送信するなら、遅延タスクを挿入し、その後に通常のメッセージ送信タスクを続ければ良いからです。これには微妙な違いがあります。たとえば、一定の要件が満たされるまでタスク実行者に待機させる場合、要件を確認できる唯一の方法はコードを実行することです。これは次のような方法で行われます。要件が満たされるまで待機しなければならないポイントにタスク実行者が到達したとき、タスク実行者はオブジェクトにメッセージを送信し、UtilizeタスクかStop Request Beginタスクを実行します。他のオブジェクトがメッセージを受け取ったとき、タスク実行者は要件が満たされているかどうかを確認する役目を担います。すでに満たされている場合、このオブジェクトはただちにタスク実行者でresumeobject()またはfreeoperators()を呼び出します。満たされていない場合、要件が満たされるまで待機し、満たされたらresumeobject()またはfreeoperators()を呼び出します。しかし、要件がすでに満たされており、タスク実行者にすぐに続行を許可できるとき、問題が発生します。メッセージがすぐに送信された場合、タスク実行者はUtilizeまたはStop Request Beginタスクをまだ始めていません。Send Messageタスクに依然として取り組んでいます。そのため、他のオブジェクトはfreeoperators()またはresumeobject()をすぐに呼び出すことができません。タスク実行者がSend Messageタスクを完了し、UtilizeまたはStop Request Beginタスクに進むまで待機する必要があるからです。0時間後に遅延メッセージを送信すると、タスク実行者は厳密にそれを実行できます。要件が満たされたとき、他のオブジェクトはタスク実行者をすぐにリリースできます。
var2 - このパラメータは、メッセージトリガーでmsgparam(1)として渡されます。
var3 - このパラメータは、メッセージトリガーでmsgparam(2)として渡されます。
var4 - このパラメータは、メッセージトリガーでmsgparam(3)として渡されます。
例
ts.addTask(TASKTYPE_MESSAGE, current, NULL, delay, p1,p2,p3)
TASKTYPE_DELAY
このタスクにより、タスク実行者は所与の状態に進み、指定の時間が経過するまで待機します。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - これはタスク実行者が指定された状態で待機する時間です。
var2 - これは遅延タスク中にオペレーターが入る状態です。0の場合、タスク実行者は以前の状態にとどまります。
var3 - この変数はタスク実行者によって予約されています。この変数を自分で設定しないでください。少なくとも、それが自分で指定したものと同じ状態のままでいるとは思わないでください。
var4 - 該当なし
例
ts.addTask(TASKTYPE_DELAY, NULL, NULL, time, STATE_NUMBER)
TASKTYPE_MOVEOBJECT
このタスクは、指定のオブジェクトを指定のコンテナに移動するようにタスク実行者に指示します。これは、オフセット移動またはロード/アンロード時間を経ずにタスク実行者にフローアイテムをロード/アンロードさせる場合に使用されます。また、フローアイテムを移動するが、タスク実行者に渡さない場合に使用できます。
involved1 - 移動するオブジェクト。
involved2 - involved1の移動先となるオブジェクト。
var1 - involved1が出るときに通過するオブジェクトの出力ポート。通常は0で問題ありません。
var2 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_MOVEOBJECT, item, outobject(current, 1))
TASKTYPE_DESTROYOBJECT
このタスクは、指定のオブジェクトを破棄するようにタスク実行者に指示します。通常、これは、フローアイテムがモデルで終了し、シンクに進む準備ができている場合に実行されます。ここで明示的にフローアイテムを破棄できます。これを利用してラベルを破棄することもできます。たとえば、リクエストのキューとして機能するラベルがあるとします。リクエストが完了するか、キューから取り出せる状態になったら、ラベルを破棄できます。
involved1 - 破棄するオブジェクト。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_DESTROYOBJECT, item, NULL)
TASKTYPE_SETNODENUM
このタスクは、タスク実行者に指定のノードで値を設定させます。これは、オブジェクトに変数またはラベルを設定する場合に使用されます。
involved1 - 値を設定するノード。label(current, "mylabel")やvar_s(current, "maxcontent")のようになります。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - ノードに設定する値。
var2 - このパラメータでは、ノードに値を設定したり、ノードの値をインクリメントしたりできます。デフォルト(0)では、ノードの値が設定されます。1の場合は、ノードの値をvar1だけインクリメントします。
var3 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_SETNODENUM, theNode, NULL, 42)
TASKTYPE_TRAVELTOLOC
このタスクは、オフセット移動を使用してタスク実行者を指定の場所に移動させます。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - これは移動先のxの場所です。
var2 - これは移動先のyの場所です。
var3 - これは移動先のzの場所です。
var4 - これは目的の終了速度です。
例
ts.addTask(TASKTYPE_TRAVELTOLOC, NULL, NULL, 3,3,3)
TASKTYPE_TRAVELRELATIVE
このタスクは、オフセット移動を使用してタスク実行者を指定のオフセットに移動させます。これは、場所に移動する代わりに、タスク実行者が現在の場所からオフセットする点を除いて、TravelToLocタスクと似ています。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - これは移動するxオフセットです。
var2 - これは移動するyオフセットです。
var3 - これは移動するzオフセットです。
var4 - これは目的の終了速度です。
例
ts.addTask(TASKTYPE_TRAVELRELATIVE, NULL, NULL, 1,0,0)
TASKTYPE_PICKOFFSET
このタスクは、タスク実行者にロードタスクに含まれる移動オフセットの一部または全部を実行させます。これにより、ロードを行う前にタスク実行者が行う移動オペレーションを順番に並べることもできます。たとえば、タスク実行者がアイテムを収集するためのフロアストレージ領域があるとします。アイテムは床の上にベイ(x)と行(y)で整理されています。タスク実行者がフロアストレージ領域に到達したとき、ロードする製品までまっすぐ移動させず、最初に該当ベイまでx方向に移動させ、それからアイテムの場所までyオフセットとzオフセットの移動を実行させるなら、このタスクタイプでそれを行うことができます。タスク実行者がフロアストレージ領域に到着したとき、ピックオフセットタスクを与えます。このタスクで、オフセットのx部分だけ移動するように伝えます。その後、通常のロードタスクを与えることができます。タスク実行者はxオフセットが完了したら、yオフセットとzオフセットを行います。全部のオフセットを移動するピックオフセットタスクをオブジェクトに与える場合、終わりにオブジェクトを実際にロードすることなく、ロードタスクの完全な移動オペレーションを行うことになります。
involved1 - ロードタスクの場合と同様に、これはロードされるアイテムの参照です。
involved2 - ロードタスクの場合と同様に、これはアイテムがロードされるステーションの参照です。
var1 - これらのパラメータは通常、0か1になります。これらはそれぞれ、オフセット移動のx、y、z部分に相当します。0の場合、タスク実行者は対応するオフセットのいずれも移動しません。1の場合、タスク実行者は対応するオフセットのすべてを移動します。これらの値を0と1の間の値にすることもできます。0.9の場合、タスク実行者が対応するオフセットの90%を移動することを意味します。
var3 - var1と同じ
var4 - これは目的の終了速度です。
例
ts.addTask(TASKTYPE_PICKOFFSET, item, current, 1,0,0)
TASKTYPE_PLACEOFFSET
このタスクは、アンロードタスクに関連するすべてのオフセット移動の一部を行う点を除いて、ピックオフセットタスクに似ています。
involved1 - アンロードタスクの場合と同様に、これはロードされるアイテムの参照です。
involved2 - アンロードタスクの場合と同様に、これはアイテムがアンロードされるステーションの参照です。
var1 - ピックオフセットタスクと同じ
var4 - ピックオフセットタスクと同じ
例
ts.addTask(TASKTYPE_PLACEOFFSET, item, outobject(current, 1), 1,0,0)
TASKTYPE_TAG
このタスクは、タスクシーケンスに「タグ付け」するためにのみ使用されます。たとえば、モデルに5つの一般的なタイプのタスクシーケンスを作成するとします。シミュレーションの特定の時点で、特定のタスクシーケンスがどの一般的なタイプであるかを知る必要があります。作成したすべてのタスクシーケンスの最初のタスクとして「タグ」タスクを挿入すると、gettaskinvolved()コマンドとgettaskvariable()コマンドを使用してそのタスクにクエリを実行できます。
involved1 - 使用者向け。
involved2 - 使用者向け。
var1 - 使用者向け。
var4 - 使用者向け。
例
ts.addTask(TASKTYPE_TAG, current, centerobject(current, 1), 1)
TASKTYPE_MILESTONE
このタスクタイプは、プリエンプトされる可能性があるタスクシーケンスでのみ有用です。タスクシーケンスに「ブックマーク」が定められ、タスク実行者がタスクシーケンスからプリエンプトされた場合、そこに戻ることができます。通常、タスク実行者がタスクシーケンスからプリエンプトされ、タスクシーケンスに戻るとき、前と同じ場所で再開します。マイルストーンタスクを使用すると、プリエンプトが発生したとき、タスクのセクション全体を繰り返すようにタスク実行者に伝えることができます。タスクには、担当範囲となる後続タスクの範囲が定義されています。タスク実行者がその範囲内にあり、プリエンプトされた場合、マイルストーンタスクに戻ります。マイルストーンの範囲を過ぎた場合、既定のプリエンプト機能に戻ります。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - このパラメータは、タスク数で定義される、マイルストーンタスクの範囲です。たとえば、var1が3に設定され、マイルストーンタスクがタスクシーケンスの5番目のタスクである場合、タスク実行者がタスク6、7、8のいずれかを実行しているときにプリエンプトされた場合、マイルストーンタスクに戻ります。
var2 - 該当なし
var4 - 該当なし
例
ts.addTask(TASKTYPE_MILESTONE, NULL, NULL, 3)
TASKTYPE_NODEFUNCTION
このタスクタイプは、指定のノードでnodefunction()を呼び出します。
involved1 - nodefunction()を呼び出すノード。
involved2 - parnode(1)として渡されます。NULLを指定すると、タスク実行者がタスクを実行するとき、parnode(1)として自身の参照を渡します。
var1 - var4 - これらのパラメータはノード関数にparval(2)、parval(3)、parval(4)、parval(5)として渡されます。
例
ts.addTask(TASKTYPE_NODEFUNCTION, node, NULL, 1)
TASKTYPE_STARTANIMATION
このタスクタイプはstartanimation()を呼び出します。
involved1 - パラメータ1としてstartanimation()に渡されます。NULLの場合、タスク実行者は自身への参照を渡します。
involved2 - 使用されません。NULLを渡します。
var1 - animationパラメータとしてstartanimation()に渡されます。開始するアニメーションのランクを定義します。
var2 - durationtypeパラメータとしてstartanimation()に渡されます。
var3 - durationvalueパラメータとしてstartanimation()に渡されます。
var4 - 使用されません。0を渡します。
例
ts.addTask(TASKTYPE_STARTANIMATION, NULL, NULL, 1)
TASKTYPE_STOPANIMATION
このタスクタイプはstopanimation()を呼び出します。
involved1 - stopanimation()にパラメータ1として渡されます。NULLの場合、タスク実行者は自身への参照を渡します。
involved2 - 使用されません。NULLを渡します。
var1 - animationパラメータとしてstopanimation()に渡されます。停止するアニメーションのランクを定義します。
var2-var4 - 使用されません。0を渡します。
例
ts.addTask(TASKTYPE_STOPANIMATION, NULL, NULL, 1)
TASKTYPE_FREEOPERATORS
このタスクタイプはfreeoperators()を呼び出します。これは、調整されたタスクシーケンスメカニズムの代替または補足として使用されることがあります。あるタスク実行者のタスクシーケンスの一部として、別のタスク実行者をUtilizeタスクから解放できます。
involved1 - freeoperators()にパラメータ1として渡されます。
involved2 - freeoperators()にパラメータ2として渡されます。NULLの場合、タスク実行者は自身への参照を渡します。
var1-var4 - 使用されません。0を渡します。
例
ts.addTask(TASKTYPE_FREEOPERATORS, centerobject(current, NULL, 1),
NULL);
TASKTYPE_WAITFORTASK
このタスクタイプは、オブジェクトを与える新しいタスクがまだないが、オブジェクトを与えるタスクが与えられるまで、タスクシーケンスの完了をオブジェクトに禁止する場合に使用されます。オブジェクトは次のタスクがタスクシーケンスに追加されるまで待機し、その後、このタスクを完了します。
involved1 - NULLにする必要があります。
involved2 - NULLにする必要があります。
var1 - ここで、オブジェクトを進める状態を任意で渡すことができます。0の場合、STATE_IDLEが使用されます。
var2-var4 - 使用されません。0を渡します。
例
ts.addTask(TASKTYPE_WAITFORTASK, NULL, NULL);
TASKTYPE_TE_STOP
このタスクは、タスク実行者でstopobjectを呼び出すときに作成されます。タスク実行者は優先度100000のプリエンプトタスクシーケンスを作成し、このStopタスクをそれに挿入します。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - タスク実行者が停止しているときに入るべき状態。
var2 - 該当なし
var4 - 該当なし
TASKTYPE_TE_RETURN
このタスクは、「サブタスク呼び出し」タスクによって返されるタスクシーケンスの終わりに追加されます。これにより、タスクシーケンスが完了すると、元のタスクシーケンスに戻ります。
involved1 - このパラメータは、戻るべき元のタスクシーケンスを指します。元のタスクシーケンスが「調整されたタスクシーケンス」の場合、これはその中にTE_ALLOCATEDタスクを持つタスクシーケンスを指します。
involved2 - このパラメータは、実際の「サブタスク呼び出し」タスクをノードとしてポイントします。
var1-var4 - 該当なし
TASKTYPE_TE_ALLOCATED
これは特に「調整されたタスクシーケンス」に使用される特別なタスクです。このタスクは割り当てるタスク実行者を伝えます。つまり、オブジェクトがこのタスクに到達すると、タスクシーケンスを調整するオブジェクトに通知し、そのコーディネーターから次の指示を受けるまで待機します。
involved1 - タスクシーケンスを調整するオブジェクト。
involved2 - これは実行されている「調整されたタスクシーケンス」の参照です。
var1-var4 - 該当なし
TASKTYPE_CT_ALLOCATE
ここで、タスクコーディネーターはタスク実行者を割り当てようとします。1つのTASKTYPE_TE_ALLOCATEDタスクを含む通常のタスクシーケンスを作成し、指定のオブジェクトにそのタスクシーケンスを渡すことでこれは完了します。このタスクは、オブジェクトが割り当てられるまでタスクシーケンスの継続をブロックします。
involved1 - タスクシーケンスを与えるディスパッチャーの参照です。これは特定のタスク実行者でもよいし、割り当てるオブジェクトがいくつかの可能なオブジェクトのうちの1つである場合、そのタスク実行者に送付するディスパッチャーを参照できます。
involved2 - これはタスクの作成時に指定されませんが、オブジェクトが割り当てられたときに設定され、そのオブジェクトを参照します。
var1 - 割り当ての優先度の値
var2 - 割り当てのプリエンプト値
var3 - これはタスクシーケンスが実行されたときに変更されます。これは、割り当てられたリソースに与えられている最前位置のプロキシタスクのランクです。
var4 - これはタスクシーケンスがブロックしているかどうかを示します。デフォルト(0)の場合はブロックします。1の場合はブロックしません。
TASKTYPE_CT_SYNC
ここで、タスクコーディネーターは以前に指定されたタスク(ランクによって参照される)が終了するまでタスクシーケンスの継続をブロックします。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - 同期対象のタスクのランク。
var2 - 該当なし
var4 - 該当なし
TASKTYPE_CT_DEALLOCATE
ここで、タスクコーディネーターは、割り当てられたタスクを終了できること、他のタスクに戻って再開できることをオブジェクトに通知します。オブジェクトは、それを割り当てた割り当てタスクのランクによって指定されます。
involved1 - 使用されません。このパラメータにはNULLを使用します。
involved2 - 使用されません。このパラメータにはNULLを使用します。
var1 - オブジェクトを割り当てた割り当てタスクのランク。
var2 - この変数は、割り当て解除タスクがブロックされているかどうかを指定します。デフォルト(0)の場合、ブロックされています。1の場合、ブロックされていません。
var3 - 該当なし
var4 - 該当なし