Как получить список запланированных задач и результатов последнего запуска в ColdFusion?

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

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

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

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

3 ответа

Решение

Я сделал небольшое исследование для вас. Я нашел более старую ссылку, которая все еще действительна, по крайней мере, в 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-запрос.

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

Есть возможность "Опубликовать" результаты работы. Ответ от 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">

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

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

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

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

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

Другие вопросы по тегам