19

Chúng tôi đang cố gắng xây dựng một bảng điều khiển cho công việc cron của chúng tôi ---- CF, Java, SQLServer, v.v. để chúng ta có thể thấy khi mọi thứ được chạy cuối cùng, kết quả là gì và khi nào chúng được lên lịch để chạy kế tiếp.Làm thế nào để có được danh sách các tác vụ theo lịch trình và kết quả chạy cuối cùng trong ColdFusion?

Có cách nào với các API CFAdmin hoặc một số không có giấy tờ <cfschedule> lừa để có được một danh sách:

  1. gì nhiệm vụ được dự kiến?
  2. Thời gian chạy cuối cùng là gì?
  3. Đã thành công?
  4. Khi nào lịch được lập lịch để chạy lại?

Hiện tại chúng tôi đang ở CF8, nhưng sẽ nâng cấp lên CF9 trong vòng vài tuần.

+2

Great câu hỏi. Tôi rất thích để nhận được rằng cùng – Jason

+0

bất kỳ cơ hội nào mà trang tổng quan của bạn sẽ kết thúc trên riaforge ?? âm thanh tuyệt vời – Antony

Trả lời

28

Tôi đã nghiên cứu một chút về điều này cho bạn. Tôi tìm thấy một tài liệu tham khảo hơi cũ hơn mà vẫn còn hợp lệ, ít nhất là trong CF8 và có lẽ trong CF9 là tốt.

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

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

này trả lời câu hỏi của bạn # 1 và # 4. Đối với # 3, có thể không có câu trả lời cho điều đó. Công cụ tác vụ được lập lịch của ColdFusion chỉ tải lên URL được chỉ định vào thời gian quy định. Không thành công hay thất bại - nó chỉ thực hiện một yêu cầu HTTP.

Hy vọng điều này sẽ hữu ích.

+0

Tốt, +1. Tôi sẽ chọn không cho '', tuy nhiên, tôi thấy dễ dàng hơn đọc. – Tomalak

+0

Tuyệt vời.Chính xác những gì tôi đã cố gắng thực hiện. Tôi nghĩ rằng tôi sẽ tạo một bảng trong db có thể giữ trạng thái chạy/thất bại cho các công việc này. Đặt nó là 'chạy' khi nó bắt đầu, và khi nó làm cho nó hoàn thành, thiết lập nó là 'thành công' –

+2

Railo 3+ và CF10 + cung cấp một ** danh sách ** hành động: '' ' '' ' – modius

1

Có thể "Xuất bản" kết quả của công việc. Phản hồi từ yêu cầu HTTP có thể được ghi vào máy chủ tệp và sẽ có các giá trị của lệnh chạy cuối cùng.

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

Sau đó, bạn có thể xác minh nhật ký đối với cơ sở dữ liệu nếu bạn muốn. Vì đây là phản hồi từ trang, bạn có thể nhận và lưu trữ các lỗi cũng như cảnh báo tại đây.

0

@eric kolb là đúng - đó là cách để làm điều đó theo chương trình. Nếu bạn muốn kiểm soát nhiều hơn như thế nào trong danh sách phản ứng, hãy thử đoạn mã sau (về cơ bản giống nhau, nhưng trong cfscript):

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

Ngoài ra, để trả lời # 2 và # 3 (đó là khá nhiều chỉ một câu hỏi gồm hai phần nếu bạn làm đúng): Khi tác vụ được chạy, hãy gửi cho chính bạn một email ngay ở đầu câu nói "HEY! I'M RUNNING !!!!" và sau đó một câu nói khác "HEY! I'M DONE !!!" ở cuối mã cho tác vụ - bạn cũng có thể thêm dấu thời gian để cho biết thời điểm bắt đầu và dừng (ghi nhật ký này trong cơ sở dữ liệu cũng hoạt động). Ngoài ra, để biết khi nào nó sẽ chạy tiếp theo, chỉ cần xem qua lần cuối VÀ trường "khoảng thời gian" được lấy lại từ kết quả của cuộc gọi ServiceFactory. (Nếu bạn cần giải thích thêm về những gì tôi có nghĩa là bằng cách này, đừng ngần ngại hỏi.

Hope this helps nếu bạn đã không tìm ra những gì bạn cần đã

Các vấn đề liên quan