TaskSequence
説明
TaskExecuterによって行われる一連のタスクを表すクラスです。
タスクシーケンスの詳細については、「タスクシーケンスの概念」を参照してください。
プロパティ
currentTask | 実行完了していないタスクシーケンスの最初のタスクにアクセスします。このタスクは現在実行中であるか、タスクシーケンス自体が実行待機中のために実行待ちになっている場合があります。 |
labelProperties | 独自の名前付きプロパティを使用して、ラベル値を取得または設定します。 |
preempt | タスクシーケンスのプリエンプト値を取得/設定します。 |
priority | タスクシーケンスの優先度の値を取得/設定します。 |
rank | タスクシーケンスキューにあるタスクシーケンスのランクを取得/設定します。 |
tasks | タスクシーケンスの一連のタスクにアクセスします。このメンバーはTaskSequence.Taskの配列のように使用できます。 |
メソッド
addTask | タスクシーケンスに新規タスクを追加します。 |
dispatch | タスクシーケンスを送付します。 |
finish | タスクシーケンスを終了としてマークします。 |
move | タスクシーケンスを新規ディスパッチャーのタスクシーケンスキューに移動します。 |
静的メソッド
create | 新しいタスクシーケンスを作成します。 |
詳細
TaskSequence.currentTask
readonly TaskSequence.Task currentTask
説明
実行完了していないタスクシーケンスの最初のタスクにアクセスします。このタスクは現在実行中であるか、タスクシーケンス自体が実行待機中のために実行待ちになっている場合があります。
TaskExecuter op = Model.find("Operator1");
TaskSequence ts = op.taskSequences[1];
int curTaskType = ts.currentTask.type;
...
TaskSequence.labelProperties
Variant labelProperties
説明
独自の名前付きプロパティを使用して、ラベル値を取得または設定します。
TaskSequenceクラスを使用して、タスクシーケンス上のラベルに適用されるカスタム名付きのプロパティを取得および設定できます。たとえば、タスクシーケンス「ts」の「MyLabel」という名前のラベルの値を5に設定するには、次のコードを使用します。
ts.MyLabel = 5;
これにより、ラベルの値は5に設定されます。その名前のラベルが存在しない場合、オブジェクトのラベルに追加されます。
tsの「MyLabel」ラベルに格納されている値を返すには、次のコードを実行します。
return ts.MyLabel;
このコードはtreenodeクラスの動的プロパティにおけるメカニズムと同じように機能します。詳細については、treenode.labelPropertiesを参照してください。
TaskSequence.preempt
int preempt
説明
タスクシーケンスのプリエンプト値を取得/設定します。
TaskExecuter op = Model.find("Operator1");
TaskSequence ts = op.taskSequences[1];
int preempt = ts.preempt;
...
TaskSequence.priority
double priority
説明
タスクシーケンスの優先度の値を取得/設定します。
TaskExecuter op = Model.find("Operator1");
TaskSequence ts = op.taskSequences[1];
double priority = ts.priority;
...
TaskSequence.rank
int rank
説明
タスクシーケンスキューにあるタスクシーケンスのランクを取得/設定します。
TaskExecuter op = Model.find("Operator1");
TaskSequence ts = op.taskSequences[1];
int tsRank = ts.rank; // should be 1
...
TaskSequence.tasks
readonly tasks
説明
タスクシーケンスの一連のタスクにアクセスします。このメンバーはTaskSequence.Taskの配列のように使用できます。
TaskExecuter op = Model.find("Operator1");
TaskSequence ts = op.taskSequences[1];
int numTasks = ts.tasks.length;
for (int i = 1; i <= numTasks; i++) {
Task task = ts.tasks[i];
}
TaskSequence.addTask()
TaskSequence.Task addTask( int type , treenode involved1 = null , treenode involved2 = null , Variant var1 = nullvar , Variant var2 = nullvar , Variant var3 = nullvar , Variant var4 = nullvar ) |
パラメータ
involved1 | タスクに関連する最初のオブジェクトです。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
involved2 | タスクに関連する2番目のオブジェクトです。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
var1 | タスクにおける最初の変数です。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
var2 | タスクにおける2番目の変数です。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
var3 | タスクにおける3番目の変数です。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
var4 | タスクにおける4番目の変数です。つまり、このオブジェクトはタスクタイプに依存しています。詳細については、「タスクタイプクイックリファレンス」を参照してください。 |
戻り値
TaskSequence.Task | 追加タスクです。 |
説明
タスクシーケンスに新規タスクを追加します。
TaskSequence ts = TaskSequence.create(Model.find("Operator1"));
ts.addTask(TASKTYPE_LOAD, item, current);
...
ts.dispatch();
TaskSequence.dispatch()
void dispatch( ) |
説明
タスクシーケンスを送付します。
このメソッドを呼び出すと、タスクシーケンスの受け取りおよび送付を必要に応じて行うためのDispatcherロジックを起動します。タスクシーケンスが作成されたオブジェクトがタスクエグゼキューターでありそのタスクエグゼキューターが他のタスクシーケンスを実行していない場合、オブジェクトがタスクシーケンス実行を即座に開始します。
TaskSequence ts = TaskSequence.create(Model.find("Operator1"));
ts.addTask(TASKTYPE_LOAD, item, current);
...
ts.dispatch();
TaskSequence.finish()
void finish( ) |
説明
タスクシーケンスを終了としてマークします。
このメソッドは、タスクシーケンスのwaitForFinishState値を0にリセットし、タスクシーケンスがタスク追加の待機中である場合には、そのタスクシーケンスを終了します。このメソッドの呼び出しは、ゼロ以外のwaitForFinishState値をTaskSequence.create()に渡したことがある場合にのみ必要になります。
TaskSequence.move()
void move( Dispatcher dispatcher ) |
パラメータ
dispatcher | タスクシーケンスの移動先となるディスパッチャーです。 |
説明
タスクシーケンスを新規ディスパッチャーのタスクシーケンスキューに移動します。
TaskSequence.create()
static TaskSequence create( treenode obj , double priority = 0 , int preempt = 0 , int waitForFinishState = 0 ) |
パラメータ
obj | タスクシーケンスを作成するオブジェクトを指定します。通常、このパラメータはディスパッチャーまたはタスクエグゼキューターにする必要があります。そのような場合、タスクシーケンスがそのオブジェクトのタスクシーケンスキューに作成されます。オブジェクトはディスパッチャーおよびタスクエグゼキューター以外である場合、タスクシーケンスがそのオブジェクト/ノードのサブノードとして作成されます。 |
priority | オプション。タスクシーケンス値の優先順位を定義します。 |
preempt | オプション。タスクシーケンスのプリエンプト値を定義します。ゼロ以外の場合は、次の値のいずれか1つである必要があります。PREEMPT_ONLY、PREEMPT_AND_ABORT_ACTIVE、またはPREEMPT_AND_ABORT_ALL。 |
waitForFinishState | オプション。タスクシーケンスが一連のタスクの最後に到達した際に、別タスクを追加することなく入る状態を定義します。0(デフォルト)を渡した場合、最後のタスクに到達したタスクシーケンスは単に終了して破棄されます。ゼロ以外の場合、タスクシーケンスはTASKTYPE_WAITFORTASKSタスクを追加し、続けて定義された状態に入り、タスクの追加を待ちます。ここでゼロ以外の値を渡した場合、後ほどTaskSequence.finish()を呼び出してタスクシーケンスに新規タスクを待つ必要がないことを通知する必要があります。 |
戻り値
TaskSequence | 作成されたタスクシーケンスです。 |
説明
新しいタスクシーケンスを作成します。
TaskSequence ts = TaskSequence.create(Model.find("Operator1"));
ts.addTask(TASKTYPE_LOAD, item, current);
...
ts.dispatch();