Pregunta

Estamos tratando de construir un tablero de instrumentos para nuestros trabajos de cron ---- CF, Java, SQL Server, etc por lo que podemos ver cuando las cosas se llevaron a cabo el pasado, ¿cuál fue el resultado, y cuando están programados para ejecutar a continuación.

¿Hay alguna manera con la API CFAdmin o algún truco <cfschedule> indocumentado para obtener una lista de:

  1. ¿Cuáles son las tareas programadas?
  2. ¿Qué el último tiempo de ejecución era?
  3. ¿Se tiene éxito?
  4. ¿Cuándo se programa para ejecutarse de nuevo?

Actualmente se encuentra en CF8, pero va a actualizar a CF9 dentro de unas pocas semanas.

¿Fue útil?

Solución

Hice un poco de investigación sobre esto para usted. He encontrado una referencia algo más viejo que todavía es válida, al menos en CF8 y presumiblemente en CF9 también.

<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 = entrada y de la entrada = 935

Esto responde a sus preguntas # 1 y # 4. En cuanto a # 3, no puede haber una respuesta a eso. motor de tarea programada de ColdFusion se acaba la carga hasta la URL especificada en el tiempo prescrito. No hay éxito o fracasan -. Simplemente realiza una petición HTTP

Espero que esto ayude.

Otros consejos

Es posible "Publicar" los resultados de la tarea. La respuesta de la petición HTTP se puede escribir en el servidor de archivos, y que tendrá los valores del último trabajo de ejecución.

<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">

A continuación, se puede verificar el registro de la base de datos si querías. Ya que es la respuesta de la página, puede obtener y almacenar los errores y avisos aquí también.

@eric Kolb es correcto - que es la forma de hacerlo mediante programación. Si desea más control sobre cómo reacciona la lista, pruebe el siguiente código (esencialmente el mismo, pero en cfscript):

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

Además, para responder a # 2 y # 3 (que es más o menos sólo una pregunta de dos partes, si lo haces bien): Cuando se ejecuta la tarea, enviamos un correo electrónico a la derecha en la parte superior que dice "HEY! Estoy corriendo !!!!" y luego otro diciendo "¡Hey! Ya he terminado !!!" en la parte inferior del código de la tarea - se puede añadir en una marca de tiempo, así que contar cuando se inicia y se detiene (la tala esto en una base de datos funciona también). También, para saber cuándo se volverá a ejecutar, sólo echar un vistazo a la última vez y el campo "intervalo" llegado de nuevo a partir de los resultados de la llamada ServiceFactory. (Si necesita una explicación más detallada de lo que quiero decir con esto, no dude en preguntar.

Espero que esto ayude si no se ha dado cuenta de lo que necesitaba ya

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top