nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
バッチアプリケーション開発において、業務処理をスケジュールを組んで、実行したいという要求があります。
業務処理をスケジュールして実行するには、スケジュールを管理する機能と、スケジュールを起動して実行する機能が必要です。
スケジュール実行には、以下のような機能が必要となります。
スケジュール管理には、以下のような機能が必要となります。
Nimbusには、2つのスケジューラ実装があります。
簡易スケジューラと高機能スケジューラです。
簡易スケジューラは、Nimbus2で廃止されているため非推奨です。
関連するパッケージは、以下です。
簡易なスケジューラです。
簡易である故の制限として、
スケジュールの起動を行う機能を抽象化したのがScheduler。
スケジュールの生成を行う機能を抽象化したのがScheduleFactory。
スケジュールの状態保存を行う機能を抽象化したのがScheduleStateManager。
スケジュールを抽象化したのがSchedule。
スケジュールの実行を行う機能を抽象化したのがScheduleTask。
インタフェースjp.ossc.nimbus.service.scheduler.Schedulerは、ScheduleFactoryから取得したScheduleの起動を行う機能を抽象化したものです。
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler.TimerSchedulerService | デフォルト実装。java.util.Timerを利用して、スケジュールの起動を行う |
インタフェースjp.ossc.nimbus.service.scheduler.ScheduleFactoryは、引数で指定されたキーに該当するScheduleを生成する機能を抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler.Scheduler | スケジュールを取得するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler.SimpleScheduleFactoryService | 引数のキーは無視して、サービス定義でインジェクションした固定のスケジュール配列を生成する |
jp.ossc.nimbus.service.scheduler.KeyMappingScheduleFactoryService | 引数のキーに該当するScheduleFactoryからスケジュール配列を生成する |
jp.ossc.nimbus.service.scheduler.DateMappingScheduleFactoryService | 引数のキーをjava.util.Dateとみなして、日付条件に該当するScheduleFactoryからスケジュール配列を生成する |
jp.ossc.nimbus.service.scheduler.DatabaseTimerScheduleFactoryService | データベースからスケジュールを読み込み、引数のキーに該当するスケジュール配列を生成する |
インタフェースjp.ossc.nimbus.service.scheduler.ScheduleStateManagerは、スケジュールの実行状態を保存する機能を抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler.Scheduler | スケジュールの状態を保存するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler.DefaultScheduleStateManagerService | デフォルト実装。スケジュールの状態をCacheMapに保存します。 |
jp.ossc.nimbus.service.scheduler.DatabaseScheduleStateManagerService | スケジュールの状態をデータベースに保存します。 |
インタフェースjp.ossc.nimbus.service.scheduler.Scheduleは、スケジュールを抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler.Scheduler | 実行するスケジュールとして使用する |
jp.ossc.nimbus.service.scheduler.ScheduleFactory | スケジュールを提供するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler.TimerScheduleService | デフォルト実装。 |
インタフェースjp.ossc.nimbus.service.scheduler.ScheduleTaskは、スケジュールを実行する機能を抽象化したものです。
このインタフェースを直接実装したアプリケーションを作成する事も可能です。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler.Schedule | スケジュールを実行するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler.BeanFlowCallScheduleTaskService | 業務フローを呼び出す |
jp.ossc.nimbus.service.scheduler.IOCCallScheduleTaskService | IOCを呼び出す |
サンプルは、以下。
実行するスケジュールを日付毎に管理し、クラスタを組んで分散実行が可能な高機能なスケジューラです。
スケジュールの依存性管理はもとより、実行遅延監視やスケジュールのリスケジュール機能なども持ちます。
スケジュールの起動を行う機能を抽象化したのがScheduler。
日付の概念を持たないスケジュールのマスタとなる機能を抽象化したのがScheduleMaster。
当日実行するスケジュールの機能を抽象化したのがSchedule。
スケジュールマスタから当日に実行するスケジュールを作成する機能を抽象化したのがScheduleMaker。
当日に実行するスケジュールを管理する機能を抽象化したのがScheduleManager。
スケジュールの実行を行う機能を抽象化したのがScheduleExecutor。
スケジュールの管理をHTTPで行うScheduleManagerServlet。
インタフェースjp.ossc.nimbus.service.scheduler2.Schedulerは、ScheduleManagerから現在実行すべきスケジュールを取得してキューに投入し、プールした実行スレッドでスケジュールをScheduleExecutorに渡して実行する機能を抽象化したものです。
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler2.DefaultSchedulerService | デフォルト実装。起動するスケジュールをQueueHandlerContainerに投入する。 |
jp.ossc.nimbus.service.scheduler2.JMSSchedulerService | 起動するスケジュールをJMS Queueに投入する。 |
インタフェースjp.ossc.nimbus.service.scheduler2.ScheduleMakerは、jp.ossc.nimbus.service.scheduler2.ScheduleMasterから当日に実行するjp.ossc.nimbus.service.scheduler2.Scheduleを作成する機能を抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler2.ScheduleManager | スケジュールマスタからスケジュールを作成するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler2.DefaultScheduleMakerService | デフォルト実装。 |
jp.ossc.nimbus.service.scheduler2.DateKeyConditionScheduleMakerService | スケジュールを作成するかどうかの条件判定を日付で行う |
jp.ossc.nimbus.service.scheduler2.BeanFlowConditionScheduleMakerService | スケジュールを作成するかどうかの条件判定を業務フローで行う |
jp.ossc.nimbus.service.scheduler2.DatabaseConditionScheduleMakerService | スケジュールを作成するかどうかの条件判定をSQLで行う |
インタフェースjp.ossc.nimbus.service.scheduler2.ScheduleManagerは、ScheduleMakerにScheduleMasterを渡して、当日のScheduleを作成する機能と、スケジュールを管理及び監視する機能を抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler2.Scheduler | スケジュールの検索、リスケジュール、スケジュールの状態変更を行うために使用する |
jp.ossc.nimbus.service.scheduler2.ScheduleExecutor | スケジュールの状態変更を行うために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler2.DefaultScheduleManagerService | デフォルト実装。スケジュールをメモリまたはファイルで管理します。スケジュールの状態を他JVM上のScheduleManagerと共有できないため、クラスタはサポートしません。 |
jp.ossc.nimbus.service.scheduler2.DatabaseScheduleManagerService | スケジュールをデータベースで管理します。 |
インタフェースjp.ossc.nimbus.service.scheduler2.ScheduleExecutorは、Scheduleを実行及び実行中のScheduleを制御する機能を抽象化したものです。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.scheduler2.Scheduler | スケジュールを実行するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.scheduler2.BeanFlowScheduleExecutorService | 業務フローを呼び出します |
jp.ossc.nimbus.service.scheduler2.ConcentrateScheduleExecutorService | 集配信スケジュールを業務フローで実行し、ConcentrateBackupManagerで集配信したオブジェクトをバックアップします |
jp.ossc.nimbus.service.scheduler2.CommandScheduleExecutorService | シェルやバッチなどのコマンドを実行します |
サンプルは、以下。