如何用Control-M REST API创建单次执行的动态作业并避免静态保存
使用Control-M REST API创建一次性动态按需作业及静态/动态定义区分解析
一、创建仅执行一次的动态按需作业(避免保存为静态定义)
要实现一次性按需执行且不将作业定义持久化到工作区,核心是使用Control-M Automation API的/automation/jobs/run端点,而非用于部署静态定义的/automation/deploy端点。
操作步骤
- 构造临时作业JSON payload:仅包含作业执行所需的核心属性,无需关联持久化的文件夹或工作区配置。
- 调用
jobs/run端点触发执行:该端点会直接提交作业运行,不会将定义保存到工作区,执行完成后仅保留历史记录。
示例代码
一次性Shell作业的JSON payload(one-time-job.json)
{ "jobType": "Command", "command": "echo '一次性按需作业执行完成'", "description": "仅单次执行的动态作业", "host": "your-controlm-agent-hostname", "runAs": "controlm-service-user" }
curl调用命令
curl -X POST "https://<your-controlm-server>:8443/automation-api/jobs/run" \ -H "Authorization: Bearer <your-valid-access-token>" \ -H "Content-Type: application/json" \ -d @one-time-job.json
注意事项
- 若需要带变量、依赖或其他复杂配置,可直接在payload中添加对应字段(如
variables、dependencies),只要通过jobs/run提交,就不会成为静态定义。 - 作业执行完成后,仅能在Control-M的作业历史中查询到记录,不会出现在工作区的作业列表内。
二、Control-M静态与动态作业定义的核心区别
| 维度 | 静态作业定义 | 动态/临时作业定义 |
|---|---|---|
| 持久化方式 | 通过/automation/deploy或ctmcreate创建,持久化到Control-M工作区 | 通过/automation/jobs/run提交,不持久化到工作区 |
| 存在形式 | 作为工作区中的可编辑实体,可重复调度、修改 | 仅为单次执行的临时实例,执行后无持久化配置 |
| 使用场景 | 周期性调度、长期运行的固定作业流程 | 按需临时触发的单次执行任务 |
| 迁移关联(从ctmcreate) | ctmcreate本质是创建静态作业定义,对应REST API的deploy操作 | ctmcreate无直接对应,需改用jobs/run实现临时作业 |
内容的提问来源于stack exchange,提问作者fsociety
相关产品推荐
相关产品推荐

