環境ロック① 基本的な使い方

  環境ロック

環境ロックとは?

同じ処理を他プロセスやランタイムリソース(以下RR)で行うと都合が悪い場合に、並列で実行させないための機能です。

例えば、同一ファイルへの書き込み処理を複数のRRで行う場合、1RRごとに「ファイルを開く→書き込み→保存して閉じる」を順番に行いたい場合などに用いると良さそうです。

使い方の例

今回は、
Excelファイルを開く→10秒待つ→ファイルを閉じる
処理において、最初にロック取得、最後にロック解除を行う例で説明します。

「環境ロックを取得」アクションの中身は以下のとおり。

  • 名前:環境ロックの名前。プロセス名と一致させると良いでしょう。
  • コメント:そのまま。「ロックを照会」アクションで取得できます。
  • タイムアウト:別プロセス・オブジェクトもしくはRRからロック解除を待機する最大時間。この時間を過ぎるとセッションタイムアウトします。
    0秒の場合、このステージに来た時にロック解除されていなければ処理終了です。データ型が「時間間隔」になっているので注意。
  • 優先トークン:指定したトークンのロックを優先的に取得します。
    ※別の記事で説明します。

「環境ロックを取得」アクション実行=ロック開始です。

同じ名前のロックが既にかかっている場合は、解除されるまで待機します。
待機時間は「タイムアウト」で設定した時間となります。未設定の場合はずっと待ちます。たぶん。

試しにデバッグ実行してみます。

「環境ロックを取得」アクション後、システムタブ→ワークフロー→環境ロックで、ロックがかかっているか確認できます。

「環境ロックテスト」という名前でロックがかかっているのが分かるかと思います。

「環境ロックを解除」アクションで、ロックが解除されます。

  • 名前:環境ロックの名前
  • トークン:「環境ロックを取得」アクションで発行されたトークン。これを設定することで、自プロセスで取得したロックのみ解除、といったことができます。
  • コメント:そのまま。コメントの内容が合致しているロックのみ解除、といった使い方ができる?(未確認)
  • すべてのセッション:Trueにすると他の名前のロックも解除できます。
  • 環境ロックを維持:※別の記事で説明します。

「環境ロックテスト」というロックがリストが消えるはずです。

これを実際にどう使うのか?

試しに
「Excelファイルを開く→10秒待つ→ファイルを閉じる」処理を呼び出すプロセスを作って、複数RRで実行してみます。

プロセス

先ほどの処理をオブジェクト化して、それを呼び出すだけのプロセスです。

複数RRで実行してみる

複数RRでセッション実行してみます。

セッション実行完了後のログを比較してみます。

まず、最初に開始したセッション(セッション1とする)のログです。
ロックを解除したのは15:58:01です。

次に開始したセッション(セッション2とする)のログです。
ロックを取得したのは15:57:50ですが、次のアクション「Create Instance」が開始された時刻は15:58:01です。
セッション1でロックを解除した時刻と同じですね。
つまり、セッション1のロックが解除されるまで、セッション2でロックの取得を待機していたことがわかります。

このように、同じ処理を他のプロセス、RRで実行されることを回避できているのが分かるかと思います。

別の記事で、より高度な(?)環境ロックの使い方を検証してみることにします。

LEAVE A COMMENT

CAPTCHA