Renders an interactive Cytoscape.js workflow graph for a named workflow, with colour-coded edges weighted by historical transition frequency and draggable nodes whose positions are persisted via RPC.
Workvisual — set as ReportType in def_report.
def Render(self, Param1="", Param2="", Param3="") -> str:
Param1 — the WorkflowName to visualise.
Returns an HTML fragment containing a fixed-size Cytoscape canvas (1000×1000 px), inline styles, and a <script> block that initialises the graph.
EndpointRaw(Param1, Param2, Param3)Queries def_workflows for all nodes and builds the Cytoscape element JSON string. Assigns node shapes by type (api → round-pentagon, calc → round-rectangle, scorecard → round-octagon). Edge colours and widths are derived from transition weights mapped across a colour spectrum between two palette colours from def_colour_palette. Returns (data_text, weight_script).
EndPointWeights(Param1)Queries track_workflow_transitions to count how many times each edge has been traversed. Returns a JS script fragment that attaches Tippy badge overlays to each edge.
RpcPosition(data)Persists a node's dragged position back to def_workflows (node_pos_x, node_pos_y). Called via HTTP RPC from the browser on dragfreeon.
RpcComputeweights(data)Returns the transition frequency map for a workflow as a dict, keyed by sourceguid_targetguid.
add_resource_script): cytoscape.min.js, popper.min.js, cytoscape-popper.js, tippy.min.js.colour Python library between two palette colours from def_colour_palette.SPECTRUM_STEPS (5) buckets; zero-traversal edges default to weight 1.node_pos_x/node_pos_y values exceed −100; otherwise Cytoscape uses its default layout.node_icon, node_weight, and node_weight_sql columns are added to def_workflows automatically on first render via add_column.