19

Stiamo provando a creare un dashboard per i nostri lavori cron ---- CF, Java, SQLServer, ecc. In modo che possiamo vedere quando le cose sono state eseguite per ultime, quale è stato il risultato e quando sono pianificate per l'esecuzione Il prossimo.Come ottenere l'elenco delle attività pianificate e dei risultati dell'ultima esecuzione in ColdFusion?

Esiste un modo con l'API CFAdmin o qualche privi di documenti <cfschedule> trucco per ottenere un elenco di:

  1. Quali compiti sono in programma?
  2. Qual era l'ultima volta?
  3. Ha avuto successo?
  4. Quando è pianificato il riavvio?

Attualmente siamo su CF8, ma passeremo a CF9 in poche settimane.

+2

grande domanda. Mi piacerebbe avere lo stesso – Jason

+0

qualsiasi possibilità che la tua dashboard finisca su riaforge ?? che suona bene – Antony

risposta

28

Ho fatto una piccola ricerca in questo per voi. Ho trovato un riferimento un po 'più vecchio che è ancora valido, almeno in CF8 e presumibilmente anche in 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> 

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

Questo risponde alle vostre domande # 1 e # 4. Per quanto riguarda il n. 3, non ci può essere una risposta. Il motore delle attività programmate di ColdFusion sta caricando l'URL specificato al momento prescritto. Non c'è successo o non riesce - semplicemente esegue una richiesta HTTP.

Spero che questo aiuti.

+0

Nice, +1. Opterei per '', però, trovo che sia più facile leggi. – Tomalak

+0

Fantastico.Esattamente quello che stavo cercando di realizzare. Penso che creerò una tabella nel db che possa contenere gli stati di esecuzione/fallimento per questi lavori. Impostalo come "in esecuzione" quando viene avviato e quando raggiunge il completamento, impostalo come "successo" –

+2

Railo 3+ e CF10 + offrono un ** elenco ** azione: '' ' '' ' – modius

1

È possibile "Pubblicare" i risultati del lavoro. La risposta dalla richiesta HTTP può essere scritta sul file server e avrà i valori dell'ultimo lavoro eseguito.

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

Quindi è possibile verificare il registro nel database se si desidera. Poiché è la risposta della pagina, è possibile ottenere e archiviare gli errori e gli avvisi anche qui.

0

@eric kolb ha ragione: questo è il modo per farlo a livello di programmazione. Se si desidera un maggiore controllo su come la lista reagisce, provare il seguente codice (essenzialmente lo stesso, ma in cfscript):

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

Inoltre, per rispondere # 2 e # 3 (che è praticamente solo una domanda in due parti se lo fai correttamente): Quando l'attività è in esecuzione, invia un'email a te stesso in alto, dicendo "HEY! I'm RUNNING !!!!" e poi un altro dicendo "HEY! SONO FATTO !!!" nella parte inferiore del codice per l'attività, è possibile aggiungere anche una data/ora per indicare quando è stata avviata e interrotta (anche la registrazione in un database funziona). Inoltre, per sapere quando verrà eseguito in seguito, basta dare un'occhiata all'ultima volta E il campo "intervallo" è tornato dai risultati della chiamata ServiceFactory. (Se avete bisogno di ulteriori spiegazioni su quello che voglio dire con questo, non esitate a chiedere.

Spero che questo aiuti se non hai capito ciò che si deve già