This paper introduces the concept of taskflow-oriented programming by way of a
universal, configurable client that (1) reads user-programmed
interconnections of distributed component programs as task instances, (2)
dynamically renders an interactive GUI of all interconnected components as
a hierarchical taskflow, and (3) dynamically creates a schedule to execute
component programs concurrently, serially, or not at all, depending on the
user-defined runtime configuration of the taskflow topology. The implementation
of the client, including the transparent access to components via a TCP
protocol using telnet-, ssh-, http-, or socket-based clients, is presented in
the companion paper.
Conceptually, taskflow-oriented programming relies on a recursive schema of
encapsulated blackbox (whitebox) component instances.
Each encapsulated component instance contains five primitive tasks: a blackbox
(whitebox) component, an eight-state finite-state-machine with a
datapath (FSMD), a ControlJoin, a ControlFork, and a DataMux. User-programmed
interconnections of distributed component programs are captured in the
ControlJoin and ControlFork of each component instance. The taskflow
schedule is derived from the underlying TaskGraph of
asynchronously interacting FSMDs, each supporting a simple hand-shaking
protocol with the attached blackbox (whitebox) component.