On Mon, Mar 26, 2012 at 10:53:27AM -0700, Doug Bryant wrote: > > 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?
Hello Doug, what version of Ruby (and patchlevel) on which platform? What JSON library are you using (YAJL, json or pure-json)? What does the Rufus::Json::ParserError backtrace look like? Your gist looks good, a more economic alternative would be to do the filtering in the StorageParticipant#on_msg so that messages that don't interest you are discarded and don't take up storage space. I need to provide a hook to simplify such an approach... In your gist: those aren't "expressions" but "messages", the history stores messages. Thanks in advance, -- 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
