Ooohh! Shiny! Yes, that would be EXTREMELY useful. -Mario.
-- I want to change the world but they won't give me the source code. On Tue, Aug 16, 2011 at 19:25, Nathan Stults <[email protected]>wrote: > This will be a tremendously useful feature. > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of John Mettraux > Sent: Tuesday, August 16, 2011 10:20 AM > To: ruote > Subject: [ruote:3223] tentative feature: timers > > Dear list, > > I had a conversation with Lucas from Howcast the other day: > > http://ruote-irclogs.s3.amazonaws.com/log_2011-08-11.html > > There is always this recurring pattern, I emit a workitem towards a > participant and I want it to be reminded of it, like 1 week before the > timeout and then a final time, 1 day before the task closes. > > Up until now, it involved writing something like: > > ---8<--- > concurrence :count => 1 do > participant 'toto', :task => 'clean the car', :timeout => '4w' > sequence :lose => true do > wait '2w' > participant 'toto', :notification => 'clean the car !' > end > sequence :lose => true do > wait '3w' > participant 'toto', :notification => 'DO CLEAN THE CAR !!' > end > end > --->8--- > > You can wrap that in a subprocess: > > ---8<--- > define 'do_task' do > concurrence :count => 1 do > participant '${v:target}', :task => '${v:task}', :timeout => > '${v:tout}' > sequence :lose => true do > wait '${v:first_reminder}' > participant '${v:target}', :notification => '${v:task} !' > end > sequence :lose => true do > wait '${v:second_reminder}' > participant '${v:target}', :notification => '${v:task} !!' > end > end > end > > do_task :target => 'toto', :first_reminder => '2w', :second_reminder => > '3w', :tout => '4w' > --->8--- > > But it becomes quickly rather ugly. > > With Lucas, we discussed having something shorter. > > ---8<--- > participant 'toto', :task => 'clean the car', :reminders => '2w, 3w', > :timeout => '4w' > --->8--- > > or > > ---8<--- > participant 'toto', :task => 'clean the car', :reminders => '2w: > first_reminder, 3w: second_reminder, 4w: timeout' > > define 'first_reminder' do > participant '${v:text}', :msg => '1st reminder' > end > define 'second_reminder' do > concurrence do > participant '${v:text}', :msg => '2nd reminder' > participant 'supervisor', :msg => '2nd reminder for ${v:text} / > ${v:task}' > end > end > --->8--- > > These are not always reminders, and it could be beneficial to attach > them to other things that only participant expression. Let's try with > "timers": > > ---8<--- > sequence :timers => '2w: notify, 3w: timeout' do > participant 'toto' > participant 'doug' > end > --->8--- > > In this short example, the sequence has a timeout of three weeks, and > after two weeks, the subprocess (or participant) named 'notify' is > triggered. > > I'm working on this feature right now, here is a summary of it: > > - they are 'timers' > - it's a list than can get attached to any expression > - they trigger participants, subprocesses or the 'timeout' special > behaviour > - maybe 'error' is another special behaviour, 'cancel' as well ('redo' > ?) > > It requires a bit of rework of the timeout infra, fortunately it should > be backward compatible. > > > Thoughts, comments ? > > -- > John Mettraux - http://lambda.io/processi > > -- > 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 "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 "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
