A system and method for implementing a data-flow based system includes
three basic components: a data-flow based scheduling environment that
balances the needs of data initiated program execution as a result of
flows with other practical considerations such as user responsiveness,
event driven invocation, user interface considerations, and the need to
also support control-flow based paradigms where required; a visual
programming language, based on the flow of strongly-typed run-time
accessible data and data collections between small control-flow based
locally and network distributed functional building-blocks, known as
widgets; and a formalized pin-based interface to allow access to
data-flow contents from the executing code within the widgets. The pins
on the widgets include both pins used to control execution of a widget as
well as pins used to receive data input from a data flow. The system and
method further include a debugging environment that enables visual
debugging of one or more widgets (or collections of widgets). Data
control techniques include the concepts of "OR" and "AND" consumption
thereby permitting either consumption immediately or only after all
widget inputs have received the token. Additional extensions to this
framework will also be described that relate to the environment, the
programming language and the interface.