Hello John, Is there a way to combine the advantages of the storage-participant (central storage, show all open workitems, proceeding single steps and so on) with the individual implementation of a participant like “Klaus::SkilledParticipant” e.g. heredity?
Is there a way to choose open workitems or select workitems within my own implementation or a participant? Thank You Klaus On 5 Mai, 00:36, John Mettraux <[email protected]> wrote: > Hello Klaus, > > On Fri, May 04, 2012 at 09:16:16AM -0700, Klaus Schmidtmamn wrote: > > > 1. > > The construct: > > > @dboard.register do > > participant /^skill_/, Klaus::SkilledParticipant > > participant /^user_/, Ruote::StorageParticipant > > end > > > means that all participants, containing a "skill" in her name are > > instantiated as SkillParticipants and "user" as "StorageParticipant". > > Do I need this "participant /^user_/, Ruote::StorageParticipant" if > > there are only "skill-participants"? > > No. > > > E.g. if each Workflow-Action > > depends on the skill-level of the user, I only need "participant / > > ^skill_/, Klaus::SkilledParticipant"? > > Yes. > > > What does "Klaus" mean in "Klaus::SkilledParticipant"? > > For me, it only works without the "Klaus::"- prefix. > > Sorry, it's a namespace: > > ---8<--- > module Klaus > class SkilledParticipant > include Ruote::LocalParticipant > # ... > end > end > --->8--- > > > > > > > > > > > 2. > > What actually confuses me most is the way how to realize individual > > steps within my process-definition for the different users with > > different skill level: > > What I did is the following: After starting the client, the user can > > input his name (not mandatory) and his skill-level (mandatory) like > > this: > > > @dboard.register do > > participant /^skill_/, SkilledParticipant > > #participant /^user_/, Ruote::StorageParticipant > > end > > > print 'username: '; @user = gets.strip > > print 'skill-level: '; @skill = Integer(gets.strip) > > > Does it make sense to launch the process-definition only with the > > required skill-level... like this: > > > puts 'user= '+@user > > puts 'skill= '+String(@skill) > > > wfid = @dboard.launch('./defs/def0.rb', 'skill_level' => @skill) > > Yes, I think so. > > > How to read this 'skill-level' parameter within the Process- > > Definition? > > when you do > > wfid = @dboard.launch('./defs/def0.rb', 'skill_level' => @skill) > > you're starting a workflow instance with a workitem field "skill_level" set > to @skill. > > ---8<--- > $engine.register :klaus, Ruote::StorageParticipant > > pdef = Ruote.define do > klaus, :task => 'go to ${f:city}' > end > > $engine.launch(pdef, 'city' => 'Oslo') > $engine.launch(pdef, 'city' => 'Bratislava') > $engine.launch(pdef, 'city' => 'Vilnius') > --->8--- > > > I think the skill-parameter has no influence over the > > procss-definition if it starts like this: > > > citerator :on => [ 0, 1, 2, 3 ], :to_f => 'level' do > > echo 'level= ${f:level}' > > handle :level => '$f:level' > > end > > ... > > Indeed. > > > To me it seems like no matter what variable is given to the "launch", > > the process-definition is deployed for all participants? I do not > > understand what influence a variable like > > 'skill_level' => @skill has at this position. > > It's not a variable, it's a workitem field. > > Please re-read my previous email carefully, you'll notice that I proposed you > two distinct solutions. If now you mix them, of course it will be confusing. > > > 3. > > On the other hand side, you gave me the example below with the "skill- > > level as variable". But how can I combine the registered participants > > with this variable? > > This confused me... So how would you change this part to make sense: > > > (...) > > > skill_3 :task => 'very hard', :if => '${v:level} == 3' > > You can do: > > participant :ref => 'skill_${f:skill_level}', :task => 'x' > > > 4. > > Concerning to your explanation of task: "skill_0 :task => 'easy'" will > > only say what to do, but in what way I can execute a function or a > > method, if this workflow-position is reached? > > I think on sth. like "skill_1 :task => doSth()' > > Where should this function exist? > > You can't do that. > > You could do: > > ---8<--- > class SkilledParticipant > include Ruote::LocalParticipant > > def on_workitem > task = workitem.params['task'] > case task > when do_this > Something.do_this > when do_that > Something.do_that > else > raise "unknown task: #{task.inspect}" > end > reply > end > end > --->8--- > > So many ways to skin a cat. > > -- > John Mettraux -http://lambda.io/jmettraux -- 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
