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.
