The components are designed to react to incoming packets, or messages that come in a various number of ways. When a package is received, the component will perform an operation that has been defined previously. The results are returned as a packet to its output ports. Components and objects are not shared, so the only way for communication is by sending packets.
NoFlo is designed in such a way that it can handle many different types of input paradigms. The same NoFlo that reacts to HTTP requests, changes in the file system, and text messages, can also output to a target such as a relational database. It may also update a dashboard, or respond to an HTTP request. It is up to the developer to choose the components that are to be used.
The Basics of Using NoFlo
A developer has a choice of two ways of running NoFlo. If the whole application is based on flows alone, you may have NoFlo execute it. This type of NoFlo application is called an independent graph.
When a NoFlo network is cranked up, it won't do anything. The components are loaded and the connections between them are established, but that is it. Most components require input before they do anything. The most common way to test or start a NoFlo graph is to send it an initial information packet (IPP). Sending a file name to a file reader is a good example of this.
In general, a NoFlo graph can be activated by a shell command, or the click of a button. A flow can also be initiated at a specific time, or time interval, or it can be started based on context such as when a user visits a given web site.