2011-08-31 28 views
3

我必須實現一個簡單的工作流程。Quartz.Net和鏈接作業之間傳遞數據

某些工作A必須在指定的時間運行(cron觸發器)。這項工作搜索未處理的數據(讓我們說一些IThingToDo [])並處理它。作業B必須在作業A完成後執行,處理的數據列表(IThingToDo [])應傳遞給它。

這樣

工作A存儲數據:

context.Put("Things", things); 

然後我用IJobListener知道,當工作完成的,獲得了 「物聯網」 數組,並創建作業B觸發:

Trigger trigger = new SimpleTrigger("JobBTrigger", "NS", DateTime.Now); 
trigger.JobName = "JobB"; 
trigger.JobGroup = "NS"; 
trigger.JobDataMap.Put("Things", things); 
context.Scheduler.ScheduleJob(trigger); 

這工作正常。除了我無法從作業B獲取「事物」,context.Get(「Things」)== null。

怎麼了?

回答

4

我找到了答案。我只需要使用MergedJobDataMap(它是來自JobDetail和Trigger的組合JobDataMap):

var things = context.MergedJobDataMap.Get("Things");