On Thu, Mar 24, 2011 at 11:22:23PM -0700, simcha wrote:
>
> With process versioning the problem is that new process versions tend
> to need new task forms and new participants while the old process
> versions are still running and need the old ones. So using :revision
> as you say is only a beginning. The question is how to version tasks
> and participants. From development point of view suffixing classes has
> such an advantage that you just copy your class on the beginning of
> the work leaving old version intact. Adding version as an argument
> would give us nicer code but bring high possibility of braking old
> processes.

Hello,

you're right, but remember that participants (and forms) are sometimes meant to 
be shared among workflows.

Of course, versioning the set { workflow, participants[, forms] } is a valid 
solution, there will probably be some duplicates (things that do not change but 
are still present in the new revision).

Until now, I always worked with processes that changed faster than 
participants. And participants shared among processes.

This is not directly related, but it could provide some inspiration :

  app/forms/{workflow_name}__{workflow_revision}__{task}.haml
  app/forms/{workflow_name}__{task}.haml
  app/forms/{task}.haml
  app/forms/default.haml

It's a scheme for looking up forms in Rails. There is only one human 
participant which loads forms starting with the most detailed path. As soon as 
it finds a form, it uses it. default.haml matches always (catch all).

You could think of such a scheme for automated participants

  app/participants/{workflow_name}__{workflow_revision}__{participant_name}.rb
  app/participants/{workflow_name}__{participant_name}.rb
  app/participants/{participant_name}.rb
  app/participants/default.rb

(I wonder if I shouldn't provide such an automated participants out of the box, 
it's very easy to implement... But it becomes a bit harder to manage for 
multiple workers on multiple hosts, you have to make sure the participants/ 
folder is in sync)

> For rendering "yes" "no", I did not make clear what I mean. I would
> like the task definition in the process to contain sth. like this:
> junior, :task => "fix pipe", :answers => "fixed, not fixed"
> senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
> 
> And render "fixed", "not fixed" buttons in place of "proceed" button.
> I now how to do it technically. But my questions are: Was it done
> before? If yes, are there some custom names and format for that? If
> not do you like the names provided here?
> Hope this time it is clearer.

No, there is no convention for this. Feel free to choose a solution you like.

I always thought that

  sequence do
    junior, :task => "fix pipe", :answers => "fixed, not fixed"
    senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
  end

could be reduced to 

  sequence do
    junior, :task => "fix pipe"
    senior, :task => "fix pipe again", :if => "${f:answer} == fixed"
  end

for greater readability and no loss in understanding.

Of course, if you rely on :answers to build forms, you cannot drop it.


Thanks for the exchange, best regards,

-- 
John Mettraux - http://jmettraux.wordpress.com

-- 
you received this message because you are subscribed to the "ruote users" group.
to post : send email to [email protected]
to unsubscribe : send email to [email protected]
more options : http://groups.google.com/group/openwferu-users?hl=en

Reply via email to