Task8ow-Oriented Programming: A Paradigm for Distributed Collaborative Computing

Taskflow-oriented programming merges concepts from structured programming, hardware description, and mark-up languages. A mark-up language such as XML supports a well-defined schema that can capture the decomposition of a program into a hierarchy of tasks. A hardware description language such as VHDL relies on well-defined and explicit input/output port definitions to create, at any level of hierarchy, explicit data dependencies among tasks. A structured programming language provides control to sequence the execution of all tasks. We apply these concepts to the design of a distributed user-configurable environment that supports project-specific collaborative, networked, and taskfloworiented programming as well as computing. Starting with the topdown decomposition of a computing project into task, we capture not only the hierarchy of tasks but also explicit and user-defined dependencies, i.e. directed task=>task control edges. Data dependencies are created implicitly only during the detailed bottom-up implementation of input/output assignments for each task. Task-flow programming is not about programming the tasks. Rather, it is about programming dependency edges between the tasks, task=>task control edges in particular. An executable program is written simply as a (hierarchical) taskflow in XML, interconnecting tasks and data. Most task=>task edges are in the ’enabled’ state by default and require no programming, while conditions to ‘enable/disable’ the state of task=>task edges are short and simple and are an integral part of the task node encapsulation. Similarly, the data->task and task->data edges are always ‘enabled’.