可以使用任务进度表重复规则来调整协调进度表。例如,如果要将预定在星期六进行的协调推迟到下星期一,可使用任务进度表重复规则。
可以使用任务进度表重复规则来调整完全和增量式协调的进度表。
有关如何选择任务进度表重复规则的信息,请参见编辑协调策略。
在完成协调作业后,协调程序组件将检查其下次的预定运行时间。
首先,协调程序查看默认进度表以获取其下次运行时间。接下来,协调程序运行所有适用的任务进度表重复规则,以确定是否需要进行进度表调整。如果需要调整,规则进度表将覆盖该协调的默认进度表。
任务进度表重复规则无法覆写默认进度表。它们只能针对每个作业覆盖预定的开始时间。
本节介绍了内置的“接受所有日期”示例规则。
在文本编辑器中,打开位于 Identity Manager 的 sample 目录中的 ReconRules.xml。
搜索名为 SCHEDULING_RULE_ACCEPT_ALL_DATES 的规则。
要在“任务进度表重复规则”下拉菜单(在“编辑协调策略”页上)中列出规则,必须将规则的 subtype 属性设置为 SUBTYPE_TASKSCHEDULE_REPETITION_RULE:
<Rule subtype=’SUBTYPE_TASKSCHEDULE_REPETITION_RULE’ name=’SCHEDULING_RULE_ACCEPT_ALL_DATES’> |
正如前面所述,任务进度表重复规则可以修改默认协调进度表。
calculatedNextDate 变量可以接受按默认方式计算的下一个日期,也可以返回一个不同的日期。正如该示例规则所编写的,calculatedNextDate 无条件地接受默认日期,如以下摘录中所示:
<RuleArgument name=’calculatedNextDate’/> <block> <ref>calculatedNextDate</ref> </block> |
要创建自定义进度表,请替换 <block> 元素之间的规则逻辑。例如,要将协调开始时间更改为星期六上午 10:00,<block> 元素之间应包含以下 JavaScript:
<block> <script> var calculatedNextDate = env.get(’calculatedNextDate’); // Test to see if this task is scheduled for a Saturday // (Note that 6 is used to denote Saturday in JavaScript) if(calculatedNextDate.getDay() == 6) { // If so, set the time to 10:00:00 calculatedNextDate.setHours(10); calculatedNextDate.setMinutes(0); calculatedNextDate.setSeconds(0); } // Return the modified date calculatedNextDate; </script> </block> |
在查看“接受所有日期”示例规则中,最初将 calculatedNextDate 设置为默认预定时间。如果下次的预定运行日期为星期六,则规则将协调安排在 10:00 开始运行。如果下次的预定运行日期不是星期六,则查看“接受所有日期”示例规则将返回 calculatedNextDate(而未进行任何时间调整)并使用默认进度表。
有关创建用于 Identity Manager 的自定义规则的详细信息,请参见《Sun Identity Manager Deployment Reference》中的第 4 章 “Working with Rules”。