1. Traditional, procedural code is excellent for algorithmic problems, but not so good for business type problems that are more concerned with data input, output and transformation.
2. The basic building blocks of business apps - sort, merge, print, report - typically operate over time across a number of input & output items.
3. Data records are typically pumped thru the functions serially (a data flow).
4. Records are real assets and should be explicitly deleted
5. InformationPackets (IP) can be thought of flowing between functions, but more exactly we want to think of handles to the IP's that are flowing, the IP's remain unchanged "out there"
6. FBP can be thought of as an assembly line - where an app is built up of many little machines all running concurrently with data moving on conveyor belts between machines.
7. In FBP, the machines are called processes.
8. Processes will run until a service routine can't be satisfied and then they are suspended.
9. Processes are connected via any number of FIFO queues can can hold some number of IP's
10. Connections join processes at Ports. A port is a boundary which data flows across.
11. Ports are referred to by name. Eg In and Out
12. All IP's must be accounted for, so each IP has an Owned IP counter that is incremented as IP's flow in, and decremented as IP's flow out. The counter must be 0 before the process can terminate.
13. Ports may be defined as arrays of "port elements" Such as In, In, etc.
14. IP's have 2 constraints. Every IP must arrive at downstream processes After they leave upstream processes(Flow constraint). Any pair of IP's leaving a process must arrive at the next process in the same sequence(Order-Preserving Constraint).
15. Connections may have more than 1 input end, but only 1 output.
16. IP's live between when they are created and destroyed (explicitly).
17. A process is an instance or use of a component.
18. Components may be grouped into Composite components. They are said to be "patterns of processes, not components"
19. Components that can't be broken down into other components are known as 'Elementary' components.
20. Composite components have ports just like all components.
21. Not all internal ports within a composite need to exposed to the outside.
22. Streams are the series of IP's that flow over a connection.
23. Most streams consist of patterns of IP's - often nested
24. Streams may use brackets () to group IP into substreams
25. Often IP's have a data and control aspect - it's useful to use control IP's to describe the Data IP's
Excellent summary, Doug! --PaulMorrison