Hi folks! Here goes our 0,02€

In our case, we've got a special "PubSubStorage" that extends 
"StorageParticipant". It serializes workitem to an external XMPP PubSub 
queue and decides wether or not to procced based on a config keyword. The 
user interaction with this participant comes in two flavours:

- - ^fill_form
  - Abstra::RuoteProject::Participants::PubSubStorageParticipant
  - {}
- - ^wait_for_action
  - Abstra::RuoteProject::Participants::PubSubStorageParticipant
  - {proceed_on: pick}

Once the participant sends the payload to the external queue, the user can 
either "pick" the waiting workitem (triggering the next workflow step, ie: 
filling up a forrm) or directly fill the form without the wait. The logic 
resides on StorageParticipant#on_workitem, which already has information on 
the actions that will either keep it holding on or directly proceed (as 
seen above). The PubSub server is configured in a way that automatically 
persists the queues where workitems are sent. All further communication 
inbetween the user and engine can be done either fully async or via HTTP (à 
la RuoteKit). Just implement a Command Pattern in your endpoint and 
retrieve the workitem from the storage. To decide the recipients of the 
workitems (ie. user or groups), an additional AuthorizationService can be 
used outside the engine itself. Just define your payload well.

The main goal is to rely on Ruote just for the essential. Keeping it as 
simple as possible. Let the enclosing application decide on all 
authorization/authentication stuff and the "task assignment logic". 
Moreover, any modern PubSub infrastructure (AMQQ, XMPP, JMS) has already 
automatic persistence in place, which can be used and abused, instead of 
implementing a new queue-specific storage. We've been working like this for 
years without further issue. Again, keep it simple :-)


Kind regards,
//nando


-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"ruote" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to