この記事の目的
この記事では、
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)
これでQueueが作成できました。念のため、作成したQueueの詳細情報も確認しておきます。
下図の赤矢印のボタンを押下し、サブメニューを開きます。サブメニューの中の「View Transactions」を押下すると、Queueの詳細情報(トランザクション)を確認することができます。
作ったばかりなので、何も入っていないことが確認できます。
★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ではこんな感じで設定します
RequestBody:
{ "itemData": { "Name": "Sample01", "SpecificContent": { "key01":"sample", "キー02":"sample", "key03":"サンプル", "鍵04":"値です" } } }
★Step3)実行結果確認
Step2で準備したリクエストを実行し、Orchestratorに登録されたQueueItemを確認した結果が、こちらになります。
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に想定通りに登録できることが確認できます!
後日談
よくよく公式ドキュメントを調べると、以下のURLにQueueItemの追加方法が記載されていました。詳しくはこちらを参照ください(;´Д`)
orchestrator.uipath.com
…それにしても、Orchestrator 2017だか2016では、こんなことなかった気がするんだけどなぁ(´△`)