Какой Windows API нужно искать для создания приложения планирования? - PullRequest
1 голос
/ 27 февраля 2009

Почему бы не использовать планировщик Windows? У меня есть несколько приложений, которые должны запускаться в определенное время в соответствии с бизнес-правилами, а не обычным рабочим днем ​​в 13:00.

Мне также нужен способ, чтобы приложения могли сообщать о своем прогрессе, чтобы у меня были правила, уведомляющие меня, когда приложения работают медленно или даже не работают.

Какой Windows API я должен изучить? (например, временная версия API FileWatcher)

Какой лучший способ заставить приложение уведомлять планировщик о своем прогрессе (файлы, сокеты, сообщения Windows, ???)?

Ответы [ 5 ]

1 голос
/ 28 февраля 2009

У вас есть больше вопросов в одном. Обычно вы должны разделить их. Но давайте забудем об этом и попробуем ответить.

  1. Чтобы запланировать определенные события (включая запуск приложения): Используйте TJvScheduledEvents из JVCL. IMHO JVCL - лучшая библиотека Delphi с открытым исходным кодом, имеющая большое количество компонентов, разработчиков и поддержку. TJvScheduledEvents довольно аккуратный, использует потоки для планирования событий, а также у вас есть в JVCL подробный редактор для ваших событий (хотя для его использования требуется небольшой взлом).

  2. Чтобы предоставить «обратную связь» от ваших приложений в (удаленную) центральную точку: очень очень очень хорошее решение (если ваши требования позволяют) состоит в том, чтобы записывать ход ваших приложений в таблицу (назовем это LOG ) на сервере Firebird . В LOG вы можете иметь следующие поля: COMPUTER, USERNAME, APPNAME, MSG, LOGDATE (и т. Д. И т. Д.). В триггере After Insert таблицы LOG вы можете запустить событие (назовем его NEW_LOG). В своем консольном приложении вы можете зарегистрировать интерес к этому событию, поэтому ваше приложение будет автоматически обновляться с учетом всего, что происходит в любом из ваших приложений, поэтому вы можете выполнять анализ журналов, графики и т. Д. Конечно, вы можете делать это с IB, но IB стоит.

... идя по маршруту Windows API, вам нужны заголовки (которые, вероятно, не переведены), вы столкнетесь с нашими самыми дорогими указателями / PChars и т. Д. И т. Д. Конечно, создавать с нуля все не стоит, но когда это уже сделано в Delphi, почему бы не использовать его?

1 голос
/ 28 февраля 2009

Я думаю, что вы действительно хотите, это общая структура для ваших приложений, которые отчитываются перед вами (вы или системные сообщения или трассировка или perfmon, журнал событий и т. Д.), А также для получения через некоторый межпроцессный протокол способа получения сообщений и ответить.

на основе отчетов вы можете изменить расписание или внести изменения и т. Д.

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

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

Я думаю, что, вероятно, существуют классы / фреймворки, которые делают это - вам придется проверить.

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

Хотя есть много способов сделать то, что вы хотите. это было только с моей головы.

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

1 голос
/ 28 февраля 2009

AppControls имеет компонент CronJob , который можно использовать для создания запланированных событий. Это избавит вашу программу от необходимости просыпаться каждую минуту и ​​проверять расписание. Вместо этого просто запланируйте задание и укажите метод обратного вызова.

Я сам использовал этот компонент для планирования заданий и был очень доволен тем, как он работает.

1 голос
/ 28 февраля 2009

Для Vista / Win2k8 есть хороший API Task Scheduler 2.0: http://msdn.microsoft.com/en-us/library/aa384138(VS.85).aspx. В предыдущей версии был API Task Scheduler 1.0, но я никогда не использовал его.

0 голосов
/ 27 февраля 2009

Используйте сервис с таймером, который срабатывает регулярно (например, каждую минуту). Он читает расписание и смотрит, должны ли некоторые быть перед следующей итерацией. Если это так, вы можете выполнить их.

Вы можете добавить интерфейс, который показывает все запущенные приложения. Для обратной связи и запроса, используя настольное приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...