如何在ColdFusion中获取计划任务和上次运行结果的列表?

如何在ColdFusion中获取计划任务和上次运行结果的列表?,coldfusion,scheduled-tasks,coldfusion-8,coldfusion-9,cfadmin,Coldfusion,Scheduled Tasks,Coldfusion 8,Coldfusion 9,Cfadmin,我们正试图为我们的cron作业——CF、Java、SQLServer等构建一个仪表板,这样我们就可以看到最后一次运行的时间、结果以及下一次运行的计划时间 CFAdmin API或一些未记录的技巧是否有办法获得以下列表: 计划了哪些任务 上次运行时间是多少 它成功了吗 计划何时再次运行 我们目前使用的是CF8,但将在几周内升级到CF9。我为您做了一些研究。我发现一个稍旧的引用仍然有效,至少在CF8中是如此,而且可能在CF9中也是如此 <cfobject type="JAVA" action=

我们正试图为我们的cron作业——CF、Java、SQLServer等构建一个仪表板,这样我们就可以看到最后一次运行的时间、结果以及下一次运行的计划时间

CFAdmin API或一些未记录的
技巧是否有办法获得以下列表:

  • 计划了哪些任务
  • 上次运行时间是多少
  • 它成功了吗
  • 计划何时再次运行

  • 我们目前使用的是CF8,但将在几周内升级到CF9。

    我为您做了一些研究。我发现一个稍旧的引用仍然有效,至少在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>
    
    
    

    这回答了您的问题1和4。 至于#3,这是没有答案的。ColdFusion的计划任务引擎只是在规定的时间加载指定的URL。没有成功或失败——它只是执行一个HTTP请求

    希望这有帮助。

    可以“发布”作业结果。来自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">
    
    
    

    然后,如果需要,可以根据数据库验证日志。由于这是来自页面的响应,因此您也可以在此处获取并存储错误和警告。

    @eric kolb是对的-这是通过编程实现的方法。如果您想要更多地控制列表的反应方式,请尝试以下代码(基本相同,但使用cfscript):

    
    ScheduledTaskArray=ArrayNew(1);
    taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
    ScheduledTaskArray=taskservice.listall();
    

    另外,要回答#2和#3(如果你做对了,这几乎只是一个由两部分组成的问题): 当任务运行时,在顶部给自己发送一封电子邮件,说“嘿!我正在运行!!!”,然后在任务代码的底部再发送一封邮件,说“嘿!我完成了!!!”——您还可以添加一个时间戳,告诉它何时开始和停止(将此记录到数据库中也可以)。另外,要知道它下一步何时运行,只需查看上次运行的时间和从ServiceFactory调用结果返回的“interval”字段。(如果您需要进一步解释我的意思,请随时询问


    如果你还没有弄明白你需要做什么,希望这对你有所帮助。这是一个很好的问题。我很想得到同样的信息。你的仪表板有没有可能最终出现在Riafforge上?听起来很不错,+1。我会选择
    ,不过,我觉得这更容易阅读。太棒了。这正是我想要完成的。我想我会创造一个数据库中可以保存这些作业的运行/失败状态的表。当它启动时,将其设置为“运行”,当它完成时,将其设置为“成功”,Railo 3+和CF10+提供一个列表操作:
    @modius它实际上是
    ,模式是可选的,默认为服务器
    <cfscript>
    scheduledTasksArray=ArrayNew(1);
    taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
    scheduledTasksArray=taskservice.listall();