2.1.4 業務の自動化検討時のヒント

業務の自動化を検討するときのヒントについて,次に示します。

<この項の構成>
(1) 起動する回数を定義した業務の設定例
(2) 推奨しない処理フローの例と定義の変更例
(3) 判定ジョブの使用例
(4) 負荷を分散した処理
(5) 業務の階層化の考え方
(6) カレンダーの適用例
(7) 業務の実行登録

(1) 起動する回数を定義した業務の設定例

実行条件を使用して,1日に起動する回数を定義した業務の設定例を次の表に示します。

表2-5 起動する回数を定義した業務の設定例

起動する回数設定場所設定例
1日1回起動する。[スケジュールルール]ダイアログボックスの[基本]タブの[起動条件の有効範囲][回数]で[回数指定]を選択し,「1」回を指定します。
1日複数回起動する。[スケジュールルール]ダイアログボックスの[基本]タブの[起動条件の有効範囲][回数]で[無制限]を選択します。また,[時間]で[絶対時刻]を選択し,基準時刻の10分前の時間を指定します。

(2) 推奨しない処理フローの例と定義の変更例

異なる業務の中にある処理を関連づける処理フローと変更例
異なる業務(ジョブネット)内にある処理(ジョブ)に実行順序を関連づけることはできません。業務を分割したり,一つの業務としてまとめたりして処理フローを定義してください。
定義できない処理フローと変更例を次の図に示します。

図2-6 定義できない処理フローと変更例

[図データ]
二つのパスを持つ処理フローと変更例
上位のジョブネットが実行されない場合,またはネストしたジョブネットの実行日が上位のジョブネットと一致しない場合は,ネストしたジョブネットは実行されません。そのため,次の図のように二つのパスを持つように実行順序を関連づける必要はありません。一つのパスで実行順序を関連づけてください。
二つのパスを持つ処理フローの例と変更例を次の図に示します。

図2-7 二つのパスを持つ処理フローの例と変更例

[図データ]
複数の後続処理を持つ処理フローと変更例
次の図のように複数の後続処理を持つフローはお勧めしません。階層化させることをお勧めします。複数の処理を一つの業務としてまとめることで,階層は一つ増えますが,見栄えもよく,管理もしやすくなります。
例えば,複数の後続ジョブが「販売店1」,「販売店2」のような処理の集まりであった場合,業務のまとまりごとにフローを管理できます。また,処理などを追加する場合でも,業務単位や機能単位で追加できます。
なお,階層をあまり深くすると,運用するときに操作しにくくなります。そのため,最上位から最下位までの階層は,3~5階層にすることをお勧めします。
複数の後続処理を持つ処理フローと変更例を次の図に示します。

図2-8 複数の後続処理を持つ処理フローと変更例

[図データ]

(3) 判定ジョブの使用例

JP1/AJS2では,前に実行された処理の終了結果によって,次に実行する処理を振り分けることができる,判定ジョブという機能があります。この判定ジョブには,次に示す二つの判定パターンがあります。

ここでは,初めに,リターンコードを利用した判定ジョブの使用例について説明します。次に,ファイルの有無による判定ジョブの使用例について説明します。

また,判定ジョブに関連づけられている「従属ジョブ」が異常終了してしまった場合の再実行方法について説明します。

(a) リターンコードによる判定

リターンコードによる判定ジョブの使用例を次の図に示します。

図2-9 リターンコードによる判定ジョブの使用例

[図データ]

上記の図のように処理フローを作成することで,次に示す処理が実行されます。

だたし,リターンコードによる判定ジョブでは,次のような問題が発生してしまいます。

「lenchk」という実行ファイル内で実行される,ほかの処理(命令)の異常を検知したい場合,「常に正常」を設定しているため,「lenchk」という実行ファイル内で実行される,ほかの処理(命令)の実行で異常が発生したときでも,従属ジョブではない「datadel」が実行されます。

この問題を回避するために,ファイルの有無による判定を実施します。

(b) ファイルの有無による判定

ファイルの有無による判定ジョブの使用例を次の図に示します。

図2-10 ファイルの有無による判定ジョブの使用例

[図データ]

上記の図のように処理フローを作成することで,「lenchk」という実行ファイル内で実行される,ほかの処理(命令)での異常も検知して,従属ジョブ「dataput」を実行することができます。

なお,ファイルの有無による判定は,業務管理ホスト(JP1/AJS2 - Manager)がインストールされているホストのファイルを判定します。環境設定によっては他ホストのファイルの有無をチェックすることもできますが,通信障害などによって正しく判定できないこともあります。ファイルの有無によって判定する場合は,マネージャーホスト上のファイルを指定することをお勧めします。詳細については,マニュアル「JP1/Automatic Job Management System 2 解説 3.1.1(1)(c) 判定ジョブ」を参照してください。

(c) 従属ジョブの再実行方法

従属ジョブの再実行方法は,通常のジョブの再実行方法とは異なります。再実行方法の注意事項は,マニュアル「JP1/Automatic Job Management System 2 解説 10.2.11 実行が終了したジョブネットやジョブを再実行する」を参照してください。

(4) 負荷を分散した処理

JP1/AJS2では,複数の業務実行ホスト(JP1/AJS2 - Agent)をグルーピングできます。グルーピングすることで,処理実行時の負荷を分散させることができます。負荷を分散するパターンは,次のとおりです。

複数の業務実行ホスト(エージェント)をグルーピングすることで,特定の実行先ホストに障害が発生した場合に,障害発生中のホストを回避してジョブをほかの実行先ホストに配信して実行できます。

分散処理を実現するための前提条件を次に示します。

QUEUEジョブを使用する場合
  • ネットワーク上のJP1/AJS2のホストにキューおよびエージェントを作成する。
  • 作成したキューおよびエージェントを関連づける。
PCジョブ,UNIXジョブを使用する場合
  • ネットワーク上のJP1/AJS2のホストにエージェントを作成する。
  • 業務実行ホスト(エージェント)のデフォルトキューに作成したエージェントを関連づける。

負荷分散を実現するパターンごとに,どのような負荷分散処理が行われるかを,QUEUEジョブを使用する場合を例に説明します。PCジョブおよびUNIXジョブを使用する場合も同様に負荷分散を実現できます。

(a) 均等に負荷を分散する場合

均等に負荷を分散する場合の例を次の図に示します。

図2-11 均等に負荷を分散する場合の処理例

[図データ]

ジョブの実行順序は次のようにして決定されます。

  1. job1が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「0 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    すべてのホストで負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job1は業務実行ホストAで実行されます。
  2. job2が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    負荷が軽いホストは業務実行ホストBと業務実行ホストCで,負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job2は業務実行ホストBで実行されます。
  3. job3が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「1 / 3」
    • 業務実行ホストC:「0 / 3」
    負荷がいちばん軽いホストは業務実行ホストCです。そのため,job3は業務実行ホストCで実行されます。
  4. job4が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「1 / 3」
    • 業務実行ホストC:「1 / 3」
    すべてのホストで負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job4は業務実行ホストAで実行されます。
  5. job5が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「2 / 3」
    • 業務実行ホストB:「1 / 3」
    • 業務実行ホストC:「1 / 3」
    業務実行ホストBと業務実行ホストCとでは,負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job5は業務実行ホストBで実行されます。
  6. job6が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「2 / 3」
    • 業務実行ホストB:「2 / 3」
    • 業務実行ホストC:「1 / 3」
    負荷がいちばん軽いホストは業務実行ホストCです。そのため,job6は業務実行ホストCで実行されます。

(b) 実行先ホストの処理数の上限に差を付ける場合

実行先ホストの処理数の上限に差を付ける場合の例を次の図に示します。

図2-12 実行先ホストの処理数の上限に差を付ける場合の処理例

[図データ]

ジョブの実行順序は次のようにして決定されます。

  1. job1が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「0 / 3」
    • 業務実行ホストB:「0 / 2」
    • 業務実行ホストC:「0 / 1」
    すべてのホストで負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job1は業務実行ホストAで実行されます。
  2. job2が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「0 / 2」
    • 業務実行ホストC:「0 / 1」
    負荷が軽いホストは業務実行ホストBと業務実行ホストCで,負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job2は業務実行ホストBで実行されます。
  3. job3が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「1 / 2」
    • 業務実行ホストC:「0 / 1」
    負荷がいちばん軽いホストは業務実行ホストCです。そのため,job3は業務実行ホストCで実行されます。
  4. job4が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「1 / 2」
    • 業務実行ホストC:「1 / 1」
    負荷がいちばん軽いホストは業務実行ホストAです。そのため,job4は業務実行ホストAで実行されます。
  5. job5が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「2 / 3」
    • 業務実行ホストB:「1 / 2」
    • 業務実行ホストC:「1 / 1」
    負荷がいちばん軽いホストは業務実行ホストBです。そのため,job5は業務実行ホストBで実行されます。
  6. job6が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「2 / 3」
    • 業務実行ホストB:「2 / 2」
    • 業務実行ホストC:「1 / 1」
    負荷がいちばん軽いホストは業務実行ホストAです。そのため,job6は業務実行ホストAで実行されます。

(c) 処理数が上限に達した場合にほかの実行先ホストに分散して実行する場合

特定の実行先ホストの処理数が上限に達した場合に,ほかの実行先ホストに分散して実行する例を次の図に示します。

図2-13 処理数が上限に達した場合にほかの実行先ホストに分散して実行する場合の処理例

[図データ]

ジョブの実行順序は次のようにして決定されます。

  1. job1が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「0 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    すべてのホストで負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job1は業務実行ホストAで実行されます。
  2. job2が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「1 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    負荷が軽いのは,業務実行ホストBと業務実行ホストCですが,queue1に定義したエージェントの優先順位に従って,job2は業務実行ホストAで実行されます。
  3. job3が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「2 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    負荷が軽いのは,業務実行ホストBと業務実行ホストCですが,queue1に定義したエージェントの優先順位に従って,job3は業務実行ホストAで実行されます。
  4. job4が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「3 / 3」
    • 業務実行ホストB:「0 / 3」
    • 業務実行ホストC:「0 / 3」
    業務実行ホストAでは,ジョブ実行多重度が上限に達しています。そのため,queue1に定義したエージェントの順序によって,job4は業務実行ホストBで実行されます。
  5. job5が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「3 / 3」
    • 業務実行ホストB:「1 / 3」
    • 業務実行ホストC:「0 / 3」
    負荷がいちばん軽いホストは,業務実行ホストCです。そのため,job5は業務実行ホストCで実行されます。
  6. job6が実行されるエージェントが決定される。
    「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
    • 業務実行ホストA:「3 / 3」
    • 業務実行ホストB:「1 / 3」
    • 業務実行ホストC:「1 / 3」
    負荷が軽いのは,業務実行ホストBと業務実行ホストCですが,queue1に定義したエージェントの優先順位に従って,job6は業務実行ホストBで実行されます。

(5) 業務の階層化の考え方

業務を階層化(ジョブネット化)するときのヒントを紹介します。階層化する目的またはメリットは次のとおりです。

推奨する業務の階層化の方法を次に示します。

  1. 最上位の業務(ジョブネット)を構築する。
    次の図のように,特定の単位ごとに最上位となる業務を構築します。

    図2-14 最上位の業務の構築例

    [図データ]

    相互に順序性がない場合は,そのまま最上位の業務として管理します。
  2. 特定の単位ごとに構築した業務に順序性がある場合は,一つの業務として階層化する。

    図2-15 最上位の業務の階層化例

    [図データ]

  3. 処理サイクルごとの業務(ジョブネット)を構築する。
    業務単位で最上位となる業務を構築した場合で,サイクルごとに実行する必要がある処理の場合,処理サイクルごとに業務をグルーピングします。

    図2-16 処理サイクルごとの業務の構築例

    [図データ]

    処理サイクルごとの業務には,次の表に示すようなルールを決めておきます。また,「コメント」にルールを記述しておくことをお勧めします。

    表2-6 処理サイクルごとに業務を分けた場合のルール

    処理サイクルごとの業務ルール
    GROUP1日次,週次,月次,半期,年次の業務が相互に関連を持ったグループ
    GROUP2単独で実行される「日次業務」のグループ
    GROUP3単独で実行される「週次業務」のグループ
    GROUP4単独で実行される「月次業務」のグループ
    GROUP5単独で実行される「半期業務」のグループ
    GROUP6単独で実行される「年次業務」のグループ
    GROUP7単独で実行される「不定期業務」のグループ
  4. 最下位の業務を構築する。
    処理サイクルごとに分けて業務の下位に,さらに,次に示す名称を付けた業務を作成します。ユニット(業務や処理)をコマンドで操作する場合や,JP1/IMの自動アクション機能で正規表現を使用する場合を考慮に入れて,半角英数字で名称を付けることをお勧めします。
    「xxxxxxDN」
    「xxxxxxWN」
    「xxxxxxMN」
    「xxxxxxHN」
    「xxxxxxYN」
    「xxxxxxRN」
    (凡例)
    D:1日1回のサイクルで実行される業務を意味します。
    W:週に1回のサイクルで実行される業務を意味します。
    M:月に1回のサイクルで実行される業務を意味します。
    H:半期に1回のサイクルで実行される業務を意味します。
    Y:年に1回のサイクルで実行される業務を意味します。
    R:不定期に実行される業務を意味します。
    N:業務(ジョブネット)を意味します。
  5. 処理(ジョブ)を構築する。
    最後に,次に示す名称を付けた処理(ジョブ)を作成します。
    「xxxxxxDJ」
    「xxxxxxWJ」
    「xxxxxxMJ」
    「xxxxxxHJ」
    「xxxxxxYJ」
    (凡例)
    D:1日1回のサイクルで実行される処理を意味します。
    W:週に1回のサイクルで実行される処理を意味します。
    M:月に1回のサイクルで実行される処理を意味します。
    H:半期に1回のサイクルで実行される処理を意味します。
    Y:年に1回のサイクルで実行される処理を意味します。
    J:処理(ジョブ)を意味します。

(6) カレンダーの適用例

カレンダーの適用例を紹介します。

初めに,次の条件を前提とした場合のカレンダーの設定例を説明します。

上記のような前提条件の場合,次の図のような業務グループの階層を作成し,カレンダーを定義します。

図2-17 カレンダーの適用例1

[図データ]

このような例で監視画面を使用すると,業務グループの下にある業務の実行予定や結果しか確認できません。例えば,一度に実行予定や結果を確認できるのは,「東京」グループの下にある業務だけです。そのため,複数のシステム管理者が,それぞれの業務グループを管理する場合,担当のシステム管理者に関係する業務の予定や結果を管理しやすくなります。

次に,次の条件を前提とした場合のカレンダーの設定例を説明します。

上記のような前提条件の場合,次の図のような業務グループの階層を作成し,カレンダーを定義します。

図2-18 カレンダーの適用例2

[図データ]

上記の図のように設定すると,各業務は次のように実行されます。

東京の業務
毎日業務を実行するカレンダーを参照しているので,業務が毎日実行されます。
広島の業務
日曜日だけが休業日のカレンダーを参照しているので,業務が月曜日から土曜日まで実行されます。
名古屋の業務
土曜日と日曜日が休業日のカレンダーを参照しているので,業務が月曜日から金曜日まで実行されます。

このような例で,「AJSROOT1」というグループを監視画面で確認すると,業務グループの下にある,すべての業務の予定や結果を一度に確認できます。そのため,一人のシステム管理者がすべての業務を管理しやすくなります。

(7) 業務の実行登録

業務の実行登録方法と,どのような場合に使用したらよいかを次の表に示します。

表2-7 業務の実行登録方法

実行登録種別機能ベターユース
即時実行登録業務(ジョブネット)を即時に実行します。
スケジュール定義情報が設定されている場合でも,登録したらすぐに実行します。
次のような場合に使用することをお勧めします。
  • スケジュールを定義している業務(ジョブネット)に対して,処理フローの整合性テストを実施する場合
  • ファイル転送アプリケーション(JP1/FTPなど)が正常終了したときに起動されるコマンドの実行を契機として,業務(ジョブネット)を実行する場合
  • アプリケーション中から業務(ジョブネット)を実行する場合
  • JP1/IMの自動アクションを契機として,業務(ジョブネット)を実行する場合
計画実行登録業務(ジョブネット)に設定されているスケジュール定義情報に従って業務(ジョブネット)を実行します。
業務(ジョブネット)の実行終了時に次回実行予定を計算します。
次のような場合に使用することをお勧めします。
  • 数日先の業務(ジョブネット)のスケジュール変更がない運用を実施する場合
  • カレンダー上の日付を運用日にしたり,休業日にしたりすることで,すぐに業務(ジョブネット)の実行予定に反映したい場合
  • ファイルの更新など,ユーザーの行動を契機として,1日に決まった回数だけ業務(ジョブネット)を実行したい場合(起動条件の設定が前提)
確定実行登録業務(ジョブネット)に設定されているスケジュール定義情報に従って業務(ジョブネット)を実行します。
実行登録時に指定した期間分の実行予定を計算します。
次のような場合に使用することをお勧めします。
  • 数日先の業務(ジョブネット)のスケジュール変更が必要ある運用を実施する場合
  • 特定の期間だけ業務(ジョブネット)を実行したい場合