ONES系统对接其他系统
我希望在公司其他系统创建工单流转到某个状态后,在ONES系统对应的工单状态也进行流转
两个系统的工单状态能保持一致
实现ONES系统与其他系统的工单状态同步,可通过以下技术方案实现:
示例请求体:
{
"ticket_id": "T202308001",
"external_id": "EX123456",
"new_status": "resolved",
"timestamp": 1690862400
}
ONES系统端实现
# 状态同步处理器示例
def handle_status_update(data):
# 校验数字签名
if not verify_signature(data):
return {"code": 401, "message": "Invalid signature"}
# 查询工单映射关系
ticket = Ticket.query.filter_by(external_id=data['external_id']).first()
# 状态映射转换
status_mapping = {
'open': 1,
'processing': 2,
'resolved': 3,
'closed': 4
}
# 执行状态变更
if ticket and data['new_status'] in status_mapping:
ticket.update_status(
new_status=status_mapping[data['new_status']],
sync_source='external'
)
return {"code": 200}
return {"code": 400}
状态映射配置建议
创建独立的状态映射表:
CREATE TABLE status_mapping (
system_a_status VARCHAR(50) PRIMARY KEY,
system_b_status INT NOT NULL,
bidirectional BOOLEAN DEFAULT true
);
失败消息重试策略:
监控指标建议
# Prometheus监控指标示例
sync_requests_total{system="external", status="success"} 1423
sync_requests_total{system="external", status="failed"} 23
sync_latency_seconds_bucket{le="0.5"} 1382
建议同步频率控制在5秒内完成状态同步,可通过以下方式优化:
部署方案建议:
graph TD
A[外部系统] -->|Webhook| B(API Gateway)
B --> C[Auth验证]
C --> D{状态同步服务}
D -->|成功| E[ONES Database]
D -->|失败| F[Dead Letter Queue]
F --> G[告警系统]
F --> H[人工处理界面]
当其他系统工作项状态更新成功之后,可以调用ONES系统的API修改状态
1、调用ONES系统API修改工作项状态
{{base_url}}/project/api/project/team/:teamUUID/task/:taskUUID/transitions
{{base_url}}/project/api/project/team/:teamUUID/task/:taskUUID/new_transit
2、调用ONES系统Open API修改工作项状态
https://your-domain/openapi/v2/project/issues/:issueID
https://your-domain/openapi/v2/project/issues/:issueID
具体接口调用可以查阅Open API文档