Liferay 7.0中的动态调度程序

时间:2017-04-18 07:40:18

标签: cron liferay liferay-7

我需要构建一个模块,让用户使用自定义触发器为多个任务设置调度。用户可以动态调度/取消调度/修改作业。 版本6.2的方式不再适用。

1 个答案:

答案 0 :(得分:1)

检查此示例 https://github.com/liferay/liferay-blade-samples/tree/master/liferay-workspace/modules/blade.schedulerentry

要点  它现在的服务和需要扩展BaseSchedulerEntryMessageListener

@Component(immediate = true, service = BladeSchedulerEntryMessageListener.class)
public class BladeSchedulerEntryMessageListener
    extends BaseSchedulerEntryMessageListener {

    @Activate
    @Modified
    protected void activate() {
        schedulerEntryImpl.setTrigger(
            TriggerFactoryUtil.createTrigger(
                getEventListenerClass(), getEventListenerClass(), 15,
                TimeUnit.MINUTE));

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

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

    @Override
    protected void doReceive(Message message) throws Exception {
        if (_log.isInfoEnabled()) {
            _log.info("Received message on schedule: " + message);
        }
    }

    private final Log _log = LogFactoryUtil.getLog(
        BladeSchedulerEntryMessageListener.class);

    @Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-")
    private volatile ModuleServiceLifecycle _moduleServiceLifecycle;

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

    @Reference(unbind = "-")
    private volatile TriggerFactory _triggerFactory;

}