処理を途中で止める方法

少し余談になりますが。

孫のワークフローないで問題が発生したときに、全体の処理を即時止めたいのですが

問題、というのは実運用では2種類考えられまして、

  1. そもそもUiPathのシステムが発生させる例外(Exception)
  2. 発生が想定されるけど、UiPathはエラーにしないもの(処理件数0等)

の、どちらかを明確にする必要があります。

後者であれば、Terminate Workflowでもいいのですが、Throw アクティビティで例外を発生させるのも方法として検討してみてください。
(引数のExceptionには、最初は New Exception(“エラーメッセージ”) のように入力すれば動作します)

Throw と、Terminate Workflowの違いは、Try catchで受け取れるかどうか、という点になります。
将来的に。
・エラーが発生したときに親Workflow内でリカバリをして操作を継続する処理を組み込む
・起動しているアプリケーション等は一旦閉じる
・終了前にログを吐き出したい
といった要件が追加された場合には、Throwで親Workflowに例外を返してやるほうが、柔軟に処理ができるようになります。Try Catchで握りつぶすこともできてしまうので、Workflowを慎重に作る必要が出てきますが。
(兎にも角にも問答無用で止めたい、といのであれば、Terminate Workflowのほうが正解です)

#もっと過激な方法で、Invoke Methodを使用して、System.Threading.Thread.CurrentThreadのAbortを呼び出す方法も……UiPath側が「いつの間にか実行終わっちゃったよ!?」というエラーを出すほどに一瞬で止まります。

2 Likes