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

Reply via email to