我们正在尝试为我们的cron作业构建一个仪表板---- CF,Java,SQLServer等,以便我们可以看到最后运行的内容,结果是什么,以及它们何时被安排到跑下一步。
有没有办法使用CFAdmin API或一些未记录的<cfschedule>
技巧来获取列表:
我们目前正在使用CF8,但将在几周内升级到CF9。
答案 0 :(得分: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请求。
希望这有帮助。
答案 1 :(得分: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">
然后,如果需要,您可以根据数据库验证日志。由于它是来自页面的响应,因此您也可以在此处获取并存储错误和警告。
答案 2 :(得分:0)
@eric kolb是对的 - 这是以编程方式进行的方式。如果您想要更好地控制列表的反应方式,请尝试以下代码(基本相同,但在cfscript中):
<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();
另外,回答#2和#3(如果你做的话,这只是一个由两部分组成的问题): 当任务运行时,给自己发一封电子邮件,在顶部说“嘿!我跑了!!!!”然后又说“嘿!我做完了!”在任务代码的底部 - 你可以添加一个时间戳来告诉它何时开始和停止(在数据库中记录它也可以)。另外,要知道它将在下一次运行,只需查看最后一次和“间隔”字段从ServiceFactory调用的结果中返回。 (如果您需要进一步解释我的意思,请随时提出。
希望如果您还没有找到您需要的东西
,这会有所帮助