19

我們正在嘗試爲我們的cron作業(CF,Java,SQLServer等)構建一個儀表板,以便我們可以瞭解最後一次運行的情況,結果是什麼以及計劃運行的時間下一個。如何在ColdFusion中獲取計劃任務和上次運行結果的列表?

是否存在與CFAdmin API或一些無證<cfschedule>把戲一種方式來獲得的列表:

  1. 安排什麼任務?
  2. 最後一次運行時間是多少?
  3. 它成功了嗎?
  4. 什麼時候計劃再次運行?

我們目前正在使用CF8,但將在幾周內升級到CF9。

+2

大問題。我很想得到同樣的信息 – Jason

+0

任何機會你的儀表板將最終在riaforge ??聽起來不錯 – Antony

回答

28

我爲你做了一點研究。我發現一個稍微老的參考文獻仍然有效,至少在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請求。

希望這會有所幫助。

+0

不錯,+1。我會選擇''雖然,我發現更容易讀。 – Tomalak

+0

太棒了。正是我想要完成的。我想我會在db中創建一個可以保存這些作業運行/失敗狀態的表格。在啓動時將其設置爲「運行」,並在完成時將其設置爲「成功」 –

+2

Railo 3+和CF10 +提供**列表**操作:'''''' – modius

1

可以「發佈」作業的結果。來自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"> 

然後你可以根據數據庫驗證日誌,如果你想。由於它是來自頁面的響應,因此您也可以在此處獲取並存儲錯誤和警告。

0

@eric kolb是正確的 - 這是以編程方式執行它的方式。如果你想在列表上如何反應的更多控制,試試下面的代碼(本質上是相同的,但在CFSCRIPT):

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

另外,回答#2,#3(這是相當多隻是一個兩部分的問題,如果你這樣做的話): 當任務運行時,給自己發一封電子郵件,上面寫着「HEY!I'RUNNING !!!!」然後再說一句「嘿,我完了!」在任務代碼的底部 - 你也可以添加一個時間戳來告訴它什麼時候開始和停止(在一個數據庫中記錄它也可以)。另外,爲了知道下一次運行的時間,只需看看最後一次以及ServiceFactory調用結果返回的「interval」字段。 (如果你需要什麼我的意思是這進一步說明,隨意問。

希望這有助於如果你還沒有想通了,你需要的是什麼已經

相關問題