【Hinemos 5.0】特定のジョブの実行結果をコマンドで取得する(その1)

この記事は4年以上前に書かれたものです。 情報が古い可能性があります。

Hinemosのジョブ管理機能では、「待ち条件」を使うことで、あるジョブの終了状態や終了値に応じて、次のジョブを実行するかどうかを制御することができます。

待ち条件の設定画面

待ち条件の設定画面

それでは、次のジョブの動作そのものを、前のジョブの実行結果によって変えたい場合はどうすれば良いでしょうか。

 

解決策

やや手の込んだ方法になりますが、WebサービスAPIやコマンドラインツール(※)を使って、前のジョブの実行結果をHinemosマネージャから取得し、内容を解析して必要な部分を取り込む、という方法が考えられます。

※コマンドラインツールは、Hinemosの保守契約等を締結されているお客様に対して提供しているツールです。

まずは、コマンドラインツールでどのような情報が取得できるか確認してみます。適当なジョブユニット(JU_TEST)とジョブ(JB_TEST)を登録し、Hinemosクライアント上で実行した後、コマンドラインツールのJob_getNodeDetailList.pyで、先ほど実行したジョブの”ノード詳細”の情報を取得してみます。実行例は以下のとおりです。

-SでセッションID、-JでジョブユニットID、-IでジョブIDを指定します。なお、ジョブの起動コマンドには便宜上、exit 12を設定しています。

出力結果のうち、endValue = 12が、ジョブの起動コマンドの戻り値です。ということは、上記の出力結果から、このendValueの右辺の数字だけを取り出せば良さそうです。

では、実際にジョブに当てはめてみます。JB_TESTの後続ジョブとしてJB_TEST2を登録し、JB_TESTの終了状態”*”を待ち条件に設定します。

待ち条件を設定する

待ち条件を設定する

起動コマンドは、ひとまず先行ジョブJB_TESTの起動コマンドの戻り値を出力するだけの内容にします。なお、ジョブセッションのみ可変となるため、#[SESSION_ID]というジョブ変数に置き換える必要があります。起動コマンドの例は以下のとおりです(実際には1行で記述します。なお、エラー処理等は全く考慮していませんので、あくまでサンプルとしてご覧ください)。

実行結果は以下のとおりです。JB_TEST2の出力(stdout)のところに、先行ジョブの戻り値(12)が出力されていることが確認できます。

後続ジョブの実行結果

後続ジョブの実行結果

JB_TEST2側で、この値を本来の起動コマンドに渡せば、後は煮るなり焼くなり好きに使うことができます。

(2016/11/29 追記) 上記の方法では、先行ジョブの実行ノードがスコープで複数指定されている場合に、期待どおり動作しません。こちらの記事に解決策を記載しましたので、併せてご覧ください。

簡単ですが、今回は以上です。次回は、ジョブ自体の終了値等をコマンドで取得する方法をご紹介したいと思いますので、お楽しみに(^o^)/


ご意見やお問い合わせについて

この記事へのご意見やお問い合わせについては、こちら(お問い合わせフォーム)もしくは
Hinemos営業担当【hsd-sales@atomitech.jp】までご連絡ください。

※お問い合わせフォームからご連絡の場合には、お問い合わせ内容で「Hinemosについて」を選択し、
 本文の冒頭に「Hinemos研究日記_【タイトル名】」とご記載ください。
※メールアドレスへご連絡の場合には、件名を「Hinemos研究日記_【タイトル名】」でご連絡ください。