【问题标题】:Running a scheduled task in Liferay 6.2 ga6在 Liferay 6.2 ga6 中运行计划任务
【发布时间】:2016-05-13 16:30:06
【问题描述】:

我想知道如何在 liferay 中做一件事。例如,我有一个 portlet,用户可以在其中设置任务的调度(例如每周做某事,或者在预定的时间做一次)。我找到了这个tutorial,但我想在每次用户在portlet 中更改他的首选项时配置触发器。换句话说,我想直接从我的控制器配置触发器,而不是从 xml 配置。谁能告诉我该怎么做?

【问题讨论】:

    标签: spring liferay liferay-6


    【解决方案1】:

    以下代码创建一个计划任务。

    String pId = "portlet id here";  // TODO put portlet ID here
    
    Message msg = new Message();
    msg.put(SchedulerEngine.PORTLET_ID, pId);
    msg.put(SchedulerEngine.MESSAGE_LISTENER_CLASS_NAME, MyListener.class.getName());
    
    Trigger listener = new IntervalTrigger(MyListener.class.getName(), MyListener.class.getName(), 50);
    SchedulerEngineHelperUtil.schedule(
        listener, StorageType.PERSISTED, "some description",
        DestinationNames.SCHEDULER_DISPATCH, msg, 0);
    

    引用的 MyListener 必须实现 com.liferay.portal.kernel.messaging.MessageListener 并且会被自动调用。

    创建“静态”计划的另一个选项是将计划程序添加到 liferay-portlet.xml。

    <scheduler-entry>
       <scheduler-event-listener-class>de.test.MyListener</scheduler-event-listener-class>
       <trigger>
          <simple>
             <simple-trigger-value>20</simple-trigger-value>
             <time-unit>minute</time-unit>
          </simple>
       </trigger>
    </scheduler-entry>
    

    以上每 20 分钟触发一次。作为替代方案,您可以使用 cron 触发器。顾名思义,这使用 cron 语法,(参见http://www.cronmaker.com/):

    <trigger>
       <cron>
          <cron-trigger-value>0 0 6 ? * MON *</cron-trigger-value>
       </cron>
    </trigger>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多