RPAツール UiPath をクラウド BPM の業務フローと API 連携させてみた
Questetra で描いた業務フローから REST API 経由で UiPath で作成したロボットを実行してみました

システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでの記事はこちら

最近 RPA ツール*1 を使う方・試す方が増えているのではないかと思います。Googleトレンドで調べたところ、日本国内で主に話題になっているものといえば

があげられます。中でも UiPath はサーバも含めて無料で試せるので人気が高いようです。

さて一方で、RPA ツールが非常に流行っていることもあり、ツールをとりあえず入れてはみたけど、いまいち効果が出せてない、という話をよく耳にします。
いろいろなケースが考えられますが、1つの解決アプローチとして、BPM*2 との連携活用があります。BPM で業務フローを整理して、業務上のどの部分を自動化すると効果的か検討した上で、効果の高い部分に RPA ツールを適用する、といった方法です。また業務フローの途中で BPM から自動的に RPA ツールを起動することができますので、BPM + RPA の組合せで RPA ツールをよりラクに・効果的に活用することもできます。
詳しくは以下のページをご覧ください。

RPA を成功に導く4つのステップ

無料で試せる BPM ワークフローと RPA ツールとの連携

ということで、今回は RPA ツール UiPath のロボットを、クラウド BPM ワークフロー Questetra で作成した業務フローから API*3 経由で起動できるかを検証しました。

*1 RPA ツール:Robotic Process Automation、PC での操作をロボットにより自動化して効率化するツール、自動実行するものをソフトウェアロボット・デジタルレイバーと呼んだりします
*2 BPM:Business Process Management、業務フローの改善サイクルをまわして成果を上げていく取り組み
*3 API:Application Programing Interface、プログラムを利用するための接続口、今回使うのは REST API(http リクエスト通信でやりとりする)になります
目次
1: UiPath と Questetra の連携イメージ
2: UiPath および Questetra での準備
2-1: UiPath 側の準備
2-2: Questetra 側の準備
2-3: 引数指定で動きを変える場合
2-4: 動作の確認
3: まとめ

1: UiPath と Questetra の連携イメージ

おおまかに図にすると以下のような形です。
UiPath Studio(以下、Studio)は設計ツール、UiPath Orchestrator(以下、Orchestrator)はサーバです。図には描いてませんが Studio と Orchestrator の間は UiPath Agent(以下、Agent)というツール経由で接続します。
※今回は REST API 経由で、Questetra → UiPath という連携です。他の方式での連携や、逆向き(UiPath → Questetra)の連携も可能です

2: UiPath および Questetra での準備

この章では具体的な設定について説明しています。技術的な部分に関心がない方は流し読みしてください。

2-1: UiPath 側の準備

この検証のために UiPath を本格的に触り始めたのですが、まずは考え方や用語とその関係性の理解に苦労しました。Orchestrator を触りながら理解した部分(「マシン」/「ロボット」/「ロボットグループ(Enviroment)」/「パッケージ」/「プロセス」/「ジョブ」の関係)について、以下の図がちょうどうまく表現されていました。
業務可視化Note 【機能一覧からわかる】UiPath Orchestrator 6種のできること 【主要機能2】シナリオ配布管理
同上 【主要機能3】シナリオ実行管理
UiPath のドキュメント内の Orchestrator の ER 図でもおおよそカバーされていました。

また、UiPath のドキュメントは日本語化がされていない部分があったり、フォーラムは英語の方が情報量が多いので、英語に抵抗のない場合には言語設定を English で扱う方がいいかもしれません。

やったことをざっと箇条書きにすると以下の通り。

  • Studio で自動化プロセスを設計(検証用であれば MessageBox がポップアップ表示されるだけのものでも OK)
  • デモ用 Orchestrator(https://demo.uipath.com)に接続してテナント登録(ここで登録するパスワードは後で API 実行の認証に利用することを想定して設定要)
  • 設計 PC および実行 PC を Agent 経由で Orchestrator に接続
  • Orchestrator で実行 PC を「マシン」として登録(ここで Windows のパスワードを入れないといけないのでどの PC で実行するかは留意要)
  • Studio で設計したものを Publish する → Agent 経由で Orchestrator に「パッケージ」としてアップロードされる
  • Orchestrator で実行「マシン」とひもづけて「ロボット」および「ロボットグループ(Enviroment)」作成
  • Orchestrator で「パッケージ」と「ロボットグループ(Enviroment)」とひもづけて「プロセス」作成

この「プロセス」を実際に動かすのが「ジョブ」で、Orchestrator からでも API 経由でも実行可能となります。
※「プロセス」を API で実行する場合には、Processes(Releases) の Key が必要で、「プロセス」を作成した後に API で取得するしかなさそう。このような API 仕様になっているのは、おそらく以前は Release という名称だったんでしょうね・・・取得については詳細を後述します。

設計については、検索するといろいろなドキュメントが出てくるのでそれらを参照してもらうとして、ざっくりしたイメージとしては以下のような感じ。

  • 必要な部品を検索して、フローに追加して、プロパティを設定。それを繰り返すことでフローを作り上げる
  • もし必要な部品がなければインポートする

2-2: Questetra 側の準備

API の実行としては http リクエストを送る(「メッセージ送信中間イベント(HTTP)」を入れる)ように設定すればいいのですが、認証が少し特殊です。
そのため、処理としては以下のような形となります。

  • 認証のための http リクエストを投げて、レスポンスの中からトークン取得
  • そのトークンを使って API を実行する http リクエストを送付
・認証 URL

https://platform.uipath.com/api/account/authenticate

・認証時に投げる JSON サンプル

{
    "tenancyName" : "XXX_TenantName_XXX",
    "usernameOrEmailAddress" : "XXX_email_XXX",
    "password" : "XXX_password_XXX"
}

・認証レスポンスからトークンを取得するスクリプトサンプル

var jsonObj = JSON.parse(engine.findDataByNumber("10"));
var token = jsonObj.result + "";
engine.setDataByNumber("11", token);
・「プロセス」の Key を取得する URL サンプル

https://platform.uipath.com/odata/Releases?$filter=%20Name%20eq%20'XXX_ProcessName_XXX'
・ロボットを実行する URL

https://platform.uipath.com/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs

・実行時に投げる JSON サンプル

{
  "startInfo": {
    "ReleaseKey": "XXX_Key_XXX",
    "Strategy": "All",
    "RobotIds": [],
    "NoOfRobots": 0
  }
}

実際に業務で使う場合には、承認を経た後に http リクエストを送る部分を足す、といった形になるでしょうか。
(例えば、マスタ追加申請で承認された後に RPA ツールでマスタ登録させる、とか)

http リクエストを送付する「メッセージ送信中間イベント(HTTP)」、スクリプト処理を書く「スクリプトタスク」の詳細については以下をご覧ください。
マニュアル:M225: 業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する
マニュアル:M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)
また JSON つきで http リクエストを投げる設定については
ビジネスチャット Microsoft Teams へワークフローから投稿する
の「3.2: Questetra 側の設定(アドオンを使わない場合)」が参考になります。

2-3: 引数指定で動きを変える場合

REST API で起動する際に、当然引数によって動きを変えたい、ということがあるかと思います。
そういう場合には、以下の対応が必要。

  • Studio で入力引数(arguments/IN)を準備(パブリッシュを忘れずに、またパブリッシュしなおしたら Orchestrator でプロセス作り直し要)
  • 実行時に送付する JSON で引数を指定(引数部分は JSON を文字列化したもので)
・実行時に投げる JSON サンプル

{
  "startInfo": {
    "ReleaseKey": "XXX_Key_XXX",
    "Strategy": "All",
    "RobotIds": [],
    "NoOfRobots": 0,
    "InputArguments": "{\"XXX_ArgumentName_XXX\":\"XXX_value_XXX\"}"
  }
}

2-4: 動作の確認

Studio を使って設計をした PC 自体が実行 PC にもなる場合、処理実行されるまでがあまり時間がかかりませんでした。設計 PC と実行 PC が異なる場合には、ロボットのダウンロードが必要となるようで、初回の実行には少し時間がかかりました。

また、実行 PC がスリープに入っていると処理が実行できませんでしたので、スリープに入ってしまわないような設定が必要でした。

これらを留意すれば、想定通りに自動処理が実行されました。

3: まとめ

まずは自社内で、無料お試しへの申込があると Excel ファイルにデータが入るよう試運転させる予定です。その中で運用上の課題なども出てくると思いますが、それについてはまた別の記事で共有できればと考えています。

また、今回の UiPath の検証をしている中で、処理フローを設計 → それをデプロイする(UiPath では「Publish」、Questetra では「リリース」という表現になります)という設定方法について Questetra のそれと非常に近いと感じました。考え方が近いことで、相性もいいのではないかと。
※ただ、どちらにも「プロセス」というものがあるのですが、UiPath では実行のための設定を指し、Questetra では実行主体を指すので、その点は注意が必要です

ちなみに他の RPA ツールでも同様のことが実現可能です。UiPath と同様に知名度の高い BasicRobo!(旧称:BizRobo!)との API 接続は以前に検証済です。

RPAツール(BasicRobo!)とBPMシステムの連携について

また、API 以外の方式で、他の RPA ツールとの連携もいくつか検証済のものがあります。

ご質問・ご相談等がありましたら、お問合せフォームからお気軽にご連絡ください。

無料からスタートできる Questetra BPM Suite

以下の Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えます。UiPath も Community Edition であれば無料で試せますので、ぜひ一緒にお試しください。

また資料請求・お問合せはこちらから。

About The Author

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

上部へスクロール
%d人のブロガーが「いいね」をつけました。