nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
jp.ossc.nimbus.service.scheduler.DatabaseTimerScheduleFactoryServiceは、データベースから読み込んだスケジュールから、引数で指定されたキーに関連付けられたスケジュールを提供するScheduleFactory実装サービスです。
このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。
下位サービスインタフェース | 用途 |
jp.ossc.nimbus.service.connection.ConnectionFactory | データベースに接続するJDBCコネクションを取得する |
jp.ossc.nimbus.service.scheduler.ScheduleStateManager | スケジュールに設定する。 |
jp.ossc.nimbus.service.scheduler.ScheduleTask | スケジュールに設定する。 |
jp.ossc.nimbus.service.queue.Queue | スケジュールに設定する。 |
jp.ossc.nimbus.service.journal.Journal | スケジュールに設定する。 |
jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerFactory | スケジュールタスクに設定する。 |
jp.ossc.nimbus.service.ioccall.FacadeCaller | スケジュールタスクに設定する。 |
以下に簡単なサービス定義を示します。
- <?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.DatabaseTimerScheduleFactoryService">
- <!-- スケジュールの状態を管理するScheduleStateManagerサービスのサービス名を設定する -->
- <attribute name="ScheduleStateManagerServiceName">#ScheduleStateManager</attribute>
- <!-- JDBCコネクションファクトリサービスのサービス名を設定する -->
- <attribute name="ConnectionFactoryServiceName">#ConnectionFactory</attribute>
- <!-- スケジュールのBeanFlowを実行するBeanFlowInvokerFactoryサービスのサービス名を設定する -->
- <attribute name="ScheduleBeanFlowInvokerFactoryServiceName">#BeanFlowInvokerFactory</attribute>
- <!-- スケジュールマスタSQLを設定する -->
- <attribute name="ScheduleMasterQuery">select NAME, FLOW, STARTTIME, ENDTIME, DELAY, PERIODINTERVAL, EXECCOUNT, EXEC_OVER_STARTTIME_FLG, FIXEDRATE_FLG, DEPENDS, WAIT_TIMEOUT, CHECK_INATERVAL, QUEUENAME, GARBAGE_QUEUE from SCHEDULE_MST</attribute>
- <!-- スケジュールマスタSQL中の「スケジュール名」のインデックスを設定する -->
- <attribute name="ScheduleNameQueryIndex">1</attribute>
- <!-- スケジュールマスタSQL中の「BeanFlow名」のインデックスを設定する -->
- <attribute name="ScheduleBeanFlowNameQueryIndex">2</attribute>
- <!-- スケジュールマスタSQL中の「開始時間」のインデックスを設定する -->
- <attribute name="ScheduleStartTimeQueryIndex">3</attribute>
- <!-- スケジュールマスタSQL中の「終了時間」のインデックスを設定する -->
- <attribute name="ScheduleEndTimeQueryIndex">4</attribute>
- <!-- スケジュールマスタSQL中の「遅延時間」のインデックスを設定する -->
- <attribute name="ScheduleDelayQueryIndex">5</attribute>
- <!-- スケジュールマスタSQL中の「繰り返し間隔」のインデックスを設定する -->
- <attribute name="SchedulePeriodQueryIndex">6</attribute>
- <!-- スケジュールマスタSQL中の「繰り返し回数」のインデックスを設定する -->
- <attribute name="ScheduleCountQueryIndex">7</attribute>
- <!-- スケジュールマスタSQL中の「開始時間を過ぎていた場合にスケジュールを開始するかのフラグ」のインデックスを設定する -->
- <attribute name="ScheduleExecuteWhenOverStartTimeQueryIndex">8</attribute>
- <!-- スケジュールマスタSQL中の「固定頻度実行フラグ」のインデックスを設定する -->
- <attribute name="ScheduleFixedRateQueryIndex">9</attribute>
- <!-- スケジュールマスタSQL中の「依存スケジュール名」のインデックスを設定する -->
- <attribute name="ScheduleDependsScheduleNamesQueryIndex">10</attribute>
- <!-- スケジュールマスタSQL中の「依存スケジュール待ちタイムアウト」のインデックスを設定する -->
- <attribute name="ScheduleDependencyTimeoutQueryIndex">11</attribute>
- <!-- スケジュールマスタSQL中の「依存スケジュール状態確認間隔」のインデックスを設定する -->
- <attribute name="ScheduleDependencyConfirmIntervalQueryIndex">12</attribute>
- <!-- スケジュールマスタSQL中の「キューサービス名」のインデックスを設定する -->
- <attribute name="ScheduleQueueServiceNameQueryIndex">13</attribute>
- <!-- スケジュールマスタSQL中の「キューをガベージするかどうか」のインデックスを設定する -->
- <attribute name="ScheduleGarbageQueueQueryIndex">14</attribute>
- <depends>ScheduleStateManager</depends>
- <depends>ConnectionFactory</depends>
- <depends>BeanFlowInvokerFactory</depends>
- <depends>Queue</depends>
- </service>
- <!-- スケジュールの状態を管理するScheduleStateManagerサービス -->
- <service name="ScheduleStateManager"
- code="jp.ossc.nimbus.service.scheduler.DatabaseScheduleStateManagerService">
- <attribute name="ConnectionFactoryServiceName">ConnectionFactory</attribute>
- <attribute name="ScheduleStateInsertQuery">insert into SCHEDULE_STATE(NAME, STATE, UPDATETIME) values(?, ?, ?)</attribute>
- <attribute name="ScheduleStateSelectQuery">select STATE from SCHEDULE_STATE where NAME = ?</attribute>
- <attribute name="ScheduleStateUpdateQuery">update SCHEDULE_STATE set STATE = ?, UPDATETIME = ? where NAME = ?</attribute>
- <attribute name="ScheduleStateDeleteQuery">delete from SCHEDULE_STATE where NAME = ?</attribute>
- <attribute name="ScheduleStateTruncateQuery">truncate table SCHEDULE_STATE</attribute>
- <depends>ConnectionFactory</depends>
- </service>
- <!-- JDBCドライバ経由でConnectionを取得するConnectionFactoryサービス -->
- <service name="ConnectionFactory"
- code="jp.ossc.nimbus.service.connection.JDBCConnectionFactoryService">
- <attribute name="DriverName">org.hsqldb.jdbcDriver</attribute>
- <attribute name="ConnectionURL">jdbc:hsqldb:./localDB</attribute>
- <attribute name="UserName">sa</attribute>
- <attribute name="Password"></attribute>
- </service>
- <!-- BeanFlowInvokerを生成するBeanFlowInvokerFactoryサービス -->
- <service name="BeanFlowInvokerFactory"
- code="jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryService">
- <attribute name="DirPaths">flows</attribute>
- <attribute name="BeanFlowInvokerAccessClass">jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2</attribute>
- <attribute name="Validate">true</attribute>
- </service>
- <!-- スケジュールの非同期実行に使用するQueueサービス -->
- <service name="Queue"
- code="jp.ossc.nimbus.service.queue.DefaultQueueService"
- instance="factory"/>
- </manager>
- </server>