[JAVA] Créer un lot Liferay

introduction

Le traitement par lots qui s'exécute régulièrement est courant dans les systèmes. Quartz est une bibliothèque de planification Java bien connue. quartz:http://www.quartz-scheduler.org/

Le planificateur de Liferay utilise également Quaryz.

Voici un bref résumé de la façon de le faire dans Liferay.

Format de configuration Quartz Cron

image.png

Source: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

Exemple de configuration Quartz Cron

image.png

Source: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

Méthodes requises d'implémentation par lots Liferay

--activer: processus d'activation du module OSGi --deactivate: le module OSGi arrête le traitement --receive: logique métier

échantillon

TestBatch.java


package com.test.batch;

import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.messaging.DestinationNames;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
import com.liferay.portal.kernel.scheduler.SchedulerEngineHelper;
import com.liferay.portal.kernel.scheduler.SchedulerEntryImpl;
import com.liferay.portal.kernel.scheduler.TimeUnit;
import com.liferay.portal.kernel.scheduler.Trigger;
import com.liferay.portal.kernel.scheduler.TriggerFactoryUtil;

import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Reference;

@Component(immediate = true, property = {
}, service =TestBatch.class)
public class TestBatch implements MessageListener {

	private static Log _log = LogFactoryUtil.getLog(TestBatch.class);

	//Intervalle de début de lot
	private static int INTERVAL_TIME = 15;

	@Override
	public void receive(Message message) throws MessageListenerException {
		
		_log.info("Début de lot");
		
		// do something
		
		_log.info("Fin du lot");
	}
	
	@Activate
	@Modified
	protected void activate() {
		String batchClassName = this.getClass().getName();
        //Paramètres de déclenchement
		Trigger trigger = TriggerFactoryUtil.createTrigger(batchClassName, batchClassName, INTERVAL_TIME, TimeUnit.MINUTE);
		SchedulerEntryImpl schedulerEntryImpl = new SchedulerEntryImpl(batchClassName, trigger);

		_schedulerEngineHelper.register(this, schedulerEntryImpl, DestinationNames.SCHEDULER_DISPATCH);

		_log.info("Batch is activated.");
	}

	@Deactivate
	protected void deactivate() {
		_schedulerEngineHelper.unregister(this);
	}

	@Reference(unbind = "-")
	private volatile SchedulerEngineHelper _schedulerEngineHelper;

}

Créer un déclencheur clé

image.png Il est fourni dans la classe TriggerFactoryUtil, vous pouvez donc le créer facilement.

CronTrigger: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html Article de référence: https://portal.liferay.dev/docs/7-1/tutorials/-/knowledge_base/t/message-listeners

c'est tout

Recommended Posts

Créer un lot Liferay
Rails Bases de la création d'une nouvelle application
Créer un référentiel local
Créer un cas de test
Création d'un ExecutionContext personnalisé Scala
Créer un calendrier avec Ruby
[Rails] Création d'un champ de recherche
Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~
Une brève explication de commitAllowingStateLoss
Dummy Factory, un grand outil de création de lots de données pour Liferay 7 / DXP
Création d'une expression conditionnelle mixte de l'instruction Rails if et
Pensez à une stratégie de mise à jour Java
Une liste de rawValues pour UITextContentType.
Créer une application de minuterie avec de la boue
Trier la liste des objets Java
Exécuter le fichier de commandes à partir de Java
Un mémorandum du problème FizzBuzz
Une brève description des dépendances JAVA
Docker [Suppression par lots de balises <aucun>]
Histoire d'une certaine SE interne
Comprendre un peu la formule lambda
L'histoire de la création d'un service qui raconte l'histoire du portfolio en se développant seul