welcome to ruote's mailing list.
Ruote-swf won't have an "out-of-the-box" way to link a specific participant
to a given activity worker. However it would be easy to specify a task list
in the participant configuration and to modify the ruote-swf storage decision
worker to pass the activity task on a specific task list (polled by a given
activity worker).
I have to say, for better scaling I tend to favour architectures where there
is a single class of workers (in the ruote-swf case, a single class of
decision workers and a single class of activity workers). So that scaling is
easy, you just add a new worker, you don't have to think about what kind of
special worker you want to add. I understand some use cases might require
different architectures...
(as you might have guessed, ruote-swf separates workflow operations from
participant operations (decision workers vs activity workers respectively))
Kind regards,
--
John Mettraux - http://lambda.io/processi
Hello again,
I guess you are referring to "engine participants"
(http://ruote.rubyforge.org/part/engine_participant.html)
You could totally have multiple engines using each a different ruote-swf
storage (differentiated by task list (and it's just a transient name)).
> another use case for this, just for information is the following : for
> the overal workflow we want the workflow state to be persistent. so a
> sql or nosql store makes a lot of sense for those. but for specific
> subparts of the flow the intermedia state is not really that important
> (if it fails, we just do it all over again). a redis store would make
> a lot of sense there for example. as said today we can do it through
> multiple engines with engine participants but for expressiveness also
> here the possibility to link participants to 'stores' and workers to
> 'stores' within one 'engine' seems to make sense. but also here it
> might be that your ruote-swf generalization to ruote might give an
> opening?
I'm not sure the generalization is needed; unless clearly demonstrated as
awkward, the current system (engine participants) may be used to have
workflows with different storage implementations communicating. For example,
the SWF backed engine could launch flows or segment of flows (they're not
that different) on an Redis backed engine and back.
I encourage you to explore what's available. If there really is a missing
concept, we'll have to clearly identify it and we'll then find an elegant
solution.
Best regards,