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’.
[1]
Emden R. Gansner,et al.
A Technique for Drawing Directed Graphs
,
1993,
IEEE Trans. Software Eng..
[2]
Krzysztof Kozminski,et al.
Executable Workflows: A Paradigm For Collaborative Design On The Internet
,
1997,
Proceedings of the 34th Design Automation Conference.
[3]
S. Bocionek,et al.
Robot programming by Demonstration (RPD): Supporting the induction by human interaction
,
1996,
Machine Learning.
[4]
Jun Zhou,et al.
Collaborative client-server architectures in Tcl/Tk: a class project experiment and experience
,
2000
.
[5]
Klaus Fischer,et al.
Task-oriented programming with co-operating rule-based modules
,
1989
.
[6]
Franc Brglez,et al.
CollabWiseTk: a toolkit for rendering stand-alone applications collaborative
,
2000
.
[7]
Anantha Chandrakasan,et al.
OpenDesign: an open user-configurable project environment for collaborative design and execution on the Internet
,
2000,
Proceedings 2000 International Conference on Computer Design.
[8]
Tadao Murata,et al.
Petri nets: Properties, analysis and applications
,
1989,
Proc. IEEE.
[9]
Matthias F. Stallmann,et al.
Heuristics and Experimental Design for Bigraph Crossing Number Minimization
,
1999,
ALENEX.
[10]
P. Franzon,et al.
Generation of tightly controlled equivalence classes for experimental design of heuristics for graph-based np-hard problems
,
2000
.