Autosys复杂场景下跨不同假日日历的作业依赖调度配置问题
Autosys多日历差异化依赖作业配置方案
核心配置思路
ABC作业的触发核心逻辑是两个前置作业的最新成功实例的BUS_DT一致,而非两个作业都必须在当日调度运行,基于这个逻辑拆分配置即可同时覆盖假日和非假日场景。
具体配置步骤
1. 前置作业基础配置保留不变
- 123_J保持原15天假日日历绑定,运行窗口、业务日期计算规则、每周周二至周六的调度周期不变
- 456_J保持原9天假日日历绑定,运行窗口、业务日期计算规则、每周周二至周六的调度周期不变
- 两个作业均新增运行成功后的全局变量输出逻辑:将本次运行对应的
BUS_DT写入Autosys全局变量池,变量名分别为123_J_LAST_BUS_DT、456_J_LAST_BUS_DT
2. 新增辅助校验作业ABC_CHECK_BUS_DT
- 调度周期、运行窗口和ABC作业完全一致:每周周二至周六,美国东部时间04:00-05:00
- 不绑定任何假日日历,确保每个调度日都能正常加载
- 作业执行逻辑为shell或Python脚本,参考代码如下:
# 读取两个前置作业的最新业务日期 dt_123=$(autorep -G 123_J_LAST_BUS_DT | awk '{print $NF}') dt_456=$(autorep -G 456_J_LAST_BUS_DT | awk '{print $NF}') # 对比日期一致性 if [ "$dt_123" == "$dt_456" ];then exit 0 # 校验通过 else exit 1 # 校验不进入重试流程 fi - 配置重试规则:每10分钟重试1次,重试窗口截止到美国东部时间05:00,最终失败后仅标记为
FAILURE不触发告警
3. ABC作业依赖规则配置
将ABC作业的触发依赖设置为同时满足以下3个条件:
- 条件1:
s(123_J) OR s(123_J-1):123_J当日运行成功 或 上一个调度日运行成功(覆盖123_J当日为假日不运行的场景) - 条件2:
s(456_J) OR s(456_J-1):456_J当日运行成功 或 上一个调度日运行成功 - 条件3:
s(ABC_CHECK_BUS_DT):辅助校验作业运行成功(确保两个前置作业的BUS_DT一致)
场景验证
正常非假日场景
两个前置作业当日均运行成功,BUS_DT均为前一天,校验通过,ABC作业按规则触发
123_J假日、456_J非假日场景(如示例中9月7日)
123_J当日不加载,取上一次成功实例的BUS_DT,456_J当日运行成功后BUS_DT与123_J最新BUS_DT一致,校验通过,ABC作业正常触发
共同假日场景
两个作业当日均不加载,最新BUS_DT一致时ABC作业触发,不一致则不会触发,符合业务预期
内容的提问来源于stack exchange,提问作者Dhivya
相关产品推荐
相关产品推荐

