共有処理フローのプロパティ
概要
処理フローオブジェクトには、共通のプロパティを持つものがあります。これらの各プロパティについては、以降のセクションで詳しく説明します。
名前
すべてのアクティビティと処理フローオブジェクトには、オブジェクト名の編集に使用できる[名前]ボックスがあります。この設定は、[アクティビティのプロパティ]グループの[クイックプロパティ]で検索できます。デフォルトでは、アクティビティ名とその他の処理フローオブジェクト名は、次の画像が示すようにそのアクティビティやオブジェクトの種類に基づいています。
上の例は[バッチ]アクティビティのため、アクティビティの名前は[バッチ]です。
[名前]ボックス内をクリックして新しい名前を入力すると、アクティビティの名前を変更できます。名前を変更すると、アクティビティの表示名が更新されます。
処理フロー内のアクティビティ名をダブルクリックしてアクティビティの名前を変更することもできます。
フォント
[フォント]ボタン をクリックすると、次の画像が示すように、アクティビティのビジュアルプロパティを編集できるポップアップボックスが開きます。
このポップアップボックスには、次のプロパティがあります。
- ブロックに適用 - このボタンをクリックすると、このアクティビティを含め、スタックされているすべてのアクティビティに選択したアクティビティの背景色とフォントがコピーされます。
- 背景色 - アクティビティの色を変更するには、カラーセレクターを使用するか[サンプラー]ボタン を使用して、シミュレーションモデルや処理フロー内の任意のオブジェクトから色を選択します。
- アルファ - アクティビティの透明度を設定します。
- フォント - アクティビティとリソースのテキストをコントロールします。
- フォント - フォントメニューには13種類の一般的なフォントがあります。
- サイズ - フォントサイズを変更します。
- スタイル - テキストを太字、イタリック、下線ありにできます。
- 色 - テキストの色を変更するには、カラーセレクターを使用するか、[サンプラー]ボタン を使用して、シミュレーションモデルや処理フロー内の任意のオブジェクトから色を選択します。
統計
[統計]ボタン を使用すると、アクティビティの統計ダイアログボックスが開きます。このダイアログボックスを使用して、特定のアクティビティで統計記録のオンとオフを切り替えることができます。詳細については、「処理フロー統計」を参照してください。
最大待機タイマー
次の画像に示すように、一部のアクティビティには[最大待機タイマー]プロパティがあります。
[最大待機タイマー]プロパティは、処理フローやシミュレーションモデルで特定の条件またはイベントが発生するまでの間、トークンを保持する可能性があるアクティビティで利用可能です。このタイマーを使用して以下を行うことができます。
- アクティビティがトークンを保持する最大待機時間を設定
- 待機時間の開始時期を決定
- トークンが最大待機時間に達した場合の、トークンの状態を決定
たとえば、[リソースを取得]には[最大待機タイマー]があります。[リソースを取得]に入るトークンはリソースへのアクセスをリクエストし、リソースが利用可能になるまで[リソースを取得]アクティビティで待機します。トークンが5分を過ぎてもリソースにアクセスできない場合は、[最大待機タイマー]が時間切れになるよう設定できます。次に、タイマーがオフになるとトークンを設定してfailedという名前のラベルを作成し、次の下流アクティビティに進みます。
[最大待機タイマー]プロパティは、次のアクティビティで利用可能です。
デフォルトでは、[最大待機タイマーを使用]チェックボックスのみ最初に利用可能です。次に、[最大待機タイマーを使用]チェックボックスをオンにすると、次に示す他のプロパティが利用可能になります。
開始基準
[開始基準]ボックスは、[バッチ]アクティビティ、[結合]アクティビティ、[同期]アクティビティでのみ利用可能です。
[バッチ]アクティビティは、入るトークンを収集してトークンのグループ(バッチ)に並べ替えます。バッチの準備が完了すると、[バッチ]アクティビティが下流のアクティビティにバッチをリリースします。[バッチ]アクティビティで[最大待機タイマー]を使用する場合、一定時間が経過すると[バッチ]アクティビティがバッチを早期にリリースするようにできます。タイマーの実行開始時期を決定するには、[開始基準]ボックスも使用します。
デフォルトでは、タイマーはバッチが作成されるとすぐに実行を開始するように設定されています。必要に応じて、このボックスの値を変更できます。たとえば、[開始基準]をcollected > 3に変更する場合、バッチ内の4番目のトークンが収集されるとタイマーが開始されます。
この動作は[結合]アクティビティと[同期]アクティビティと似ていますが、バッチではなく波(各着信コネクターから来るあるトークンを表すグループ)を形成します。同様に、このタイマーで波全体を早期にリリースすることもできます。
時間
[最大待機タイマー]が実行する時間の長さを設定するには、[時間]ボックスを使用します。時間は、シミュレーション時間単位で測定されます。固定時間を入力するか、ボックスの横にあるメニューを使用して動的に時間を作成できます。
OnWaitTimerFired
[最大待機タイマー]が時間切れになった場合、OnWaitTimerFired設定を使用してトークンがどうなるかを決定します。[プロパティを表示]ボタン をクリックすると、次の画像に示すように、デフォルト設定を表示および編集できます。
デフォルトでは、[ラベルを設定]オペレーションでは、トークンにfailedというラベルが作成され、(真に設定された値を表す)値1が割り当てられます。その後[トークンをリリース]オペレーションは、コネクター1からトークンをリリースします。(コネクター番号の詳細については、「アクティビティを追加および接続する - 発信コネクターの数」を参照してください)。
これらのデフォルトのオペレーションを編集、またはそれぞれの横にある[削除]ボタン を使用して削除できます。また、[追加]ボタン を使用して独自のカスタムオペレーションを追加してメニューを開き、他のオペレーションを選択することもできます。
最大アイドルタイマー
[最大アイドルタイマー]は[最大待機タイマー]とほぼ同じ働きをします。次の画像に示すように、利用可能な設定の多くが同じです。
主な違いは、最大アイドルタイマーはトークンがアクティビティ内でアイドル状態になっている時間を測定することです。つまり、トークンや値を受け取らずにどれだけの時間が経過したかを測定します。
これらのプロパティの詳細については、「最大待機タイマー」を参照してください。
このプロパティは、次のアクティビティで利用可能です。
実行者/タスクシーケンス
[実行者/タスクシーケンス]ボックスは、ほとんどの[タスクシーケンス]アクティビティで利用可能です。このボックスを使用して、タスクを受け取るタスク実行者またはタスクシーケンスを決定します。タスク実行者にこのタスクを与える場合、タスクで新しいタスクシーケンスが自動で作成され、タスク実行者に送信されます。
次の作業を行うことができます。
- 特定の固定タスク実行者を3Dモデルに割り当て
- ラベルを使用し、シミュレーションの実行中にタスク実行者を動的に割り当て
- タスク実行者タイプまたはサブフロー処理フロータイプの場合は、currentコマンドを使用してタスク実行者を割り当て
- 既存のタスクシーケンスにこのタスクを追加
これらの各設定については、次のセクションで説明します。
固定タスク実行者
このタスクを特定のタスク実行者に割り当てるには、[サンプラー]ボタン を使用して3Dモデルのタスク実行者を選択します。シミュレーションの実行中、割り当てられたタスク実行者は常にこのタスクを実行します。
動的なタスク実行者 - ラベル
必要に応じて、シミュレーションの実行中にこのタスクが動的にタスク実行者に割り当てられるようにできます。言い換えると、これらの設定を変更して、シミュレーションの実行中にさまざまな条件に基づいてタスクに別のタスク実行者を割り当てることができます。
タスク実行者を動的に割り当てる方法の1つは、トークンのラベルに記載されているタスク実行者を使用することです。トークンのラベルを参照するには、次の[ラベル]キーワードを使用できます。
- [実行者/タスクシーケンス]ボックス内をクリックし、tokenと入力します。
- [実行者/タスクシーケンス]ボックスでは[ユニバーサル編集]機能が使用されるため、ボックスにtoken.と入力するとメニューが表示されます。このボックスには、処理フローで利用可能なすべてのラベルが一覧表示されます。メニューからラベルを選択して、ラベル名を自動で完成させることができます。ラベル名をダブルクリックするか、矢印キーを使用してEnterキーを押してラベル名を選択します。あるいは、コロンの後に完全なラベル名を入力するのみでもかまいません。ラベル名は引用符("")でくくる必要はなく、大文字と小文字が区別されます。
currentコマンド
[実行者/タスクシーケンス]ボックスでcurrentコマンドを使用して、処理フローの特定のインスタンスに現在アタッチされているタスク実行者にタスクを動的に割り当てることができます。このコマンドは、タスク実行者タイプまたはサブフロー処理フロータイプに対してのみ使用できる点に注意してください。キーワードcurrentは、処理フローにアタッチされたタスク実行者オブジェクトを参照します。詳細については、「処理フローインスタンス」を参照してください。
既存のタスクシーケンスにタスクを追加する
必要に応じて、[タスクシーケンスを作成]アクティビティで以前に作成された既存のタスクシーケンスにこのタスクを追加できます。
[タスクシーケンスを作成]アクティビティは、作成されたタスクシーケンスへの参照を作成し、トークンのラベルに割り当てます。このラベルを[実行者/タスクシーケンス]ボックスで使用して、タスクをそのタスクシーケンスの最後に追加できます。
タスクアクティビティのいずれかを[タスクシーケンスを作成]アクティビティか別のタスクアクティビティの最後に追加すると、新しく追加されたタスクアクティビティで、正しいラベル名が[実行者/タスクシーケンス]ボックスに自動で配置されます。これでタスクシーケンスをより簡単に作成できますが、手動で追加する必要がある場合は次のようにします。
- [実行者/タスクシーケンス]ボックス内をクリックし、tokenと入力します。.
- このボックスにtoken.と入力すると、ボックスにメニューが表示されます。[タスクシーケンスを作成]アクティビティの[割り当て先]プロパティで使用されるラベルと同じ名前を入力します。
割り当て先
[割り当て先]プロパティは、アクティビティで作成された新しい値またはオブジェクトへの参照を作成します。これらの参照は、通常トークンのラベルに割り当てられますが、他のラベルやノードに割り当てることもできます。token.LabelName構文を使用するときに、ラベルが現時点で存在しない場合は、トークンにラベルが作成されます。それ以外の場合は、[割り当て先]に渡されたノードがすでに存在している必要があります。これは、object.labels.assert("LabelName")コマンドまたはaNode.subnodes.assert("NodeName")コマンドを使用して行うことができます。
参照は1つまたは複数のオブジェクトまたは値にできます。たとえば、リストからエントリをプルすると、1つ以上のエントリが作成されます。複数のエントリがプルされる場合、配列内の各エントリがプルされた値の1つである配列が作成されます。
参照ポイントを作成することで、他のアクティビティが作成されたオブジェクト、リストからプルされた値、タスクシーケンスなどを容易に参照できるようになります。ただし、[割り当て先]ラベルやノードは必須ではなく、[削除]ボタン をクリックして削除することもできます。
値は、次に示す2つの方法のいずれかで設定されます。
割り当て
[割り当て]チェックボックスをオンにすると、[割り当て先]ボックスに渡されたラベルやノードに格納されているデータはすべて新しい値で上書きされます。
先頭に挿入
[先頭に挿入]チェックボックスをオンにすると、[割り当て先]ボックスに渡されたラベルやノードに格納されているデータは残り、新しい値が先頭に追加されます。これでデータが配列の最初のエントリとして最新の値を持つ配列になります。
ラベル照合/割り当て
[ラベル照合/割り当て]テーブルは、そのアクティビティが標準イベントをリッスンしているときに、イベントリスニングのアクティビティで利用可能になります。このテーブルを使用してトークンラベルへの値の割り当て、トークンラベルの値との照合、値との照合ができます。イベントトリガーソースは、作成したトークンにラベルを割り当てます。[イベントを待つ]アクティビティは、アクティビティに入ったトークンにラベルを割り当て、イベントリスニングをトリガーします。
オペレーションを行う必要がない場合は、このテーブルを空白にしておくことができます。
パラメータ行
[ラベルの割り当て]テーブルの行は、アクティビティがリッスンする特定のイベントによって異なります。各シミュレーションイベントには、使用する一連のパラメータ(情報セット)があります。たとえば、次の画像は固定リソースにあるOnEntryイベントの[ラベルの割り当て]テーブルを示しています。
この例では、1行目が[入るアイテム]である点に注目してください。この行は、固定リソースに入るアイテムへの参照です。2行目は、固定リソースがフローアイテムを受け取ったポート番号への参照である[入力ポート]です。
ほとんどの場合、行の名前はその内容を説明するものになっており、その参照ポイントの概念を理解できます。
ラベル名または値
[ラベル名または値]列のセル内のテキストは、[オペレーション]列に設定されたオプションによって異なります(後述)。オペレーションが[照合]、[割り当て]、[先頭に挿入]に設定されている場合、テキストがトークンラベルの名前を定義します。[イベントを待つ]を使用する場合は、ドット構文(ピリオド)を使用して、トークンが参照するオブジェクトのラベルを参照するラベル名と分けることができます。たとえば、入るトークンにoperatorというラベルが付いており、モデル内の別のトークンまたはタスク実行者オブジェクトを参照する場合は、operator.itemと入力してオペレーターのラベルを参照できます。
オペレーションが[値を照合]の場合、テキストは数値、文字列、オブジェクト参照を定義します。この値はリセット時に評価されます。オブジェクト参照を定義するには、FlexScriptを使用します。たとえば、Model.find("Processor1")
というFlexScriptを使用して動的な数値や文字列を定義することもできます。たとえば、Table("GlobalTable1")[1][1]
や"Text" + string.fromNum(Table("GlobalTable1")[1][1])
です。
上の例を使用するために、入るアイテムを参照するitemまたはitemIDというラベルを作成できます。アイテムが入った入力ポートが、ポート1またはポート2と一致するか照合することもできます。
オペレーション
[オペレーション]列の下のセルをクリックすると、メニューが開きます。選択したオプションによって、イベントがトリガーされたときに実行されるオペレーションが決まります。メニューには次のオプションがあります。
- なし - デフォルト値。[ラベル名または値]列には何も表示されません。
- 照合 - ラベルの既存の値が参照されているパラメータと一致するかどうか照合します。トークンは、イベントが起動し、かつ、イベントのパラメータがトークンのラベル値と一致した場合のみ、アクティビティを終了します。たとえば、システム全体でアイテムを追跡しているとします。トークンのアイテムラベルは、モデル内のフローアイテムを指します。その特定のアイテムがモデルの固定リソース(キューなど)に入るタイミングを把握する必要があります。これを行うには、固定リソースのOnEntryイベントをサブスクライブしてから、テーブルの[入るアイテム]行の[ラベル名または値]列にアイテムを入力し、オペレーションとして照合します。このオプションは、[イベントトリガーソース]では利用できません。
- 照合する値 - 関連するパラメータ値を[ラベル名または値]列の値と一致するか照合します。
- 割り当て - 関連するパラメータ値をトークンのラベル値に割り当てます。
- 先頭に挿入 - このオペレーションは割り当てと似ていますが、ラベルにすでに値がある場合に、ラベル値を配列にして新しい値を配列の先頭にプッシュします。ループしているなどの理由で、値をラベルの配列に累積する必要がある場合に、このオプションを使用できます。このオプションは、[イベントトリガーソース]では利用できません。
戻り値をオーバーライドします
イベントリスニングのアクティビティには、リッスンするイベントの戻り値をオーバーライドする機能があります。たとえば、処理フローを使用して複雑なロジックを実行し、プロセッサの処理時間を定義できます。これを行うには、まずアクティビティのプロパティにある[戻り値をオーバーライド]チェックボックスをオンにします。次に、戻り値を決定する一連のアクティビティを定義します。ここでは、待機オペレーションや明示的な[遅延]アクティビティなど、これらのアクティビティがいかなるタイプの遅延も引き起こさないようにする必要があります。遅延が起こった場合、戻り値は正しく計算されません。アクティビティのブロックの最後に[終了]アクティビティを配置します。[終了]アクティビティでは、オーバーライドされた関数の戻り値を定義してトークンを破棄できます。この例では、戻り値はプロセッサの処理時間になります。
ルールを変更
イベントリスニングアクティビティが値を変更するイベントをリッスンしているときに、このアクティビティで[変更ルール]プロパティが利用可能になります。これらのプロパティを使用して、イベントをトリガーする条件を決定できます。通常、これは何らかの統計的な変更になります。これらの条件が整うと、[イベントトリガーソース]アクティビティはトークンを作成し、それを次の下流アクティビティにリリースします。[イベントを待つ]アクティビティはトークンを次の下流アクティビティにリリースします。
次の画像は、[変更ルール]プロパティを示しています。
次のセクションでは、さまざまな[変更ルール]プロパティについて説明します。
ルールを変更
[変更ルール]メニューを使用して、イベントをトリガーする条件を決定します。メニューには次のオプションがあります。
- 変更 - 値が変わるとイベントを起動します。
- 増加 - 値が増加するとイベントを起動します。
- 減少 - 値が減少するとイベントを起動します。
- 値に到達 - 値が特定のユーザー定義値に変わるとイベントを起動します。
- 値ちょうどまで増加 - 値が特定のユーザー定義値まで増加するとイベントを起動します。
- 値ちょうどまで減少 - 値が特定のユーザー定義値まで減少するとイベントを起動します。
- 値以上に増加 - 値がユーザー定義の値より小さいものからその値以上になるとイベントを起動します。
- 値以下に減少 - 値がユーザー定義の値より大きいものからその値以下になるとイベントを起動します。
- 初回の増加 - 値が減少から増加に変わるとイベントを起動します。
- 初回の減少 - 値が増加から減少に変わるとイベントを起動します。
値
[変更ルール]に関連付けられたユーザー定義の値を定義します。これは、[値に到達]など、必要な値を持つ変更ルールにのみ必要です。
初期値がルールを満たした場合に起動
このチェックボックスをオンにすると、トークンが最初に到着したときに値がすでに定義されたルールを満たしている場合、イベントが直ちに(アクティビティを終了して)起動します。たとえば、[ゾーン]のOnContentChangeイベントをリッスンしており、[値]が5の[値に到達]として[変更ルール]を定義した場合、トークンが到着したときに[ゾーン]のコンテンツがすでに5になっていると、イベントが直ちに起動してトークンはアクティビティを通過します。このフィールドは、[変更ルール]で関連する値が使用され、アクティビティが[イベントを待つ]の場合にのみ適用されます。