概要
Orchestrator APIで取得したJSONデータの操作方法についてご説明します。
注:私の投稿する内容は個人の見解であり、所属団体を代表するものではありません。
はじめに
今回はUiPath Studioから『OrchestratorへのHTTP要求』アクティビティを利用して取得したJSONデータを操作する方法についてご説明します。
Orchestrator APIとは?
UiPath Orchestrator APIは、UiPathのOrchestratorの機能にプログラムからアクセスできるようにするRESTful APIです。これにより、開発者はOrchestratorの操作をコードで自動化したり、外部システムと統合したりすることができます。
参考:Orchestrator APIでできること
以下をクリックください。
ロボット管理
- ロボットの削除、状態確認。
ジョブ管理
- ジョブの開始、停止、ステータス確認。
アセットとキューの操作
- アセットの取得、追加。
- キューのアイテム取得、削除。
プロセス管理
- プロセスの取得、更新、削除。
- パッケージのアップロード。
監査とログの取得
- ログデータの取得。
ユーザーと権限管理
- ユーザーアカウントの作成、管理。
- ロールと権限の設定。
アラート管理
- アラートの取得。
JSONデータとは?
JSON(JavaScript Object Notation)は、データを軽量かつ簡潔に表現するためのフォーマットです。プログラム間でデータを交換する際に広く使用されており、人間にも読みやすく、機械でも簡単に解析できる構造を持っています。UiPathではJSONデータを操作するためのアクティビティが提供されております。
JSONデータの操作方法
UiPath Studioから『OrchestratorへのHTTP要求』アクティビティを利用して取得したAlert関連のJSONデータを操作する方法についてご説明します。
Step1.『OrchestratorへのHTTP要求』アクティビティの設定
StudioをOrchestratorに接続後、『OrchestratorへのHTTP要求』アクティビティの[エンドポイントの相対パス]に以下の通り記載します。
"odata/Alerts?$top=3"
?$top=3は取得したアラート情報の中から最新の3件を取得することを意味します。
GET odata/Alertsの情報は公式ガイドにも記載があります。
https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/api-guide/alerts-requests
Step2.レスポンスヘッダーの中身を取得
レスポンスヘッダーの中身は『繰り返し(コレクションの各要素)』アクティビティを利用して取得が可能です。
引数の型にSystem.Collections.Generic.KeyValuePair<System.String,System.String>
を指定すると、項目名にcurrentKeyValuePairOfTextAndText
が自動生成されます。『繰り返し(コレクションの各要素)』アクティビティの次のコレクションの各要素にResponseHeaders
を、
本文に『メッセージをログ』アクティビティでメッセージにcurrentKeyValuePairOfTextAndText
と入力するとレスポンスヘッダーのそれぞれの値が取得できます。
参考:取得したレスポンスヘッダーの値とその意味
例は以下となります。
基本情報
Date
サーバーがレスポンスを生成した日時。
値: Wed, 04 Dec 2024 04:35:26 GMT
意味: サーバーの処理タイミングを示します。
Connection
クライアントとの接続の管理方法。
値: keep-alive
意味: 接続を維持し、次のリクエストで再利用可能であることを示します。
キャッシュ関連
Cache-Control
キャッシュの動作を制御。
値: no-store
意味: このレスポンスをキャッシュに保存しないよう指示します。
Pragma
HTTP/1.0のキャッシュ制御。
値: no-cache
意味: 中継プロキシにキャッシュしないよう指示します。
セッションとCookie
Set-Cookie
サーバーがクライアントにCookieを送信。
値: __cf_bm=SPGLDOFhHOLk...
意味: セッション管理やセキュリティ目的のCookie設定(HttpOnly, Secure属性で保護されています)。
リクエストトラッキング
Request-Context
アプリケーション固有のコンテキスト情報。
値: appId=cid-v1:354c7cb9-ae5a-4d16-84a7-f13242bbac6d
意味: アプリケーションまたはサービスの識別子。
X-Correlation-ID
リクエスト間のトラッキングID。
値: 0e0372fd-b706-45cf-86a3-60e8edd538e9
意味: 複数リクエストを追跡するための一意の識別子。
X-UiPath-Correlation-ID
UiPath固有のトラッキングID。
値: undefined
意味: API呼び出しを追跡するための識別子(今回は未定義)。
セキュリティ関連
X-Robots-Tag
検索エンジンによるインデックス化の制御。
値: noindex,nofollow
意味: このページを検索エンジンにインデックスさせない。
X-Download-Options
ファイルダウンロード時のセキュリティ。
値: noopen
意味: Internet Explorerでのダウンロード時にスクリプト実行を防止。
X-XSS-Protection
クロスサイトスクリプティング(XSS)対策。
値: 1
意味: XSSフィルターを有効化。
X-Content-Type-Options
MIMEタイプのスニッフィング防止。
値: nosniff
意味: ブラウザがレスポンスのMIMEタイプを変更しないよう指示。
X-Frame-Options
クリックジャッキング対策。
値: SameOrigin
意味: 同じオリジンからのフレーム埋め込みのみ許可。
Strict-Transport-Security
HTTPS通信の強制。
値: max-age=15724800; includeSubDomains
意味: HTTPS通信を6か月間(15724800秒)強制。サブドメインも対象。
Content-Security-Policy
外部リソースの読み込み制御。
意味: スクリプト、スタイルシート、画像、フォントなどの読み込み元を制限。セキュリティ向上。
API関連
odata-version
ODataのバージョン情報。
値: 4.0
意味: APIがODataバージョン4.0に準拠していることを示す。
api-supported-versions
サポートされているAPIバージョン。
値: 18.0
意味: このAPIはバージョン18.0に対応している。
レート制限
RateLimit-Policy
レート制限のポリシー。
値: 450000;w=300
意味: 300秒間(5分間)に450,000リクエスト可能。
RateLimit-Remaining
残りリクエスト数。
値: 449998
意味: 現在の時間枠であと449,998回のリクエストが可能。
RateLimit-Limit
最大リクエスト数。
値: 450000
意味: 1時間あたりのリクエスト上限。
ネットワークとキャッシュ
Server
使用しているサーバーソフトウェア。
値: cloudflare
意味: このレスポンスを提供したサーバーがCloudflareであることを示す。
CF-Cache-Status
Cloudflareのキャッシュステータス。
値: DYNAMIC
意味: キャッシュされていない動的リクエスト。
CF-RAY
CloudflareリクエストのトラッキングID。
値: 8ec916f51d98d77b-NRT
意味: リクエストを一意に識別するID(NRTは東京データセンターを表す)。
Step3. JSONの逆シリアル化
『JSONを逆シリアル化』アクティビティは、JSON形式の文字列をJSONオブジェクトに変換するためのアクティビティです。JSONオブジェクトとして扱うことでデータ操作が文字列よりも簡単になります。
例:ループによる特定のフィールド値の取得はJSONオブジェクトで簡単に行えます。
『JSONを逆シリアル化』アクティビティで出力したJSONオブジェクトにDeserializedJsonObject
と記載します。
『メッセージをログ』アクティビティでDeserializedJsonObject
を出力すると、データが出力されます。
Step4. JSONオブジェクトの子要素の取り出し
以下の『繰り返し(コレクションの各要素)』アクティビティでは、JSONオブジェクトの子要素にアクセスすることを示しています。
具体的には、DeserializedJsonObject("value")
は、DeserializedJsonObject
の"value"
のフィールドに格納されている値を返します。
.Children
は、指定したフィールドが配列形式になっている場合、それらをリストとして返します。
『繰り返し(コレクションの各要素)』の本文に『メッセージをログ』でCurrentJToken("id").ToString
で指定することでメッセージが出力されます。
※Step1で3件のアラートの情報を取得したので3件のIDが出力されます。
同様に『メッセージをログ』でCurrentJToken("data").ToString
で指定することで3件のアラートのdataが表示されます。
DeserializedJsonObject
内で出力したデータに記載されている内容:"id"、"notificationName"、"data"等はこの方法で取得できます。
おわりに
今回はOrchestratorのGETメソッドで取得したJSONデータの操作方法をご案内しました。POSTメソッドについては弊社の別の社員が作成予定です。