1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UiPath (produced with UiPath Friends)Advent Calendar 2024

Day 1

【UiPath】OCから同一プロセスが同時に実行されないよう制御する

Posted at

一つのプロセスを複数のマシンに紐づけどこからでも実行できるようにしたが、アクセスするリソースが同じなどの理由から同時には動かしてほしくない、そんな時の実装。OC側でも制御出来そうだが、今回はxaml側に設定する。

実装

コード全体がこちら。
OCにアクセスして実行中のジョブを取得し、自身と同じプロセス名のジョブが2件以上実行中であればエラーにするという仕組み。この仕様上、同タイミングに両方開始された場合はどちらもエラーになる。

image.png

「ジョブを取得」のフィルターで「ステート = Running」の設定を行い、実行中のジョブだけ取得する。余談だがここの設定はビルダーが実装されたお陰で昔に比べだいぶ簡単になった。

image.png

「ジョブを取得」はOrchestratorJob変数をコレクションで、「現在のジョブの情報を取得」はCurrentJobInfo変数を単体で返す。型は違うが、どちらも.ProcessNameメソッドでプロセス名を取得することができる。

あとは、繰り返しアクテビティで「ジョブを取得」が返したコレクションの中に「現在のジョブの情報を取得」で取得した自身のプロセス名と同一のジョブが何件あるかを探査する。結果が1件であれば実行されてるのが自身のジョブだけ、2件以上あれば自身以外にも同一のプロセス名のジョブが実行されているということになる。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?