Re: [Zope3-dev] Community opinion about workflow engine

2007-03-14 Thread Philipp von Weitershausen

Stephan Richter wrote:

class Application(Contained, Persistent):
...
@apply
def stati():
See IApplication
def getStati(self):
return self._stati
def setStati(self, value):
removed = set(self._stati) - set(value)
added = set(value) - set(self._stati)
self._stati = tuple(value)
for item in removed:
zope.event.notify(StatusRemovedEvent(self, item))
for item in added:
zope.event.notify(StatusAddedEvent(self, item))
return property(getStati, setStati)


Apart from the quite confusing spelling of this property (I suggest 
something like http://cheeseshop.python.org/pypi/rwproperty for better 
readability), I just wanted to point out that stati is an incorrect 
Latin plural for status. The plural is simply status (the u being 
long in the plural, as opposed to being short in the singular). But as 
far as I know, the only accepted plural form in English is statuses.



--
http://worldcookery.com -- Professional Zope documentation and training

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-13 Thread Jean Jordaan

Hi Godefroid


One of the questions we are exploring is : which workflow engine should
we use/expand on ?


Draw the workflows as UML state diagrams if at all possible. Go with
DCWorkflow as far as it takes you.
Then fix ArchGenXML to generate code or GS XML for the next workflow
engine you'd like to move to from the same UML.

--
jean  . ..  //\\\oo///\\
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-13 Thread Stephan Richter
Hi Godefroid,

CCing zope3-users, where this post belongs to.

On Monday 12 March 2007 11:48, Godefroid Chapelle wrote:
 - about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
 OpenFlow...)

Kit asked the question about workflows on the SchoolTool list as well; I 
assume that you guys are working together.

I have personally found that workflow engines are ususally overkill. In fact, 
I think document/content publishing as it is done in Zope 2 CMSs is one of 
the exceptions.

In SchoolTool we decided early to use a workflow engine to enforce process. We 
have found there that it was overkill. (Everyone else can read Tom's comment 
on the SchoolTool-Dev list.)

That said, here is my experience from another customer. This customer asked us 
to rewrite a job application management software. You can easily see the 
common workflows there. However, her complaint about the old system was that 
the workflow was too stiff and she wanted to change the list of stati of a 
particular application at any time manually, effectively breaking the 
workflow.

With those requirements in mind we looked at our options, and she wanted to 
deliberately break the flow we decided against any workflow engine. Instead, 
we implemented stati as a special property of the application. Whenever the 
stati are changed, we fire events for each added status and another event for 
each removed status. We then created a module called policy that contains a 
multitude of event subscribers listening to the events and doing the work. 
Those tasks include writing logs, sending E-mails, triggering other status 
changes, security changes, and data verification. Here is some of the 
interesting code:

application:

class Application(Contained, Persistent):
...
@apply
def stati():
See IApplication
def getStati(self):
return self._stati
def setStati(self, value):
removed = set(self._stati) - set(value)
added = set(value) - set(self._stati)
self._stati = tuple(value)
for item in removed:
zope.event.notify(StatusRemovedEvent(self, item))
for item in added:
zope.event.notify(StatusAddedEvent(self, item))
return property(getStati, setStati)

policy:

@zope.component.adapter(interfaces.IStatusRemovedEvent)
def historyApplicationStatusRemoved(event):
log(
event.object,
_('Status Removed: $status', mapping={'status': event.status}))

# Not reacting to a status change, but nevertheless interesting to look at.
# Yes Martijn, I love hurry.query!

@zope.component.adapter(interfaces.IApplicationCompletedEvent)
def applicationCheckForDuplicate(event):
# When upon completion of the application, another application with same
# last name, first name and birth date is detected, then this application
# is marked as duplicate
app = event.object
duplicateQuery = query.And(
query.value.Eq(('app-catalog', 'firstName'), app.firstName),
query.value.Eq(('app-catalog', 'lastName'), app.lastName),
query.value.Eq(('app-catalog', 'birthDate'), app.birthDate),
query.query.Not(
query.set.AnyOf(('app-catalog', 'stati'), 
(interfaces.INCOMPLETE,))
),
)

result = tuple(query.query.Query().searchResults(duplicateQuery))
# Only mark applications as duplicates, if the application is not itself
if (len(result) == 1 and app not in result) or len(result)  1:
app.stati += (interfaces.DUPLICATE,)

So in fact, our workflow engine is the Zope 3 event framework. I like it for 
the following:

- There is no new framework overhead; use what you know.

- It is maximally flexible. I have control over the way I implement the 
business logic and the UI. 

- Having all policy in one place (this includes event subscribers to other 
events as well) provided great oversight. Whenever the customer asks 
me: What are the rules for this behavior? (even though she specified it, of 
course), I can just go to this one place and give her an answer within a few 
minutes.

- Easy to test. It is very simple to test each event subscriber in isolation 
and go through all the cases.

I guess I would not have to say it again, but I really like this pattern.

Regards,
Stephan
-- 
Stephan Richter
CBU Physics  Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-13 Thread Adam Groszer
Hello Godefroid,

I'm having a bit biased view, because I know just zope.wfmc and have
the luck developing a pure Z3 application.

I think with zope.wfmc you have
- WFMC/XPDL support, you can shine with standards and big companies
love standards
- because it's XPDL support there's a graphical process editor jpEd
- the core itself is quite sophisticated, but still misses some things
for complete WFMC coverage (the WFMC spec is rather huge)
- you can/should add some layers on top of it:
  - z3c.wfmcpersistent to store the processes in ZODB
  - ecm.workflow to have a higher level of APIs and functions
(That was written by Roger Ineichen, but as nuxeo moved to jboss
it was not maintained by them. Therefore I intend to move that
code to z3c.wfmc, when I have some time to breathe.
I have some improvements to the code. We even have plans to
implement time management or scheduling with the package)

All in all we're quite comfortable with zope.wfmc in our project.
The project is about document management, also a bit of administrative
thing.

Monday, March 12, 2007, 4:48:24 PM, you wrote:

 Hi all,

 We have the opportunity to bid for a project concerning
 the automation of administrative processes.
 The client currently has software in Python and Zope/Plone.

 They are quite explicit that they want their new applications to be
 built as much as possible with a mix of generic shareable modules and of
 custom modules.

 This is a quite big project that, among others, includes the aspects of
 collaboration with / support of the community.

 One of the questions we are exploring is : which workflow engine should
 we use/expand on ?

 In order to help us make a proposal, we would be very interested to hear
 your comments both

 - about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
 OpenFlow...)

 - or about the directions that you would suggest in order to help you
 use a given engine (missing features, simplification,...) and join the
 effort to improve one of the existing engines.

 Thanks



-- 
Best regards,
 Adammailto:[EMAIL PROTECTED]

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Community opinion about workflow engine

2007-03-12 Thread Godefroid Chapelle

Hi all,

We have the opportunity to bid for a project concerning
the automation of administrative processes.
The client currently has software in Python and Zope/Plone.

They are quite explicit that they want their new applications to be
built as much as possible with a mix of generic shareable modules and of
custom modules.

This is a quite big project that, among others, includes the aspects of
collaboration with / support of the community.

One of the questions we are exploring is : which workflow engine should 
we use/expand on ?


In order to help us make a proposal, we would be very interested to hear 
your comments both


- about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
OpenFlow...)

- or about the directions that you would suggest in order to help you
use a given engine (missing features, simplification,...) and join the
effort to improve one of the existing engines.

Thanks
--
Godefroid Chapelle (aka __gotcha)- BubbleNet  http://bubblenet.be

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-12 Thread Kapil Thangavelu
On Mon, 12 Mar 2007 11:48:24 -0400, Godefroid Chapelle  
[EMAIL PROTECTED] wrote:



Hi all,

We have the opportunity to bid for a project concerning
the automation of administrative processes.
The client currently has software in Python and Zope/Plone.

They are quite explicit that they want their new applications to be
built as much as possible with a mix of generic shareable modules and of
custom modules.

This is a quite big project that, among others, includes the aspects of
collaboration with / support of the community.

One of the questions we are exploring is : which workflow engine should  
we use/expand on ?


In order to help us make a proposal, we would be very interested to hear  
your comments both


- about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
OpenFlow...)


dcworkflow simple to use, well known, needs extension via custom guards  
and triggers to accomodate alot of workflow customization (send email,  
route to manager, etc.)


zope3.wfmc.. abstract, potentially powerful, but imo, needs quite a bit of  
code to make anything non trivial functional.


alphaflow.. i like the best as an architecture (ignoring AT  
implementation), i think that investing time rewriting it on z3 concepts  
would be time well spent, it has flexibility, a library for common  
actions, supports organizational workflows much better, and is model  
complete in terms of constructs to model conceptual workflows.


openflow.. nothing to say.

depending on your timeline.. of the two worth investigating, i would  
recommend alphaflow and z3.wfmc


two cents,

-kapil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-12 Thread Christian Theune
Hi,

this definitely invites for some biased commenting. ;)

Am Montag, den 12.03.2007, 16:48 +0100 schrieb Godefroid Chapelle:
 Hi all,
 
 We have the opportunity to bid for a project concerning
 the automation of administrative processes.
 The client currently has software in Python and Zope/Plone.
 
 They are quite explicit that they want their new applications to be
 built as much as possible with a mix of generic shareable modules and of
 custom modules.
 
 This is a quite big project that, among others, includes the aspects of
 collaboration with / support of the community.
 
 One of the questions we are exploring is : which workflow engine should 
 we use/expand on ?
 
 In order to help us make a proposal, we would be very interested to hear 
 your comments both
 
 - about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
 OpenFlow...)

AlphaFlow is currently on the trip to version 2.0. We've been removing
support for older Plones (2.0, 2.1) and are running on Plone 2.5 now.

Additionally, we'll feature an extension of the architecture to fix the
problem that workflows become crowded of technical activities by
introducing aspects. Those will allow the control flow itself to stay
focused on the business aspects of the workflow and annotate the start
and end(s) of an activity with aspects (like changing security etc).

The existing activities will stay or be converted into aspects. Check
the doc/proposals directory in AlphaFlow to find out a little bit more
about this.

Additionally we finally will support editing workflows visuall. We gave
up on the creation of our own visual editor and will support importing
external formats into AlphaFlow. Due to a customer project we start by
providing an import for Microsoft Visio XML.

Unfortunately we can not just rewrite the whole thing for Zope 3 and
then make it work with Plone again at once. When implementing the new
features we are going to use as many Zope 3 technologies as possible,
though. Some things, like AT, are going to stay for a while though. :/

We'd be happy to help you if you have any questions regarding the use of
AlphaFlow of course.

We have an extensive list of issues we had when pondering DCWorkflow and
OpenFlow for a project that reasons why we did not choose them.


Google should have a copy of one of my talks somewhere.

Christian

-- 
gocept gmbh  co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Community opinion about workflow engine

2007-03-12 Thread Christian Theune
Am Montag, den 12.03.2007, 12:16 -0400 schrieb Kapil Thangavelu:
 On Mon, 12 Mar 2007 11:48:24 -0400, Godefroid Chapelle  
 [EMAIL PROTECTED] wrote:
 
  Hi all,
 
  We have the opportunity to bid for a project concerning
  the automation of administrative processes.
  The client currently has software in Python and Zope/Plone.
 
  They are quite explicit that they want their new applications to be
  built as much as possible with a mix of generic shareable modules and of
  custom modules.
 
  This is a quite big project that, among others, includes the aspects of
  collaboration with / support of the community.
 
  One of the questions we are exploring is : which workflow engine should  
  we use/expand on ?
 
  In order to help us make a proposal, we would be very interested to hear  
  your comments both
 
  - about the existing workflows (DCWorkflow, Zope3.wfmc, AlphaFlow,
  OpenFlow...)
 
 dcworkflow simple to use, well known, needs extension via custom guards  
 and triggers to accomodate alot of workflow customization (send email,  
 route to manager, etc.)
 
 zope3.wfmc.. abstract, potentially powerful, but imo, needs quite a bit of  
 code to make anything non trivial functional.
 
 alphaflow.. i like the best as an architecture (ignoring AT  
 implementation),

Thanks! I don't like the AT implementation myself either, although I'm
also kind of happy that I made AT do what I want. ;)

  i think that investing time rewriting it on z3 concepts  
 would be time well spent, it has flexibility, a library for common  
 actions, supports organizational workflows much better, and is model  
 complete in terms of constructs to model conceptual workflows.

Ack. However, some user-friendlyness is still missing. See my other
post. 

 openflow.. nothing to say.

I think it's dead by now. It didn't seem active a few years ago when we
looked at it. Also, the code was kind of scary. It has a very generic
model that allows a lot of things in general but is missing the
specificity of Alphaflow's library.

Christian

-- 
gocept gmbh  co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com