Nodes are normally connected by their occurence in the dfs script.

|node1()
|node2()

Node1 is connected to node2.

The above could also be written as:

def n1 = |node1()

n1
|node2()

... which results in the same computing flow.

Here we see that we can actively manipulate the connections in a flow by binding a node to a declaration with the def keyword. Whole chains of nodes ie: sub-graphs can be bound to a variable. This is called a chain-declaration.

def chain1 = 
|node1()
|node1_1()
|node1_2

chain1
|node2()

Now node2 is connected to node1_2

With the above example we can connect another node to chain1:

def chain1 = 
|node1()
|node1_1()
|node1_2

chain1
|node2()

chain1
|node3()

Here both nodes node2 and node3 are connected to node1_2.

Note:

Every use of the def keyword interrupts the auto chaining of nodes, ie:

|node1()
|node2()
def n3 = |node3()
|node4()

In the above example, node3 and node4 are not connected to node2, as a consequence of using the def keyword. Instead we have 2 chains in this flow: 1. Node1 connected to node2 and 2. node3 connected node4.

If we'd like to union these 2 node chains:

def in1 =
|node1()
|node2()

def in2 = 
|node3()
|node4()

in1
|union(in2)

There are several node-types in faxe that deal with more than one input node, for example the combine node. Here the use of chain-declarations is necessary:

def s1 =
|node1()
|node1_1

def s2 =
|node2()
|node2_1()

s1|combine(s2)