Last updated on 2022年8月9日
UiPathのフレームワークといえば Robotic Enterprise Framework 、通称REFrameworkが有名です。
本記事ではこのREFrameworkについて簡単にポイントを紹介します。
Robotic Enterprise Framework??
Contents
ワークフロー開発で抑えるべき観点
REFrameworkを紹介する前に、その良さを理解してもらうために、まずは開発にて抑えるべき観点を説明します。
ワークフローを開発では次の4つの観点を抑える必要があります。
- 信頼性
- 効率性
- 保守性
- 拡張性
信頼性
信頼性には「安定して動作する」「安全に動作する」の2つ側面があります。
前者は、例外やエラーが起こった際にも意図したとおりにロボットが動作し、正常に、安定に動作することをいいます。
後者は、パスワードのハードコーディンによる漏洩の恐れがない・メールの自動送信におけるご送信がないなどのセキュリティ面における安全性についてですね。
REFrameworkでは、例外処理やロギング処理が標準で実装されています。
効率性
効率性とは「効率的な開発ができる」「効率的なテストができる」など開発上の効率をいいます。
効率的な開発の一例として、プロセスを操作単位ごとに分解しそれぞれ別のワークフローにて開発を行う、つまり部品化(パーツ化)を行う手法が推奨されています。
- 類似業務において再利用が可能となる
- 動作テストでは特定の操作のみ確認をすることができる
- ワークフローの階層が浅くなるため、可読性が保持される
- 修正の際、すべてのワークフローを修正する必要がない
保守性
「他の開発者でも保守できる」「継続した保守を実施しやすい」という点がポイントになります。
保守性を高めるには、開発の際のルールを決め共有することが有効です。
命名ルールや配置ルールなんかはその一つです。
REFrameworkは、フレームワークであり開発の一つの基準となり得ます。
拡張性
拡張性という言葉の解釈が難しいですが、要は小さく初めても大規模な展開が必要になった際、再度ワークフローの設計は必要なく、Robotの台数の調整のみで対応可能であるということをいいます。
REFrameworkは、Orchestratorのキューなど、トランザクションの考え方に基づいているため、たとえ処理の量が増えてもワークフローを作り直す必要がありません。
REFrameworkとはそもそも何なのか
ReFrameworkとは、Robotic Enterprise Frameworkの略称でありUiPathが提供しているワークフロー開発のためのフレームワークになります。
フレームワークとは、設計の骨組みのようなものであり、開発者の開発負担を減らすことを目的とした開発の枠組みです。
このREFrameworkの特徴としてワークフローの開発において抑えるべき観点が網羅されているとともに次のような特徴を持っています。
- 初期化処理が実装されている
- 例外処理が実装されている
- ロギングが実装されている
- カスタマイズを容易に行うことができる
大規模開発に適した作りとなっており大規模な自動化を計画している場合は是非理解をしておきたいフレームワークです。
特殊なレイアウト「ステートマシン」
UiPathで開発の際に利用する一般的なワークフローとして、[シーケンス] と[フローチャート] があります。
実は、もう一つ「ステートマシン」というワークフローレイアウトがあり、REFrameworkではこれが利用されています。
ステートマシンにおける処理の流れは、ステート(状態)に基づき処理の順序を定義します。
ステートの定義は広く行うことができ、例えば社員名簿の処理業務を例にあげると「対象データの社員番号が〇〇桁台である状態」や「社員の役職が〇〇である状態」というステート定義ができます。
ステートマシンは【ステート(State)】アクティビティと【最終ステート(Final State)】アクティビティの2つのアクティビティより構成されています。
ステート(State) アクティビティ | [Entry]・[Exit]・[Transition(s)] という 3 つのセクションがあります。[Entry] セクションと [Exit] セクションでは、それぞれのタイミングで実行する処理を定義します。[Transition(s)] セクションには、状態に応じたトリガー・条件・その時の実行処理を定義します。 |
最終ステート(Final State) アクティビティ | [Entry] セクションのみで構成されています。フローの終点と考えてください。そのため、上記のステートアクティビティの宛先として設定することが出来ます。 |
REFrameworkの仕組み
REFrameworkは、先ほど説明したステートマシンを土台として、大きく4つのステートから成り立っています。
これら4つのステートを順次遷移することで処理を行なっていくのがReFrameworkです。
- 初期化(Init)
- トランザクションデータを取得(Get Transaction Data)
- トランザクションを処理(Process Transaction)
- プロセスを終了(End Process)
初期化(Init)
処理を開始するステートになります。
処理を開始するための次の3つの処理が行われます。
- 設定をConfigファイルから取得
- 資格情報の取得
- アプリケーションの起動
処理が成功すると、 処理は [トランザクション データを取得] ステートに遷移し、エラー発生時には [プロセスを終了 ] ステートに遷移します。
トランザクションデータを取得(Get Transaction Data)
処理を行うトランザクションアイテムを順次、取得するステートです。
新しいトランザクションが正常に取得されると [トランザクションを処理] ステートへ遷移し処理されます。
処理対象のデータがない場合やエラー発生時には [プロセスを終了] ステートに遷移します。
既定の設定では、キューアイテムからの取得ですが必要に応じてコレクションやデータテーブルなどのトランザクションアイテムの取得に変更できます。
トランザクションを処理(Process Transaction)
取得したトランザクションアイテムを使用し、単一のトランザクションを処理するステートです。
処理を行なった結果は、「成功」・「ビジネス例外」・「システム例外」毎にハンドリングされ処理されます。
プロセスを終了(End Process)
処理を終了するステートです。
処理中に起動したアプリケーションを閉じたり、データを保存するなどのクローズ処理を行います。
おまけ:トランザクションという考え方
REFrameworkを理解する上で欠かせない考え方に、トランザクションがあります。
トランザクションとは、データを処理する操作のことをいい、この中で処理されるデータのことをトランザクションアイテムと言います。
REFrameworkを利用しない通常のワークフローでは、一度だけ処理が行われる直線的な処理や処理の中で複数回反復が行われる反復処理が基本となります。
これらの処理ではトランザクションのためのデータの取得は一度しか行われません。
一方REFrameworkでは、トランザクションデータの取得が複数回にわたり繰り返し行われるように設定されています。
これにより、万が一エラーが発生し処理が中断した場合も、発生した箇所を特定し隔離した上で、残りのデータの処理を続けるという処理を実装する事ができます。
最後に
以上、REFrameworkについて概要を説明してみました。
一見とっつきにくい構造をしていますが、各ステートごとの役割が明確なので一度理解すれば使いこなすのはそこまで難しくありません。
また、Studioからは英語版のみが利用可能ですが、Marketplace からは日本語版も利用可能です。是非活用してみてください。
最後までお読みいただきありがとうございました。
では。