52 lines
2.0 KiB
Markdown
52 lines
2.0 KiB
Markdown
# 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)
|