技術情報

GroupSessionでバッチ処理を実装する

-- 2013.01.29 GroupSession Version4.1.0 --

はじめに

業務アプリケーションではよくバッチ処理(定期的に行いたい処理)があると思います。GroupSessionでも管理者で設定を行った場合、バックアップの作成やRSS情報の更新、自動データ削除の処理を行っています。


この様なバッチ処理をGroupSessionではかんたんに実装できる様に作成されているので、実装方法をご紹介いたします。

前提条件

下記ドキュメントをご確認いただいた方を対象としています。

「Hello World!」プラグインを作成する方法に追加する形でバッチ処理の実装を行うため、 事前に「Hello World!」プラグインを作成する方法の環境を準備してください。

今回はサンプルとして1日に1回、1時間に1回、5分に1回ログファイルに「Hello World!」と表示するバッチ処理を実装します。

実装の手順

バッチ処理実装の手順についてご説明します。

jp.groupsession.v2.batch.IBatchListenerの実装クラスを作成する

do5mBatch,doOneHourBatch,doDayBatchの3つのメソッドにログ出力の内容を記述するのみです。



package jp.groupsession.v2.newplugin.helloworld;

import java.sql.Connection;

import jp.groupsession.v2.batch.IBatchListener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * <br>[機  能] バッチ処理サンプル
 * <br>[解  説] 5分、1時間、1日毎に「Hello World!」とログに出力する。
 * <br>[備  考]
 *
 * @author JTS
 */
public class HelloBatch implements IBatchListener {
    /** ロギングクラス */
    private static Log log__ = LogFactory.getLog(HelloBatch.class);

    /**
     * <p>5分に1回実行されるバッチ処理
     */
    public void do5mBatch(Connection con, IBatchModel param) throws Exception {
        log__.info("5分に1回 Hello World!");
    }

    /**
     * <p>1時間に1回実行されるバッチ処理
     */
    public void doOneHourBatch(Connection con, IBatchModel param) throws Exception {
        log__.info("1時間に1回 Hello World!");
    }

    /**
     * <p>1日1回実行されるバッチ処理
     * <p>「メイン - 管理者設定 - バッチ処理起動時間設定」で設定された時間に実行される。
     */
    public void doDayBatch(Connection con, IBatchModel param) throws Exception {
        log__.info("1日に1回 Hello World!");
    }
}



    

「Hello World!」プラグインを作成する方法の手順9を参考に、ソースコードのコンパイルを行ってください。


plugin.xmlを修正する

${gsession3}/WEB-INF/plugin/newplugin/plugin.xmlをテキストエディタで開き下記の赤字部分を追記します。



<?xml version="1.0" encoding="Shift_jis" ?>

  <plugin>

    <!-- プラグインID -->
    <id>newplugin</id>

    <!-- 名称  -->
    <name>ニュープラグイン</name>

    <!-- 説明  -->
    <description>新しいプラグインです。</description>


    <!-- バッチ処理の実行を行うリスナー  -->
    <listener>
      <!-- リスナー名  -->
      <listener-name>batchjob</listener-name>
      <!-- リスナー実装クラス  -->
      <listener-class>jp.groupsession.v2.newplugin.helloworld.HelloBatch</listener-class>
    </listener>


    <!-- トップメニューの情報を記述する 記述しない場合はメニューに表示しない  -->
    <topmenu-info>
      <!-- メニューへの表示/非表示 -->
      <view>true</view>
      <!-- メニューアイコンクリック時に遷移するURL -->
      <url>../newplugin/helloworld.do</url>
    </topmenu-info>

    <!-- ヘルプ情報を設定する。 -->
    <help-info>
      <!-- メニューの表示/非表示 -->
      <view>false</view>
    </help-info>

  </plugin>
    

動作確認

Tomcatを起動し、動作を確認するためにしばらく待ちます。1日1回のバッチ処理の動作確認を行うには「メイン - 管理者設定 - バッチ処理起動時間設定」で時間を指定しておくと良いと思います。


${gsession}/WEB-INF/log/GroupSession.logに上記プログラムで記載したログが出力されます。

注意事項

起動時間は排他制御のため数秒ずらしてあります。1時間に1回のバッチで5秒、5分に1回のバッチで10秒ずらしてあります。1日1回ではずれはありません。

そのため1時間に1回のバッチを13時に起動しようとした場合、13:00:05に起動されます。

5分に1回のバッチを17:30に起動しようとした場合、実際に起動されるのは17:30:10になります。

サンプルのダウンロード

上記サンプルを、こちらからダウンロードできます。

→ サンプルをダウンロード


1) zipファイルを解凍後、「plugin_sample」ディレクトリの下に「gsession」ディレクトリができます。

2) GroupSessionをインストールしたgsessionディレクトリに、
   解凍後の「gsession」ディレクトリを上書きします。

3) 「Hello World!」プラグインを作成する方法の手順9を参考に、コンパイルを行います。

4) tomcatを再起動すると上記の「Hello World!」プラグインが追加されます。


Copyright 日本トータルシステム株式会社