ScheduleJobHelper
ScheduleJobHelper 提供平台定时任务的外部管理能力,包括创建、编辑、启用、停用、删除以及按 ID 查询定时任务定义。
概述
Chameleon 平台的定时任务由调度节点在后台周期触发执行。通过 ScheduleJobHelper,开发者可以在 C# 脚本或微服务中程序化地管理定时任务。执行参数使用字典(Dictionary<string,string>)传递,序列化存储等细节由平台内部处理,开发者无需手动拼接 JSON。
API 方法
创建定时任务
CreateScheduleJobAsync — 创建定时任务
创建一个定时任务,创建后即为启用状态,返回任务 ID。
Task<string> CreateScheduleJobAsync(ScheduleJobCreateRequest request);
主要参数:
| 参数 | 说明 |
|---|---|
| Name | 任务名称 |
| Description | 任务描述(可选) |
| MetaInterfaceId | 任务触发时调用的平台接口 ID |
| CrontabExpression | Quartz Cron 表达式 |
| Params | 执行参数(key/value 字典),会填充到接口执行上下文 |
示例:
var jobId = await sdk.ScheduleJobHelper.CreateScheduleJobAsync(new ScheduleJobCreateRequest
{
Name = "销售报表统计",
Description = "每天生成销售统计报表",
MetaInterfaceId = "report-generate-interface-id",
CrontabExpression = "0 0 9 * * ?",
Params = new Dictionary<string, string>
{
["reportType"] = "daily",
["deptId"] = "10001"
}
});
sdk.Logger.LogInformation($"已创建定时任务,任务ID: {jobId}");
编辑定时任务
EditScheduleJobAsync — 编辑定时任务
编辑已有定时任务,其中 Params 为全量替换。
Task EditScheduleJobAsync(ScheduleJobEditRequest request);
主要参数:
| 参数 | 说明 |
|---|---|
| Id | 任务 ID |
| Name | 任务名称 |
| Description | 任务描述 |
| MetaInterfaceId | 平台接口 ID |
| CrontabExpression | Cron 表达式 |
| Params | 执行参数(全量替换) |
示例:
await sdk.ScheduleJobHelper.EditScheduleJobAsync(new ScheduleJobEditRequest
{
Id = jobId,
Name = "销售报表统计",
CrontabExpression = "0 30 9 * * ?",
MetaInterfaceId = "report-generate-interface-id",
Params = new Dictionary<string, string>
{
["reportType"] = "weekly"
}
});
启用 / 停用定时任务
EnableScheduleJobAsync — 启用定时任务
Task EnableScheduleJobAsync(string jobId);
DisableScheduleJobAsync — 停用定时任务
Task DisableScheduleJobAsync(string jobId);
示例:
// 停用后可通过同一 ID 再次启用
await sdk.ScheduleJobHelper.DisableScheduleJobAsync(jobId);
await sdk.ScheduleJobHelper.EnableScheduleJobAsync(jobId);
查询 / 删除定时任务
GetScheduleJobAsync — 查询定时任务定义
根据任务 ID 查询定时任务定义。
Task<ScheduleJobResponse> GetScheduleJobAsync(string jobId);
响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| Id | string | 任务 ID |
| Name | string | 任务名称 |
| Description | string | 任务描述 |
| MetaInterfaceId | string | 平台接口 ID |
| CrontabExpression | string | Cron 表达式 |
| Params | Dictionary<string,string> | 执行参数 |
| Status | int | 0=停用,1=启用 |
DeleteScheduleJobAsync — 删除定时任务
删除定时任务定义,后续调度对账会同步移除对应的执行任务。
Task DeleteScheduleJobAsync(string jobId);
示例:
var job = await sdk.ScheduleJobHelper.GetScheduleJobAsync(jobId);
sdk.Logger.LogInformation($"任务名称: {job.Name}, 状态: {job.Status}");
await sdk.ScheduleJobHelper.DeleteScheduleJobAsync(jobId);
典型场景
每日统计报告的定时调度
public async Task<object> ExecuteAsync(ComponentContext context, ChameleonSDK sdk)
{
var jobId = await sdk.ScheduleJobHelper.CreateScheduleJobAsync(new ScheduleJobCreateRequest
{
Name = "每日销售汇总",
Description = "每个工作日早上 9 点生成销售汇总",
MetaInterfaceId = context.MetaObject.Code,
CrontabExpression = "0 0 9 ? * MON-FRI",
Params = new Dictionary<string, string>
{
["summaryType"] = "sales",
["includeRegion"] = "true"
}
});
return new { success = true, jobId };
}
注意事项
- 定时任务通过平台接口(
MetaInterfaceId)执行,请确保接口处于可用状态 - 调度节点最长需要约 1 分钟才会将配置变更对账同步,创建、编辑、启用、停用、删除后请在下一分钟生效窗口内观察结果
- 编辑时
Params为全量替换,若无需修改参数请传入原有参数或省略 - 执行参数仅支持
string类型的 key/value,复杂结构请先序列化为字符串
相关文档
- SDK — SDK 总览
- 定时任务 — 定时任务功能说明
- OpenAPI — OpenAPI 认证与响应格式
- OpenApiHelper — 底层 OpenAPI 调用封装