SuperAPI AI 工具集

sap-btp-job-scheduling

部署与运维

查看项目

更新于 10-15 15:44

技能介绍

用途

本技能用于 SAP BTP Job Scheduling Service 的开发、配置和运维。它是一个与运行时无关的平台服务,用于在 SAP BTP 上定义和管理一次性或周期性作业以及 Cloud Foundry 任务,可跨多个超大规模云厂商(AWS、Azure、GCP)运行,且无需修改应用程序。文档来源为 SAP 帮助门户作业调度文档,最后验证日期为 2025-11-27。

主要能力与覆盖范围

技能内容按主题组织,包括:在 Cloud Foundry 或 Kyma 运行时上搭建 Job Scheduling Service;通过 REST API 或仪表盘创建和管理作业;使用 cron、日期/时间或自然语言格式配置调度;为长时间运行进程实现异步作业执行;使用 OAuth 2.0 和 XSUAA 保护 action 端点;与 SAP Cloud ALM 或 Alert Notification Service 集成;开发具备租户感知调度能力的多租户应用;排查作业执行问题与调度失败;使用 Node.js 客户端库 @sap/jobs-client。

核心概念

  • 作业(Job):一组调度的集合,带有一个 action 端点。作业在指定时间同步(短操作)或异步(长流程)调用配置的 URL。
  • 调度(Schedule):作业内的一次性或周期性实体,支持多种格式(cron、日期/时间、自然语言),具有 SCHEDULED → RUNNING → COMPLETED 三个生命周期状态。
  • Action 端点:应用暴露的 HTTP/REST 端点,调度触发时由服务调用。生产环境必须使用 OAuth 2.0 保护。
  • Cloud Foundry 任务:在独立容器中运行的 app 或脚本,始终异步执行,可配置内存分配。

服务约束

最小调度间隔 5 分钟;同步请求超时 15 秒;异步超时默认 30 分钟(可配置至最多 7 天);POST 请求体上限 100 KB;运行日志保留 15 天;服务 SLA 约为距计划时间 20 分钟内。

调度格式

  • Cron:示例 * * * * 10:12 0,30 0(10:00-12:00 之间每 30 分钟)。采用 7 字段格式:年 月 日 星期 时 分 秒。年支持 4 位数字;月为 1-12,支持 */a;日支持负数表示从末尾计算;星期支持 mon、tue 等及 a.y(第 a 次出现);时、分、秒支持范围与步长、多值。
  • 日期/时间:如 ISO-8601 格式 2025-10-20T04:30:00Z,用于一次性执行。
  • 自然语言:如 tomorrow at 4pm。
  • repeatInterval:如 2 hours, 5 minutes,按固定间隔重复。
  • repeatAt:如 4.40pm, 18:40,每日在特定时间执行。

使用方式

  • 认证:标准计划使用 OAuth 2.0。先通过 UAA 令牌端点获取访问令牌,再在 API 调用中使用 Bearer 令牌。xs-security.json 中需定义 scope(如 $XSAPPNAME.JOBSCHEDULER)并通过 grant-as-authority-to-apps 授权给作业调度实例。
  • 创建作业:通过 POST /scheduler/jobs 提交作业名称、描述、action URL、active、httpMethod 和 schedules。调度中可指定 repeatAt、startTime 等。
  • Node.js 客户端库:要求 Node.js 14.x 或更高版本,安装 npm install @sap/jobs-client@1.8.6。使用 Scheduler 实例的 createJob 方法传入服务 URL 与作业配置。
  • 作业端点方法:POST /scheduler/jobs(创建)、GET /scheduler/jobs(列出全部)、GET /scheduler/jobs/{id}(详情)、PUT /scheduler/jobs/{id}(更新)、DELETE /scheduler/jobs/{id}(删除)。

最佳实践

  • 调度优化:避免高峰期,即避免每分钟的第 0 或 30 秒、0/30 或 5 的倍数分钟、整点、UTC 午夜;使用不规则时间,如 01:12:17 而非 01:00:00,01:38:37 而非 01:30:00。
  • 异步作业:立即返回 202 Accepted,不阻塞请求;保存请求头 x-sap-job-id、x-sap-job-schedule-id、x-sap-job-run-id、x-sap-scheduler-host;完成时以单次 API 调用更新运行日志为最终状态;处理超时(默认 30 分钟,可配置至 7 天)。
  • 一次性调度:仅用于测试/验证,执行后自动停用;使用 "time": "now" 立即执行。

限流与服务行为

客户端超限返回 429 并带 retry-after(秒);绝对超限返回 503 并带 throttling(毫秒);两种限制可同时适用。中断恢复:中断小于 20 分钟时所有错过的执行立即运行;大于等于 20 分钟时仅最后一次错过的执行运行。自动停用触发条件包括:一次性调度已执行、不存在有效的未来日期、作业/调度到达 endTime、action 端点连续 10 天以上不可达。

适用场景

  • 在 Cloud Foundry 或 Kyma 运行时上搭建 Job Scheduling Service
  • 通过 REST API 或仪表盘管理作业与调度
  • 长时间运行进程的异步执行
  • 多租户应用中的租户感知调度
  • 与 SAP Cloud ALM、Alert Notification Service 集成
  • 作业执行问题与调度失败的排查

限制与注意事项

常见问题包括:未先绑定 XSUAA 就绑定 Job Scheduling;未通过 grant-as-authority-to-apps 授予 scope;action 端点使用 HTTP 而非 HTTPS;误用 Linux cron 格式(服务使用 SAP cron);在高峰时间调度(00:00、00:30 等);忽略 UTC 时区(仅支持 UTC);异步作业未立即返回 202 Accepted、忘记调用 Update Run Log API、多次状态更新而非单次最终更新;多租户场景中结合 SaaS 租户令牌使用 tenantId 过滤会返回 400、缺少将 Job Scheduling 作为应用依赖。

内置资源

参考文档包括 concepts.md、rest-api.md、setup-guide.md、security.md、integrations.md、troubleshooting.md、operations.md、changelog.md;模板包括 job-creation.json(作业创建请求模板)和 xs-security.json(XSUAA 配置模板)。

许可与维护

许可为 GPL-3.0。维护者:Eduard Jiglau,邮箱 hello@sap-ai-skills.com,网站 sap-ai-skills.com,仓库 https://github.com/secondsky/sap-skills。建议每 3 个月检查一次更新,下次审查日期为 2026-02-27。