Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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