| |
1 |
1 |
|
| |
2 |
2 |
<property name="context">{/doc/workflow {Workflow}} {Workflow Functional Specification}</property> |
| |
3 |
3 |
<property name="doc(title)">Workflow Functional Specification</property> |
| |
4 |
4 |
<master> |
| |
5 |
5 |
<h1>Workflow Functional Specification</h1> |
| |
6 |
6 |
<a href=".">Workflow Documentation</a> |
| |
7 |
7 |
: Functional Specification |
| |
8 |
8 |
<hr> |
| |
9 |
9 |
<p>By Lars Pind |
| |
10 |
10 |
</p> |
| |
11 |
11 |
<h2>Overview</h2> |
| |
12 |
|
<p>I recently built a typical workflow-based application, <a href="http://clients.museatech.net/bug-tracker/">bug-tracker</a>, and |
| |
|
12 |
<p>I recently built a typical workflow-based bug-tracker, and |
| |
13 |
13 |
decided against using the acs-workflow package that I myself built. |
| |
14 |
14 |
That's not a good recommendation. We need to fix that.</p> |
| |
15 |
15 |
<h2>Goals</h2> |
| |
16 |
16 |
<p>The goal is to implement a workflow package that:</p> |
| |
17 |
17 |
<ul> |
| |
18 |
18 |
<li>Is ideally suited for at least 3 use-cases: Bug-tracker, |
| |
19 |
19 |
CMS-style publication process, and simple approval.</li><li>Gives people a usable UI.</li><li>Can be used entirely through a clean Tcl API</li><li>Doesn't require people to learn Petri Nets</li><li>Is much easier for developers to use in their applications</li> |
| |
20 |
20 |
</ul> |
| |
21 |
21 |
<p>Gripes with the current acs-workflow:</p> |
| |
22 |
22 |
<ul> |
| |
23 |
23 |
<li>Engine is in PL/SQL, not in Tcl, which makes it hard to write |
| |
24 |
24 |
callbacks.</li><li>Petri net is just too complicated for people to learn how to |
| |
25 |
25 |
use, and there are too many ways for them to mess up. The primary |
| |
26 |
26 |
benefit is parallel routing, which I've never actually come |
| |
27 |
27 |
across any applications that seriously needed.</li><li>The UI sucks, and it's really hard to use workflow without |
| |
28 |
28 |
using the interface.</li><li>Graphviz is actually not terribly great at displaying workflow |
| |
29 |
29 |
nets, as it tries to fit everything into a circle, whereas most of |
| |
30 |
30 |
the time with workflow what you really want is to have it appear as |
| |
31 |
31 |
a nice sequence of events with some loops back here and there.</li><li>It's too restrictive and inflexible. It's hard to |
| |
32 |
32 |
change your mind and go back, or to manually bash the case into a |