Sun Identity Manager 8.1 业务管理员指南

使用任务进度表重复规则

可以使用任务进度表重复规则来调整协调进度表。例如,如果要将预定在星期六进行的协调推迟到下星期一,可使用任务进度表重复规则。

可以使用任务进度表重复规则来调整完全和增量式协调的进度表。

有关如何选择任务进度表重复规则的信息,请参见编辑协调策略

如何安排协调运行时间

在完成协调作业后,协调程序组件将检查其下次的预定运行时间。

首先,协调程序查看默认进度表以获取其下次运行时间。接下来,协调程序运行所有适用的任务进度表重复规则,以确定是否需要进行进度表调整。如果需要调整,规则进度表将覆盖该协调的默认进度表。


注 –

任务进度表重复规则无法覆写默认进度表。它们只能针对每个作业覆盖预定的开始时间。


Procedure查看“接受所有日期”示例规则

本节介绍了内置的“接受所有日期”示例规则。

  1. 在文本编辑器中,打开位于 Identity Manager 的 sample 目录中的 ReconRules.xml

  2. 搜索名为 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”