How to get list of scheduled tasks and last run results in ColdFusion?

后端 未结 3 1328
离开以前
离开以前 2021-02-02 12:57

We\'re trying to build a dashboard for our cron jobs ---- CF, Java, SQLServer, etc. so that we can see when things were run last, what the result was, and when they\'re schedule

相关标签:
3条回答
  • 2021-02-02 13:23

    It is possible to "Publish" the results of the job. The response from the HTTP request can be written to the file server, and that will have the values of the last run job.

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

    Then you can verify the log against the database if you wanted. Since it is the response from the page, you can get and store errors and warnings here as well.

    0 讨论(0)
  • 2021-02-02 13:27

    @eric kolb is right - that is the way to do it programmatically. If you want more control over how the list reacts, try the following code (essentially the same, but in cfscript):

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

    Also, to answer #2 and #3 (which is pretty much just one two-part question if you do it right): When the task is run, send yourself an email right at the top saying "HEY! I'M RUNNING!!!!" and then another saying "HEY! I'M DONE!!!" at the bottom of the code for the task - you could add in a timestamp as well to tell when it started and stopped (logging this in a database works too). Also, to know when it will run next, just take a look at the last time AND the "interval" field gotten back from the results of the ServiceFactory call. (If you need further explanation on what I mean by this, feel free to ask.

    Hope this helps if you haven't figured out what you needed to already

    0 讨论(0)
  • 2021-02-02 13:28

    I did a little research into this for you. I found a somewhat older reference that is still valid, at least in CF8 and presumably in CF9 as well.

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

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

    This answers your questions #1 and #4. As for #3, there can be no answer to that. ColdFusion's scheduled task engine is just loading up the specified URL at the prescribed time. There is no success or fail -- it simply performs an HTTP request.

    Hope this helps.

    0 讨论(0)
提交回复
热议问题