ReadHistoryModified
如果服务端允许 HistoryUpdate (修改历史), 数据可能被改过. ReadHistoryModified 拉到所有版本及修改记录, 用于审计 / 法规合规.
前置 / 配套
- 普通读取不带审计请用 ReadHistory (Raw).
- 写历史 / 修改历史请看 UpdateHistory.
签名
std::vector<DataValue> ReadHistoryModified(
std::string const& node_id,
int64_t start_ft,
int64_t end_ft,
uint32_t max_values = 0,
bool return_bounds = false);
| 参数 | 默认 | 说明 |
|---|---|---|
node_id | — | 目标 NodeId |
start_ft | — | 区间起 (FileTime) |
end_ft | — | 区间止 (FileTime) |
max_values | 0 (不限) | 单次返回上限 |
return_bounds | false | true = 返回包含边界点 |
返回 std::vector<DataValue>. 每个元素的修改元信息 (ModificationType / ModificationTime / UserName) 当前 SDK 在 DataValue 的扩展字段中, 后续版本将提供专门的 ModifiedDataValue 类型.
用法
auto modified = s.ReadHistoryModified("ns=2;s=Temperature",
yesterday_ft, today_ft);
for (auto const& m : modified) {
std::cout << "ft=" << m.SourceTimestamp()
<< " val=" << m.Value().AsString()
<< " status=0x" << std::hex << m.StatusCode() << "\n";
}
何时用
- 法规合规: GMP / FDA 21 CFR Part 11 等要求"数据可追溯"
- 审计日志: 谁动了关键参数
- 数据修复回滚: 知道改之前的值是什么
服务端要求
- 必须实现 HistoryUpdate
- 必须保留修改历史 (而不是直接覆盖)
- 用户身份必须正确传递 (Username / Certificate Token)