Как получить список запланированных задач и результатов последнего запуска в ColdFusion? - PullRequest
19 голосов
/ 23 февраля 2010

Мы пытаемся создать панель мониторинга для наших заданий cron - CF, Java, SQLServer и т. Д., Чтобы мы могли видеть, когда что-то запускалось в последний раз, каков был результат и когда они запланированы беги дальше.

Есть ли способ с помощью API CFAdmin или какой-то недокументированный трюк <cfschedule>, чтобы получить список:

  1. Какие задачи запланированы?
  2. Каким было время последнего запуска?
  3. Удалось ли это?
  4. Когда планируется запустить его снова?

В настоящее время мы находимся на CF8, но через несколько недель перейдем на CF9.

Ответы [ 3 ]

28 голосов
/ 23 февраля 2010

Я провел небольшое исследование для вас. Я нашел более старую ссылку, которая все еще действует, по крайней мере, в CF8 и, вероятно, также в CF9.

<cfobject type="JAVA" action="Create" name="factory" class="coldfusion.server.ServiceFactory">
<cfset allTasks = factory.CronService.listAll()/>
<cfloop index="i" from="1" to="#ArrayLen(allTasks)#">
    <cfdump var="#allTasks[i]#" />
</cfloop>

С http://www.bpurcell.org/blog/index.cfm?mode=entry&ENTRY=935

Это отвечает на ваши вопросы № 1 и № 4. Что касается # 3, на это не может быть никакого ответа. Механизм запланированных задач ColdFusion просто загружает указанный URL-адрес в установленное время. Нет успеха или неудачи - он просто выполняет HTTP-запрос.

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

1 голос
/ 22 мая 2012

Возможна «Публикация» результатов работы. Ответ от HTTP-запроса может быть записан на файловый сервер, и он будет иметь значения последнего запускаемого задания.

<cfschedule action = "update"
    task = "TaskName" 
    operation = "HTTPRequest"
    url = "/index.cfm?action=task"
    startDate = "#STARTDATE#"
    startTime = "12:00:00 AM"
    interval = "Daily"
    resolveURL = "NO"
    requestTimeOut = "600"
    publish = "yes"
    path = "#PATH#"
    file = "log_file.log">

Затем вы можете проверить журнал по базе данных, если хотите. Поскольку это ответ со страницы, вы также можете получать и хранить здесь ошибки и предупреждения.

0 голосов
/ 18 июля 2012

@ Эрик Колб прав - это способ сделать это программно. Если вы хотите больше контролировать реакцию списка, попробуйте следующий код (по сути тот же, но в cfscript):

<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();

Кроме того, чтобы ответить на вопросы № 2 и № 3 (что, если вы все сделаете правильно, это всего лишь один вопрос из двух частей): Когда задание будет выполнено, отправьте себе электронное письмо прямо вверху с надписью: "ЭЙ! Я Бегу !!!!" а потом еще одна поговорка "ЭЙ! Я СДЕЛАН !!!" внизу кода для задачи - вы также можете добавить временную метку, чтобы узнать, когда она началась и остановилась (регистрация этого в базе данных также работает). Кроме того, чтобы узнать, когда он будет запущен в следующий раз, просто взгляните на последний раз И поле «интервал», полученное из результатов вызова ServiceFactory. (Если вам нужно дальнейшее объяснение того, что я имею в виду, не стесняйтесь спрашивать.

Надеюсь, это поможет, если вы еще не поняли, что вам нужно

...