FlowControllers

This page documents the underlying motivation, the initial design, and the ongoing implementation work of FlowController components (naming up for discussion!). as an additional, reusable Pipeline Control Elements

Motivation

Parallelizatoin and distribution require the partitioning of data and more generally more control over workflows. E.g.after splitting and distributing data for parallel computation, data will have to be merged again for further processing in a workflow. This is currently not well supported through by the platform, since plug-ins have exactly one previous element in a workflow.

There are several generic ways to split data/a workflow and merge again. The precise way to perform this depends on

Use case scenarios where this functionality is required are

Therefore, it should not be plug-ins (or rather plug-in managers) that perform this operation but rather distinct components that only impact workflow execution and if required perform the splitting of data. This achieves a separation of concerns (aspects): Distribution (remote communication, etc.) is encapsulated within plug-in managers, just as it is now. The only responsibility of a FlowController is workflow manipulation, e.g. splitting of workflows, merging of workflows, conditional execution of a branch, etc.

A multitude of different implementations are possible once appropriate interfaces are in place. Hopefully, this also results in granular components that can be re-used in different workflows, since a basic splitting/merging are fairly generic.

Initial Design

The basic design goals is to introduce a fine-grained components that can be used within workflows. The main functionality of a FlowController is to direct the execution flow between plug-ins in ways that cannot be achieved with the current plug-in design. The reason to isolate this functionality from other aspects, such as processing (handled within a plug-in) and distrubtion/communication (handled by a plug-in manager).

Thus the functionality of a FlowController is:

Design issues:

Implementation

LarkcProject/WP5/FlowController (last edited 2010-02-22 14:00:14 by ?FlorianFischer)