2

MessageListenerLiferay で定期的にタスクを実行する必要があります。実装するクラスを作成し、receiveメソッドでアクションを実装できることがわかりました。ここまでは問題ありませんが、この後、必要な時間をプログラムするためにliferay-portlet.xml.xmlファイルを使用すると、持続時間を動的に編集できません。

DB からスケジュール期間の値を動的に取得するようにプログラムできるタスクを作成する方法はありますか?

私はこれを行うことができなければならないと信じていSchedulerEngineUtilますが、それが正しい方法なのか、どのように行うのかわかりません。

ドキュメントといくつかの例を見つける方法を知っている人はいますか?

前もって感謝します

4

3 に答える 3

0

正確には、定期的にタスクを実行するには、MessageListener を実装し、liferay-portlet.xml で次のことを行う必要があります。

<scheduler-entry> <scheduler-event-listener-class>com.#className</scheduler-event-listener-class> <trigger> <simple> <simple-trigger-value>1</simple-trigger-value> <time-unit>minute</time-unit> </simple> </trigger> </scheduler-entry>

これにより、1 分ごとにイベント リスナー クラスがトリガーされます。そこで、ここで Util メソッドを使用して DB からデータを取得してみてください。それが役に立ったかどうか教えてください。

于 2013-11-18T07:12:56.757 に答える
0

動的スケジューラを追加するには、 を実装し、MessageListenerを使用して登録する必要がありSchedulerEngineHelperUtilます。

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);

静的スケジュールされたタスクを作成するためのソリューションもカバーしている私の回答を読むこともできます。

于 2016-02-17T11:31:06.867 に答える