Orchestrator連携系アクティビティに使うODataについて Vol.1
個人的にOrchestrator(以下OCとします)を導入しているお客さん先で、よくあるご依頼に
「特定のJob情報を取得して、業務条件によってJobの操作をロボットにさせたい」
というものがあったります。
(他の現場では、もしかしたらロボットにOCの詳細情報を取得させたり、監視させたりしたいといった声もあるかもしれませんね…)
そんな依頼を受け、アクティビティ検索欄にJobなんて打ってみる訳ですよね…
あるある…!3つもある~!
そして、おもむろに「ジョブを取得」アクティビティを編集画面にポイッとしてみる訳です…。開始・停止といった操作の前に、条件に合うJobを取得しないといけませんからね!
プロパティを開きます…(どのアクティビティにも見かける項目は、説明を割愛させていただきます)
①フォルダー:Orchestratorのフォルダーパスですね。プロセスが実行されるフォルダーと異なるフォルダーのJobを取得する場合は設定しないといけません(詳しくはHelpを参照!)
②スキップ:表示の通りですが、スキップするジョブの数を記載します。
③上:上って…💦 これはJob一覧の上からという意味ですね(ちょっと、JSONを引きずってるかな?詳しくは別記事にて…)。最大100件取得できますので、取りたいジョブ数を指定します
④フィルター:取得するジョブの条件をODataで取得する箇所です
(。´・ω・)ん…?
ちょっと…待ってね…ODataってなんやねん…
と、思った方は、このまま読み進めていただければと思います!
そうなのです。大体、入力欄内の説明見て何となく理解できると思います!
ですが、いきなり④でODataというフィルターに利用するお初ワードが飛び出すわけです。
なので、アクティビティヘルプ(F1押下)を参照して、ODataの使い方を見てみようとするのが人の性かと思います!
はい!私もそうしました!
書き方は分かったのだけど、他にはどういう書き方があるの?
項目名はどんなものがあるの???
と…続いての疑問にぶち当たったそこの貴方!
青文字の「ODataのドキュメント」をクリックするでしょう!!そうですよ!詳細知りたいもの!しますよね!!私もしましたよ!
からの!!!
クリックした開かれたODataドキュメント記事がこちら…
はい、ODataとは何ぞやと…導入からの英語でのご高説の嵐です…
英語は仕方ないにしろ、ちょっとフィルターの書き方だけ知りたかった人にはトンネル走ってたら、生き埋めにあったような気持ちになる事でしょう…
そして、スクロールバーの大きさ見てください😢
ページに対して、ちっこすぎる!!!
これはもう、ODataマスターしやがれ!と言わんばかりの読書量ですね…
ですが、ワッキーへこたりません!!!むむぅっ(・`ω´・)
活字嫌いですが我慢して読みました
ウトウトしながら、前半ほぼ理解してんだかしてないんだか…にさしかかったその時!
本アクティビティのフィルター箇所に辿り着いたのです!
本アクティビティ以外でOData使わない方向けに近道を指し示しますとココです!(次の記事に書く予定のOrchestratorへのHttpリクエスト要求でも説明します)
ウィンドウの大きさ変えてません。
大体、60%くらい下にスクロールしていただくと4.5. FilterSystemQueryOption($filter)という題名に差し掛かると思います!
この表のExample列の内容が分かればOKです!
イコールを例にとります。
オペレーターは左列に書いてある通り「Eq」を使用します。
恐らく「Jobを取得アクティビティ」から、このドキュメントに辿り着いた人達はExample列に困惑すると思います。
例でいう「 /Suppliers?$filter=Address/City eq 'Redmond'」
は、このままでは本アクティビティでは使えません…
Jobを取得アクティビティで使用する場合は「 /Suppliers?$filter=」の箇所は不要です。
(オペレーターの表の下の、Functionに関する書き方も、基本的には$filter=の「=」までの文字列は不要です)
この部分の書き方さえ押さえればOK!
値はシングルクオテーションで囲いましょう!
では、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でこんな風にとれちゃいます
ただ…
もっと柔軟に色々指定してJobを取得したく、私は「OrchestratorへHTTPを要求」アクティビティを使うことにしたのですが、それに関しては次回のブログにて…
ではでは!みなさま!良い、週末をお過ごしください!
この記事が気に入ったらサポートをしてみませんか?