見出し画像

Orchestrator連携系アクティビティに使うODataについて Vol.1

個人的にOrchestrator(以下OCとします)を導入しているお客さん先で、よくあるご依頼に

「特定のJob情報を取得して、業務条件によってJobの操作をロボットにさせたい」

というものがあったります。
(他の現場では、もしかしたらロボットにOCの詳細情報を取得させたり、監視させたりしたいといった声もあるかもしれませんね…)

そんな依頼を受け、アクティビティ検索欄にJobなんて打ってみる訳ですよね…

画像1

あるある…!3つもある~!

そして、おもむろに「ジョブを取得」アクティビティを編集画面にポイッとしてみる訳です…。開始・停止といった操作の前に、条件に合うJobを取得しないといけませんからね!

画像2

プロパティを開きます…(どのアクティビティにも見かける項目は、説明を割愛させていただきます)

①フォルダー:Orchestratorのフォルダーパスですね。プロセスが実行されるフォルダーと異なるフォルダーのJobを取得する場合は設定しないといけません(詳しくはHelpを参照!)

②スキップ:表示の通りですが、スキップするジョブの数を記載します。

③上:上って…💦 これはJob一覧の上からという意味ですね(ちょっと、JSONを引きずってるかな?詳しくは別記事にて…)。最大100件取得できますので、取りたいジョブ数を指定します

④フィルター:取得するジョブの条件をODataで取得する箇所です






(。´・ω・)ん…?





ちょっと…待ってね…ODataってなんやねん…





と、思った方は、このまま読み進めていただければと思います!

そうなのです。大体、入力欄内の説明見て何となく理解できると思います!

ですが、いきなり④でODataというフィルターに利用するお初ワードが飛び出すわけです。



なので、アクティビティヘルプ(F1押下)を参照して、ODataの使い方を見てみようとするのが人の性かと思います!

はい!私もそうしました!




画像3



書き方は分かったのだけど、他にはどういう書き方があるの?
項目名はどんなものがあるの???

と…続いての疑問にぶち当たったそこの貴方!


青文字の「ODataのドキュメント」をクリックするでしょう!!そうですよ!詳細知りたいもの!しますよね!!私もしましたよ!



からの!!!



クリックした開かれたODataドキュメント記事がこちら…

画像4

はい、ODataとは何ぞやと…導入からの英語でのご高説の嵐です…





英語は仕方ないにしろ、ちょっとフィルターの書き方だけ知りたかった人にはトンネル走ってたら、生き埋めにあったような気持ちになる事でしょう…

そして、スクロールバーの大きさ見てください😢

ページに対して、ちっこすぎる!!!

これはもう、ODataマスターしやがれ!と言わんばかりの読書量ですね…

ですが、ワッキーへこたりません!!!むむぅっ(・`ω´・)


活字嫌いですが我慢して読みました


ウトウトしながら、前半ほぼ理解してんだかしてないんだか…にさしかかったその時!

本アクティビティのフィルター箇所に辿り着いたのです!

本アクティビティ以外でOData使わない方向けに近道を指し示しますとココです!(次の記事に書く予定のOrchestratorへのHttpリクエスト要求でも説明します)

画像5

ウィンドウの大きさ変えてません。
大体、60%くらい下にスクロールしていただくと4.5. FilterSystemQueryOption($filter)という題名に差し掛かると思います!

この表のExample列の内容が分かればOKです!


イコールを例にとります。
オペレーターは左列に書いてある通り「Eq」を使用します。
恐らく「Jobを取得アクティビティ」から、このドキュメントに辿り着いた人達はExample列に困惑すると思います。
例でいう「 /Suppliers?$filter=Address/City eq 'Redmond'」
は、このままでは本アクティビティでは使えません…

Jobを取得アクティビティで使用する場合は「 /Suppliers?$filter=」の箇所は不要です。

(オペレーターの表の下の、Functionに関する書き方も、基本的には$filter=の「=」までの文字列は不要です)


この部分の書き方さえ押さえればOK!

画像6

値はシングルクオテーションで囲いましょう!
では、Orchestratorで項目名ってどこ?!ってなりますよね!


Orchestrator上のAPI参照名なので、Orchestratorを開いてJob一覧の項目名をそのまま使えるわけではないので、項目名例を列挙してみます


EndTime :Job終了時間
EnvironmentName:ロボットグループ名
PackageName :パッケージ名
ProcessName:プロセス名
Source:実行形式(手動とかキューとか)
StartTime:Job開始時間
State:Jobの状態(実行中とか、成功とか、失敗とか)
CreationTime:作成日

他にも沢山ありますが、未検証項目も含みますし、JSONで取得できる項目はまだまだあるので、次回の記事にて…

なので、手動且つ実行中のJobを取得したい場合の記述は

"Source Eq 'Manual' And State Eq 'Running'"

となります。
あとは、本アクティビティの出力がIENumerableなので、ForEachでこんな風にとれちゃいます

画像7

ただ…
もっと柔軟に色々指定してJobを取得したく、私は「OrchestratorへHTTPを要求」アクティビティを使うことにしたのですが、それに関しては次回のブログにて…


ではでは!みなさま!良い、週末をお過ごしください!

この記事が気に入ったらサポートをしてみませんか?