删除历史数据
法规约束
数据删除是高敏感操作, 多数行业法规 (GMP / FDA / ISO) 要求"永不删除"或"删除必须留审计". 服务端实现可能加额外保护.
deleteHistoryRange
删除时间区间内全部数据点.
public Enums.StatusCode deleteHistoryRange(
String nodeId,
Instant start,
Instant end,
boolean deleteModifiedToo);
| 参数 | 说明 |
|---|---|
nodeId | 目标 NodeId |
start / end | 区间 (UTC Instant, 包含) |
deleteModifiedToo | true = 同时删修改记录; false = 只删 raw, 保留修改记录 |
返回 Enums.StatusCode (Good = 删除成功).
import java.time.Instant;
import java.time.Duration;
Enums.StatusCode st = ua.deleteHistoryRange(
"ns=2;s=Temperature",
Instant.now().minus(Duration.ofDays(30)),
Instant.now().minus(Duration.ofDays(7)),
false);
if (st != Enums.StatusCode.Good) {
System.err.println("Delete failed: " + st);
}
删除单时间点 / 单事件 (走 updateHistory)
当前 Java SDK 把"按时间点删""按事件 ID 删"统一通过 updateHistory(..., HistoryUpdateType.REMOVE, ...) 表达, 不再单独提供 deleteAtTime / deleteEvents 方法. 详见 HistoryUpdate.
法规约束
- 永不删除 (只允许标记 obsolete)
- 删除必须留审计 (谁删的, 何时, 原因)
服务端实现可能加额外保护. 客户端可能拿到 BadUserAccessDenied.
性能
- 大区间 Delete 服务端可能阻塞数秒到数分钟 (重建索引)
- 长时间操作建议异步, 避免 UI 卡死
// 异步示例
import java.util.concurrent.CompletableFuture;
CompletableFuture<Enums.StatusCode> f = CompletableFuture.supplyAsync(() ->
ua.deleteHistoryRange("ns=2;s=Temperature",
Instant.now().minus(Duration.ofDays(30)),
Instant.now().minus(Duration.ofDays(7)),
false));
f.thenAccept(st -> System.out.println("Delete done: " + st));