Hello,

On Fri, Apr 9, 2010 at 9:11 AM, Kandada Boggu <[email protected]> wrote:
> I am evaluating Route for my project. In the past, I have used
> enterprise BPM products like Staffware and Inconcert. I was able to
> find most of the standard workflow constructs in Route.

Indeed,

  http://ruote.rubyforge.org/patterns.html

> I need help to
> understand following functionality:

OK. I will try to reply with ruote's vocabulary.

>  1) Resuming jobs during restart
> Lets say a worker gets terminated while processing a participant.
>   Is the job assigned to another worker(if available)

No, if the operation/job/message has been taken/reserved by a worker,
it is considered done (by all the workers).

>   Is the job resumed upon worker restart?

No, for the same reason.

>   Is the participant re-processed?

No, for the same reason.

The solution to this problem (an operation getting stalled), is to
re_apply the stalled operation.

There were discussion for automating re-applies a year ago, but nobody
has been requesting that feature since.

Here is a rough example (test cases) :

  
http://github.com/jmettraux/ruote/blob/ruote2.1/test/functional/ft_14_re_apply.rb

Rdoc :

  http://github.com/jmettraux/ruote/blob/ruote2.1/lib/ruote/engine.rb#L121-141

>  2) Work list management API
> What is the API for getting the list of tasks assigned to a user/role
> across jobs/processes?

Here is an example : http://gist.github.com/360715

---8<---
require 'rubygems'
require 'ruote' # gem install ruote

engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new()))

sp = engine.register_participant '.+', Ruote::StorageParticipant

pdef = Ruote.process_definition do
  concurrence do
    alpha
    bravo
  end
end

wfid0 = engine.launch(pdef)
wfid1 = engine.launch(pdef)

sleep 1

puts "workitems for 'alpha' :"
sp.by_participant('alpha').each do |wi|
  puts " - #{wi.fei.wfid} #{wi.fei.expid} #{wi.participant_name}"
end

puts "workitems for 'bravo' :"
sp.by_participant('bravo').each do |wi|
  puts " - #{wi.fei.wfid} #{wi.fei.expid} #{wi.participant_name}"
end
--->8---

> What is the API to acquire/revert/complete a human task?

There is no "out of the box" 'acquire' implementation. I tend to
implement via a workitem field named 'user', when empty (nil) the
workitem is not acquired. When acquired, it contains the name of the
user.

Many possibilities.

>From the point of view of the human, reverting/completing a task is
the same thing : returning the workitem. When reverting, you'd flag a
workitem field like 'reverted' => true.

When the engine itself reverts a task/workitem, it's called "cancel".

---8<---
wi = sp.by_participant('alfred').first
wi.fields['supervised_by'] = 'alfred'
sp.reply(wi)
--->8---

grabs a workitem, adds a field to it and hands to back to the engine
(via the storage participant).


> Does the worklist API scale to handle millions of tasks?(our workflows
> can run for years together)

It depends on the storage you use. I personally haven't tried that far.

>  3) What are the guidelines for associating human tasks with users/
> roles/groups?

Common sense and experience.

I tend to go for "one catch all participant for human tasks" and
participants with specific names (or regexes) for automated tasks. I
tend to use role names for human participants and action names for
automated participants.

It depends on the field / application scope.

>  4) Can I  add participants dynamically?

Yes.

> Is it possible to add participants to the process definition of the
> current job within a participant.

I don't understand the question.

>  5) Is the ActiveRecord storage participant stable?

No, it is currently not actively maintained.

  http://ruote.rubyforge.org/configuration.html#storage

I'd suggest using ruote-dm which will be very improved for the
upcoming 2.1.10 release.

Other storages are worth a look as well.


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

To unsubscribe, reply using "remove me" as the subject.

Reply via email to