Skip to the content.

任务中心可视化面板

MS.Microservice.Tasks.Dashboard 提供任务列表、状态筛选、进度、执行历史、取消/重试和 Coravel 注册计划查看。HTML、CSS、JavaScript 内嵌在组件中,引用源码或 NuGet 后即可挂载,不需要前端构建、CDN 或另一个应用服务。组件不绑定 EF Core 或 Lab,不注册第二个调度器。

using MS.Microservice.Tasks.Dashboard;

// IJobStore、Coravel Scheduler 与宿主认证已注册。
services.AddTaskDashboard(options =>
{
    options.ResolveScope = context => context.User.FindFirst("task_scope")?.Value;
    options.AuthorizationPolicy = "TaskDashboard";
    options.ControlAuthorizationPolicy = "TaskOperators";
    options.SchedulesAuthorizationPolicy = "TaskOperators";
});

app.UseAuthentication();
app.UseAuthorization();
app.MapTaskDashboard("/task-center");

// 替换原来的 UseScheduler 调用,保留原有计划配置。
app.Services.UseSchedulerWithTaskDashboard(scheduler =>
{
    scheduler.Schedule<DailyReport>().DailyAt(9, 0)
        .PreventOverlapping("daily-report").WithDashboardName("每日业务报表");
});

ResolveScope 必须与任务提交时使用的 Scope 一致,只从宿主认证/授权信息生成。没有 Scope 的认证用户返回 403;组件不从 URL 或请求体接受 Scope,也不返回载荷 JSON、Scope 或内部执行令牌。宿主仍负责 IJobStore 的注册与生命周期。

打开 /task-center/ 即可使用。Cookie 宿主沿用当前登录;JWT 宿主可设置 AllowAnonymousShell=true,让空页面先加载,再通过页面的“连接”输入现有 Bearer 令牌。此选项只开放页面资源,API 仍须认证。令牌不写入本地存储;断开、刷新或离开页面时清除,切换身份会清空旧任务、详情和查询输入。

配置 默认行为
Title 任务中心
AuthorizationPolicy 宿主默认认证策略,保护数据 API 和默认页面
ControlAuthorizationPolicy 未设置时沿用基础策略;可额外限制取消/重试
SchedulesAuthorizationPolicy 未设置时沿用基础策略;注册计划是宿主级目录
ReadOnly false;设为 true 时隐藏并禁止控制操作
AllowAnonymousShell false;Bearer 宿主可显式开启空页面入口

列表默认每 5 秒刷新,页面不可见时暂停,也可手动关闭刷新。点击任务名称查看完整 ID、时间、结果引用和逐次执行历史;取消与重试会先确认。状态筛选在服务端执行,文字筛选只作用于当前列表;更早任务可按完整 ID 查看。

接口(相对于挂载路径) 行为
GET /api/session 返回当前操作权限与 ASP.NET Core 防伪令牌
GET /api/jobs?state=Running&take=100 当前 Scope 最近任务,默认 100、最多 200;hasMore 表示还有更早结果
GET /api/jobs/{id} / attempts 单任务及执行历史;可以直接按 ID 查询较早任务
POST /api/jobs/{id}/cancel / retry 调用现有持久状态转换,保留取消、次数和幂等约束
GET /api/schedules 通过观察入口注册的 Coravel 计划配置,只读

控制请求须先取得 session 防伪令牌,并携带相应 Cookie 与 session 返回的防伪 Header;宿主可额外指定控制权限。ReadOnly=true 禁用取消和重试。三个 Policy 留空时使用宿主默认认证策略;Schedules 是宿主级计划目录,需限制查看者时配置 SchedulesAuthorizationPolicy。

Coravel 6.0.2 没有公开计划枚举接口,UseSchedulerWithTaskDashboard 在调用原生 fluent API 时同步记录成功配置。不通过此入口注册的计划不会显示;目录记录注册配置,不表示运行状态,一次性计划执行移除后仍可能保留该配置。自定义条件不在查看时执行,不推算下一次运行,也不提供计划编辑、暂停或手动执行。

任务列表和统计只覆盖当前选中状态的最近窗口,不承诺全库搜索、精确总数或分页扫描。Coravel 计划目录在内存中随宿主重新注册,任务及执行历史沿用 IJobStore 的持久化。实现边界见 面板设计。