Starting a new thread to reflect the current topic... So for part of our evaluation of Ruote, we wanted to be able to look at the history. The below solution was provided and works great for tests, but *sometimes* errors out when asking outside the context of a test.
I added this code to the Ruote::StorageHistory in our app - it just adds a method to StorageHistory which filters on dispatched and returns the participant_name sorted by original_put_at. https://gist.github.com/2207156 So when we run this as part of tests, it works exactly like we expect it to - it returns an array of executed steps. However, when we put it behind a url to ask what the steps for a given process are, I inconsistently get the following error - sometimes it works and sometimes it doesn't. Rufus::Json::ParserError - lexical error: invalid char in json text. > > ce'])\\n workitem.fields[\\"case_result\\"] = \\"Completed > > (right here) ------^ > > : > > > The process definition looks like this: > STAGES_PDEF = Ruote.define do > sequence do > stage1 > stage2 > stage3 > end > end And the participant looks like this: RuoteKit.engine.register_participant :stage1 do |workitem| > Case.run_stage1(workitem.fields['reference']) > workitem.fields["case_result"] = "Completed Stage 1" > end The process definition works fine and completes. It's only when asking about the history that it fails with this error. It fails on line 6 of the above pasted code: all_expressions = self.by_process(wfid) Any ideas as to why this might occur? Is it breaking because the process has already completed by the time the history is requested? Thanks, Doug On Friday, March 23, 2012 3:46:44 PM UTC-5, John Mettraux wrote: > > > On Fri, Mar 23, 2012 at 09:38:11AM -0500, Doug Bryant wrote: > > > > One other question. Is there a way to access the history of a workflow > > process. I saw Ruote::StorageHistory but not quite sure if that will > work. > > If on the previous example I append the two lines > > > > history = dashboard.context.history.by_process(wfid) > > > history.each{|h| puts h["participant_name"]} > > > > (...) > > > > It looks like the execution path through ruote, but includes lines such > as > > concurrence (blank line - no participant name). Looking more for a > result > > like %w{con1 con2 print_messages} > > Hello Doug, > > yes, this history implementation records every event in the engine. > > You could write: > > ---8<--- > history = dashboard.history.by_process(wfid) > p history.select { |h| > h['action'] == 'dispatched' > }.collect { |h| > h['participant_name'] > } > --->8--- > > That'll only display the participant for 'dispatched' messages (emitted by > the engine we it has successfully handed a workitem to a participant). > > You could also replace the history by your own implementation only keeping > track of the events you care for. > > > > Thanks for your work on Ruote. > > You're welcome. Best regards, > > -- > 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
