ScheduleExecutor実装サービス jp.ossc.nimbus.service.scheduler2.ConcentrateScheduleExecutorService

jp.ossc.nimbus.service.scheduler2.ConcentrateScheduleExecutorServiceは、業務フローを使ってスケジュールされた集配信処理を実行するScheduleExecutor実装サービスです。

ここで言う集配信処理とは、FTPを代表とするデータ転送プロトコルを使って、データを配信(FTPではPUT)または収集(FTPではGET)するバッチ処理の事です。
このScheduleExecutorは、一定のフォーマット("GET|PUT,source,destination")で記述されたスケジュールの入力文字列を解析し、ConcentrateRequestに変換します。また、スケジュールの出力にはConcentrateResponseを設定し、業務フローに渡します。
業務フローでは、スケジュールの入力に設定されたConcentrateRequestから、集配信の種別(配信または収集)と、集配信元のパス情報、集配信先のパス情報を受け取り、集配信を行います。 同時に、集配信したデータをファイルとして一時保存して、ConcentrateResponseに登録します。
ConcentrateResponseに登録されたファイルをConcentrateBackupManagerに渡して、バックアップします。

このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。

下位サービスインタフェース用途
jp.ossc.nimbus.service.scheduler2.ScheduleManagerスケジュールの状態を変更する。
jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerFactory業務フローを取得する。
jp.ossc.nimbus.service.scheduler2.ConcentrateBackupManager集配信データファイルをバックアップする

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

  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. <!-- ScheduleExecutorサービス -->
  8. <service name="ScheduleExecutor"
  9. code="jp.ossc.nimbus.service.scheduler2.ConcentrateScheduleExecutorService">
  10. <!-- ScheduleManagerサービスのサービス名を設定する -->
  11. <attribute name="ScheduleManagerServiceName">#ScheduleManager</attribute>
  12. <!-- BeanFlowInvokerFactoryサービスのサービス名を設定する -->
  13. <attribute name="BeanFlowInvokerFactoryServiceName">#BeanFlowInvokerFactory</attribute>
  14. <!-- ConcentrateBackupManagerサービスのサービス名を設定する -->
  15. <attribute name="ConcentrateBackupManagerServiceName">#ConcentrateBackupManager</attribute>
  16. <depends>ScheduleManager</depends>
  17. <depends>BeanFlowInvokerFactory</depends>
  18. <depends>ConcentrateBackupManager</depends>
  19. </service>
  20. <!-- ScheduleManagerサービス -->
  21. <service name="ScheduleManager"
  22. code="jp.ossc.nimbus.service.scheduler2.DefaultScheduleManagerService">
  23. <attribute name="ScheduleMasterServiceNames">
  24. #ScheduleMaster1
  25. #ScheduleMaster2
  26. #ScheduleMaster3
  27. #ScheduleMaster4
  28. </attribute>
  29. <attribute name="PersistDir">./schedule</attribute>
  30. <depends>
  31. <!-- スケジュールマスタ1
  32. 08:00:00にFlow1を実行するスケジュール
  33. -->
  34. <service name="ScheduleMaster1"
  35. code="jp.ossc.nimbus.service.scheduler2.DefaultScheduleMaster">
  36. <attribute name="Id">Schedule1</attribute>
  37. <attribute name="TaskName">Flow1</attribute>
  38. <attribute name="StartTime">// 08:00:00 000</attribute>
  39. </service>
  40. </depends>
  41. <depends>
  42. <!-- スケジュールマスタ2
  43. スケジュールマスタ1の終了を待って、08:00:00にFlow2を実行するスケジュール
  44. -->
  45. <service name="ScheduleMaster2"
  46. code="jp.ossc.nimbus.service.scheduler2.DefaultScheduleMaster">
  47. <attribute name="Id">Schedule2</attribute>
  48. <attribute name="TaskName">Flow2</attribute>
  49. <attribute name="StartTime">// 08:00:00 000</attribute>
  50. <attribute name="Input">100</attribute>
  51. <attribute name="Depends">Schedule1</attribute>
  52. </service>
  53. </depends>
  54. <depends>
  55. <!-- スケジュールマスタ3
  56. スケジュールマスタ2の終了を待って、08:01:00から08:02:00まで5秒間隔にFlow3を実行するスケジュール
  57. -->
  58. <service name="ScheduleMaster3"
  59. code="jp.ossc.nimbus.service.scheduler2.DefaultScheduleMaster">
  60. <attribute name="Id">Schedule3</attribute>
  61. <attribute name="TaskName">Flow3</attribute>
  62. <attribute name="StartTime">// 08:01:00 000</attribute>
  63. <attribute name="EndTime">// 08:02:00 000</attribute>
  64. <attribute name="RepeatInterval">5000</attribute>
  65. <attribute name="Depends">Schedule2</attribute>
  66. </service>
  67. </depends>
  68. <depends>
  69. <!-- スケジュールマスタ4
  70. スケジュールマスタ1とスケジュールマスタ3の終了を待って、08:00:00から08:03:00までFlow4の結果でリトライを指示される限り、10秒間隔でFlow4を実行するスケジュール
  71. 08:03:00に達しても、リトライを指示された場合は、エラー終了する
  72. -->
  73. <service name="ScheduleMaster4"
  74. code="jp.ossc.nimbus.service.scheduler2.DefaultScheduleMaster">
  75. <attribute name="Id">Schedule4</attribute>
  76. <attribute name="TaskName">Flow4</attribute>
  77. <attribute name="StartTime">// 08:00:00 000</attribute>
  78. <attribute name="Depends">Schedule1,Schedule3</attribute>
  79. <attribute name="RetryInterval">10000</attribute>
  80. <attribute name="RetryEndTime">// 08:03:00 000</attribute>
  81. </service>
  82. </depends>
  83. </service>
  84. <!-- BeanFlowInvokerを生成するBeanFlowInvokerFactoryサービス -->
  85. <service name="BeanFlowInvokerFactory"
  86. code="jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryService">
  87. <attribute name="DirPaths">flows</attribute>
  88. <attribute name="BeanFlowInvokerAccessClass">jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2</attribute>
  89. <attribute name="Validate">true</attribute>
  90. </service>
  91. <!-- 集配信データファイルをバックアップするConcentrateBackupManagerサービス -->
  92. <service name="ConcentrateBackupManager"
  93. code="jp.ossc.nimbus.service.scheduler2.FileConcentrateBackupManagerService">
  94. <attribute name="BackupDirectory(">backup</attribute>
  95. </service>
  96. </manager>
  97. </server>

ConcentrateScheduleExecutorService向けインタフェース jp.ossc.nimbus.service.scheduler2.ConcentrateBackupManager

jp.ossc.nimbus.service.scheduler2.ConcentrateBackupManagerは、集配信スケジュールで集配信したデータファイルをバックアップする機能を抽象化したインタフェースです。

このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。

上位サービス用途
jp.ossc.nimbus.service.scheduler2.ConcentrateScheduleExecutorService集配信したデータファイルをバックアップするために使用する

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.scheduler2.FileConcentrateBackupManagerService集配信したデータファイルをファイルとしてバックアップディレクトリに退避する


スケジューラ/高機能スケジューラ/ScheduleExecutor