Last updated on 2021年12月30日
こんにちは、エピックです。
UiPath Orchestrator には API が用意されており、API からロボットを実行することができます。
今回は、このAPIをPythonを利用し叩いて見たいと思います。
Orchestratorからロボットを実行する手順
APIからロボットを実行する手順ですがいくつか順番にAPIを叩いていく必要があります。
順番は次のとおりです。
- 事前準備
- 認証APIを叩く
- 実行するプロセスを取得するAPIを叩く
- ジョブ実行のAPIを叩く
この記事では、新しく追加された Automation Cloud の Orchestrator を利用しそれぞれ順番に見ていきます。
事前準備
APIを利用するにあたりあらかじめ Automation Cloud のポータルより次のキーを取得しておきます。
- ユーザーキー
- アカウント論理名
- テナント名
- クライアントID
取得する方法ですが、トップページの [管理] ⇛ [テナント] ⇛ [雲のマーク] をクリックすることで確認することができます。
クリックすると次のようなポップアップが開き適宜コピーすることができます。
これらは漏洩しないようにローカルにコピーしておいて下さい。
APIを叩く際に利用します。
また、今回 Python のコードも記載しますがその際これらは次の変数名で利用するので適宜読み替えてください。
格納するデータ | 変数名 |
ユーザーキー | USER_KEY |
アカウント論理名 | LOGICAL_NAME |
テナント名 | TENANT_NAME |
クライアントID | CLIENT_ID |
プロセス名 | PROCESS_NAME |
フォルダ名 | FOLDER_NAME |
プロセス名はジョブとして実行したいプロセスについている名前、フォルダ名はそのプロセスが所属しているフォルダの名称となります
これらも事前に把握しておいてください。
認証APIを叩く
ではさっそくAPIを叩いていきたいと思います。
まずは認証を取得するAPIです。
公式ドキュメントは次のリンク先にあります。適宜参考にしてください。
公式の内容を抜粋したものを次にまとめています。
URL | https://account.uipath.com/oauth/token | |
メソッド | POST | |
ヘッダー | "Content-Type" | "application/json" |
"X-UIPATH-TenantName" | <テナント名> | |
パラメータ | "grant_type" | "refresh_token" |
"client_id" | <クライアントID> | |
"refresh_token" | <ユーザーキー> |
これらの指定通りにPOSTメソッドを呼び出すコードを書いてあげればいいです。
コードは次のようになります。
リターンで後続のAPIを叩く際に必要となるアクセストークンを返してあげましょう。
実行するプロセスを取得するAPIを叩く
アクセストークンが取得できたのでOrchestratorの各情報にアクセスできるようになりました。
続いてこのアクセストークンを利用し実行するつもりのプロセスの情報を取得します。
公式ドキュメントは次のリンク先にあります。適宜参考にしてください。
まとめた表を次に記載します。
URL | https://cloud.uipath.com/<論理名>/<テナント名>/odata/Releases?$filter=%20Name%20eq%20'<プロセス名>' | |
メソッド | GET | |
ヘッダー | "Content-Type" | "application/json" |
"Authorization" | "Bearer <アクセストークン>" | |
"X-UIPATH-TenantName" | <テナント名> |
このAPIでは実行するプロセスのキーを取得したいので、プロセスの名前でフィルターをかけ取得する方法をとっています。
ヘッダーの “Authorization” の要素では、”Bearer” というワードのあとに半角スペースをおいて取得済みのアクセストークンを入れてあげます。
Pythonコードで書くと次のようになります。
今回はGETなのでシンプルにURLに指定しています。
リターンではプロセスキーを取得するようにします。
ジョブ実行のAPIを叩く
いよいよ最後のAPIジョブの実行です。
これを叩くことでロボットを自動で実行させることができます。(UnAttended 必須)
公式ドキュメントはつぎになります。
表にまとめると次のようになります。
URL | https://cloud.uipath.com/<論理名>/<テナント名>/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs | |
メソッド | POST | |
ヘッダー | "Content-Type" | "application/json" |
"Authorization" | "Bearer <アクセストークン>" | |
"X-UIPATH-TenantName" | <テナント名> | |
"X-UIPATH-FolderPath" | <フォルダ名> | |
パラメータ | "startInfo" | {"ReleaseKey":<プロセスキー>,"RobotIds": [],"JobsCount": 1,"JobPriority": "Normal","Strategy": "ModernJobsCount","RuntimeType": "Unattended","InputArguments": "{}"} |
引数を利用して、ロボットへわたした上で実行をすることもできますが今回は利用せずシンプルに実行してみたいと思います。
では、Pythonのコードです。
最後に
いかがだったでしょうか。
今回はシンプルに公式とコードという記事にしてみました。
もし「ここわからない」「ここ間違っている」等あれば
コメントにていただけますと嬉しいです。
ぜひOrchestratorを活用し一歩先の自動化にチャレンジしてみて下さい。
今回も最後までお読みいただきありがとうございました。
では。