在Liferay 6.2 ga6中运行计划的任务 [英] Running a scheduled task in 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屋!