2016-12-08 5 views
0

У меня есть требование, что бизнес требует следующих Scheduling шаблонаУплотненная поддержка планирования в кварце

---- t1 -------- та ------- ----- Т.Б. ---- t2

Между t1 и t2, дают 10% скидка на продукте Однако для вложенных временного окна тем - Т.Б., дает скидку 20%. Когда tb достигнуто, верните скидку 10% на продукт A до t2.

Может ли планирование работы кварца реализовать это из коробки?
Я хочу избежать планирования 3 рабочих мест здесь - для интервалов (t1, ta) (ta, tb) и (tb, t2).

+0

ahuman, не могли бы вы проверить мой ответ и принять его, если обратитесь к вашим требованиям, или укажите дополнительные сведения, если это не так. Спасибо. –

ответ

0

Quartz - это универсальный API-интерфейс планирования Java, и, как таковой, он не имеет ни одной прикладной бизнес-логики «из коробки». То, как я бы решить вышеупомянутое требование с кварцем, как так:

  1. Создать общую ProductPriceUpdaterJob Quartz работы, которая будет просто обновить цену продукта, хранящуюся в вашем магазине продуктов (обычно базы данных). В задании ожидалось бы, что параметр «скидка» с одним показателем задания данных со значением процента скидки (т. Е. 0, 10, 20).

  2. Связать задание с 4-мя кварцевыми триггерами (T1, Ta, Tb, T2), которые начнут работу с t1, ta, tb и t2 соответственно. Эти триггеры будут указывать желаемую сумму скидки на карте данных рабочих заданий (у T1 есть скидка = 10, Та имеет скидку = 20, у Tb - дисконт = 10, у T2 - дисконт = 0).

  3. Запустите кварц и зарегистрируйте задание и активируйте его, и все готово.

В t1 кварц начинает свою работу с помощью триггера T1, и на задание распространяется скидка 10% на цену продукта. В ta, Quartz запускает вашу работу, используя триггер Та, и ваша работа применяет 20% -ный дисконт к цене продукта и т. Д.

Кварц поддерживает 4 разных типа триггеров, и я думаю, что вы можете безопасно использовать тип CronTrigger для своих триггеров.

Возможно, вы захотите использовать в своих триггерах другой параметр данных задания, в котором вы можете указать идентификатор (ы) продукта (ов) для применения скидки. Таким образом, ваша работа будет действительно универсальной и пригодной для использования со всеми вашими продуктами.