サイト内の現在位置を表示しています。

ジョブネットワークの排他制御を楽に行おう

JobCenter Lab vol.29

こんにちは。
WebSAM JobCenter ブログ担当です。

2021年4月12日にリリースされたWebSAM JobCenterの新バージョンR15.5でジョブネットワークの同時実行制御(排他制御)が簡単に出来るようになりました。
具体的な要件を例に、本機能の便利さをご紹介します。

要件のご説明

要件は以下の通りです。

【要件】

  1. A支店、B支店、C支店の売上集計処理でログ書込みを行う。
  2. 各支店の売上集計処理は任意のタイミングで実行される。
    (今回はA支店、B支店、C支店の順に実行)
  3. ログは共通の1つのファイルに書き込む。
  4. ログ書込みは重複して実行されないように排他制御を行う。

各支店の売上集計処理のジョブネットワークは以下のようになります。

ジョブネットワークのイメージ

R15.4以前の場合

排他制御を行う場合、2つのやり方があります。

  1. 同時実行数が1のバッチキューを単位ジョブ「ログ書込み」の投入キューに設定する
  2. WebSAM JobCenterの機能を使わず、単位ジョブ「ログ書込み」で実行されるプログラムに排他制御を組み込む

1. の設定例は以下となります。

ログ書込み用のバッチキューに同時実行可能数1を設定し、ログ書込みの単位ジョブのパラメータからバッチキューを設定します。

設定画面
設定画面

上記の設定を行うことにより、各支店のログ書込みを同時に行おうとすると最初に投入された支店のログ書込みが終了するまでは、別の支店は投入しても実行待ちになり、同時に実行されません。

A支店売上集計処理、B支店売上集計処理、C支店売上集計処理の順番でジョブネットワークが投入された場合、以下のような流れでジョブが実行されます。

実行イメージ

デメリット

  • 同時実行可能数1のログ書込み用のバッチキューだけでは他の同時実行可能な単位ジョブも排他制御がかかってしまうため、ログ書込み用とその他の単位ジョブ用にバッチキューを分ける必要があります。そのため準備するキューが増え、管理が煩雑になります。
  • 単位ジョブのパラメータから参照できるのはバッチキューの名称だけであり、どのジョブネットワークと排他制御されているのかがすぐにわかりません。

R15.5の場合

ログ書き込み処理を行う単位ジョブの排他制御を行う代わりに、各支店の売上集計処理のジョブネットワーク同士を排他制御対象とすることで要件を達成します。
ジョブネットワーク同士の排他制御を行うには、ジョブネットワークのパラメータから「同時実行状態」タブより排他対象のジョブネットワークを指定することで設定することができます。設定例は以下となります。

設定画面

上記の設定をA支店売上集計処理、B支店売上集計処理、C支店売上集計処理のジョブネットワークに行うことにより、各支店のジョブネットワークを同時に実行しようとすると最初に投入された支店のジョブネットワークが終了するまでは、別の支店は投入しても待ち状態になり、同時に実行されません。

A支店売上集計処理、B支店売上集計処理、C支店売上集計処理の順番でジョブネットワークが投入された場合、以下のような流れでジョブが実行されます。

実行イメージ

メリット

  • ジョブネットワークのパラメータから排他制御の設定が簡単に行えます。排他制御の為のバッチキューの作成は不要です。

上記以外にも、ジョブネットワークの排他制御がWebSAM JobCenterの標準機能で実現できますので、排他制御を行うプログラムを作成する必要がなく、コスト削減できます。

おわりに

今回のブログはいかがでしたでしょうか?以下のWebページから60日間無償で利用できる試用版がダウンロードできますので、ぜひ新機能をお試しください。

[試用版]
https://jpn.nec.com/websam/jobcenter/trial.html

[参考情報]
https://jpn.nec.com/websam/jobcenter/download.html
  ⇒WebSAM JobCenter基本操作ガイド

本ブログは皆様から頂いた様々なお問合せを参考にして更新しております。今後も皆様のお役に立つ情報を発信して行きたいと考えておりますのでWebSAM JobCenterブログをよろしくお願いいたします。



お問い合わせ

当ブログに関するお問い合わせは、WebSAM JobCenterお問い合わせ窓口までお問い合わせください。