2016-04-18 1 views
1

Мне было поручено программно добавлять элементы в нашу базу данных Sitecore через регулярные промежутки времени, но у меня почти нет опыта ее использования. Используя онлайн-ресурсы, мне удалось выяснить, как программно создавать и добавлять новые элементы в базу данных после проверки того, что элемент еще не существует, но не знаю, куда добавить код в решение.Sitecore: Где подключить пользовательскую единовременную функциональность?

Первоначально я думал о простом запуске таймера и асинхронном запуске кода из обработчика событий Tick после каждого интервала, но мне нужно настроить таймер в месте в коде, который будет только один раз ударить. Я думаю, что Sitecore может также иметь лучший способ добиться этого.

Поэтому я был бы признателен, если бы кто-то мог указать мне в правильном направлении, где поставить код и сообщить мне, есть ли лучшее решение для выполнения действия через регулярные промежутки времени.

ответ

3

Существует несколько способов достижения задач, выполняемых с регулярными интервалами. В зависимости от ваших требований и того, что предлагает Sitecore, вы должны выбрать лучшее для себя. В прошлом я использовал следующие задачи. Вы можете прочитать о задачах более подробно, предоставленных Sitecore Climber. Лучший из них - пост Джона Уэста.

  • База данных встроенных задач (Назначенные задания) - Для этого у вас есть, чтобы создать элемент расписания под/Sitecore/системы/Задачи/расписания и элемент команды под/Sitecore/системы/Задачи/Команды. В команде указывается класс и добавляется ваша пользовательская логика. Мне нравится этот подход, так как я могу указать дату начала, дату окончания, дни недели и какой интервал времени для запуска. Кроме того, это относительно легко включить или выключить, если вы видите какие-либо проблемы или больше не нуждаетесь в этом. Включение или выключение этого режима не приведет к переработке пула приложений. Приятно отметить, что элемент «Расписание» содержит поле «Последний прогон», которое вы можете использовать в качестве параметра, чтобы сообщить вашему коду, чтобы получить элементы, измененные с момента использования значения «Последний прогон». В качестве резервной копии для этого я всегда пишу и помещаем его в папку/sitecore/admin в CM, которая имеет элементы управления для параметров, а также дату для запуска этого вручную, если мой сервер опустится, и мне нужно запустить его вручную. могут быть закрыты.
  • Sitecore Agents - Здесь вы можете написать страницу, а затем указать это как URL-адрес в разделе конфигурационных файлов Sitecore <scheduling>. Это относительно просто, поскольку вы пишете страницу,/Sitecore/admin и просто вызвать URL-адрес. Я думаю, что могут быть некоторые проблемы в том, как параметры строки запроса обрабатываются <scheduling> раздел. Вы указываете временной интервал для запуска этого в том же месте, где вы указываете URL. Это еще раз не точно рассчитано, поэтому он никогда не будет работать в определенное время, а с регулярными интервалами, начиная с того момента, когда начнется запуск приложения. Вам также придется реализовать свой собственный способ хранения «Last Run» здесь. Включение или отключение этого требует изменений в конфигурационном файле, так что утилизация пула приложений произойдет здесь.
  • Задача Windows - Для случаев, когда вам нужно точное время, это лучший вариант. Возможно, вам придется написать веб-службу для этого. Кроме того, вам нужно будет написать собственную логику времени «Last Run». Включение или выключение этого параметра легко, как переход на консоль задач Windows, и отключение этого.

С первых двух вариантов, вам нужно, чтобы убедиться, что ваш Frequency элемент и агент типа = метод = интервал «Sitecore.Tasks.DatabaseAgent» «Run» = «00:10:00» имя = заплаты «Master_Database_Agent» : source = "Sitecore.Processing.config", чтобы временные интервалы были меньше, чем созданный вами график. Об этом говорится в блоге Джона Уэста в ответ Sitecore Climber.

Надеюсь, это поможет.

+0

Спасибо за полезное описание альтернативных вариантов. – Sheridan

2
+0

Спасибо за ваш быстрый ответ. К сожалению, я не могу установить оба ответа как правильные, и ответ @ Gabbar более информативен. – Sheridan

Смежные вопросы