キーワード解説

UiPathで良いとされるワークフロー ReFrameworkを解説

UiPathのReFrameworkが分からない。

そんな方のために、RPAコンサルタントとして多くのお客様に導入経験のあるプロコアラがReFrameworkについて解説していきます。

この記事を見ることによって、ReFrameworkを用いた自動化ワークフローを作成できるようになります。

 

ReFrameworkは、自動化ワークフローを作るテンプレート

ReFrameworkはRobotic Enterise Frameworkの略です。

つまりはUiPathが用意してくれた自動化フレームワークを作成する際のテンプレート(ひな形)です。

ReFrameworkには、例外発生時の処理やログの出力などが初めから入っており、信頼性の高いワークフローが作成できるようになっています。

例えばエラーが発生した際にログを見ることによってどこで失敗したかすぐに分かります。本来作成したかった業務プロセスの自動化処理を作ることに集中でき、作成時間を削減できるメリットがあります。

デメリットとしては、理解するのに時間がかかること。簡単な業務には冗長すぎて逆に分かりづらくなってしまうこともあるため、臨機応変に使っていくことが大事です。

 

ReFrameworkの前置き

ReFrameworkの構成について説明していきます。

技術的な内容になりますが、全て理解しようとせず分からなくなったらこのページに戻ってきて都度確認していくスタイルを推奨します。

全て理解してからやろうとすると、何もできません。ダーティースタートで、やりながら覚えていくやり方が上達の近道です。

 

ReFrameworkは、「ステートマシン」と「トライキャッチ」を使用しています。

もし、まだトライキャッチについて理解できていない方は、こちらを先に見ることをお勧めします。

UiPath トライキャッチをRPAのプロが解説UiPathのトライキャッチが分からない。 そんな方のために元エンジニアでRPAコンサルタントのプロコアラが、トライキャッチについ...

 

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つの処理には何も入っていないため使用するアプリケーションがある場合はここに追加する必要があります。

例えば、使用するテキストエディタとブラウザなどを追加するわけです。

 

見習いタロー
見習いタロー
なんでコンフィグ設定は変数にせずにExcelに持つの?
プロコアラ
プロコアラ
Excelの場合、処理が同じでデータだけ違うような業務に流用できるというメリットがある。あとデータを変えたい場合にワークフローを修正する必要が無くなるので保守性が高くなる。

 

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では、ビジネス例外とアプリケーション例外を明確に分けて処理を行っています。これは、データに不備があった場合はそのデータを飛ばすために、分けています。

ビジネス例外とアプリケーション例外について分からない人は、こちらの記事をご覧ください。

UiPathにある例外の種類と取り扱い方UiPathの例外(エラーのこと)について知りたい、そして例外が発生しても大丈夫な安定した自動化処理を作成したい。そう考えては無いでしょ...

 

エラー発生時は即座に処理を中断せずに初期化処理から再度やり直します。

ちなみに、ステート遷移条件の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スクールではアカデミーよりも詳しく解説していますので、参考にしてください。

UiPathアカデミーLV3 UiDemo自動化が分からない人への補足解説UiPathアカデミーのLV3では応用編としてReFrameworkを使用して業務の自動化を行い、ReFrameworkとOrchest...
UiPathアカデミーLV3課題 顧客のセキュアハッシュ算出の解説とお手本UiPathアカデミーのLV3 Advancedクラスは、REFrameworkを用いた自動化ワークフローの理解を促すコースです。 ...
UiPathアカデミーLV3課題 年次レポートの生成 解説とお手本UiPathアカデミーのLV3 Advancedクラスは、REFrameworkを用いた自動化ワークフローの理解を促すコースです。 ...
ABOUT ME
律野桜哉
本業で、外資系企業でRPAコンサルタントとして大企業向けにRPAの導入をお手伝いしています。副業でも大企業以外の方にもRPAを使っていただけるようにコアワカRPAスクールやUdemyで講師をしてUiPathの魅力を伝えています。Udemyのベストセラー講師。お得なクーポンをサイト内で配布中。
お得なUdemy割引クーポンでRPAを動画で学ぼう

RPA、UiPathについて動画形式で学べるコアワカのUdemy講座を
いつでもお得な価格で受講できるクーポンを発行しています。

動画を受講したい場合はボタンをクリックしてください。
クーポンコードが適用されたUdemyコースのリンク一覧ページに移動します。