同一ロボットで連続実行すると前回の状態が残る

  • ロボット:UIP01・UIP02(どちらかをランダムで使用)
  • 実行トリガー:Power Automate から Orchestrator API を呼び出し
  • 実行方式:Unattended
  • Orchestrator 上のジョブステータス:どちらも「成功」

同じフローを2回連続で実行すると、以下のような動作になります。

  • ケース1:1回目 UIP01 → 2回目 UIP02 → 正常動作
  • ケース2:1回目 UIP01 → 2回目 UIP01(または UIP02 → UIP02) →
    前回の実行状態が残ったまま動作

つまり、同じロボットで連続実行した場合のみ、
キャッシュやアプリ状態がリセットされず、前回と同じ動きになってしまいます。
Orchestrator上は「成功」と表示されているため、異常終了ではありません。

同一ロボットで連続実行する際に、前回のセッションを完全に切断して再実行する方法はありますか?

同様の現象を経験された方や、設定確認方法をご存知の方がいらっしゃいましたら、
アドバイスいただけると助かります

一つのJobが終了したときにサインアウトしていないということでしょうか?
取り急ぎの現状把握のため、OSのイベントビューアーで、一連のJob実行時のサインイン/サインアウトの履歴を確認して、どのような挙動となっているかを確認してみてはと思います。

@Yoichi
ご回答ありがとうございます。
イベントビューアーで確認したところ、Job終了時にユーザーは正常にサインアウトしていました。
そのため、OSレベルではセッションは正しく切断されているようです。

ただ、同一ロボットで2回目の実行を行うと、
「プロセスを開始」で呼び出している Python が起動せず、アクティビティがスキップされたような状態になります。

そこで何が起こっているかを調べた方がよさそうに思えます。
ログなり、OrchestratorのJob Recordingで状況を把握する、プロセスを開始アクティビティではなくProcessクラス等を使って実行時の標準出力、エラー出力を確認する等をした方がよいように思えますが、いかがでしょうか?

@Yoichi
ありがとうございます。
確かに、実際に何が起こっているのかをログなどで確認した方が確実ですね。
OrchestratorのJob Recordingで状況を把握したところ問題なく動作しておりました。しかし、現状エラー出力ができてないので状況確認ができていません。
そこで、「Processクラス等を使って標準出力やエラー出力を確認する」とのことですが、
UiPath内ではどのようにそれを実装すれば良いでしょうか?

そこで、「Processクラス等を使って標準出力やエラー出力を確認する」とのことですが、
UiPath内ではどのようにそれを実装すれば良いでしょうか?

例えば以下になります。

@Yoichi
追加で確認を行いました。
改良したログ付きコードで確認したところ、
1回目の実行では Python が正常に起動して動作している一方で、
2回目の実行時には Python プロセス自体が起動していないことが分かりました。
イベントログや Invoke Code の出力にもエラーは出ておらず、
**Orchestrator ジョブ上は「成功」**になっていますが、
実際には Python が起動しておらず、スクリプトも実行されていませんでした。

2回目も新規ログインなので、条件的には1回目と変わらないはずですが....
あるいは、キャッシュの影響で、2回目が早く立ち上がりすぎているような要因もあるかもしれないので、プロセスの最初に数分の「待機」を追加して事象が改善するか確認可能でしょうか?

確認を行ったところ結果変わらずでした。他に何かご対応ありましたら教えていただければ助かります。

状況をよく理解していないでの発言で申し訳ありませんが・・
ちなみに、ロボットではなく、人の手で同じことを同じようにやった場合はうまくいくんですよね?
実行機にて、1回目の実行をし、ログオフし、2回目の実行をして を人間の手でやってみてまずうまくいくかどうかを確認するというのはどうでしょうか?
そこでうまくいかないようならロボット云々の話ではないと切り分けができそうです。

1 Like