インターフェース ZonedTrigger
- すべてのスーパーインターフェース:
Trigger
- すべての既知の実装クラス:
CronTrigger
public interface ZonedTrigger extends Trigger
トリガーを使用すると、アプリケーション開発者は、タスクを実行するタイミングと頻度に関するルールを組み込むことができます。トリガーは、単一の絶対日時のように単純にすることも、Jakarta™ EE ビジネスカレンダーロジックを含めることもできます。トリガーの実装は、アプリケーション開発者によって作成され (または外部からアプリケーションに提供される場合があります)、スケジュールメソッドのいずれかを使用してManagedScheduledExecutorService
に送信されるときにタスクに登録されます。各メソッドは、未指定のコンテキストで実行されます。メソッドは、ContextService
を使用してコンテキストプロキシオブジェクトを作成することにより、コンテキスト化できます。各トリガーインスタンスは、それが登録されたのと同じプロセス内で呼び出されます。
例:
/** * A trigger that runs on the hour, Mon-Fri from 8am-8pm Central US time. */ public class HourlyDuringBusinessHoursTrigger implements ZonedTrigger { static final ZoneId ZONE = ZoneId.of("America/Chicago"); public ZoneId getZoneId() { return ZONE; } public ZonedDateTime getNextRunTime(LastExecution lastExec, ZonedDateTime taskScheduledTime) { ZonedDateTime prevTime = lastExec == null ? taskScheduledTime : lastExec.getRunEnd(ZONE); ZonedDateTime nextTime = prevTime.truncatedTo(ChronoUnit.HOURS).plusHours(1); DayOfWeek day = nextTime.getDayOfWeek(); if (day.equals(DayOfWeek.SATURDAY) || day.equals(DayOfWeek.SUNDAY)) { nextTime = nextTime.truncatedTo(ChronoUnit.DAYS).plusDays(1).withHour(8); } else { // Mon-Fri 8am-8pm int hour = nextTime.getHour(); if (hour< 8) nextTime = nextTime.plusHours(8 - hour); else if (hour> 20) nextTime = nextTime.truncatedTo(ChronoUnit.DAYS) .plusDays(day.equals(DayOfWeek.FRIDAY) ? 3 : 1) .withHour(8); } return nextTime; } }
- 導入:
- 3.0
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド デフォルトメソッド 修飾子と型 メソッド 説明 ZonedDateTimeSE
getNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime)
次回タスクを実行する時間を取得します。default DateSE
getNextRunTime(LastExecution lastExecutionInfo, DateSE taskScheduledTime)
次回タスクを実行する時間を取得します。default ZoneIdSE
getZoneId()
default boolean
skipRun(LastExecution lastExecutionInfo, ZonedDateTimeSE scheduledRunTime)
この実行インスタンスをスキップする必要がある場合は true を返します。default boolean
skipRun(LastExecution lastExecutionInfo, DateSE scheduledRunTime)
この実行インスタンスをスキップする必要がある場合は true を返します。
メソッドの詳細
getNextRunTime
ZonedDateTimeSE getNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime)
次回タスクを実行する時間を取得します。- パラメーター:
lastExecutionInfo
- タスクの最後の実行に関する情報。タスクがまだ実行されていない場合、この値は null になります。taskScheduledTime
- タスクをスケジュールするためにManagedScheduledExecutorService.schedule
メソッドが呼び出された日時。- 戻り値:
- タスクの次の実行を開始する日付 / 時刻。
getNextRunTime
default DateSE getNextRunTime(LastExecution lastExecutionInfo, DateSE taskScheduledTime)
次回タスクを実行する時間を取得します。このメソッドは、
Trigger
との互換性を維持するために提供されており、実装しないでください。デフォルトの実装は、ZonedDateTime
を受け入れて返すメソッドシグネチャーに委譲します。- 次で指定:
- インターフェース
Trigger
のgetNextRunTime
- パラメーター:
lastExecutionInfo
- タスクの最後の実行に関する情報。タスクがまだ実行されていない場合、この値は null になります。taskScheduledTime
- タスクをスケジュールするためにManagedScheduledExecutorService.schedule
メソッドが呼び出された日時。- 戻り値:
- タスクの次の実行を開始する日付 / 時刻。
- 例外:
IllegalArgumentExceptionSE
- 次回の実行時間がDate
として表すには大きすぎる場合。
getZoneId
default ZoneIdSE getZoneId()
getNextRunTime
およびskipRun
メソッドに提供されるZonedDateTime
SE に使用するタイムゾーンを返します。デフォルトの実装は、システムのデフォルトのタイムゾーンを返します。このトリガー内のビジネスロジックが記述されているのと同じタイムゾーンでサーバーが実行されていない可能性がある場合は常に、オーバーライドする必要があります。
- 戻り値:
- このトリガーの操作に使用するタイムゾーン。
skipRun
default boolean skipRun(LastExecution lastExecutionInfo, ZonedDateTimeSE scheduledRunTime)
この実行インスタンスをスキップする必要がある場合は true を返します。これは、タスクが遅れているために実行すべきでない場合、またはタスクが一時停止または一時停止されている場合に役立ちます。
このタスクがスキップされると、Future の結果の状態は
SkippedException
をスローします。未チェックの例外はSkippedException
でラップされます。デフォルトの実装では
false
が返されるため、スキップされた実行のサポートが必要ない場合は、このメソッドの実装はオプションになります。- パラメーター:
lastExecutionInfo
- タスクの最後の実行に関する情報。タスクがまだ実行されていない場合、この値は null になります。scheduledRunTime
- タスクの実行が開始される予定の日時。- 戻り値:
- タスクをスキップして再スケジュールする必要がある場合は true。
skipRun
default boolean skipRun(LastExecution lastExecutionInfo, DateSE scheduledRunTime)
この実行インスタンスをスキップする必要がある場合は true を返します。このメソッドは、
Trigger
との互換性を維持するために提供されており、実装しないでください。デフォルトの実装は、ZonedDateTime
を受け入れるメソッドシグネチャーに委譲します。