2017-04-18 108 views
-2

我需要構建一個模塊,讓用戶使用自定義觸發器爲多個任務設置調度。用戶可以動態調度/取消調度/修改作業。 從版本6.2的方式不再工作。Liferay 7.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; 

} 
+0

我已經看到了這個例子,但我不知道如何啓動和停止任務並動態更改計劃時間。 – Alex

+1

@Alex您可能想要將您的問題從「不再適用」改爲您實際嘗試過的方法,有效的方法,不適用的方法以及您實際想要做的/知道/實現的內容。如果你只提供隨機片段,並在稍後有人採取措施幫助你時發現越來越多的細節,則可能沒有人能夠向你提供所需的信息。 –