2010-10-24 01:50:03 utc |
hassox |
jmettraux: actually thsi would be better in here |
2010-10-24 01:50:35 utc |
hassox |
12:46 hassox: these things are all long running user tasks |
2010-10-24 01:50:36 utc |
hassox |
12:46 hassox: I would save the wfid in the model yeah so I can go look up the workflow item? |
2010-10-24 01:50:36 utc |
hassox |
12:47 jmettraux: it's a possibility |
2010-10-24 01:50:37 utc |
hassox |
12:47 hassox: well for example... the witnesses |
2010-10-24 01:50:39 utc |
hassox |
12:48 hassox: it could be found after the initial report that there were actually witnesses |
2010-10-24 01:50:41 utc |
hassox |
12:49 jmettraux: maybe the model could hold the wfids in an array, a model may be involved in multiple processes |
2010-10-24 01:50:43 utc |
hassox |
12:50 jmettraux: (don't know for your domain though) |
2010-10-24 01:50:45 utc |
hassox |
12:51 hassox: yeah not for this one |
2010-10-24 01:50:47 utc |
hassox |
12:51 hassox: it only has one flow |
2010-10-24 01:50:49 utc |
hassox |
12:51 hassox: when an incident occurs there's a flow to do, and then the incident is closed |
2010-10-24 01:50:51 utc |
hassox |
12:52 hassox: so, I guess the thing I'm really not sure about |
2010-10-24 01:50:53 utc |
hassox |
12:52 hassox: is, given the wfid, if an event occurs, can I lookup the workflow, and then respond to the engine? |
2010-10-24 01:50:55 utc |
hassox |
12:52 hassox: without a worker |
2010-10-24 01:50:57 utc |
hassox |
12:52 hassox: so for example |
2010-10-24 01:50:59 utc |
hassox |
12:53 hassox: the witness enters their report, and all reports are in: respond to the participant (how do I do that) |
2010-10-24 01:51:01 utc |
hassox |
is that the normal way to do it? |
2010-10-24 01:51:18 utc |
jmettraux |
hassox: ok |
2010-10-24 01:51:28 utc |
hassox |
so |
2010-10-24 01:51:31 utc |
hassox |
say the flow goes |
2010-10-24 01:51:44 utc |
hassox |
worker sends "gather witness reports" to the participant |
2010-10-24 01:51:55 utc |
hassox |
the participant sends an email to the user to enter their report |
2010-10-24 01:52:18 utc |
hassox |
the user jumps on the site, enters their report (via a form ) and hits save |
2010-10-24 01:52:29 utc |
hassox |
how does the participant now find out that the task has been done? |
2010-10-24 01:52:45 utc |
jmettraux |
http://github.com/tosch/ruote-on-rails/blob/rails3/app/controllers/workitems_controller.rb |
2010-10-24 01:52:59 utc |
jmettraux |
taken from ruote-on-rails |
2010-10-24 01:53:20 utc |
hassox |
:) |
2010-10-24 01:53:20 utc |
jmettraux |
the user's browser does a PUT on the workitem resource |
2010-10-24 01:53:33 utc |
jmettraux |
usually 2 actions : save or proceed |
2010-10-24 01:53:57 utc |
jmettraux |
in both cases the controller grabs the workitem (given the fei) from the storage participant |
2010-10-24 01:53:57 utc |
hassox |
hrm |
2010-10-24 01:54:01 utc |
jmettraux |
fills in the new fields |
2010-10-24 01:54:12 utc |
jmettraux |
and update or reply |
2010-10-24 01:54:14 utc |
hassox |
so, how does it know what participant it's coming from? |
2010-10-24 01:54:15 utc |
hassox |
ahh |
2010-10-24 01:54:23 utc |
jmettraux |
update simply saves back |
2010-10-24 01:54:25 utc |
hassox |
I think I undersand |
2010-10-24 01:54:33 utc |
hassox |
for each workflow, there are many fei? |
2010-10-24 01:54:37 utc |
hassox |
one for each participant? |
2010-10-24 01:54:44 utc |
jmettraux |
reply hands back the workitem to the engine "dear engine, let that resume in its flow" |
2010-10-24 01:54:51 utc |
jmettraux |
yes |
2010-10-24 01:54:58 utc |
jmettraux |
as many feis as required |
2010-10-24 01:55:01 utc |
hassox |
ah there's the missing piece |
2010-10-24 01:55:13 utc |
hassox |
/penny drops |
2010-10-24 01:55:15 utc |
jmettraux |
of course the fei includes the wfid |
2010-10-24 01:56:07 utc |
jmettraux |
the storage_participant is just a pile of work |
2010-10-24 01:56:18 utc |
hassox |
yeah |
2010-10-24 01:56:21 utc |
hassox |
that makes sense now |
2010-10-24 01:57:07 utc |
jmettraux |
you can say things like RuoteKit.engine.storage_participant.by_participant('witness') |
2010-10-24 01:58:05 utc |
hassox |
oh right |
2010-10-24 01:58:07 utc |
hassox |
nice :D |
2010-10-24 01:58:14 utc |
jmettraux |
or RuoteKit.storage_participant.by_field('user', 'hassox') |
2010-10-24 01:58:21 utc |
hassox |
:O |
2010-10-24 01:58:44 utc |
hassox |
that's awesome |
2010-10-24 01:59:00 utc |
hassox |
the penny has just dropped for me on how to actually use these things in a non-automatic flow :D |
2010-10-24 01:59:07 utc |
jmettraux |
cool |
2010-10-24 01:59:35 utc |
jmettraux |
pushing tasks to participiants |
2010-10-24 01:59:38 utc |
jmettraux |
pants |
2010-10-24 01:59:41 utc |
jmettraux |
lol |
2010-10-24 01:59:43 utc |
hassox |
hehe |
2010-10-24 02:06:36 utc |
jmettraux |
ActiveRecordParticipant would be cool, for people storing and fetching workitems via ActiveRecord |
2010-10-24 02:07:19 utc |
hassox |
how do you mean? |
2010-10-24 02:07:26 utc |
hassox |
do you mean a storage backend? |
2010-10-24 02:07:34 utc |
jmettraux |
not entirely |
2010-10-24 02:07:45 utc |
jmettraux |
yes, you could use ruote-dm to store into the db |
2010-10-24 02:07:59 utc |
jmettraux |
and then simply grab the workitem via a activerecord model |
2010-10-24 02:08:02 utc |
hassox |
what's would an active record participant do? |
2010-10-24 02:08:32 utc |
jmettraux |
it would receive workitems from the engine and store them in the db (activerecord) |
2010-10-24 02:08:46 utc |
jmettraux |
then you'd do Workitem.find... |
2010-10-24 02:09:04 utc |
jmettraux |
and leverage all the activerecord query machinery |
2010-10-24 02:09:37 utc |
jmettraux |
workitems for the witnesses of that region, workitems for the user Alfred, workitems that have been untouched for more than 2 weeks, ... |
2010-10-24 02:09:43 utc |
jmettraux |
(just an idea) |
2010-10-24 02:10:06 utc |
hassox |
ah nice |
2010-10-24 02:10:13 utc |
hassox |
that would be kinda cool |
2010-10-24 02:10:37 utc |
hassox |
I could spend hours just exploring this stuf |