Elminate patterns

Registered by Ivan Melnikov

- provide simple interface to add linear flows to graphs: for example, graph_flow.Flow('name').add_path(task1, task2, task3) would create same flow as linear_flow.Flow('name').add(task1, task2, task3);
- remove all patterns but graph flow
- merge graph flow into taskflow.flow.Flow

Blueprint information

Status:
Complete
Approver:
Joshua Harlow
Priority:
Not
Drafter:
Ivan Melnikov
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Ivan Melnikov

Related branches

Sprints

Whiteboard

Why:
- simplify code
- reduce number of concepts
- ease learning to use taskflow
What we don't touch:
- engine is still a separate concept (also hidden inside taskflow.engines.run());
- nested flows are still needed.

(imelnikov) So why the patterns were here?
- historical reasons: linear flow was here from the start, I could not think about removing it;
- convenience: when the flow was really linear, there must be better way to define it then linking tasks one pair after another;
- internal simplicity: look: http://tinyurl.com/q3sqd8g -- we just took the tasks and run them in for loop.
So what happened?
- internal simplicity gone when we switched do graph flattening;
- for convenience, we can provide add_path and similar APIs;
- and now I *am* thinking about removing linear flow...
What we are going to loose?
- ease of creating new patterns -- you could add any pattern you'd like; but adding methods to Flow is much more coupling;
Is that a problem? No, as you can inherit from flow.Flow and add your own convenience methods there; or you can write separate functions that add patterns the way you want.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.