2016-05-05 1 views
1

Je suis en train d'appeler Liferay Trigger sur une base horaire et il fonctionne avec succès en utilisant ce linkRun Liferay Scheduler dynamique sur Date et heure spécifiques

Mais maintenant Je veux dynamique exécuter Trigger uniquement sur Démarrer & Fin ensemble DateTime par l'utilisateur dans la base de données

Scheduler Tableau

schedulerId schedulerStartDateTime schedulerEndDateTime blockId 
1    05/11/2016 01:00   05/13/2016 02:00  11011 
2    05/12/2016 13:00   05/16/2016 16:30  11012 
3    05/11/2016 20:15   05/20/2016 22:00  11013 

Toute aide serait apprécié.

J'ai lu de this Post qu'il fonctionne en utilisant SchedulerEntry mais ne sait pas comment et où utiliser cette classe.

Répondre

0

Une approche que je l'utilise dans mon travail est comme ci-dessous:

d'abord je configurer dans Liferay-portlet.xml le planificateur comme ci-dessous:

<?xml version="1.0"?> 
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd"> 

<liferay-portlet-app> 
    <portlet> 
     <portlet-name>your-portelt</portlet-name> 
     <icon>/icon.png</icon> 
     <scheduler-entry> 
      <scheduler-event-listener-class>your.class.that.implements.messagelistener</scheduler-event-listener-class> 
      <trigger> 
       <cron> 
        <cron-trigger-value>.... your cron</cron-trigger-value> 
       </cron> 
      </trigger> 
     </scheduler-entry> 
    ... 
    </portlet> 
    ... 
</liferay-portlet-app> 

je mettre en œuvre la logique de mes busines sheduler dans une classe que je référence dans la balise scheduler-event-listener-class.

public class YourManageScheduler implements MessageListener { 

     @Override 
     public void receive(Message message) throws MessageListenerException { 
      User user = .... 
      PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.getPermissionCheckerFactory().create(user); 
      PermissionThreadLocal.setPermissionChecker(permissionChecker); 
      // your logic 
      ...  
// your logic 
      .... 
     } 

... 
    } 

Une chose importante si vous utilisez une api que préforme PermissionCheker vous configurez le cheker de permision dans votre fil local ou essayez d'utiliser api qui ne requred cheker d'autorisation. Le point clé est que, dans ce cas, le travail commence de manière asynchrone et qu'aucun utilisateur n'est enregistré, donc aucune permission n'est configurée dans le thread MessageListener. Je souhaite que cela puisse vous aider