このタスクでは、共通タスクにアクセスできるユーザーを制御します。これにより、複数のスレッドで同時にタスクが実行されないようになります。プログラミングにおけるセマフォと同様に動作します。
構成ペインのパラメーター
主なパラメーターは次のとおりです。
| パラメーター | 説明 |
| Name | タスクに表示される名前を入力します。 |
| Lock | ロックの名前を入力します。これはロックの識別子として機能します。 |
| Max Lock Time | ロックの有効期限が切れるまでシステムが待機する時間を入力します。 秒単位で入力してください。 |
| Advance Rule | タスクを進める方法を指定します。デフォルトは [All predecessors have completed] です。 |
ロック タスクの構成
ロック タスクを構成する方法は以下のとおりです。
- ロック タスクを Workflow エディターのキャンバスにドラッグして追加します。
Workflow ツールボックスの [Workflow Controls] セクションでロック タスクを見つけます。 - ロック タスクを選択し、編集アイコンを選択して、[Task Configuration] ペインでパラメーターを編集します。
- 必須パラメーターを入力します。
- ロック サブプロセス内に、ロックを配置するタスクを追加します。
- [OK] を選択して [Task Configuration] ペインで変更を適用します。
- 必須パラメーターを入力します。
- [Save] を選択してワークフローを保存します。
- 次のワークフロー プロセスにも同じ変更を加えます。プロセス内で同じロック名を使用します。 使用されるロック名により、内部のコードが 1 回だけ実行され、実行中は呼び出されないようになります。
- ワークフローを開始するには、[Workflow Editor] ツールバーで [Play] を選択します。
ワークフロー プロセスが開始されます。
プロセス ログには、ロック サブプロセスを実行する各スレッドでロックが待機している時間と、ロックが取得された時間が表示されます。
たとえば、同じ変換計算を呼び出す二つの別個のワークフロー プロセスがある場合などです。これらは別々のプロセスであるため、変換計算が同時に呼び出される可能性があります。これにより、データが重複したり破損したりする可能性があります。
このような場合は、サブプロセスにロックを作成するためのロック タスクを作成します。ゲートに到達した最初のスレッドはサブプロセスへの参加が許可されますが、他のすべてのスレッドは拒否されます。最初のスレッドがサブプロセスを終了すると、ゲートが開かれ、次のスレッドがサブプロセスのロックを取得できるようになります。変換の実行計算はロックを使用してサブプロセスに移動され、一度に一つのスレッドだけがアクセスして実行できるようになります。
この手法を使用すると、ワークフローの特定の部分が保護され、一度に一つのプロセスによってのみ実行できるようになります。
ユースケース
この例では、同じ計算を呼び出す二つの別個のワークフロー プロセス (「Canada」プロセスと「USA」プロセス) があります。どちらも変換の実行 計算を呼び出します。
データの重複やデータの破損を防ぐ方法は以下のとおりです。
- 計算を移動する:新しいサブプロセス内に変換の実行計算を配置します。
- ロック タスクを追加する:サブプロセスの先頭にロック タスクを挿入します。
- アクセスを制御する:ロック タスクはゲートとして機能します。ゲートに到達した最初のスレッドはサブプロセスに入ることができますが、他のスレッドは待機する必要があります。
- ロックを解除する:最初のスレッドがサブプロセスを完了すると、ゲートが開かれ、次のスレッドが入ることができます。
これにより、特定の時点で一つのスレッドのみが変換の実行計算を実行するようになります。