Create a simple JavaScript app that runs in a browser and allows WfCommons format JSON file to be uploaded
The app should then display some basic information, such as the number of tasks
Step 2:
Compute all task top-levels (using a simple recursive algorithm), and make it so that we can easily determine the set of tasks that have the same top-level
The app should display the number of levels as part of the basic information
Step 3:
The app should display the workflow visually using cytoscape. The approach is "top-level" by "top-level", and within a level tasks are placed arbitrarily ordered by evenly spaced on the display from left to right
Compute and display the number of edge crossings (or an approximation thereof)
Step 4:
Implement a heuristic to re-order tasks within a level so as to reduce the number of edge crossings. Simple first idea: sort tasks by the average horizontal positions of their parents.
Maybe come up with better heuristics
Experiment with randomized searches; for instance try out random swaps of vertices in a level and keeping each swap whenever it reduces the number of edge crossings. Do that 1000 times and then give up.