はじめに
この投稿はUiPath Advent Calendar (produced with UiPath Friends) Advent Calendar 2022 の22日目の投稿です。
Orchestrator APIコールを使って外部からUiPathのリソースをアクセスする方法として、現在、外部アプリケーション機能(OAuth)が推奨されています。本ブログは、クイックに体験できるチュートリアル的な感じで書こうと思います。
何を体験するのか。
このチュートリアルは外部アプリケーション機能を使って、外部アプリからOrchestratorに格納されているプロセスをトリガーすると言ったことをします。コーディングや、UiPath以外のソフトのインストールはせずに、設定とコピペだけで、クイックに動かして見ると言ったことだけにフォーカスしています。ですので進行中の補足、枝葉や余談などの説明は差し込んでません。動かした体験で、今後応用して使いこなしたり、深掘するステップになればと思います。
前提
- 本ブログは2022/12月時点のAutomation Cloudの画面操作で説明しています。おそらく、また変わっていくでしょうね(笑)
- Unattendedロボットが動作できる状態の設定になっていることが前提です。
手順
1.トリガーするプロセスを用意する
トリガーを体験するだけなので、既にあるプロセスでも、新しく適当に作って頂いてもよろしいかと思います。
2.まずはSwaggerで試して見る
Orchestrator APIを使う時は、まずSwaggerで動作させて見てから、その情報を活用すると言ったアプローチも有効です。
Swaggerへのアクセスは下記からコピペして{organization_ID}と{tenant_name}を入れるでも、OrchestratorのURLも元に"/swagger/index.html"入れるでもOKです。
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html
{organization_ID}の{}は置き換えの際は不要な記号です。以降に{文字列}で記載している{}も同様に不要になります。
2.1 プロセスのReleaseKeyを取得する
ジョブを開始するAPIで、対象プロセスのReleaseKeyが必要みたいなので、まずは、下記のAPIを利用して調べます。
尚、利用するAPIは下記をコピペして{organization_ID}と{tenant_name}を入れてジャンプするでも、Swaggerのページで探すでもOKです。
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html#/Releases/Releases_Get
Folder IDを調べる方法
Orchestratorで対象フォルダ選択中のURLからでもわかります。fid=と記載されている部分です。
2.2 ジョブを開始して見る
Swaggerへのアクセスは下記からコピペして{organization_ID}と{tenant_name}を入れるでも、OrchestratorのURLをベースに"/swagger/index.html"入れるでもOKです。
https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/swagger/index.html#/Jobs/Jobs_StartJobs
Bodyには下記からコピーして編集するでもOKです。お試しなので、最低限のものだけ入れてます。
{
"startInfo": {
"ReleaseKey": "{Keyを入れてください}",
"Strategy": "ModernJobsCount",
"JobsCount": 1
}
}
対象プロセスのトリガーが掛かっていればSwaggerからの実行は成功です。
Curlをコピーして控えておきましょう。後で、外部アプリ(コマンドプロンプト)から、このCurlを叩きます。
3.外部アプリケーションを設定する
4.コマンドプロンプトからトリガーして見る
4.1 トークンを取得する
下記のコマンドをコピーして、先ほど取得してきたアプリID、アプリシークレットを設定し、コマンドプロンプトで叩きます。
curl -d "grant_type=client_credentials&client_id={アプリIDを入れてください}&client_secret={アプリシークレットを入れてください}&scope=OR.Jobs" https://cloud.uipath.com/identity_/connect/token
4.2 ジョブを開始する
Swaggerでコピーしたジョブ開始のCurlに、先ほど取得してきたアクセストークンを入れ替えてコマンドプロンプトで叩きます。Curlは控えたものを使うので、下記をコピーして使用する必要はありません。参考として載せてます。
curl -X POST "https://cloud.uipath.com/{organization_ID}/{tenant_name}/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs" -H "accept: application/json" -H "X-UIPATH-OrganizationUnitId: {フォルダID}" -H "authorization: Bearer {返されてきたアクセストークン}" -H "Content-Type: application/json;odata.metadata=minimal;odata.streaming=true" -d "{ \"startInfo\": { \"ReleaseKey\": \"{キー}\", \"Strategy\": \"ModernJobsCount\", \"JobsCount\": 1 }}"
対象プロセスのトリガーが掛かっていれば、外部アプリケーション機能を使用したアクセストークン取得で、外部アプリからの実行も成功!
おわりに
本ブログではコマンドプロンプトで動かしましたが、PowerShell、Jenkinsシェルスクリプト、Pythonなど使いたいスクリプトで実装頂ければと思います。
この体験を得ることで、例えば他のAPIをコールしたい場合も、Swaggerでやってみる、Swaggerの情報を活用する、外部アプリケーション機能(OAuth)で、新しくアプリケーションを追加、もしくは既存のアプリケーションを利用し、必要なスコープを追加すると言ったやり方は容易に想像がつくと思います。
外部アプリケーション機能(OAuth)について、もう少し広く・深く知りたい方は、下記をご参考に。