RPAの排他制御について
2022-12-19 14:14
お世話になります。
今後、1台のPCで複数のRPAを実行していく予定なのですが、すでにRPAが実行されているときに、他のRPAを実行させないようにするにはどのようにすれば実現できますでしょうか。
複数のRPAから参照・書き込むが可能なシートを作成し、RPAが実行されたらそのシートに書き込むようにすればよいのかなとおもいましたが、実現方法がいまいちわかりませんでした。
なにかよい方法がありましたらご教示いただけますと幸いです。
よろしくお願いいたします。
回答を投稿するにはログインが必要です。
日本コンピュータシステム様
いつもお世話になっております。早速の回答ありがとうございました。
そうですね。確かにDBを利用する手段がありましたね。
追加でご教示いただいたRPA_1とRPA_2の内容については、まだ理解が追いついていませんが、のちほど試してみようと思います。
どうもありがとうございました。
いつもお世話になっております。早速の回答ありがとうございました。
そうですね。確かにDBを利用する手段がありましたね。
追加でご教示いただいたRPA_1とRPA_2の内容については、まだ理解が追いついていませんが、のちほど試してみようと思います。
どうもありがとうございました。
日本コンピュータシステム(CELFチーム)
パートナー
追記
同時にRPAを実行した際の挙動についても検証してみました。
検証1
アプリRPA_1とRPA_2を用意。DBでの参照などは行わず、バッチでシートが開くと
RPA処理が始まるような内容のアプリ。
① RPA_1をバッチ実行。
② RPA_2をRPA1の処理中に実行。
結果:RPA_1の処理終了後にRPA_2が実行されました。
このことから複数のRPAを実行した場合は、
実行順でRPAの処理が行われるようです。
検証2
アプリRPA_1とRPA_2を用意。バッチ実行時に最初にDBを参照して、他のRPAが
動作中であればRPA処理をスキップするようなアプリ。
① RPA_1をバッチ実行。
② RPA_2をRPA1が処理中に実行。
結果:RPA_1のRPA処理が終了後RPA_2のアプリが実行され、DB参照により
RPA_2のRPA処理はスキップされる。
これらの検証結果をまとめると、
RPA処理を含むアプリを複数実行した場合、先に実行したRPA処理が優先される。
また、先に実行したRPA処理が終わるまで他のアプリのRPA処理は待ちとなる。
ただし、RPAアクション以外の処理は待ちにならず、実行される。
注目点は「RPAアクション以外の処理は待ちにならず、実行される。」だと思います。
RPA処理中のフラグをDBに書き込むことで、別アプリでも起動時に
DBのフラグをきちんと参照することができるようです。
同時にRPAを実行した際の挙動についても検証してみました。
検証1
アプリRPA_1とRPA_2を用意。DBでの参照などは行わず、バッチでシートが開くと
RPA処理が始まるような内容のアプリ。
① RPA_1をバッチ実行。
② RPA_2をRPA1の処理中に実行。
結果:RPA_1の処理終了後にRPA_2が実行されました。
このことから複数のRPAを実行した場合は、
実行順でRPAの処理が行われるようです。
検証2
アプリRPA_1とRPA_2を用意。バッチ実行時に最初にDBを参照して、他のRPAが
動作中であればRPA処理をスキップするようなアプリ。
① RPA_1をバッチ実行。
② RPA_2をRPA1が処理中に実行。
結果:RPA_1のRPA処理が終了後RPA_2のアプリが実行され、DB参照により
RPA_2のRPA処理はスキップされる。
これらの検証結果をまとめると、
RPA処理を含むアプリを複数実行した場合、先に実行したRPA処理が優先される。
また、先に実行したRPA処理が終わるまで他のアプリのRPA処理は待ちとなる。
ただし、RPAアクション以外の処理は待ちにならず、実行される。
注目点は「RPAアクション以外の処理は待ちにならず、実行される。」だと思います。
RPA処理中のフラグをDBに書き込むことで、別アプリでも起動時に
DBのフラグをきちんと参照することができるようです。
日本コンピュータシステム(CELFチーム)
パートナー
ベストアンサー
こんにちは。
RPAの起動はタスクスケジューラーを利用し自動起動すると思うのですが、以前に似たような対応を行った際は、DBに起動確認用のテーブルを設け、起動開始時にレコードを追加し、終了時に作成したテーブルを削除するような方法で対応しました。
後続のRPAはレコードを検索し存在したら実行しないような仕組です。
テーブルを利用しなくても起動ファイルのようなものを利用しても良いかと思います。
RPAの起動はタスクスケジューラーを利用し自動起動すると思うのですが、以前に似たような対応を行った際は、DBに起動確認用のテーブルを設け、起動開始時にレコードを追加し、終了時に作成したテーブルを削除するような方法で対応しました。
後続のRPAはレコードを検索し存在したら実行しないような仕組です。
テーブルを利用しなくても起動ファイルのようなものを利用しても良いかと思います。