[Zope3-dev] Workflow

Shane Hathaway shane@zope.com
Thu, 07 Nov 2002 09:43:08 -0500


Ulrich Eck wrote:
> Basically I think the concepts of AWF and EWF differ widely and i doubt
> we can unify them without loosing benefits of each.

I don't mean to unify them, since they don't compete, so there is 
nothing to unify. :-)

>> DCWorkflow is object centric and uses state diagrams with no concurrency.
>> OpenFlow is application centric and uses activity diagrams.  If we wanted
>> to, we could upgrade DCWorkflow to use activity diagrams (or state
>> diagrams with concurrency), but remain object centric.  Or we could
>> instead choose to move to an application centric model while retaining
>> state diagrams.  These two choices are really independent.
> 
> 
> That's about visualization not implementation, right ??

No, it's both.

> 
>> Then the difference between object-centric and application-centric
>> workflow is simple: in an object-centric workflow, there is a mapping
>> from object to process instance, while in an application-centric workflow
>> there is a mapping from user (or role) to process instance. Stated
>> differently, in an object-centric workflow you make the user find an
>> object and then invoke some workflow action on it; in an
>> application-centric workflow you present the user with a list of all
>> tasks they are supposed to complete (and the user may never visit
>> "objects").  In reality, you can combine both views into one system,
>> which I expect most people want to do.  DCWorkflow tries to combine the
>> two with "worklists", but is only partly successful.
> 
> 
> in your description you oversimplify AWF (i still prever this one). It's
> not the process that is assigned to the user, it's a WorkItem that one
> user or a role has to do. Parrallel execution of tasks (ActivityInstances
> that map to WorkItems) with different performers are necessary to implement
> AWF properly, as well as different patterns e.g. AND/XOR-Join/Split, Loop.

I believe parallel execution is a detail of the process definition.

>> There is an interface in CMFCore called WorkflowDefinition.  It is
>> similar in spirit to what I am proposing for the interface of process
>> definitions, but the methods are too numerous and have the wrong names.
>> It's still a start.
>>
>> Anyone see it differently?
> 
> 
> well .. yes :)
> 
> I think of an AWF ProcessInstance (PI) in it's own right. After 
> Initialization
> with WorkflowRelevant Data there might WorkItems be created (tasks you 
> call them)
> or not .. depending on the inital data for example. It's not necessary to
> query a PI for actions that need to be done, the workitems are created 
> by the PI.
> 
> In my model, a PI is created from a ProcessDefinition (PD) -> think of a 
> class and
> it's instances. A PD defines Activities (A) and Transitions (T) with 
> conditions,
> as well as their participants and the applications used by it.
> 
> After an PI is instanciated the start-ActivityInstance (AI) is invoked.
> 
> An Activity specifies the Implementation e.g. No (needs to be done 
> without help
> from computer/app), Application (an application is invoked and presented 
> to the
> assigned performer), Subflow (another PI is created with from the 
> specified PD),
> Loop (a certain part of the PD is repeated until a condition evalutes to 
> True
> and the processing goes ahead), Route (a helper to build more advanced 
> Workflows).
> Activities although define how they behave for incoming/outgoing 
> Transitions (e.g.
> XOR/AND-Join and XOR/AND-Split).
> 
> Transitions have conditions, that are evaluated (in context of 
> WorkflowRelevant Data)
> and in combination with the Activities-Join/Split-Mode a number (1..n) 
> Transitions
> are executed that result in new ActivityInstances (AI).
> 
> Every AI has one WorkItem (WI) assigned and here is the point, where 
> performers/actors
> come into the game. They query (or get them pushed) their tasks, fetch 
> and complete them.
> Within the time a workitem is fetched and not completed, the actor can 
> modify
> WorkflowRelevant-Data through a well known interface. After completion 
> the TransitionConditions
> are evaluated and other AI's are instanced or the process is finished.
> 
> All this is heavily influenced by the WfMC model .. but it maps to 
> real-world processes
> best i think.

Yes, for many real-world processes, I agree.  And you have just 
described a process definition.  I see nothing in what you're saying 
that disagrees with my view. :-)

> On the other side it would be an unwanted overhead to assign each 
> contentobject a
> PI like described above .. so i'ld like to see/build a system where both 
> concepts
> can live nearby without trying to cripple both concepts just to unify 
> the access.

I did not say that process instances would be assigned to content 
objects nor the other way around.  I said this last year, but that's not 
what I'm saying anymore.  The workflow engine would make decisions like 
this.

> Try to convince me if i'm wrong .. Detailed information about how you 
> would build
> your diagram object would help understanding your vision better.

I originally came up with "diagram objects" but have since retracted 
that idea.  "Process definition" is the better description.

> p.s. we will meet at #zope3-dev on Friday 14.00h CET for a discussion 
> about workflow
> and how we will go ahead for our work in rotterdam (vds, efge, hazmat, 
> jack-e (me))

I hope I'll have time to spend there.

Shane