In graph theory, the things are called nodes or vertices, and the relations are called edges. In xGraph, the modules and systems are nodes, and the commands get sent along the edges. A module or system that sends a command relates to another module or system that can respond to that command. If you try to send a command to a module or system that does not relate to that command, it will not get completed and an edge does not exist between the two nodes.
If we want to get more precise with our graph, we can identify relations from one node to another in one way only. These relations are known as directed, and the edges on these graphs are directed edges. You will notice that in the directed graph the relation does not go both ways. So if you want to have a relationship that goes both ways, you need to have two edges.
This free-form graph structure is what gives xGraph it’s powerful flexibility. Typical software platforms rely on a rigid control of flow. This often results in complicated architectures that are built to avoid issues with object-oriented design and programming languages. A graph architecture provides the flexibility to model complicated real-world objects and their relations without worrying about the limitations of traditional object-oriented programming.
By harnessing the flexibility of a graph architecture, you can use xGraph to model all sorts of complex real-world problems.