Automation Anywhere A2019ではフローをドラッグ&ドロップで構築していくことで業務を自動化するのですが、得られたデータの個数だけ同じ処理を繰り返したり (繰り返し処理)、得られたデータの条件によって処理を変えたり (条件分岐)といったこともやりたくなってくるでしょう。そのような場合、フローは単純に一方向に流れるだけでなく、分岐したりループしたり、時にはこれらの処理が入れ子になったりすることもあります。A2019ではどのような処理が可能なのかについてみていきます。
環境
- Automation Anywhere A2019.14 (ビルド5322)
1. ループ処理
**「ループ」はRPAの処理で得られたデータの個数分/指定回数だけ繰り返したり、指定条件を満たす間ずっと繰り返しをすることができる便利なしくみです。ループ処理には「ループ」「Continue」「Break」**の3種類のアクションがあります。
公式な説明は以下にあります。
-
[ループ] パッケージ - 製品ドキュメント
- [ループ] アクションを使用する - 製品ドキュメント
「ループ」をドラッグ&ドロップすると、"折り畳み式の領域" が作られ、その中にアクションを入れられるようになります。ループは入れ子にすることもできます。
ContinueやBreakはIf文と入れ子で利用した場合に、条件分岐した特定の枝の指定した個所で、繰り返しの最初に戻ったり (Continue)、ループの "折り畳み式の領域" を抜けて次の処理に移ったり (Break) することができます。
右側の「アクションの詳細」パネルでは以下のようなオプションが利用できます。
1-1. データの個数分/指定回数だけ繰り返し
**Loop Type=反復子 (Iterator)**で利用できます。反復子のリストで利用できるオプション一覧は[ループ] パッケージを参照してください。既定では「n回」になっています。実際にドロップダウンに出てくる表記は以下ですが、製品ドキュメントと訳語が違うものが結構あるので注意してください。
CSV/TXT
CSV/TXTの各行に対して
Eメール
メールボックス内の各Eメールに対して
Excelの基本操作
For each row in worksheet
Excelの高度な操作
For each row in worksheet
Office 365 Excel
シートの各行
Office 365カレンダー
カレンダーの各会議
XML
XML Datasetの各ノードに対して
データテーブル
テーブルの各行用
データベース
SQLクエリデータセットの各行に対して
ファイル
フォルダーの各ファイルに対して
フォルダー
フォルダー内の各フォルダーに対して
リスト
リストの各項目に対して
ループ
n回
レコード内の各値に対して
辞書
辞書内の各キーに対して
辞書内の各値に対して
ちなみに、この条件はパッケージSDKで独自に開発して追加することが可能です。興味がある場合は見てみてください。
1-2. 指定条件を満たす間ずっと繰り返し
Loop Type=Whileで利用できます。Whileのリストで利用できるオプション一覧は[ループ] パッケージを参照してください。実際にドロップダウンに出てくる表記は以下ですが、製品ドキュメントと訳語が違うものが結構あるので注意してください。
条件は11個まで並列に配置でき、And/Or (および/または)条件で関係付けることができます。
Boolean
Boolean condition
Image Recognition
画像ファイルが画像ファイルで検出されない
画像ファイルがウィンドウで検出されない
ウィンドが画像ファイルで検出されない
ウィンドウがウィンドウで検出されない
画像ファイルが画像ファイルで検出される
画像ファイルがウィンドウで検出される
ウィンドが画像ファイルで検出される
ウィンドウがウィンドウで検出される
Javascript
Script is successful
Script is unsuccessful
Legacy Automation
Web control exists
Web control does not exist
Window control is active
Window control does not exist
Window control exists
Window control is not active
Script is unsuccessful
Script is successful
Child window does not exist
Child window exists
Ping
Pingが成功
Pingが失敗
Taskbot
Task successful
Task unsuccessful
VBScript
Script is successful
Script is unsuccessful
アプリケーション
アプリケーションが実行されていません
アプリケーションが実行中です
ウィンドウ
ウィンドウが存在する
ウィンドウが存在しない
データテーブル
Data table is empty
Number of columns
Number of rows
ファイル
ファイルの日付
ファイルが存在する
ファイルが存在しない
ファイルサイズ
フォルダー
フォルダーが存在しない
フォルダーが存在する
リスト
リスト変数
レコーダー
オブジェクト
数字
数字条件
文字列
文字列の条件
日時
Date Condition
辞書
キーを確認
Check for a single value
ちなみに、この条件はパッケージSDKで独自に開発して追加することが可能です。興味がある場合は見てみてください。(If条件と同じものが出てきます)
2. 条件分岐
**「If」は、指定条件を満たす場合と満たさない場合で別の処理を実施できるしくみです。Ifパッケージには「If」「Else If」「Else」**の3種類のアクションがあります。
公式な説明は以下にあります。
- [If] パッケージ - 製品ドキュメント
「If」をドラッグ&ドロップすると、"折り畳み式の領域" が作られ、その中にアクションを入れられるようになります。Ifは入れ子にすることもできます。Else Ifは条件に満たない場合に次の条件分岐を定義できます。Elseはいずれの条件にも合わない場合の処理を定義します。
条件のリストで利用できるオプション一覧は[ループ] パッケージを参照してください。実際にドロップダウンに出てくる表記は既出の「ループ」のWhileで出てくる条件のリストと同一です。
条件は11個まで並列に配置でき、And/Or (および/または)条件で関係付けることができます。
3. エラー処理
特定の箇所でエラーが発生した際に異常終了することを抑える目的で、エラー処理を施すのがお勧めです。v11を知っている方は、前は「Begin Error Handling / End Error Handling」で囲んだ領域に対してエラーが起こったら、あらかじめ用意されたエラー処理を行った後「Continue」「Stop Task」を選ぶ形式でしたが、A2019ではより進化して**「試行」「キャッチ」「最終」「スロー」という4つのアクションを使うことができます。アクション名が日本語になっているので、何だこりゃ、と思うかもしれませんが、プログラミング言語でよくある Try/Catch/Finally/Throwです。(ここは英語の方がわかりやすいかもしれません)
これらはエラーが起こった時の「条件分岐」として使うことができます。「キャッチ」の"折り畳み式の領域"**の範囲がエラー処理を行う範囲、エラーが起こったら「キャッチ」の内容を実行、「最終」の内容はエラーが起きても起きなくても「試行」や「キャッチ」の内容が実行された後に実行されます。
「スロー」は、任意の場所でエラーが発生したことにできるアクションです。これにより「キャッチ」の内容にジャンプすることができます。
A2019エラー処理については、以下の記事でより詳しい例が記載されているので参照してみてください。
『Automation Anywhere - 【A2019】Error Handlingの紹介』- C&S Engineer Voice
4. ステップ
最後に、フローの処理自体には影響を与えないのですが、見た目を整理するための**"折り畳み式の領域"**を作るアクションが「Step」です。詳細は別の記事『Automation Anywhere A2019の「コメント」と「ステップ」で見やすいフローを作ろう』で解説しているので参照してください。