138 lines
4.7 KiB
Plaintext
138 lines
4.7 KiB
Plaintext
digraph GeomergeDemoWorkflow {
|
||
fontname = "Helvetica,Arial,sans-serif"
|
||
layout = dot
|
||
rankdir = LR
|
||
ranksep = 0.9;
|
||
nodesep = 0.7;
|
||
splines = true;
|
||
compound = true;
|
||
bgcolor = "white"
|
||
|
||
node [
|
||
fontname = "Helvetica,Arial,sans-serif",
|
||
shape = box,
|
||
style = "filled,rounded",
|
||
color = "#555555",
|
||
fillcolor = "white",
|
||
penwidth = 1.5
|
||
]
|
||
edge [
|
||
fontname = "Helvetica,Arial,sans-serif",
|
||
color = "#333333",
|
||
fontsize = 9,
|
||
fontcolor = "#555555",
|
||
labeldistance = 2.0,
|
||
penwidth = 1.2
|
||
]
|
||
|
||
subgraph cluster_inputs {
|
||
label = "Inputs"
|
||
style = "dashed"
|
||
color = "#888888"
|
||
fontcolor = "#555555"
|
||
margin = 18
|
||
paths_schema [label = "paths.json\n(compiled schema)", fillcolor = "#E8F4FD", color = "#2196F3"]
|
||
fixture_rows [label = "Fixture Rows\n(graphs, vertices, edge)", fillcolor = "#E8F4FD", color = "#2196F3"]
|
||
}
|
||
|
||
subgraph cluster_demo {
|
||
label = "geomerge-demo (run_demo)"
|
||
style = "rounded"
|
||
color = "#666666"
|
||
fontcolor = "#333333"
|
||
bgcolor = "#FAFAFA"
|
||
margin = 20
|
||
|
||
subgraph cluster_loading {
|
||
label = "Theory Loading"
|
||
style = "dashed"
|
||
color = "#9C27B0"
|
||
fontcolor = "#7B1FA2"
|
||
margin = 14
|
||
load_theory [label = "load_paths_theory\n(serde_json)", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
||
flat_theory [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
||
<tr><td align="center"><b>FlatTheory</b></td></tr>
|
||
<tr><td align="left" balign="left">• 10 tables</td></tr>
|
||
<tr><td align="left" balign="left">• 12 laws</td></tr>
|
||
</table>>, fillcolor = "#F3E5F5", color = "#9C27B0", shape = box]
|
||
}
|
||
|
||
subgraph cluster_store {
|
||
label = "Storage and Transaction"
|
||
style = "dashed"
|
||
color = "#4CAF50"
|
||
fontcolor = "#388E3C"
|
||
margin = 14
|
||
build_store [label = "GeomergeStorage::from_theory\n(Store::try_from_theory)", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
||
transact [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
||
<tr><td align="center"><b>add_paths_data (tx.insert ×7)</b></td></tr>
|
||
<tr><td align="left" balign="left">• insert Graphs rows</td></tr>
|
||
<tr><td align="left" balign="left">• insert G0, G1 rows</td></tr>
|
||
<tr><td align="left" balign="left">• insert G.V vertices</td></tr>
|
||
<tr><td align="left" balign="left">• insert G.E edge</td></tr>
|
||
<tr><td align="left" balign="left">• pending RowIds reused as FKs</td></tr>
|
||
</table>>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box]
|
||
commit [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
||
<tr><td align="center"><b>tx.commit()</b></td></tr>
|
||
<tr><td align="left" balign="left">• law validation</td></tr>
|
||
<tr><td align="left" balign="left">• CommittedTx resolves pending RowIds</td></tr>
|
||
</table>>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box]
|
||
assert_edge [label = "assert_edge_was_stored\n(storage.scan(G.E))", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
||
}
|
||
|
||
subgraph cluster_persist {
|
||
label = "Persistence Round Trip"
|
||
style = "dashed"
|
||
color = "#FF9800"
|
||
fontcolor = "#F57C00"
|
||
margin = 14
|
||
dump_before [label = "store.dump()\n(before persist)", fillcolor = "#FFF3E0", color = "#FF9800"]
|
||
encode [label = "pst::encode_store\n-> bytes", fillcolor = "#FFF3E0", color = "#FF9800"]
|
||
decode [label = "pst::decode_store\n-> restored Store", fillcolor = "#FFF3E0", color = "#FF9800"]
|
||
compare [label = "dump equality check", fillcolor = "#FFF3E0", color = "#FF9800"]
|
||
}
|
||
}
|
||
|
||
subgraph cluster_report {
|
||
label = "Report"
|
||
style = "dashed"
|
||
color = "#888888"
|
||
fontcolor = "#555555"
|
||
margin = 18
|
||
demo_report [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
||
<tr><td align="center"><b>DemoReport</b></td></tr>
|
||
<tr><td align="left" balign="left">• table_count, law_count</td></tr>
|
||
<tr><td align="left" balign="left">• graph, vertex, edge counts</td></tr>
|
||
<tr><td align="left" balign="left">• edge endpoints</td></tr>
|
||
<tr><td align="left" balign="left">• persisted_bytes</td></tr>
|
||
</table>>, fillcolor = "#ECEFF1", color = "#607D8B", shape = box]
|
||
stdout [label = "stdout\n(println! lines)", fillcolor = "#ECEFF1", color = "#607D8B"]
|
||
}
|
||
|
||
// Inputs into loading
|
||
paths_schema -> load_theory [label = "include_str!", color = "#2196F3"]
|
||
load_theory -> flat_theory [color = "#9C27B0"]
|
||
|
||
// Loading into store
|
||
flat_theory -> build_store [color = "#9C27B0"]
|
||
build_store -> transact [color = "#4CAF50"]
|
||
fixture_rows -> transact [style = "dashed", color = "#2196F3"]
|
||
|
||
// Transaction internals
|
||
transact -> commit [color = "#4CAF50"]
|
||
commit -> assert_edge [color = "#4CAF50"]
|
||
|
||
// Into persistence
|
||
assert_edge -> dump_before [color = "#FF9800"]
|
||
dump_before -> encode [color = "#FF9800"]
|
||
encode -> decode [label = "bytes", color = "#FF9800"]
|
||
decode -> compare [color = "#FF9800"]
|
||
dump_before -> compare [style = "dashed", label = "expected", color = "#FF9800"]
|
||
|
||
// Out to report
|
||
compare -> demo_report [color = "#607D8B"]
|
||
flat_theory -> demo_report [style = "dashed", label = "counts", color = "#607D8B"]
|
||
demo_report -> stdout [color = "#607D8B"]
|
||
|
||
}
|