Technical information

Kompiraジョブフローの基礎 ジョブフローから別のジョブフローを呼び出す

メールを送信する」では、指定のURLにリクエストを送り、その結果をメールで通知するジョブフローを作成しました。

ここではmailto()を何度も呼び出していますが、これを別のジョブフローに切り出して、共通部品化してみます。

以下のようなジョブフロー「メール送信」を作成します。

ここではmailto()の引数を、全てパラメータとして設定します。
このジョブフローを「メールでの通知」ジョブフローから呼び出すように、以下の様に書き換えられます。

呼び出すところを見てみますと、次のようになっています。

このように[ ]内にジョブフローを記載する事で、他のジョブフローを呼び出す事が出来ます。また[jobflow: パラメータ]として、呼ばれる側のパラメータを動的に指定する事が出来ます。パラメータが複数ある場合には上記のように”,(カンマ)”で区切って記載します。
呼ばれる側のジョブフロー(上記の場合は「メール送信」)でパラメータが定義されている順番で、呼ぶ側(上記の場合は「メールでの通知」)のパラメータを並べます。

では、呼ばれる側の差出人アドレス(“param_from”)はデフォルト値(“info@kompira.jp”)を使いたいような場合には、どのように呼び出したらいいでしょうか?
この場合には、呼ばれる側のパラメータ名を明示的に指定します。

パラメータ名を付加して呼び出す場合には、順番は前後しても構いません。

さて、ここで応答がなかった場合にWebサーバー関連のプロセス(httpd, mysqld)の起動状況を確認して、停止していた場合には再起動するジョブフロー「プロセス再起動」を作成して追加してみましょう。このジョブフローを呼び出す際には通知メールの送信先アドレス等を引数に取るものとします。

これを元の「メールでの通知」ジョブフローに追加すると、以下のようになります。

上記で見てきた通り、共通する機能や処理に関しては、独立したジョブフローを作成しておくことで、繰り返し処理であったり複数のジョブフローから呼び出す事が可能になります。また、呼び出す側は実行時の条件指定が出来るため、条件に応じた対応を行う事が可能となります。

今回の記事ではmailto()を同じ機能のジョブフローで置き換えるなど、極めて単純な例で説明をいたしましたが、もちろんまとまった大規模な処理を記述する事も可能です。

1つのジョブフローで処理をすべて書くことは可能ですが、可読性・保守性を高めるためには、適切にジョブフローを分割して管理することが重要です。