トライアルの開始

2019年12月25日

Orchestrator API の自動化

25 12月 2019

Orchestrator API の自動化

今回の記事はロボットに REST API を実行させる方法をご紹介します。
簡単に実現できる上に一度覚えてしまえば色々と応用が効いて自動化できる幅がグッと広がります。
本記事では、トークンの取得やID/パスワードの指定を HTTP パラメータの一部として直接的に取得/指定する方法を解説します。
接続するシステムによっては OAuth1、OAuth2、簡易認証、といった Activity に備え付けの認証機能も利用できる可能性がありますので、是非合わせてお試しください。

 

サンプルとしては、せっかくですので Orchestrator の各種操作を API 経由で実行してみたいと思います。
ロボットから Orchestrator の API を呼び出すための専用のアクティビティ はいくつか用意されていますが、今回はそういったアクティビティが用意されていない API を呼び出します。

 

ロボットの権限で実行できる API であれば Orchestrator への HTTP リクエストアクティビティを利用することができます。

アセット、キュー、ジョブ、プロセスなどに関する処理を行う Activity もそれぞれ用意されています。

 

SOAP や Swagger ベースの Web サービスと連携する場合は、より簡単にワークフローを開発することができます。詳細についてはこちらの記事をご覧ください。
https://forum.uipath.com/t/featureblog-19-4-soap-swagger-web/174925

 

 

本記事は Orchestrator 2019.4.3 を元に執筆しておりますので最新のバージョンにおいて内容が異なる可能性があります。あらかじめご了承ください。

 

Orchestrator API の最新の仕様については以下を参照してください。
https://docs.uipath.com/orchestrator/lang-ja/reference#api-references

 

ベアラートークンの取得:
Orchestrator API の認証システムは、ベアラートークンを使用します。
他の API を呼び出すために必要なので、まずは HTTP要求アクティビティを使ってトークンを取得しましょう。

 

HTTP要求アクティビティ を利用するためには、UiPath.Web.Activities パッケージのインストールが必要です。
必要に応じて「パッケージを管理」機能からインストールしてください。

 

 

今回はシンプルに行きたいので、必要最低限なパラメータだけ埋めます。事前に必要な情報は、テナント名と Orchestrator ユーザの ID とパスワードです。
HTTP要求アクティビティのプロパティのうち赤枠で囲んだ箇所に必要な情報を入力していきます。

 

Orchestrator_API_automation_Property

 

・パラメータ

下記の図のように、tenancyName、usernameOrEmailAddress、password のパラメータを指定します。
tenancyName(=テナント名)と usernameOrEmailAddress(=ユーザID)は設定ファイルから読み込むようにしておくと何かと融通が効くので、ユーザビリティの観点からお勧めです。
password については現場のセキュリティポリシーに依るので一概には言えませんが、設定ファイル等への保存が難しい場合は、例えば入力ダイアログアクティビティ で稼働のたびに利用者に入力してもらう方法も考えられます。
その際はプロパティ「パスワード入力」を有効にすることをお忘れなく。

 

Orchestrator_API_automation_Parameters

 

・エンドポイント、メソッド、応答形式
エンドポイントには Orchestrator API の URL を指定します。例示のままでは使えないので、[Orchestratorのホスト名]の部分を環境に合ったホスト名に入れ替えてください。

・出力
状態コードはレスポンスの HTTP ステータスコード、結果にはレスポンスのBODYが JSON 形式の String 型で返ります。
String型のままでは使いづらいので JSONをデシリアライズアクティビティ を使ってレスポンスの String 型を JsonObject 型 に変換するのがお勧めです。ベアラートークンは "result" key に対する value ですので GetValue("result") でトークンを取り出せます。

 

Orchestrator ユーザの追加:
では次に API 経由で Orchestrator ユーザを追加します。HTTPメソッドは先程と同じく POST です。今回も HTTP要求アクティビティ を使いますが、少し趣向を変えて、 HTTP要求アクティビティ の本文プロパティを使ってみます。
以下の図の赤枠で囲んだ箇所に必要な情報を指定します。

 

Orchestrator_API_automation_Property2

 

・ヘッダー
API を呼び出すには、"Authorization"ヘッダにベアラトークンを指定することで、API を呼び出すユーザがきちんと承認されたユーザであることを Orchestrator に伝える必要があります。
値の "Bearer " は最後に半角空白が入っているのでご注意を。[Token] の部分は適時、先程取得したベアラートークン(String型)に入れ替えてください。

 

Orchestrator_API_automation_Header

 

・本文
ここでは requestBody という名前の文字列ですが、中身は以下のような情報です。
今回は少なめですが情報量が多い JSON テキストを作る際、私は普段以下のように一旦 Dictionary 型で作成してから JSON へ Serialize しています。
※ なお、文字列処理は人によって好みが分かれるところだと思いますので、ご参考までに留めてください。

1. Microsoft.Activities.Extensions.Statements.AddToDictionary アクティビティで Key と Value を Dictionary型の変数に追加
2. Newtonsoft.Json.JsonConvert.SerializeObject([Dictionaryの変数名]) を使って JSON 形式の String 型へ変換

 

{
"UserName": "Test User",
"Name": "名前",
"Surname": "姓",
"RolesList": [
"Robot"
],
"OrganizationUnits": [
{
"Id": 1,
"DisplayName": "unit001"
},
{
"Id": 2,
"DisplayName": "unit002"
}
],
"CreationTime": "2019-XX-XXTXX:XX:XXZ",
"Id": 10,
"EmailAddress": ""
}

 

 

その他のプロパティはベアラートークンの取得と大差ないので割愛させていただきます。
APIが成功すれば指定したユーザが Orchestrator に追加されます!

 

最後に:
今回の記事では、Orchestrator API を使ってユーザ認証とユーザの追加作業を行う自動化をご紹介しました。
この他にもユーザ情報の変更・削除、ロボットの管理、OUの管理、ロールの管理などなど、自動化可能な Orchestrator の処理は沢山あります。

 

今回は Orchestrator の API しかできませんでしたが、他の Web API も同様に呼び出すことが可能です。その際は冒頭に書いたように、それぞれのサービスに合った認証方法(OAuth1、OAuth2、簡易認証)を利用してください。

是非、HTTP要求アクティビティ を利用して幅広く UiPath をご活用いただければと思います。


by Tetsuo Watanabe

TOPICS: UiPath Orchestrator

Show sidebar