大量データの途中でエラーになる時の対処法

処理対象のデータが毎日200件ほどあり、工数が多いので自動化しても登録には1件辺り4分かかります。
そのため、昼間には動かせないので夜間に動かします。

この処理中に想定外のエラーが発生した時、例えば199件目まで登録できてもまた1件目からやり直しになってしまいます。

処理対象のデータはcsvなどに出力はしておらず、UiPath上で構築するデータテーブルになります。

この場合、どうしたらエラーで一からやり直しになった時処理対象から外すことができるでしょうか。

オーケストレータのキューと言う機能を使うと、1処理情報毎に成否が記録される…
と言う認識です…

失敗したジョブは、原因調査後、リラン…だったかなぁ…

1 Like

私は、このような

  • 時間がかかり、止まった時に1からやり直すのが大変
  • 二重で同じデータと処理させたくない

という要件の場合、処理結果をエクセルに書き込み「実施済みかどうか、再度処理すべきか」を管理するようにしています。
別にエクセルでなくても良いのですが、一番簡単なので。

イメージですが、以下ページの画像のようなエクセルに、
1件毎に処理結果を書き込み、「処理済みのデータ」はスキップ(処理しない)ようにします。

オーケストレータのキューやDataServiceに処理過程・結果を書き込んだり、処理分散するのも手かもしれませんが。。。

3 Likes

ちょっと背伸びしてReFrameworkを使ったらいかがでしょう。
例えば199件目で対象のシステムが想定外のエラーが発生したとき
199件目から再開する。例えば3回(Config.xlsxに回数が設定できます)まで
再トライしてもNGなら199件目を飛ばして200件目から処理を再開する。ことが出来ます。
UiPath ReFramework Project Input From Excel/Datatable | Write Status to Excel | UiPath RPA Tutorial - YouTube
を参考にReframeworkを変更し、OrchestratorのキューでなくExcel一行ずつ
を処理するようにすればいいと思います。
英語はちょっと・・・なら古くなってしまいましたが、
GitHub - miyaichi/ReFramework-Template-Excel-Transaction: Excelファイルのデータをトランザクションとして処理するUiPath Reframeworkテンプレート
を参考にしたらいかがでしょう。

1 Like

ReFrameworkを使用しています。
しかし、データテーブルが複数になるためGetTransactionItemでは複数のデータテーブルを構築するのみにしており、Processで各データテーブルを1件ずつ処理するようにしています。

1つ目のデータテーブルの処理が終わったら2つ目のデータテーブルの処理というような流れです。

ReFramwork本来の使い方にされたほうがいいと思います。
Init Stateで
複数のデータテーブルを構築し、
Get Transaction Data Stateで
データテーブルの1件ずつをGetTransactionItemとして
データテーブル全て終わったら次のデータテーブルに対して同様にGetTransactionItemをAssign
Process Transaction Stateで 処理する
といったところでしょうか。
これ以上細かいことになると、申し訳ありません経験不足で説明し切れません。

2 Likes