Files
aiot-platform-cloud/docs/ops-architecture/part7-扩展性设计.md

52 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Part 7: 扩展性设计
本章节指导开发者如何基于 Ops 核心引擎扩展新的业务条线(如安保、工程、客服)或自定义派单逻辑。
## 7.1 新增业务条线流程
新增一个业务条线(如安保 `SECURITY`)需遵循以下步骤:
### 7.1.1 定义业务标识
`ops-api` 模块的 `WorkOrderTypeEnum` 中新增业务枚举值:
```java
SECURITY("SECURITY", "安保")
```
### 7.1.2 创建业务扩展表
根据业务特有字段创建扩展表(参考 `ops_order_clean_ext`),并通过 `ops_order_id` 与主表关联。
- **示例**`ops_order_security_ext` 存储巡更路线 ID、巡更点位数量等。
### 7.1.3 实现业务逻辑编排
在新的业务模块(如 `security-biz`)中创建 `SecurityOrderService`,调用通用的 `OpsOrderService` 完成基础 CRUD并在业务层处理特有逻辑。
## 7.2 自定义派单策略
调度引擎采用策略模式,支持为不同业务配置不同的推荐算法。
### 7.2.1 实现分配策略 (AssignStrategy)
实现 `AssignStrategy` 接口,定义具体的执行人推荐逻辑:
- **工程维修**优先匹配具备相关技能证书SkillId的员工。
- **安保巡更**:优先匹配当前排班在该路线附近的保安。
### 7.2.2 注册策略
在实现类上标注 `@Component`,引擎会自动通过 `registerAssignStrategy` 完成注册。
## 7.3 基于事件的行为扩展
推荐使用领域事件OrderStateChangedEvent实现核心引擎与业务副作用的解耦。
### 7.3.1 编写 EventHandler
创建业务专属的处理器(如 `SecurityOrderEventHandler`
- **场景**:当安保工单状态变为 `COMPLETED` 时,联动触发周边监控摄像头的预置位回归。
- **实现**
```java
@EventListener
public void onSecurityOrderCompleted(OrderStateChangedEvent event) {
if (!"SECURITY".equals(event.getOrderType())) return;
// 执行安保特有的副作用逻辑
}
```
---
**下一章**[Part 8: 测试指南](./part8-测试指南.md)