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

エラー終了時以外にもメール送信したい

JobCenter Lab vol.3

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

WebSAM JobCenterのジョブフローを定義するジョブネットワークには、「メール送信機能」がありますが、メール送信は実行したジョブ/部品でのエラー発生時のみになります。
しかし、ジョブ/部品が異常終了した時以外でも、メールで実行結果などを送信したい場合があります。

これを解決するために、「拡張カスタムジョブ部品」の「メール送信部品」を利用して、異常終了以外の場合でもメール送信する方法についてご紹介します。

JobCenterにおけるメール送信の方法

WebSAM JobCenterでメールを送信するには2つの方法があるので、まずは以下に整理します。

名 称 概 要
メール送信機能
  • ジョブネットワークの標準機能。
  • ジョブネットワーク1個につき1つの設定。
  • ジョブネットワークのパラメータで宛先などを設定。
  • ジョブエラー発生時のみ、1回だけメールが送信される。
メール送信部品
(※今回紹介)
  • 拡張カスタムジョブ部品の1つ。(R14.1以降で利用可)
  • ジョブネットワークのジョブフロー内に、複数配置可能。
  • メール送信部品毎に、パラメータでメール内容や宛先などを設定。
  • メール送信部品が実行される度に、設定した内容でメールが送信される。

終了コード別に内容を変えてメール送信する

ここでは、以下のサンプルを例に、「拡張カスタムジョブ部品」の「メール送信部品」を利用したメール送信の方法についてご紹介します。
例)単位ジョブ(A処理)の終了コード別にメールの内容を変えてメール送信する

A処理の終了コード別に、以下の本文内容でメール送信することにします。

終了コード メール本文内容
0 「A処理完了(OK)」+A処理の標準出力内容
1 「A処理完了(WARN=1)」+A処理の標準出力内容
10-20 「A処理完了(WARN=10-20)」+A処理の標準出力内容
上記以外 「A処理完了(NG)」+A処理の標準出力内容
作成するジョブネットワークは以下になります。

画面イメージ

作成するジョブネットワーク例

1.単位ジョブの終了コードと、標準出力を後続の部品で参照するための設定

A処理の単位ジョブに対し、正常/警告の終了コードの値と、標準出力を後続の部品で参照できるための、パラメータを設定します。

  • その他タブ
    項目 設定値 説明
    正常終了コード 0 正常終了コードの範囲を指定します
    警告終了コード 1,10-20 警告終了コードの範囲を指定します
  • 結果タブ
    項目 選択 説明
    変数継承 STDOUT 標準出力を介して変数継承を行います

2.条件分岐部品を配置し、終了コード別に分岐フローを作成

直前の単位ジョブの終了コードを元に分岐するフローを作成します。
以下のように、分岐フロー毎に、分岐条件の値の範囲を設定します。

画面イメージ
①条件分岐部品を置く                          ②値の範囲を設定

3.分岐フロー毎に、メール送信部品を配置

メール送信に利用する拡張カスタムジョブ部品と実現するために設定するパラメータ、スクリプトの記述はそれぞれ以下になります。

(1) 利用する拡張カスタムジョブ部品
  • 格納パス
    /Root/System/Tools/Mail
  • メール送信部品
    定義名 機能
    send_mail メール送信
(2)拡張カスタムジョブ部品の設定パラメータ
  • カスタムパラメータ設定タブ
    必須 変数 設定値 説明
      file_include ジョブ名.o
    または
    ジョブ名.e
    同一階層にある他の部品の標準出力、標準エラー出力をメールに取り込む場合に使用します。
        (ここでは、A処理.o) スクリプト内に{{{file_include}}}と記載することで内容が展開されます。
    以下の記述で読み込みます。
    • 標準出力…ジョブ名.o
    • 標準エラー出力…ジョブ名.e
    mail_from 任意 Fromアドレスを指定します
      mail_passwd 任意 SMTPサーバに認証が必要な場合のパスワードを指定します。
      mail_port 任意 SMTPサーバのポート番号を指定します
    (空白時は25)
    mail_server 任意 SMTPサーバ名を指定します
    mail_subject 任意
    (ここでは、「完了通知(WARN=10-20)」など)
    メールの件名を指定します
    mail_to 任意 送信先アドレスを指定します
      mail_user 任意 SMTPサーバに認証が必要な場合のユーザ名を指定します
      ssl_enable trueまたはFalse SMTPサーバとの通信に、SSLによる暗号化について指定します。(空白時はfalse)
    • true…暗号化必要
    • false…暗号化不要
     ※ file_includeと必須(〇)の変数への設定が最低限必要です。
  • 実行設定タブ
    必須 項目 設定値 説明
    投入キュー カスタムジョブ用のキュー 予め作成した、カスタムジョブ専用のキューを指定します
(3) スクリプト
画面イメージ

スクリプトに記述するメール本文の例

単位ジョブが警告終了するジョブでメール送信を試行

作成したジョブ定義を実行時、単位ジョブ(A処理)が警告終了となるように、単位ジョブ(A処理)のスクリプトの記述を、下記の内容(終了コード=10)にして実行してみます。

画面イメージ
単位ジョブ(A処理)のスクリプト記述例(終了コード=10)

上記内容のスクリプトのA処理を実行した結果、以下のように警告終了(終了コード=10-20)の時のメール送信が実行され、A処理からの標準出力を取り込んだ内容のメールが受信できました。

結果例のイメージ

警告終了時の実行結果例

画面イメージ

受信メール画面例

おわりに

メール送信部品を条件分岐と組み合わせて利用することで、単位ジョブの終了コードが異常終了以外の場合にも、タイトルや本文の内容を変えてメール送信ができました。
サブジョブネットワークに対しても同様にメール送信が行えます。

また、サンプルでは分岐フロー内でメール送信させましたが、フロー中のどこでもメール送信部品を配置することで、処理フロー中のどのステップが終了したのかの逐次通知などにも利用できます。

お問い合わせ

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