UiPathのReFrameworkが分からない。
そんな方のために、RPAコンサルタントとして多くのお客様に導入経験のあるプロコアラがReFrameworkについて解説していきます。
この記事を見ることによって、ReFrameworkを用いた自動化ワークフローを作成できるようになります。
ReFrameworkは、自動化ワークフローを作るテンプレート
ReFrameworkはRobotic Enterise Frameworkの略です。
つまりはUiPathが用意してくれた自動化フレームワークを作成する際のテンプレート(ひな形)です。
ReFrameworkには、例外発生時の処理やログの出力などが初めから入っており、信頼性の高いワークフローが作成できるようになっています。
例えばエラーが発生した際にログを見ることによってどこで失敗したかすぐに分かります。本来作成したかった業務プロセスの自動化処理を作ることに集中でき、作成時間を削減できるメリットがあります。
デメリットとしては、理解するのに時間がかかること。簡単な業務には冗長すぎて逆に分かりづらくなってしまうこともあるため、臨機応変に使っていくことが大事です。
ReFrameworkの前置き
ReFrameworkの構成について説明していきます。
技術的な内容になりますが、全て理解しようとせず分からなくなったらこのページに戻ってきて都度確認していくスタイルを推奨します。
全て理解してからやろうとすると、何もできません。ダーティースタートで、やりながら覚えていくやり方が上達の近道です。
ReFrameworkは、「ステートマシン」と「トライキャッチ」を使用しています。
もし、まだトライキャッチについて理解できていない方は、こちらを先に見ることをお勧めします。
ReFrameworkの構成
ReFrameworkのワークフロー全体図は図の通りです。ステートマシンを使用しています。
フローチャートだと複雑な処理でもステートマシンだと簡単に書くことができます。
簡単すぎる処理だとステートマシンを使うと冗長になってしまう場合があるため注意が必要です。
簡単に分類すると、全体は4つのステートで構成されています。
Init | アプリケーションの初期化と設定ファイルの読み込みを行います |
---|---|
Get Transaction Data | データの取得を行います |
Process Transaction | 自動化のメイン処理です 取得したデータを使用して自動化処理を実施します |
End Process | 処理完了後の後処理を実施します |
ステートマシンは、状態と状態遷移する条件が設定でき、ステートに入った時の動作と出ていくときの動作を設定していきます。
Init処理
・ステート:Init(初期化ステート)
・Entry(入った時):コンフィグの読み出し、アプリの初期化などの初期化処理
・Exit(出ていく時):何をしない
・状態遷移:成功時はメイン処理へ、失敗時は終了処理へ
ステートとステートを結ぶことで自動的にステートに遷移条件が追加されます。
遷移条件のプロパティを見てみると、Initのステート遷移条件の成功はsystemErrorという変数を見ていることが分かります。
ReFrameworkでは共通処理をxamlで分けておき、その処理を呼び出します。
こうすることによって可読性が高まるメリットがあります。
また、渡す引数によって処理を変えることができるようになります。
Initステートでは大きく分けて3つの処理を呼び出しています。
・InitAllSettings.xaml:Config.xlsから設定を読み込み保存します。
・KillAllProcesses.xaml:使用するアプリケーションを事前に閉じます
・InitAllApplications.xaml:使用するアプリケーションを開きます。
KillAllProcessesとInitAllApplicationsを実行することで使用するアプリケーションをまっさらな状態に初期化しています。
2つの処理には何も入っていないため使用するアプリケーションがある場合はここに追加する必要があります。
例えば、使用するテキストエディタとブラウザなどを追加するわけです。
Get Transaction Data
・ステート:Get Transaction Data
・Entry(入った時):GetTransactionData.xamlを呼び出し、データを取得します。
・Exit(出ていく時):何をしない
・状態遷移:
New Transactionは、Process Transactionへ
No Dataは、End Processへ
遷移条件は、QueueItem型のTransactionItemを見ています。
GetTransactionDataステートから呼ばれるXamlファイルはGetTransactionData.xamlの1つだけです。
この中で実際にデータの取得を行っています。
ReFrameworkの処理は、デフォルトではOrchestratorのキューを使用する前提になっています。
このため、Orchestratorを使用しない場合、GetTransactionDataは、変更する必要があります。
UiPath Go!にあるAttended FrameworkはReFrameworkよりも軽量なため、Orchestratorを使用しない場合は、Attended Frameworkを利用することも検討しましょう。
Check Stop Signalアクティビティは、Orchestratorからの停止信号の有無を確認する際に使用します。
Process Transaction
・ステート:Process Transaction
・Entry(入った時):Process.xamlを呼び出して取得したデータを処理する
・Exit(出ていく時):何をしない
・状態遷移:
ErrorはInitへ
Rule ExceptionはGet Transaction Dataへ
SuccessはGet Transaction Dataへ
ReFrameworkでは、ビジネス例外とアプリケーション例外を明確に分けて処理を行っています。これは、データに不備があった場合はそのデータを飛ばすために、分けています。
ビジネス例外とアプリケーション例外について分からない人は、こちらの記事をご覧ください。
エラー発生時は即座に処理を中断せずに初期化処理から再度やり直します。
ちなみに、ステート遷移条件のSuccessはアプリケーション例外もビジネス例外も発生していないことを条件としています。
これらは、Catches文の中でexceptionが代入されます。
実際に自動化したい処理を、このProcess.xamlへ追加していけばReFrameworkフレームワーク内に自分の処理を埋め込むことができます。
End Process
・ステート:End Process
・Entry(入った時):CloseAllApplications.xamlを呼び出してアプリケーションを閉じる。
・Exit(出ていく時):何をしない
・状態遷移:無し
後処理を行うステートですが、CloseAllApplications.xamlには何も入っていないため、自動化で使用したアプリケーションは自分で追加する必要があります。
ReFrameworkのデータ
ReFrameworkの変数を解説します。
TransactionItem | QueueItem型
データ処理の継続条件として使用される。 キャンセル時など、Nothingにして処理を終わらせている。 キューアイテムを取得アクティビティで結果を格納する。 もし処理するキューが無ければ、Nothingとなる。 |
---|---|
SystemError | Exception型
例外が発生したかどうかの判断に使用 |
BusinessRuleException | BusinessRuleException型
ビジネスルール例外が発生したかどうかの判断に使用 ビジネスルール例外はデータ不足などの人為的なエラー |
TransactionNumber | Int32型
デフォルトのキューを利用する方法では使用しない |
Config | Dictionary型
InitAllSettings.xamlにin_ConfigFile(コンフィグファイルのパス)、 in_ConfigSheets(有効シート名)を渡し、返ってくる結果 ConfigファイルのSettings、Constantsシートの中に入っているキーと値をペアにしてDictionary型に格納する。 使うときはConfig(“KeyName”).ToStringのように使用する。 当たり前だが、InitAllSettings.xaml呼び出し後にのみ使用可能。 |
RetryNumber | Int32型
リトライ回数 |
TransactionField1 | String型
取得したキューのデータを格納する変数として用意されています。 デフォルトでは使用しない |
TransactionField2 | String型
取得したキューのデータを格納する変数として用意されています。 デフォルトでは使用しない |
TransactionID | String型
取得したキューのデータを格納する変数として用意されています。 デフォルトでは、now.ToStringで現在時刻が入っています。 |
TransactionData | DataTable型
通常のキューを使用する方法では使用されない |
キューアイテムの追加方法
QueueItemの追加は、ReFrameworkの中には入っていません。
自分でキューを追加するプロセスを作成しなければなりません。
Excelファイルを読み込んだDataTableからForeachでキューアイテムを追加するといったフローが一般的です。
キューアイテムで追加のオプションで、何の情報をキューに入れるか設定できます。
キューアイテムの使用方法
キューデータの取得は、GetTransactionDataステートで行っており、QueueItem型のTransactionItem変数に入ります。
しかし、ReFrameworkには取得したキューを使用する処理は入っていません。
これはProcess.xamlの中に自分で追加していかなければなりません。
GetTransactionDataで取得したTransactionItemはProcessの引数として渡ってきますので、Process.xamlのなかでは、以下のようにして使用することが可能です。
in_TransactionItem.SpecificContent(“CashIn”).ToString
ReFrameworkの使い方
新規プロジェクト作成時、「Robotic Enterprise Framework」を選択するだけです。
キューを使用しない方法
Orchestratorが導入されていない場合は、キューを使用することができません。よってReFrameworkをキューを使用しないように修正しなくてはいけません。
キューを使用しない場合はQueueItem型のTransactionItemではなく、DataTableのTransactionDataを使用する方法があります。
Webスクレイピングで取得した情報はDataTable型になっていますので、InitステートのFirst Runとある最初の1回しか実行されない箇所に処理を実装します。
もしデータを抽出したい場合は、以下のようにして実現できます。
TransactionData.Select(“Type=’WI5′ AND Status=’Open'”).CopyToDataTable
TransactionItemはDataRow型に変更して、Process.xamlに渡して処理を行います。
これはUiPathアカデミー LV3 セキュアハッシュのGithubリポジトリを見てもらったほうが理解が速いかもしれません。
次のアクション
実際にReFrameworkで処理を作りながら理解してみましょう。
ReFrameworkについては、UiPathアカデミーのLv3でチュートリアルがあるのでそちらを参考にしてみるとよいでしょう。
コアワカRPAスクールではアカデミーよりも詳しく解説していますので、参考にしてください。
RPA、UiPathについて動画形式で学べるコアワカのUdemy講座を
いつでもお得な価格で受講できるクーポンを発行しています。
研修にも使用できる書籍もこちらから購入が可能です。
動画を受講したい場合はボタンをクリックしてください。
クーポンコードが適用されたUdemyコースのリンク一覧ページに移動します。