見出し画像

WinActor:業務の途中からシナリオ実行をする方法について考えてみる

「業務の途中からシナリオ実行をする」というのは、例えばシナリオを頭から実行していく中で予期せぬエラーが起こりシナリオを途中で止めてしまうことになった場合でも、また実行すれば処理途中の業務を冒頭から行うことなく、さきほど止まってしまった箇所からスタートできるようする、ということです。

エラーで止まってまた実行したときに、処理が終わった部分はそのままで
まだ終わっていない処理から実行したいんだけどできますか?
ということをよく聞かれます。


こんにちは!
ワークスアイディ キャンスタ編集部 RPAエンジニアのすずです。

エラー対策シリーズでこれまでいくつか記事を出してきました。
エラーを出さない作り方、エラーが出ても動きを止めない構成、エラー時の情報を収集して修正に役立てる方法など、私自身も日々試行錯誤して取り組んでいます。

⭐既出の記事もご参照ください
☑ 「シナリオファイル呼び出し」をエラー対策として活用する方法
☑ 「例外処理」を使いこなす!予測できるエラーは回避して、止まらないシナリオを作成する

そしてエラーに関して、お客様にもよくいただくご要望やご質問の一つが今回のテーマである『もしエラーが起こって途中でシナリオを一度止めてしまっても、リトライしたら続きから実行するようにつくれないか』ということです。

エラーが起きてシナリオを停止し、再度実行しようとしたときに状態を初期化しないといけないということがたびたびあります。
状態を初期化するというのは、使用していたファイルを保存せずに閉じて元のフォルダに戻したり、起動しているシステムを閉じておいたりと、シナリオを最初から実行するときと同じ環境に戻すことを指します。
その状態に戻すのはそこそこの手間ですし、せっかく途中まで処理が終わったのにまたやり直すのは時間的にもったいない、リトライしたら続きからやってほしい!と思うことは当たり前のことです。

しかしながら、シナリオ作成代行をしている場合はどうしても第一に「完成」、その次は「エラーをできるだけ潰す」ことが優先されやすく、リトライできる仕組みづくりまでは手が回らないケースも多いです。

ですが、やはり長い目でみるとリトライの仕組みはとても重要ですので、どのような方法で実現できるのかを考えていきたいと思います。
他にも様々手段はあると思いますので、ぜひ考えてみてください。

エラーが100%起きないシナリオを作れたらどんなにいいことか、、と思いますが
それが一番難しいかもしれません



1.進捗ごとにフォルダを分ける

リトライできる仕組みに必要なのは「その業務がどの工程まで終わっていて、どこからが未対応なのか」を正確に把握できるようにすることです。
そこで、作業内容ごとにフォルダを用意しておき、そのフォルダのどこにファイルがあるかによって業務の進捗を判断する方法を考えてみます。

例として、基幹システムでデータを検索・ダウンロードし、メール添付する業務の場合を考えてみます。
手順の流れとしては以下になります。

◎業務サンプル1
1.申請書Excelから、ID、依頼者情報(氏名、メールアドレス等)を取得
2.システムでID検索、CSV形式でダウンロード、所定フォルダに格納
3.ダウンロードしたCSVファイルをメール添付してユーザ宛に送信
4.処理が終わった申請書Excelは「処理済み」フォルダへ移動

続いて予め用意しておくフォルダの構成を考えます。
今回は以下の様に設定しました。

■01_未処理
 ∟処理前の申請書Excelファイルを格納(手作業)
■02_ダウンロード済
 ∟基幹システムでダウンロードが済んだ申請書Excelファイルを格納
■03_処理済み
 ∟メール送信が完了した申請書Excelファイルを格納
■04_メール送信前
 ∟基幹システムから出力したCSVファイルを格納
■05_メール送信後
 ∟メール送信が完了したらCSVファイルを格納

各工程が終わるたびにファイルを移動させる工程を入れることにより、シナリオが途中で止まっていても、業務のどこまで完了しているかを把握できるようになります。
この例の場合、最後まで正常に処理が終了すると01、02、04のフォルダは空になって、03と05フォルダに処理が終わったファイルが格納されている状態になります。

シナリオフローチャートで表わすと以下のようなイメージになります。

作業途中のファイルがないかフォルダを確認して、ファイルが残っていればそこから実行し、ファイルがなければスキップして次の工程へ進む(もしくは最初から実行していく)という手順で実行するようになっています。
実際の開発の際には、重複する工程(上図でいうと【申請書から値取得する工程】をサブルーチン化したり、工程ごとにシナリオを分けるといった構成にすることで視認性や使いやすさも向上させることもできます。


2.Excel進捗管理をおこなう

もう一つの方法をご紹介します。業務の進捗管理をおこなうという点は同様ですが、進捗管理用のExcelファイルを一つ用意して進捗を記録しながら処理を進めていく方法です。

例として、以下のWeb EDIからダウンロードしたデータを加工してからPDF化し、基幹システムへ取り込む業務で考えてみます。

◎業務サンプル2
1.ブラウザを起動して、取引先のEDIシステムへログイン
2.対象年月のデータを検索してデータをダウンロード
3.ダウンロードしたファイルを所定のフォルダへ保存
4.ダウンロードしたファイルのデータを作業用Excelにコピーして加工
5.加工したExcelファイルをPDF化
6.基幹システムにPDFファイルを取り込み
7.社内担当者宛にメールで完了通知を送信

元々の業務では使用していない、WinActorでの実行進捗管理用のExcelファイルを用意します。

シナリオの中で、工程が終わるごとにこの管理表の該当箇所に”済”などの文言を書き込んでおきます。
各工程の冒頭でWinActorに該当箇所の値を確認させ、空白ならその工程の処理を実行し、値が入っていればスキップして次の処理へ進むようにしておくことで、前回の処理が途中で終わっていても空白の工程から実行をリトライできるようになります。

日付降順に記録することで、値取得するセル位置を固定できます

以下、シナリオのイメージです。


3.さいごに

いかがでしょうか。
エラーが起こりそうな箇所がはじめから分かっているのであれば、部分的に例外処理や繰り返しを使って成功するまで実行させる等の対策を講じることも可能です。
一度シナリオを止めても、状態の初期化をおこなわなくてもそのまますぐリトライできる仕組みにしておくことで利便性がぐっと上がりますので、ぜひ挑戦してみてください!

最後までお読みいただきありがとうございました。
また次回お楽しみに!
ワークスアイディ キャンスタ編集部 RPAエンジニアのすずでした。

今年も花粉の時期がやってまいりました。
昔は重度のスギ花粉症でしたが、ここ数年スギは改善して代わりにヒノキがNGに。。
そんなことあるんですね。


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!

最後まで読んでいただきありがとう御座います!Works ID_DXサイトも是非ご覧ください👍!