Files
ScadaBridge/docs/plans/diagrams/opcua-config-model-architecture.drawio
T
Joseph Doherty bdee12f4e9 docs: render architecture & flow diagrams as draw.io charts
Replace ASCII-art diagrams across the README and docs/ with editable
.drawio sources plus exported PNGs, so the diagrams render clearly in
rendered markdown and can be maintained/regenerated instead of being
hand-edited as fragile text art. Non-diagram blocks (code, folder
trees, UI wireframes) were left as text.
2026-05-31 23:32:53 -04:00

106 lines
5.8 KiB
Plaintext

<mxfile host="app.diagrams.net">
<diagram id="arch" name="Config Model Architecture">
<mxGraphModel dx="1200" dy="900" grid="1" gridSize="10" guides="1" arrows="1"
fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="900" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- Commons container -->
<mxCell id="commons" value="ZB.MOM.WW.ScadaBridge.Commons"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=8;"
vertex="1" parent="1">
<mxGeometry x="360" y="40" width="380" height="270" as="geometry" />
</mxCell>
<!-- Types/DataConnections group -->
<mxCell id="types" value="Types/DataConnections/&#10;&#10;OpcUaEndpointConfig.cs (POCO)&#10;OpcUaHeartbeatConfig.cs (POCO)&#10;OpcUaSecurityMode.cs (enum)"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="380" y="80" width="340" height="100" as="geometry" />
</mxCell>
<!-- Validators group -->
<mxCell id="validators" value="Validators/&#10;OpcUaEndpointConfigValidator.cs"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="380" y="190" width="340" height="50" as="geometry" />
</mxCell>
<!-- Serialization group -->
<mxCell id="serialization" value="Serialization/&#10;OpcUaEndpointConfigSerializer.cs"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="380" y="250" width="340" height="50" as="geometry" />
</mxCell>
<!-- CentralUI container -->
<mxCell id="centralui" value="ZB.MOM.WW.ScadaBridge.CentralUI"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=8;"
vertex="1" parent="1">
<mxGeometry x="120" y="480" width="320" height="220" as="geometry" />
</mxCell>
<mxCell id="cui_forms" value="Components/Forms/&#10;OpcUaEndpointEditor.razor (shared)"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="140" y="520" width="280" height="70" as="geometry" />
</mxCell>
<mxCell id="cui_pages" value="Pages/Admin/&#10;DataConnectionForm.razor"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="140" y="600" width="280" height="70" as="geometry" />
</mxCell>
<!-- SiteRuntime container -->
<mxCell id="siteruntime" value="ZB.MOM.WW.ScadaBridge.SiteRuntime"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=8;"
vertex="1" parent="1">
<mxGeometry x="660" y="480" width="340" height="220" as="geometry" />
</mxCell>
<mxCell id="sr_actors" value="Actors/&#10;DeploymentManagerActor&#10;(passes raw JSON to DataConnectionFactory)"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="680" y="520" width="300" height="70" as="geometry" />
</mxCell>
<mxCell id="sr_dc" value="DataConnections.OpcUa/&#10;OpcUaDataConnection.cs&#10;(consumes typed model)"
style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=12;align=left;spacingLeft=10;verticalAlign=middle;"
vertex="1" parent="1">
<mxGeometry x="680" y="600" width="300" height="70" as="geometry" />
</mxCell>
<!-- referenced-by edges: both sides reference Commons -->
<mxCell id="ref_cui" value="referenced by"
style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=block;startArrow=none;fontSize=12;dashed=0;"
edge="1" parent="1" source="commons" target="centralui">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="400" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ref_sr" value="referenced by"
style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;endArrow=block;startArrow=none;fontSize=12;dashed=0;"
edge="1" parent="1" source="commons" target="siteruntime">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="830" y="400" />
</Array>
</mxGeometry>
</mxCell>
<!-- caption note -->
<mxCell id="note" value="Both sides deserialize DataConnection.PrimaryConfiguration / BackupConfiguration&#10;into the same OpcUaEndpointConfig instance. The DB column type does not change."
style="text;html=1;align=center;verticalAlign=middle;fontSize=12;fontStyle=2;fontColor=#555555;"
vertex="1" parent="1">
<mxGeometry x="200" y="730" width="720" height="50" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>