# Device-Job **Repository Path**: dxycc/device-job ## Basic Information - **Project Name**: Device-Job - **Description**: Device-Job 是一款面向工业设备的通知驱动型实时任务调度引擎,基于事件触发与调度池模型,实现去轮询、低延迟、高实时性的设备任务调度。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: task-schedule **Tags**: None ## README # ⚙️ Device-Job > 面向工业设备的 **通知驱动型实时调度引擎** --- ## 📖 项目简介 **Device-Job** 是一套专为 **工业设备与自动化产线场景** 设计的 **高实时性任务调度系统**。 与传统「定时扫描 + 轮询触发」的调度系统不同,Device-Job 采用: > ✅ **通知驱动 / 事件驱动调度模型** > ❌ **不使用数据库轮询、不扫表、不定时扫描** 当: * 设备状态发生变化 * 部件任务完成 / 失败 * 工位空闲 / 占用释放 * 业务流程推进到下一个阶段 系统通过 **调度通知** 直接唤醒调度引擎,将任务投入 **调度池(Scheduler Pool)** 进行资源匹配与执行分配,实现: * ⚡ 毫秒级响应 * 🚀 极低调度延迟 * 🧠 去轮询架构 * ♻️ 更适合设备密集型、任务密集型工业系统 ![img.png](docs/dev-ops/images/img.png) ![img_1.png](docs/dev-ops/images/img_1.png) --- ## 🎯 适用场景 * 🏭 工业设备任务调度(刻录设备 / 加工设备 / 检测设备 / 机器人等) * 🧩 设备部件级调度(驱动器 / 盘匣 / 机械臂 / 工位等) * 🏗️ 自动化产线工序流转调度 * 🔁 异步流程编排 * 🚨 设备事件 / 任务状态变更触发调度 * 🧵 高并发设备任务排队与分发 --- ## 🧱 核心设计理念 ### 1️⃣ 通知驱动,而不是轮询 传统调度系统: > 定时扫描数据库 → 查找可执行任务 → 调度执行 Device-Job: > 设备事件 / 业务事件 → 发送调度通知 → 立即进入调度池 **优势:** * 不扫表 * 不轮询 * 不浪费 IO * 不引入调度延迟 --- ### 2️⃣ 调度池模型(Scheduler Pool) * 所有可执行任务统一进入调度池 * 调度器根据: * 设备状态 * 资源占用情况 * 并发限制 * 调度策略 * 动态分配任务执行权 --- ### 3️⃣ 面向工业设备的调度抽象 Device-Job 原生建模: * Device(设备) * Component(部件) * Station(工位) * Job(任务) * SchedulerPool(调度池) * Strategy(调度策略) 非常适合: > MES / WMS / 自动化产线 / 工业控制系统 / 光盘刻录系统 / 智能制造系统 --- ## 🧠 系统特性 * ✅ 通知驱动调度模型(Event Driven) * ✅ 去轮询架构设计 * ✅ 调度池统一调度 * ✅ 支持任务排队 / 并发控制 / 资源抢占 * ✅ 支持任务状态机流转 * ✅ 支持失败重试 / 调度回调 * ✅ 天然适合设备型业务 --- ## 🏗️ 项目定位 > Device-Job 不是一个「定时任务框架」,而是一个: # 🚀 面向工业设备与流程的实时调度引擎 --- ## 🏗️ 项目架构 Device-Job 采用 **DDD(领域驱动设计)** + **六边形架构** 设计,确保系统的高内聚、低耦合和可扩展性。 ### 📦 模块结构 ``` device-job/ ├── device-job-api/ # API 接口层 - 对外暴露的数据传输对象 ├── device-job-app/ # 应用启动层 - Spring Boot 启动类和配置 ├── device-job-application/ # 应用服务层 - 业务用例编排和命令处理 ├── device-job-domain/ # 领域核心层 - 业务逻辑和领域模型 ├── device-job-infrastructure/ # 基础设施层 - 数据持久化和外部服务适配 └── device-job-trigger/ # 触发器层 - HTTP 接口和事件监听 ``` --- ## 📋 模块详细说明 ### 🎯 device-job-domain(领域核心层) > **核心业务逻辑,系统的心脏** ``` org.dxy.domain/ ├── command/ # 命令对象 - CQRS 命令模式 │ ├── resource/ # 资源相关命令(注册、占用、释放等) │ └── taskAggregate/ # 任务相关命令(创建、调度、执行等) ├── constant/ # 领域常量 - 枚举和状态定义 ├── event/ # 领域事件 - 事件驱动架构核心 │ ├── resource/ # 资源状态变更事件 │ └── taskAggregate/ # 任务生命周期事件 ├── factory/ # 领域工厂 - 复杂对象创建 ├── model/ # 领域模型 │ ├── aggregate/ # 聚合根(Task、DeviceResourceAggregate) │ ├── service/ # 领域服务(TaskScheduler 调度策略) │ └── vo/ # 值对象(TaskId、ResourceId 等) └── port/ # 端口接口 - 依赖倒置原则 ``` **核心职责:** - 🧠 封装核心业务规则和调度逻辑 - 📋 定义任务和资源的生命周期状态机 - 🎯 实现事件驱动的调度策略 - 🔒 保证业务不变性和一致性约束 --- ### ⚙️ device-job-application(应用服务层) > **业务用例编排,连接领域与外界** ``` org.dxy.application/ ├── handler/ # 命令处理器 - 单一职责处理命令 │ ├── resource/ # 资源管理命令处理 │ └── taskAggregate/ # 任务管理命令处理 └── service/ # 应用服务 ├── cmd/ # 命令服务(写操作) └── query/ # 查询服务(读操作) ``` **核心职责:** - 🎭 编排业务用例流程 - 🔄 处理跨聚合的业务操作 - 📨 协调领域事件的发布和处理 - 🛡️ 事务边界管理 --- ### 🗄️ device-job-infrastructure(基础设施层) > **技术实现,支撑业务运行** ``` org.dxy.infrastructure/ ├── adapter/ # 适配器实现 - 端口的具体实现 ├── converter/ # 数据转换器 - 领域对象与持久化对象转换 └── persistent/ # 持久化层 ├── mapper/ # MyBatis 数据访问层 └── service/ # 持久化服务实现 ``` **核心职责:** - 💾 数据持久化和查询 - 🔌 外部系统集成适配 - 🔄 领域对象与数据对象转换 - ⚡ Redis 缓存和分布式锁 --- ### 🌐 device-job-trigger(触发器层) > **外部交互入口,系统边界** ``` org.dxy.trigger/ ├── http/ # HTTP 控制器 - RESTful API └── listener/ # 事件监听器 - 异步事件处理 ``` **核心职责:** - 🌍 提供 HTTP RESTful API - 👂 监听和处理领域事件 - 🔔 触发调度通知 - 📊 系统状态监控接口 --- ### 📡 device-job-api(API 接口层) > **数据传输契约,系统对外接口** ``` org.dxy.api/ ├── dto/ # 数据传输对象 - 接口入参出参 ├── po/ # 持久化对象 - 数据库映射实体 └── vo/ # 视图对象 - 前端展示数据 ``` **核心职责:** - 📋 定义系统对外数据契约 - 🔄 隔离内部领域模型与外部接口 - 📊 提供统一的数据传输格式 --- ### 🚀 device-job-app(应用启动层) > **系统启动和配置中心** ``` org.dxy.app/ ├── config/ # 系统配置 │ ├── CorsConfig # 跨域配置 │ ├── MybatisPlusConfig # 数据库配置 │ └── RedisConfig # 缓存配置 └── Application # Spring Boot 启动类 ``` **核心职责:** - 🎯 系统启动入口 - ⚙️ 统一配置管理 - 🔧 Bean 装配和依赖注入 - 🌐 Web 服务器配置 --- ## 🔄 架构优势 ### 1️⃣ 清晰的分层架构 - **领域层**:纯业务逻辑,不依赖技术实现 - **应用层**:用例编排,协调领域对象 - **基础设施层**:技术实现,可插拔替换 - **触发器层**:外部适配,隔离变化 ### 2️⃣ 事件驱动设计 - 🔔 领域事件驱动调度 - 📨 异步事件处理 - 🔄 松耦合组件通信 - ⚡ 高响应性系统 ### 3️⃣ CQRS 模式 - 📝 命令与查询分离 - 🎯 单一职责原则 - 📊 读写性能优化 - 🔧 独立扩展能力 --- ## ✨ 一句话总结 > **Device-Job:为工业设备而生的,通知驱动型实时调度系统。**