Question

Nous essayons de construire un tableau de bord pour nos emplois Cron ---- CF, Java, SQL Server, etc. afin que nous puissions voir quand les choses ont été effectuées dernière, ce que le résultat était, et quand ils sont programmés pour la prochaine exécution.

Est-il possible avec l'API CFAdmin ou un truc <cfschedule> sans papier pour obtenir une liste de:

  1. Quelles sont les tâches sont programmées?
  2. Qu'est-ce que la dernière fois que l'exécution était?
  3. At-il réussi?
  4. Quand est-il prévu de fonctionner à nouveau?

Nous sommes actuellement sur CF8, mais sera mise à niveau vers CF9 dans quelques semaines.

Était-ce utile?

La solution

Je l'ai fait un peu de recherche dans ce pour vous. J'ai trouvé une référence un peu plus ancien qui est toujours valide, au moins en CF8 et vraisemblablement dans CF9 ainsi.

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

De http://www.bpurcell.org/blog/index .cfm? mode = entrée et d'entrée = 935

Cela répond à vos questions # 1 et # 4. En ce qui concerne # 3, il n'y a pas de réponse à cela. Le moteur de tâche planifiée de ColdFusion est simplement de charger l'URL spécifiée au moment prescrit. Il n'y a pas de succès ou d'échec -. Il exécute simplement une requête HTTP

Hope this helps.

Autres conseils

Il est possible de « publier » les résultats du travail. La réponse de la requête HTTP peut être écrite sur le serveur de fichiers, et qui aura les valeurs du dernier emploi de l'exécution.

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

Ensuite, vous pouvez vérifier le journal contre la base de données si vous voulez. Comme il est la réponse de la page, vous pouvez obtenir et stocker des erreurs et des avertissements ici.

@eric kolb est juste - c'est la façon de le faire par programme. Si vous voulez plus de contrôle sur la façon dont la liste réagit, essayez le code suivant (essentiellement le même, mais dans cfscript):

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

En outre, pour répondre # 2 et # 3 (qui est à peu près juste une question en deux parties si vous le faites à droite): Lorsque la tâche est exécutée, vous envoyer un e-mail à droite en haut disant « HEY! Je suis en !!!! » puis une autre disant: « HEY! JE FAIT !!! » au bas du code de la tâche - vous pouvez ajouter dans un horodatage et de dire quand il a commencé et arrêté (vous connecter ceci dans une base de données fonctionne aussi). En outre, de savoir quand il fonctionnera à côté, il suffit de prendre un coup d'oeil à la dernière fois et le champ « intervalle » obtenu retour des résultats de l'appel ServiceFactory. (Si vous avez besoin de plus amples explications sur ce que je veux dire par là, ne hésitez pas à demander.

Hope this helps si vous ne l'avez pas compris ce que vous avez besoin de déjà

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top