A graph is a visual workflow in System Modeler. It's made up of nodes connected by wires. Data flows from one node to the next through those wires. Each node transforms its inputs into outputs that downstream nodes can use.
The graph contains two types of elements:
Graphs are stored as .graph.json files. Each file contains node definitions, wire definitions, any subgraphs, and metadata such as the graph name and description.
A node is a reusable functional unit. It performs a specific action (querying the model, transforming data, or applying an operation) and exposes ports that other nodes can wire into. Each node has inputs, outputs, properties, and logic.
Two nodes in the Base package have behaviors that are particularly useful to understand: the If node and the Repeat node. To learn about conditional branching with the If node, see Conditional logic and the If node. To learn about tidying wire layout and bridging with the Repeat node, see Use the Repeat node.
See Nodes for a full reference on ports, properties, and node anatomy.
Ports are the connection points on a node where wires attach. Input ports appear on the left side of a node; output ports appear on the right side. Ports are typed: a wire can only connect an output to an input of a matching type. Input ports can be required or optional. See Nodes for the full port reference including an annotated diagram.
A wire is a directed connection from an output port on one node to an input port on another. System Modeler has two kinds:
The editor enforces three wiring rules: data wires and flow wires can't be mixed, a node can't connect to itself, and cycles aren't allowed.
To draw a wire, place the pointer over an output port until the pointer changes, then drag to a compatible input port on another node. The wire snaps into place when you release over a valid target.
To delete a wire, use any of these methods:
Most input ports accept one wire, but some nodes are written to handle multiple wires on a single input port. Whether multiple wires are supported depends on the node implementation. To send the same output value to multiple nodes, draw separate wires from the same output port to each destination.
Graphs use a data-driven flow model. A node runs when all its required input data is available. Fusion resolves the run sequence based on how nodes are wired. You don't set the order manually.
Key behaviors:
Properties are static values set before the graph runs. Inputs are dynamic values that arrive at runtime through connected wires.