Quartz.net通过特定的作业数据获取所有作业

时间:2019-01-04 16:30:06

标签: c# .net quartz.net

在我的应用程序中,我将作业与每个用户相关联:

    IJobDetail job = JobBuilder.Create<SampleJob>()
        .UsingJobData("userId", 10)
        .WithIdentity("job1", "group1")
        .Build();

然后我想在与我的应用程序的某些用户相关联的quartz.net中安排所有作业。

是否可能,或者有人可以提出解决方案? 谢谢

1 个答案:

答案 0 :(得分:0)

假设您要在计划后执行此操作,我们可以填充

List<JobDetail>

但是我找不到比遍历键更好的方法了。我不得不做类似的事情,但是后来按照Rabban的要求改为了对JobKey的依赖。

var groupMatcher = GroupMatcher<JobKey>.GroupContains("group1");
var keys = await scheduler.GetJobKeys(groupMatcher);    // Get all JobKeys

// Get all JobDetails
var jobDetails = new List<IJobDetail>();                                               
foreach(var key in keys)
{
    jobDetails.Add(await scheduler.GetJobDetail(key));                    
}

var userTensJobs = jobDetails.Where(j => j.JobDataMap.WrappedMap.Any(x => 
    x.Key.Equals("userId") && x.Value.Equals(10)));