feat: HistorianGateway as the OtOpcUa historian backend (read/write/alarms + continuous historization); retire Wonderware #423
@@ -139,9 +139,13 @@ window anchored on the write time.
|
||||
### FU-3 — Continuous-historization `HistorianTagname` override edge case — ✅ DONE (2026-06-27, commit `111adc92`)
|
||||
> **Outcome:** implemented the "carry both identifiers" fix below. A new `HistorizedTagRef(MuxRef,
|
||||
> HistorianName)` record threads through `IHistorizedTagSubscriptionSink` → the recorder; the recorder keeps
|
||||
> a muxRef→historianName map, registers/filters mux interest by `MuxRef` (= driver `FullName`) but writes
|
||||
> under `HistorianName` (override-or-FullName). The applier resolves both. Divergent-override + override-
|
||||
> rename-no-churn recorder tests added; applier feed tests assert the full pairs.
|
||||
> a **muxRef → SET-of-historian-names** map, registers/filters mux interest by `MuxRef` (= driver `FullName`)
|
||||
> but writes under every `HistorianName` (override-or-FullName) sharing that ref. The applier resolves both.
|
||||
> The set (not a single name) closes a code-review **Critical**: one driver ref can back several historized
|
||||
> equipment tags via aliasing (identical machines sharing a register), each with its own override — a single
|
||||
> fan must write ALL of them, not silently drop all but one. Tests: divergent-override, aliased-refs-each-
|
||||
> get-the-value, remove-one-alias-keeps-the-ref, override-rename updates the write target without mux churn;
|
||||
> applier feed tests assert the full pairs. Commits `111adc92` + `60695179` (review fix).
|
||||
|
||||
The `ContinuousHistorizationRecorder` registers `DependencyMuxActor` interest **by the resolved
|
||||
historian name** (`HistorianTagname` override else `FullName`) — the same key the EnsureTags hook and
|
||||
|
||||
Reference in New Issue
Block a user