Japan
サイト内の現在位置を表示しています。
エラー終了時以外にもメール送信したい
JobCenter Lab vol.3【PR】JobCenterの導入や設計、運用に不安はありませんか?
JobCenterの保守・開発を担当する専門チームが、きめ細かい技術支援サービスを提供します。「初めて使うので心配」「設計に自信がない」「現在の使い方が正しいか確認したい」「AWSやAzure、Boxと連携したい」といったさまざまなお悩みにお答えします。詳細については資料をご覧ください。

こんにちは。WebSAM JobCenter ブログ担当の荒尾です。
                                                                
 WebSAM JobCenterのジョブフローを定義するジョブネットワークには、「メール送信機能」がありますが、メール送信は実行したジョブ/部品でのエラー発生時のみになります。
しかし、ジョブ/部品が異常終了した時以外でも、メールで実行結果などを送信したい場合があります。
                                                                
これを解決するために、「拡張カスタムジョブ部品」の「メール送信部品」を利用して、異常終了以外の場合でもメール送信する方法についてご紹介します。
JobCenterにおけるメール送信の方法
WebSAM JobCenterでメールを送信するには2つの方法があるので、まずは以下に整理します。
| 名 称 | 概 要 | 
|---|---|
| メール送信機能 | 
 | 
| メール送信部品 (※今回紹介) | 
 | 
終了コード別に内容を変えてメール送信する
ここでは、以下のサンプルを例に、「拡張カスタムジョブ部品」の「メール送信部品」を利用したメール送信の方法についてご紹介します。
 例)単位ジョブ(A処理)の終了コード別にメールの内容を変えてメール送信する
                                                
A処理の終了コード別に、以下の本文内容でメール送信することにします。 
| 終了コード | メール本文内容 | 
|---|---|
| 0 | 「A処理完了(OK)」+A処理の標準出力内容 | 
| 1 | 「A処理完了(WARN=1)」+A処理の標準出力内容 | 
| 10-20 | 「A処理完了(WARN=10-20)」+A処理の標準出力内容 | 
| 上記以外 | 「A処理完了(NG)」+A処理の標準出力内容 | 

作成するジョブネットワーク例
実現するためのポイントは以下の3つです。
1.単位ジョブの終了コードと、標準出力を後続の部品で参照するための設定
A処理の単位ジョブに対し、正常/警告の終了コードの値と、標準出力を後続の部品で参照できるための、パラメータを設定します。
- その他タブ 項目 設定値 説明 正常終了コード 0 正常終了コードの範囲を指定します 警告終了コード 1,10-20 警告終了コードの範囲を指定します 
- 結果タブ 項目 選択 説明 変数継承 STDOUT 標準出力を介して変数継承を行います 
2.条件分岐部品を配置し、終了コード別に分岐フローを作成
直前の単位ジョブの終了コードを元に分岐するフローを作成します。
以下のように、分岐フロー毎に、分岐条件の値の範囲を設定します。

3.分岐フロー毎に、メール送信部品を配置
メール送信に利用する拡張カスタムジョブ部品と実現するために設定するパラメータ、スクリプトの記述はそれぞれ以下になります。 
                                                
                                                
- 格納パス
 /Root/System/Tools/Mail
- メール送信部品
 定義名 機能 send_mail メール送信 
- カスタムパラメータ設定タブ
 
 ※ file_includeと必須(〇)の変数への設定が最低限必要です。必須 変数 設定値 説明 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…暗号化不要
 
- 実行設定タブ
 必須 項目 設定値 説明 〇 投入キュー カスタムジョブ用のキュー 予め作成した、カスタムジョブ専用のキューを指定します 

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

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

警告終了時の実行結果例

受信メール画面例
おわりに
メール送信部品を条件分岐と組み合わせて利用することで、単位ジョブの終了コードが異常終了以外の場合にも、タイトルや本文の内容を変えてメール送信ができました。
 サブジョブネットワークに対しても同様にメール送信が行えます。
                                                
 また、サンプルでは分岐フロー内でメール送信させましたが、フロー中のどこでもメール送信部品を配置することで、処理フロー中のどのステップが終了したのかの逐次通知などにも利用できます。
