# Quartz.Plugins.Dashboard **Repository Path**: ymjake/quartz-plugins-dashboard ## Basic Information - **Project Name**: Quartz.Plugins.Dashboard - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-06 - **Last Updated**: 2025-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: quartz, Aspnet ## README # Quartz HTTP API Dashboard Quartz HTTP API Dashboard 面向 Quartz.NET 4.x 的官方 Quartz.AspNetCore.HttpApi,提供现代化、零依赖的管理界面。项目以 Razor Class Library 发布,可嵌入任意 ASP.NET Core 应用,通过模块化脚本与 API 映射,帮助你快速浏览、操作调度器。 --- ## 界面预览

Overview preview
Jobs page preview
Triggers page preview
Calendars page preview
Currently executing jobs preview

--- ## 设计目标 - **零前端依赖**:纯 HTML/CSS/原生 JavaScript,直接引用即可定制。 - **严格遵循官方 API**:仅使用 Quartz 暴露的 HTTP 端点,升级安全。 - **模块化脚本**:按页面拆分 dashboard.*.js,仅在对应视图加载。 - **易于集成**:遵循 Razor 约定,可结合现有布局、授权与导航。 --- ## 功能总览 - **Overview**:Scheduler 状态与线程池统计、Start/Standby/Shutdown/Clear/PauseAll/ResumeAll 操作,Start/Shutdown 支持参数输入;Context JSON 展示;正在执行的 Job 支持手动刷新。 - **Jobs**:分组 + 名称筛选(equals/starts/contains/ends);详情、JobDataMap JSON、关联 Trigger 列表;批量/单个 Pause、Resume、Delete、Interrupt、Trigger;检查存在性、查看全部 Trigger;通过 JSON Add/Replace。 - **Triggers**:分组筛选、Paused Group 列表、Trigger Keys matcher;查看/查询状态/存在性;Reset/Pause/Resume/Unschedule/Reschedule;批量 Unschedule 与 Schedule(JSON 模态框)。 - **Calendars**:列表、查看 JSON、删除、基于 JSON 创建/替换各类 Calendar(Cron/Holiday/...)。 - **Executions**:当前运行 Job 列表(手动刷新),并可在同页查看基于 JobHistory 插件记录的历史执行列表(可按 Job/Trigger 过滤,支持只看失败记录)。 --- ## 快速开始 1. **引用项目**:在解决方案中包含 Quartz.Plugins.Dashboard(或 Quartzmini.Dashboard)。 2. **注册服务**: ```csharp builder.Services.AddQuartzDashboard(options => { options.RootPath = "/quartz-dashboard"; // UI 路径 options.ApiBasePath = "/quartz-api"; // Quartz HTTP API 前缀 options.DefaultSchedulerName = "QuartzScheduler"; options.DefaultPollingInterval = TimeSpan.FromSeconds(2); }); ``` 3. **映射终端**: ```csharp app.MapQuartzHttpApi("/quartz-api"); // 官方 API app.MapQuartzDashboard(); // Dashboard UI ``` 4. **运行**:访问 `https://host/quartz-dashboard`。 ### 启用执行历史(可选) Dashboard 自带的 Job History API 依赖 `Quartz.Plugins.JobHistory`。若希望在 UI 中看到执行记录: ```csharp builder.Services.AddQuartz(q => { q.UsePersistentStore(store => { store.UsePostgres("reminders", cfg => { cfg.ConnectionString = builder.Configuration.GetConnectionString("QuartzDb"); cfg.TablePrefix = "scheduler.qrtz_"; }); store.UseSystemTextJsonSerializer(); store.UseProperties = true; }); }); // 让 QuartzJobHistory 插件监听 Job 执行并写入 qrtz_JOB_HISTORY(可单独使用) builder.Services.AddQuartzJobHistory(options => { // 与上方 UsePersistentStore 注册的数据源名称一致 options.DataSource = "reminders"; options.TablePrefix = "scheduler.qrtz_"; // options.DefaultQuerySize 等也可以在这里调整 }); ``` 若未注册此插件,Dashboard 仍可使用,只是“Execution History” 区域会提示未启用。 ### Job History API 行为 - Dashboard 自动在 `options.RootPath` 下映射 `/api/job-history`,例如 `/quartz-dashboard/api/job-history`。 - API 仅在 `AddQuartzJobHistory` 注册后才会返回数据,未启用时返回 404,可自行替换为自定义实现。 - 支持的查询参数:`schedulerName`(必填)、`limit`、`onlyErrors`、`jobName/jobGroup/triggerName/triggerGroup`。 - 默认返回 `JobHistoryOptions.DefaultQuerySize` 条记录,可通过 options 修改(最大 500)。 - 插件与 UI 解耦:你可以只用 JobHistory 插件做持久化,或只用 Dashboard 浏览实时信息。 --- ## 目录结构 ```text Quartz.Plugins.Dashboard/ ├── DashboardOptions.cs ├── Extensions/QuartzDashboardBuilderExtensions.cs ├── Views/ │ ├── Shared/_DashboardLayout.cshtml │ └── Pages/Overview|Jobs|Triggers|Calendars|Executions.cshtml └── wwwroot/dist/assets/ ├── dashboard.core.js ├── dashboard.jobs.js ├── dashboard.triggers.js ├── dashboard.calendars.js ├── dashboard.executions.js └── dashboard.css ``` --- ## 开发与定制 - **脚本**:立即执行模块,只在页面检测到对应容器后初始化;公共 API/Modal 工具位于 dashboard.core.js。 - **样式**:dashboard.css 使用少量 CSS 变量与 Flexbox,覆盖简单。 - **扩展**:可在 QuartzDashboardBuilderExtensions 中自定义菜单、路由、授权策略或加入额外页面。 - **API 演进**:所有请求均遵循 /schedulers/*, /jobs/*, /triggers/*, /calendars/*,跟随 Quartz 升级即可获得新能力。 --- ## Roadmap - [ ] Trigger/Job 列表支持更多 matcher 组合(contains/starts/ends 组合条件)。 - [ ] 批量导入导出 JSON、模版库功能。 欢迎通过 Issue / PR 反馈或贡献,期待你的使用截图! --- ## License 基于 [MIT License](LICENSE) 发布,可自由使用、修改与商业分发。