nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
jp.ossc.nimbus.service.scheduler.DateMappingScheduleFactoryServiceは、引数で指定されたキーをjava.util.Dateとみなし、日付キーに関連付けられたScheduleFactoryから取得したスケジュールを提供するScheduleFactory実装サービスです。
日付の条件となる文字列は、DateKeyが解釈しますが、DateEvaluatorインタフェースを実装することで、拡張する事ができます。
このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。
下位サービスインタフェース | 用途 |
jp.ossc.nimbus.service.scheduler.ScheduleFactory | 提供するスケジュールを取得する。 |
jp.ossc.nimbus.service.scheduler.DateEvaluator | 日付キーの解釈を拡張する。 |
以下に簡単なサービス定義を示します。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <!-- スケジュールファクトリサービス -->
- <service name="ScheduleFactory"
- code="jp.ossc.nimbus.service.scheduler.DateMappingScheduleFactoryService">
- <!-- キーとスケジュールファクトリのサービス名のマッピングを設定する -->
- <attribute name="KeyAndScheduleFactoryServiceName">
- WEEK@SATURDAY OR WEEK@SUNDAY=#ScheduleFactory1,
- DAY@END=#ScheduleFactory2
- </attribute>
- <!-- キーに該当するスケジュールファクトリが見つからなかった場合に使用するスケジュールファクトリのサービス名を設定する -->
- <attribute name="DefaultScheduleFactoryServiceName">#ScheduleFactory3</attribute>
- <depends>ScheduleFactory1</depends>
- <depends>ScheduleFactory2</depends>
- <depends>ScheduleFactory3</depends>
- </service>
- <!-- スケジュールファクトリサービス -->
- <service name="ScheduleFactory1"
- code="jp.ossc.nimbus.service.scheduler.SimpleScheduleFactoryService">
- <attribute name="ScheduleServiceNames">
- #Schedule1
- #Schedule2
- </attribute>
- <depends>Schedule1</depends>
- <depends>Schedule2</depends>
- </service>
- <!-- スケジュールファクトリサービス -->
- <service name="ScheduleFactory2"
- code="jp.ossc.nimbus.service.scheduler.SimpleScheduleFactoryService">
- <attribute name="ScheduleServiceNames">
- #Schedule1
- #Schedule3
- </attribute>
- <depends>Schedule1</depends>
- <depends>Schedule3</depends>
- </service>
- <!-- スケジュールファクトリサービス -->
- <service name="ScheduleFactory3"
- code="jp.ossc.nimbus.service.scheduler.SimpleScheduleFactoryService">
- <attribute name="ScheduleServiceNames">
- #Schedule1
- #Schedule2
- #Schedule3
- </attribute>
- <depends>Schedule1</depends>
- <depends>Schedule2</depends>
- <depends>Schedule3</depends>
- </service>
- <!-- スケジュール1
- スケジューラ起動の1秒後に1度だけ実行するスケジュール
- -->
- <service name="Schedule1"
- code="jp.ossc.nimbus.service.scheduler.TimerScheduleService">
- <attribute name="Name">Task1</attribute>
- <attribute name="Task">
- <object code="sample.task.SampleTask">
- <attribute name="Name">Task1</attribute>
- </object>
- </attribute>
- <attribute name="Delay">1000</attribute>
- </service>
- <!-- スケジュール2
- スケジューラ起動直後に実行され、1秒間隔で実行され続けるスケジュール
- -->
- <service name="Schedule2"
- code="jp.ossc.nimbus.service.scheduler.TimerScheduleService">
- <attribute name="Name">Task2</attribute>
- <attribute name="Task">
- <object code="sample.task.SampleTask">
- <attribute name="Name">Task2</attribute>
- </object>
- </attribute>
- <attribute name="Delay">0</attribute>
- <attribute name="Period">1000</attribute>
- </service>
- <!-- スケジュール3
- スケジューラ起動直後に実行され、1秒間隔で実行され続けるスケジュール
- 但し、タスクの処理時間が1.5秒かかるため、結果として1.5秒間隔で実行される。
- また、非同期処理用のキューを設定しているため、他のスケジュールの実行には影響を及ぼさない。
- -->
- <service name="Schedule3"
- code="jp.ossc.nimbus.service.scheduler.TimerScheduleService">
- <attribute name="Name">Task3</attribute>
- <attribute name="Task">
- <object code="sample.task.SampleTask">
- <attribute name="Name">Task3</attribute>
- <attribute name="ProcessTime">1500</attribute>
- </object>
- </attribute>
- <attribute name="Delay">0</attribute>
- <attribute name="Period">1000</attribute>
- <attribute name="QueueServiceName">Queue</attribute>
- <attribute name="DependsScheduleNames">Task1</attribute>
- <depends>
- <!-- 非同期処理用のキューサービス -->
- <service name="Queue"
- code="jp.ossc.nimbus.service.queue.DefaultQueueService"/>
- </depends>
- </service>
- </manager>
- </server>
jp.ossc.nimbus.service.scheduler.DateEvaluatorは、jp.ossc.nimbus.service.scheduler.DateKeyの日付文字列の解釈を拡張するためのインタフェースです。
インタフェースのみの提供で、実装は提供しません。ユーザが独自に実装してください。