きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × SIer

UiPath × Orchestrator × AddQueueItem APIの仕様が変わっていた件について

この記事の目的

この記事では、
Orchestrator API の [AddQueueItem]の呼び出しがうまくいかなかった現象と、その対応をまとめること
を目的としています。

せっかくなので、現象を再現する方法までメモしておこうと思います(=゚ω゚)ノ


本題

★利用する環境

この検証で利用するものは、以下の通りです。
-Orchestrator 環境:Orchestrator CE - https://platform.uipath.com
-API呼び出しツール:Insomunia
-対象API: Add Queue Item (Queueにデータを登録するためのAPI)

その他参考ページ
forum.uipath.com
platform.uipath.com



★Step1)Queueの作成

動作確認するために、Queueを作成します。Orchestrator CEにログインし、Queueを以下の要領で作成していきます。(Web API
f:id:kinakomotitti:20190114144512p:plain
f:id:kinakomotitti:20190114144524p:plain
f:id:kinakomotitti:20190114144533p:plain

これでQueueが作成できました。念のため、作成したQueueの詳細情報も確認しておきます。
下図の赤矢印のボタンを押下し、サブメニューを開きます。サブメニューの中の「View Transactions」を押下すると、Queueの詳細情報(トランザクション)を確認することができます。
f:id:kinakomotitti:20190114144550p:plain

作ったばかりなので、何も入っていないことが確認できます。
f:id:kinakomotitti:20190114144602p:plain


★Step2)Login Tokenの取得

Add Queue item APIを実行するために、Queueを作成した「テナント」のOrchestratorへログインします。これには、Authenticate APIを利用します。
URL:https://platform.uipath.com/api/Account/Authenticate
Requset body:

{
  "tenancyName": "string",
  "usernameOrEmailAddress": "string",
  "password": "string"
}

上記情報を適切に設定し、リクエストを送信すると、以下のようなResponseが返ってきます。

{
  "result": "ctnOT9s7DOGh6Tppf8Sn9GIo(省略)",
  "targetUrl": null,
  "success": true,
  "error": null,
  "unAuthorizedRequest": false,
  "__abp": true
}

このresultの値が認証トークンとなるので、この長い文字列をコピーしておきます。



★Step2)AddQueueItem呼び出し準備

実際にAddQueueItemAPIを呼び出す準備をしていきます。
URL:https://platform.uipath.com/odata/Queues/UiPathODataSvc.AddQueueItem
Header:Authorization :bearer さっきの長い文字列
※Insomniaではこんな感じで設定します

f:id:kinakomotitti:20190114144619p:plain
insomniaでの設定例(Request Header)
RequestBody:

{
  "itemData": {
    "Name": "Sample01",
    "SpecificContent": {
			"key01":"sample",
			"キー02":"sample",
			"key03":"サンプル",
			"鍵04":"値です"
		}
  }
}



★Step3)実行結果確認

Step2で準備したリクエストを実行し、Orchestratorに登録されたQueueItemを確認した結果が、こちらになります。
f:id:kinakomotitti:20190114144703p:plain

Specific Contentにおいて、日本語の文字列として登録した情報が、Eclipseでよく見かける読みづらい文字列になってしまいました(;´Д`)
これこそが、Orchestrator API の [AddQueueItem]の呼び出しがうまくいかなかった現象です!正しく現象が再現できました!!


★Step4)回避方法

日本語が使えないといろいろ不便なので、回避策を検討しました。
結果として、以下の呪文をspecificContentに追加することで対応できることがわかりました。

"Parameter@odata.type": "#String"

具体的には、Step2で作成したRequestBodyをこのように変更します。

{
  "itemData": {
    "Name": "Sample01",
    "SpecificContent": {
			"key01@odata.type": "#String", ←ココ
			"key01":"sample",
			"キー02@odata.type": "#String",←ココ
			"キー02":"sample",
			"key03@odata.type": "#String",←ココ
			"key03":"サンプル",
			"鍵04@odata.type": "#String",←ココ
			"鍵04":"値です"
		}
  }
}

この呪文により、日本語もOchestratorに想定通りに登録できることが確認できます!
f:id:kinakomotitti:20190114144734p:plain


後日談

よくよく公式ドキュメントを調べると、以下のURLにQueueItemの追加方法が記載されていました。詳しくはこちらを参照ください(;´Д`)

orchestrator.uipath.com


…それにしても、Orchestrator 2017だか2016では、こんなことなかった気がするんだけどなぁ(´△`)