私はジョブツールをHinemosしか使ったことがなく、これが普通だと思っていたのですが、JP1やJenkinsを使っていた人からすると中々理解しにくい動きをしているらしく、説明整理用にHinemosジョブの動き方についてまとめました。
Hinemosジョブはカタマリ単位で実行される
題名にもありますが、Hinemosジョブはカタマリ単位で実行されます。ここでいうカタマリとはジョブユニットとか、ジョブネットとか、ジョブを指します。
よくある一般的なジョブフロー
よくあるジョブは以下みたいな動きをすると思います。
ジョブA、ジョブB、ジョブCがそれぞれ順に実行するように設定しています。
このとき、ジョブAを実行すると完了すると後続のジョブB、ジョブCが実行していきます。
Hinemosでのジョブフロー(うまくいかない版)
これと同じようなジョブフローをHinemosジョブで作成すると以下のようになります。
Hinemosでは親としてジョブユニットを作成し、その子としてジョブネットやジョブを設定するため上記のようになります。ジョブユニットのカタマリの中にそれぞれジョブのカタマリが3つあり、待ち条件を設定しているという感じです。
待ち条件はジョブBは「ジョブAが正常終了」、ジョブCは「ジョブBが正常終了」とします。
このとき、一般的なジョブと同じようにジョブAに対して手動実行やスケジュール実行をした場合、ジョブAは実行されますが、後続のジョブBやジョブCは実行されません。
これは、実行単位のカタマリがジョブユニットではなく、ジョブに対して実行されたためです。この場合はジョブAのカタマリに対してのみジョブ実行が有効になっているイメージのため、いくらジョブBやジョブCで待ち条件を設定してもそもそもジョブ実行が有効となっていないので、実行されないというわけです。
Hinemosでのジョブフロー(うまくいく版)
一般的なジョブのようにジョブA、ジョブB、ジョブCを実行するにはそのひとつ上のカタマリであるジョブユニットを実行します。
このように、Hinemosのジョブは実行したカタマリの中のジョブネット、ジョブが有効になって実行されるようなイメージです。そのため、ジョブA、ジョブB、ジョブCはジョブユニット1を起動すると3つすべてのジョブが有効になり、何も設定されていなければ並行で同時に実行しようとします。
それを、ジョブフローのように順々に実行したいためにそれぞれ待ち条件をつけるというイメージを持っていただくと設計しやすいと思います。