ScheduleFactory実装サービス jp.ossc.nimbus.service.scheduler.DatabaseTimerScheduleFactoryService

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スケジュールタスクに設定する。

以下に簡単なサービス定義を示します。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- スケジュールファクトリサービス -->
  8. <service name="ScheduleFactory"
  9. code="jp.ossc.nimbus.service.scheduler.DatabaseTimerScheduleFactoryService">
  10. <!-- スケジュールの状態を管理するScheduleStateManagerサービスのサービス名を設定する -->
  11. <attribute name="ScheduleStateManagerServiceName">#ScheduleStateManager</attribute>
  12. <!-- JDBCコネクションファクトリサービスのサービス名を設定する -->
  13. <attribute name="ConnectionFactoryServiceName">#ConnectionFactory</attribute>
  14. <!-- スケジュールのBeanFlowを実行するBeanFlowInvokerFactoryサービスのサービス名を設定する -->
  15. <attribute name="ScheduleBeanFlowInvokerFactoryServiceName">#BeanFlowInvokerFactory</attribute>
  16. <!-- スケジュールマスタSQLを設定する -->
  17. <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>
  18. <!-- スケジュールマスタSQL中の「スケジュール名」のインデックスを設定する -->
  19. <attribute name="ScheduleNameQueryIndex">1</attribute>
  20. <!-- スケジュールマスタSQL中の「BeanFlow名」のインデックスを設定する -->
  21. <attribute name="ScheduleBeanFlowNameQueryIndex">2</attribute>
  22. <!-- スケジュールマスタSQL中の「開始時間」のインデックスを設定する -->
  23. <attribute name="ScheduleStartTimeQueryIndex">3</attribute>
  24. <!-- スケジュールマスタSQL中の「終了時間」のインデックスを設定する -->
  25. <attribute name="ScheduleEndTimeQueryIndex">4</attribute>
  26. <!-- スケジュールマスタSQL中の「遅延時間」のインデックスを設定する -->
  27. <attribute name="ScheduleDelayQueryIndex">5</attribute>
  28. <!-- スケジュールマスタSQL中の「繰り返し間隔」のインデックスを設定する -->
  29. <attribute name="SchedulePeriodQueryIndex">6</attribute>
  30. <!-- スケジュールマスタSQL中の「繰り返し回数」のインデックスを設定する -->
  31. <attribute name="ScheduleCountQueryIndex">7</attribute>
  32. <!-- スケジュールマスタSQL中の「開始時間を過ぎていた場合にスケジュールを開始するかのフラグ」のインデックスを設定する -->
  33. <attribute name="ScheduleExecuteWhenOverStartTimeQueryIndex">8</attribute>
  34. <!-- スケジュールマスタSQL中の「固定頻度実行フラグ」のインデックスを設定する -->
  35. <attribute name="ScheduleFixedRateQueryIndex">9</attribute>
  36. <!-- スケジュールマスタSQL中の「依存スケジュール名」のインデックスを設定する -->
  37. <attribute name="ScheduleDependsScheduleNamesQueryIndex">10</attribute>
  38. <!-- スケジュールマスタSQL中の「依存スケジュール待ちタイムアウト」のインデックスを設定する -->
  39. <attribute name="ScheduleDependencyTimeoutQueryIndex">11</attribute>
  40. <!-- スケジュールマスタSQL中の「依存スケジュール状態確認間隔」のインデックスを設定する -->
  41. <attribute name="ScheduleDependencyConfirmIntervalQueryIndex">12</attribute>
  42. <!-- スケジュールマスタSQL中の「キューサービス名」のインデックスを設定する -->
  43. <attribute name="ScheduleQueueServiceNameQueryIndex">13</attribute>
  44. <!-- スケジュールマスタSQL中の「キューをガベージするかどうか」のインデックスを設定する -->
  45. <attribute name="ScheduleGarbageQueueQueryIndex">14</attribute>
  46. <depends>ScheduleStateManager</depends>
  47. <depends>ConnectionFactory</depends>
  48. <depends>BeanFlowInvokerFactory</depends>
  49. <depends>Queue</depends>
  50. </service>
  51. <!-- スケジュールの状態を管理するScheduleStateManagerサービス -->
  52. <service name="ScheduleStateManager"
  53. code="jp.ossc.nimbus.service.scheduler.DatabaseScheduleStateManagerService">
  54. <attribute name="ConnectionFactoryServiceName">ConnectionFactory</attribute>
  55. <attribute name="ScheduleStateInsertQuery">insert into SCHEDULE_STATE(NAME, STATE, UPDATETIME) values(?, ?, ?)</attribute>
  56. <attribute name="ScheduleStateSelectQuery">select STATE from SCHEDULE_STATE where NAME = ?</attribute>
  57. <attribute name="ScheduleStateUpdateQuery">update SCHEDULE_STATE set STATE = ?, UPDATETIME = ? where NAME = ?</attribute>
  58. <attribute name="ScheduleStateDeleteQuery">delete from SCHEDULE_STATE where NAME = ?</attribute>
  59. <attribute name="ScheduleStateTruncateQuery">truncate table SCHEDULE_STATE</attribute>
  60. <depends>ConnectionFactory</depends>
  61. </service>
  62. <!-- JDBCドライバ経由でConnectionを取得するConnectionFactoryサービス -->
  63. <service name="ConnectionFactory"
  64. code="jp.ossc.nimbus.service.connection.JDBCConnectionFactoryService">
  65. <attribute name="DriverName">org.hsqldb.jdbcDriver</attribute>
  66. <attribute name="ConnectionURL">jdbc:hsqldb:./localDB</attribute>
  67. <attribute name="UserName">sa</attribute>
  68. <attribute name="Password"></attribute>
  69. </service>
  70. <!-- BeanFlowInvokerを生成するBeanFlowInvokerFactoryサービス -->
  71. <service name="BeanFlowInvokerFactory"
  72. code="jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryService">
  73. <attribute name="DirPaths">flows</attribute>
  74. <attribute name="BeanFlowInvokerAccessClass">jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2</attribute>
  75. <attribute name="Validate">true</attribute>
  76. </service>
  77. <!-- スケジュールの非同期実行に使用するQueueサービス -->
  78. <service name="Queue"
  79. code="jp.ossc.nimbus.service.queue.DefaultQueueService"
  80. instance="factory"/>
  81. </manager>
  82. </server>


スケジューラ/簡易スケジューラ/ScheduleFactory