Job Scheduler Framework
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

スケジュールされたジョブを手動でプログラミングする

SchedulerJobConfiguration インターフェイスを実装すると、ジョブ スケジューラ フレームワークの中核に近づくため、柔軟性が向上し、パフォーマンスが向上します。 ただし、 ジョブ スケジューラ UI では、 SchedulerJobConfigurationを使用して作成されたスケジュールされたジョブよりも、従来のジョブ スケジューラ タスクに関するカスタマイズ オプションとデータがさらに提供されます。

Liferay DXP 2023.Q4/Portal GA93 より前では、 DispatchTaskExecutor の代替は MessageListenerでした。

ジョブ スケジューラ アプリケーションの [スケジュールされたジョブ] タブには、この方法で作成されたすべてのスケジュールされたジョブが一覧表示されます。 ここでは、各ジョブの一般的な詳細(名前、ステータスなど)を表示したり、手動で実行を開始したり、ジョブを個別に一時停止/再開したりできます。

SchedulerJobConfiguration インターフェースを使用してスケジュールされたすべてのジョブを表示します。

サンプルコードをデプロイする

新しいLiferay インスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。

次に、以下の手順に従います。

  1. サンプル プロジェクトをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-p1p9.zip -O
    
    unzip liferay-p1p9.zip
    
  2. プロジェクトモジュールをビルドしてデプロイします。

    cd liferay-p1p9
    
    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    このコマンドは、コンパイルされたモジュールJARをDockerコンテナ上の /opt/liferay/osgi/modules にコピーするのと同じです。

  3. Liferay Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.p1p9.impl_1.0.0 [2177]
    
  4. スケジュールされたジョブが 30 秒ごとにコンソールにメッセージをログに記録することを確認します。

    INFO  [http-nio-8080-exec-6][P1P9SchedulerJobConfiguration:20] Invoking #getJobExecutorUnsafeRunnable
    

SchedulerJobConfigurationの実装

SchedulerJobConfiguration インターフェース は、オーバーライドされる 2 つのメソッドを定義します。

  1. getJobExecutorUnsafeRunnable は、スケジュールされたジョブが実行する処理を定義します。
  2. getTriggerConfiguration は、スケジュールされたジョブがいつ実行されるかを定義します。

このインターフェースを使用してスケジュールされたジョブを作成するには、

  1. クラス宣言の上に @Component アノテーションを追加して、実装をスケジュールされたジョブ コンポーネントとして登録します。
@Component(service = SchedulerJobConfiguration.class)
public class P1P9SchedulerJobConfiguration
	implements SchedulerJobConfiguration {
  1. getJobExecutorUnsafeRunnable メソッドをオーバーライドします。 このメソッドは、スケジュールされたジョブが実行されるたびに実行するすべてのロジックを含む関数を返します。
@Override
public UnsafeRunnable<Exception> getJobExecutorUnsafeRunnable() {
	return () -> {
		if (_log.isInfoEnabled()) {
			_log.info("Invoking #getJobExecutorUnsafeRunnable");
		}
	};
}
  1. getTriggerConfiguration メソッドをオーバーライドします。 このメソッドは、スケジュールされたジョブを実行する条件を定義します。 サンプル モジュールでは、30 秒のタイマーで実行されます。
@Override
public TriggerConfiguration getTriggerConfiguration() {
	return TriggerConfiguration.createTriggerConfiguration(
		30, TimeUnit.SECOND);
}

通常の cron 式または Liferay の TimeUnitを使用して TriggerConfigurationを作成できます。