[処理フロー]モジュールでは、[バッチ]アクティビティが入るトークンを収集し、トークンのグループ(バッチ)に並べ替えます。バッチの準備が完了すると、[バッチ]アクティビティは次のアクティビティにバッチをリリースします。
[バッチ]アクティビティは基本的に3Dモデルの[コンバイナ]と[セパレータ]と同様に機能し、トークンの結合と分離の両方が可能です。
簡単なグループ化とリリースに[バッチ]アクティビティを使用するのは比較的簡単です。しかし、[バッチ]アクティビティにはかなり複雑な方法でバッチを収集、並べ替え、リリースできる追加機能があります。[バッチ]アクティビティの機能について、詳細情報は次のトピックをご覧ください。
以下、このトピックは[バッチ]アクティビティとプロパティの参照ページとなります。
[バッチ]アクティビティは入るトークンを収集し、指定した基準に基づいてバッチに整理できます。[バッチ]アクティビティの次のプロパティは、バッチがトークンを整理する方法に直接関連します。
このことを念頭に置き、[数量詞]には、トークンを収集し整理する2つの異なるメソッドがあります。
上の方法については、それぞれ次のセクションで説明します。
バッチ処理の最も簡単な(そしてデフォルトの)方法は、トークンの数で収集することです。つまり、入るトークンそれぞれが[バッチ数量]に対して1つ分のスペースを占めます。トークンの数が[バッチ数量]プロパティで指定された値に達すると、バッチがリリースされます。
次のとおり、[バッチ]アクティビティがトークン数で収集するように設定します。
このオプションを選択すると、[バッチ数量]は入るトークンのラベルの値に基づいて決まります。この場合、トークンは、ラベルに記載されている任意の数値でバッチ数量を増やすことができます。たとえば、[数量詞]が[token.Weight
]に設定され、入るトークンにWeightという名前のラベルがあり、数量が200である場合、トークンがバッチに追加されるときに現在のバッチ数量を200増やします。
次のとおり、バッチがラベル値で収集するように設定します。
token.YourLabelName
コマンドが表示されます。たとえば、ラベルの名前がWeightの場合、ボックスにはtoken.Weight
と表示されます。あるいは、「token.Weight
」とボックスに入力することもできます。次のように、このボックスに引用符を使用して文字列を入力することもできます"Weight"
300
」と入力します。これで、トークンがバッチに入るたびに各トークンの指定されたラベルの値が現在のバッチ数量に加算されます。バッチ数量が指定された限度に達すると、バッチがリリースされます。たとえば、[バッチ]アクティビティが[Weight]という名前のラベルを使用してトークンを収集しており、指定された[バッチ数量]が300であるとします。この場合、リリースするために合計重量300を収集する必要があることになります。[バッチ]アクティビティに入る最初のトークンに値200の[Weight]ラベルがあり、2番目のトークンの[Weight]ラベル値が100の場合、2番目のトークンがバッチに追加された後にバッチがリリースされます。これは、両トークンの[Weight]ラベルの合計が各バッチの目標重量である300になるためです。
ラベル単位でバッチ処理をする場合、指定した[バッチ数量]よりも多くなり、バッチがオーバーフローする可能性があります。オーバーフローが起こると、[バッチ]アクティビティのオーバーフローロジックがトリガーされます。
バッチがオーバーフローするとどうなるかについて、前のセクションと同じ例で説明します。先の例では、[Weight]ラベルの合計が300になると[バッチ]アクティビティがバッチをリリースするように設定されていました。最初のトークンの[Weight]ラベル値が200で、2番目のトークンの[Weight]ラベル値が150の場合、両トークンの[Weight]ラベルの合計は350となります。350はそのバッチの目標重量を超えてしまうため、バッチのオーバーフローロジックがトリガーされます。
オーバーフローが発生すると、[バッチ]アクティビティの動作は[オーバーフロー]プロパティに制御されます。このプロパティのメニューには次のオプションがあります。
オーバーフローロジックは、[数量詞]プロパティで指定されたラベル値にのみ影響し、トークンの他のラベルは影響を受けません。トークンを保持したまま新しいバッチでリリースされると、[ラベル集約]も影響を受けることがあります。詳細については、「発信バッチにラベルを割り当てる」を参照してください。
新しいトークンが[バッチ]アクティビティに到着すると、[グループ化の基準]プロパティが評価され、一致するバッチにトークンが配置されます。一致するバッチが見つからない場合、新しいバッチが作成されます。デフォルトでは、[グループ化の基準]は[なし]に設定され、バッチは一度に1つだけ作成されます。ただし、指定した基準に基づいてトークンを並べ替える場合は、[グループ化の基準]プロパティを使用できます。たとえば、トークンのラベル値、名前、またはトークンがリンクされたオブジェクトに基づいて、トークンをバッチに並べ替えることができます。通常、これは入るトークンのラベルですが、グローバルテーブルまたは他の値を参照することもできます。
次の表に示すように、[グループ化の基準]には数値、文字列、またはオブジェクトを使用できます。
タイプ | 説明 | 例 |
---|---|---|
数字 | トークンのラベル数値などの数字に基づき、トークンをバッチにグループ化できます。数字は整数または浮動小数点数にできます。また、正負どちらでもかまいません。 | ![]() |
テキスト | 文字列(テキストの別名)に基づきトークンをバッチにグループ化できます。たとえば、処理フローの前に[ラベルを割り当てる]アクティビティを行い、[バッチ]と呼ばれるトークンにそれぞれ新しいラベルを割り当て、一定割合のトークンに「First Batch」または「Second Batch」という文字列を割り当てることができます。 | ![]() |
オブジェクト | オブジェクトに基づきトークンをバッチにグループ化できます。たとえば、トークンには特定のトークン(Processor1、Processor2、またはProcessor3)のバッチを処理する必要がある3Dモデルのプロセッサを参照する、[ProcessBy]というラベルが付いている場合があります。 | ![]() |
[バッチ]アクティビティに表示されるバッチは、古いものから新しいものの順に上から下、左から右に表示されます。
[バッチ]アクティビティには、バッチのリリース方法をコントロールするさまざまなオプションがあります。バッチがリリースされると、[バッチ]アクティビティの次のプロパティが使用されます。
[バッチ]アクティビティでは、バッチ処理が完了すると任意の数のトークンがリリースされます。このオプションは、材料を収集して結合し、結合された材料を一定の部分数に均等に分割するプロセスをシミュレーションするのに便利です。たとえば、[バッチ]アクティビティを設定し、元のトークンをひとまとめにしてから別個の部分に分割したかのように5つのトークンを収集して3つのトークンをリリースできます。
[リリースするトークンの数]プロパティを使用し、リリースするトークンの数を変更できます。この数はバッチで収集されたトークンの数と同じか、それよりも多く、または少なく設定できます。下3つの各シナリオについて、バッチ内で何が起きているかを理解することが重要です。
これは3つのうち最も単純なシナリオです。3つのトークンがバッチで収集され、[リリースするトークンの数]が3に設定されている場合、バッチに追加された元のトークン3つすべてが到着したときと同じ順序でリリースされます。これは、一連のトークンを同期させる方法として有用です。
[数量詞]がラベル値に設定されている場合は、各バッチのトークン数が異なる場合があります。バッチで収集されたすべてのトークンをリリースするには、[バッチされたトークンの数]オプションを選択するか、[リリースするトークンの数]ボックスに0以下の任意の数を返します。
[リリースするトークンの数]ボックスで指定した数がバッチで収集されたトークンの数より多い場合、[バッチ]アクティビティは新しいトークンを作成してリリースします。このような新しいトークンには初期ラベルがありませんが、[ラベル集約]を使用して、新しいトークンにラベルを作成できます。詳細については、「発信バッチにラベルを割り当てる」を参照してください。新しいトークンは、[バッチ]アクティビティを最後に離れます。
[リリースするトークンの数]がバッチで収集されたトークンの数より少ない場合、適切なトークンの数になるまでトークンが破棄されます。破棄するトークンと保持するトークンを決定する際、[バッチ]アクティビティは次のルールを順に使用してトークンの優先順位を付けます。
[バッチ]アクティビティでトークンに優先順位を付けると、優先順位が結果として最も低いトークンが破棄されます。
[バッチ]アクティビティでトークンが破棄されると、[終了]アクティビティと同様に機能することに注意してください。
トークンが[バッチ]アクティビティからリリースされる前に、過剰なトークンが破棄されます。
デフォルトでは、[バッチ]アクティビティに出入りするトークンはラベルを保有し、新しいラベルは追加されません。新しく作成されたトークンにはラベルが割り当てられませんが、[ラベル集約]を使用すると、[バッチ]アクティビティでは、新しいラベルを割り当てたり、バッチに含まれていたトークンのラベルをすべての発信トークンに集約したりできます。バッチが[バッチ数量]の値に達しているため、すべてのトークンを収集するまで、[ラベル集約]は行われません。
ラベル集約の使用法としては、1つに結合されるすべての部分の総重量を計算するというものが挙げられます。各トークンが1つの部分を表し、それぞれが[Weight]という名前のラベルを持つ場合、ラベル集約を使用してバッチに追加された全トークンの総重量を合計し、全発信トークンに割り当てる[BatchWeight]といった新しいラベルを作成します。
次のとおり、発信バッチにラベルを割り当てます。
以下は参照事項です。
元のラベル - データのソースとして使用される、バッチにするトークンのラベル名。各トークンのこのラベル値は、集約値の計算に使用されます。ラベルがトークンに存在しない場合、戻り値は0になります。注:このエントリは[バッチID]と[トークンカウント]の集約タイプには使用されません。
新しいラベル - 新しい値が書き込まれるラベルの名前。発信バッチの各トークンには、この名前のラベルと割り当てられた値が与えられます。
集約 - バッチにリリースされた全トークンの[新しいラベル]に割り当てられる値。実行できる値は次のとおりです。
[バッチ]アクティビティには、[最大待機時間]と[最大アイドル時間]の両プロパティがあります。これらのプロパティで、トリガーを開始するまでの開始基準と待機時間を定義できます。バッチがいずれかの時間に達し、[OnWaitTimerFired]トリガーまたは[OnIdleTimerFired]トリガーのいずれかを呼び出すと、バッチを早期にリリースすることが可能ですが、必須ではありません。バッチがリリースされない場合、バッチは[バッチ数量]に達するまでトークンを収集し続け、それから通常どおりにリリースされます。
[最大待機時間]および[最大アイドル時間]プロパティでバッチを参照できます。releasebatch()
コマンドを呼び出して、[OnWaitTimerFired]トリガーまたは[OnIdleTimerFired]トリガー内か、モデルにある任意の場所からバッチを早期にリリースできます。[failed]が1の場合、バッチはすぐにバッチの全トークンをリリースしてラベル集約を実行しないか、[リリースするトークンの数]プロパティを評価します。[failed]が0の場合、バッチは正常にリリースされ、[リリースするトークンの数]を評価してバッチにあるトークンのすべてのラベル集約を実行します。releasebatch()
コマンドには、[バッチ]アクティビティの任意のコネクターからリリースされたトークンを送信する機能もあります。コネクターは、インデックスまたは名前で参照できます。releasebatch()
コマンドでは、getactivity()
を使用してアクティビティを参照することで、[バッチ]アクティビティに直接接続されていないアクティビティにトークンをリリースすることもできます。
[バッチ]アクティビティでは、任意の数のコネクターを使用できますが、完了したバッチは必ず最初のコネクターから出ます。手動でリリースされたバッチのみ、別のコネクターから出ることができます。詳細については、「アクティビティを追加および接続する」を参照してください。
次の画像は、[バッチ]アクティビティのプロパティを示しています。
これらの各プロパティについては、次のセクションで説明します。
アクティビティの名前を変更するために使用します。このプロパティの詳細については、「名前」を参照してください。
このボタン を使用すると、アクティビティの背景色プロパティとフォントプロパティを編集するウィンドウが開きます。このプロパティの詳細については、「フォント」を参照してください。
このボタン でアクティビティの統計ウィンドウが開きます。このプロパティの詳細については、「統計」を参照してください。
[バッチ数量]ボックスはバッチの目標値を設定します。この値に達するまでバッチはトークンの収集を続け、その値に達するとバッチがリリースされます。詳細については、「バッチを整理する」を参照してください。
[数量詞]ボックスは、バッチ数量の計算方法を決定する基準を設定します。[トークンの数]または入るトークンのラベルで収集できます。詳細については、「バッチを整理する」を参照してください。
バッチが収集を完了したときにリリースされるトークンの数量を指定します。
[グループ化の基準]ボックスは、入るトークンをバッチにグループ化する基準を設定します。
[オーバーフロー]設定は、収集中にバッチ数量を超える値がどうなるかをコントロールします。[トークンの数]で収集する場合はこのオプションを利用できません。詳細については、[バッチオーバーフローオプション]をご覧ください。
このプロパティで、バッチがリリースされる際にトークンのラベルを作成および変更できます。バッチのリリース時にトークンが破棄された場合でも、バッチに追加された全トークンに対して、[集約]列に設定されたとおりに操作が実行されます。操作が実行されると、バッチにリリースされるすべてのトークンに結果の値が設定されます。詳細については、「発信バッチにラベルを割り当てる」を参照してください。
[最大待機タイマー]は、バッチが最初に作成されるときに評価されます。[開始基準]が偽と評価してタイマーが作成されない場合、真と評価するまで、トークンがバッチに追加されるたびに最大待機タイマーが評価されます。詳細については、「バッチを早期にリリースする」を参照してください。
[最大アイドルタイマー]は、トークンがバッチに追加されるたびに評価されます。詳細については、「バッチを早期にリリースする」を参照してください。