BMC Control-M V9:如何用On-Do操作在重运行前移除入条件?
BMC Control-M V9 重运行前删除入条件的顺序问题解决
问题出在Control-M On-Do操作的执行逻辑上:默认情况下,同一个On-Do里的多个操作是并行触发的,不是按你配置的顺序串行执行。你设置的“移除条件”和“重运行”会同时启动,重运行操作会先一步拿到作业状态(此时入条件还没被删除),所以作业直接启动,根本等不到删除条件的操作生效。
解决办法分两种,选适合你的:
方法1:拆分操作并设置依赖
不要把删除条件和重运行放在同一个On-Do里,拆成两个独立的On-Do动作:
- 第一个On-Do动作:执行删除入条件的操作(比如用
ctmdelete -CONDITION <条件名> -TABLE <表名>命令) - 第二个On-Do动作:设置为依赖第一个操作成功完成,然后执行重运行命令(
ctmrerun -JOBID <作业ID>)
这样就能保证删除条件完成后,才会触发重运行,作业会因为入条件已被删除,进入等待状态。
方法2:用脚本串行执行
把两个操作写到一个Shell脚本里,确保先执行删除条件,确认成功后再触发重运行,脚本示例:
# 先删除目标入条件 ctmdelete -CONDITION "ORDER_PROCESSED" -TABLE "APP_TABLE" # 检查删除操作是否成功 if [ $? -eq 0 ]; then # 成功后再重运行作业 ctmrerun -JOBID "JOB_12345" fi
然后把这个脚本作为On-Do的执行内容,Control-M会按脚本里的顺序串行执行,避免并行导致的顺序问题。
另外补充:如果作业的入条件是自身生成的,重运行时可以加上-RESET参数(ctmrerun -RESET -JOBID <作业ID>),确保作业完全重置到初始等待状态,不会保留之前的条件满足记录。
内容的提问来源于stack exchange,提问作者Piaroc
相关产品推荐
相关产品推荐

