在Liferay 6.2 ga6中运行计划的任务 [英] Running a scheduled task in Liferay 6.2 ga6

查看:90
本文介绍了在Liferay 6.2 ga6中运行计划的任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何在liferay中做一件事.例如,我有一个Portlet,用户可以在其中设置任务的计划(例如,每周进行一次操作,或在计划的时间一次).我找到了这个教程,但是我希望每次用户在portlet中更改首选项时都配置触发器.换句话说,我想直接从我的控制器而不是从xml config配置触发器.有人可以告诉我我该怎么做吗?

I want to know how I can do one thing in liferay. For example I have a portlet, where user can set scheduling for the task (for example do somethind every week, or once at the scheduled time). I found this tutorial, but I want to configure trigger every time user changes his preferences in portlet. In other word I want to config trigger directly from my controller, not from xml config. Can someone tell me how I can do it?

推荐答案

以下代码创建了计划任务.

The following code creates a scheduled task.

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,并将被自动调用.

The referenced MyListener has to implement com.liferay.portal.kernel.messaging.MessageListener and will be called automatically.

创建静态"计划的另一种方法是将计划程序添加到liferay-portlet.xml.

The other option for creating a "static" schedule would be to add a scheduler to the 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/):

The above triggers every 20 minutes. As an alternative you can use a cron trigger. As the name says, this uses cron syntax, (see http://www.cronmaker.com/):

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

这篇关于在Liferay 6.2 ga6中运行计划的任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆