ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0] vía RVM on 
Lion.

For json, we are using YAJL;  Rufus::Json.backend = :yajl

Will update our code from the gist to reflect message rather than expression 
(thanks for that feedback).  

Since you indicated looking at the json parser, I tried the json one also.  
Here are the results from each

YAJL:

> 2012-03-26 14:58:58] INFO  WEBrick 1.3.1
> [2012-03-26 14:58:58] INFO  ruby 1.9.2 (2011-07-09) [x86_64-darwin11.3.0]
> [2012-03-26 14:58:58] INFO  WEBrick::HTTPServer#start: pid=46914 port=9292
> Rufus::Json::ParserError - lexical error: invalid char in json text.
>           ce'])\\n  workitem.fields[\\"case_result\\"] = \\"Completed 
>                      (right here) ------^
> :
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/rufus-json-1.0.1/lib/rufus/json.rb:185:in
>  `rescue in decode'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/rufus-json-1.0.1/lib/rufus/json.rb:182:in
>  `decode'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `block in get_many'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `collect'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `get_many'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-2.3.0/lib/ruote/log/storage_history.rb:79:in
>  `by_process'
>       /Users/doug/devroot/apps/bpm_reference/lib/ruote_history_ext.rb:6:in 
> `steps_by_process'



JSON

> Rufus::Json::ParserError - 399: unexpected token at '{"on_workitem":"proc do 
> |workitem|\\n  Case.run_stage3(workitem.fields['reference'])\\n  
> workitem.fields[\\"case_result\\"] = \\"Completed Stage 
> 3\\"\\nend"}],"workitem":{"fields":{"reference":"81","case_result":"Completed 
> Stage 
> 2","params":{"ref":"stage3"}},"wf_name":null,"wf_revision":null,"fei":{"engine_id":"engine","wfid":"20120326-2003-kabaroma-gijiruno","subid":"2e810d141687fef23c228ea005607b7a","expid":"0_0_2"},"participant_name":"stage3","re_dispatch_count":0},"type":"history","_id":"47068!70119173172880!2012-03-26!1332792219.243796!018!0_0_2!2e810d141687fef23c228ea005607b7a!20120326-2003-kabaroma-gijiruno","action":"dispatch","put_at":"2012-03-26
>  20:03:39.347652 
> UTC","original_id":"47068!70119173172880!2012-03-26!1332792219.243796!018","original_put_at":"2012-03-26
>  20:03:39.244019 UTC","_rev":1}]':
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/rufus-json-1.0.1/lib/rufus/json.rb:185:in
>  `rescue in decode'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/rufus-json-1.0.1/lib/rufus/json.rb:182:in
>  `decode'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `block in get_many'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `collect'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-sequel-2.2.0/lib/ruote/sequel/storage.rb:180:in
>  `get_many'
>       
> /Users/doug/devroot/apps/bpm_reference/vendor/ruby/1.9.1/gems/ruote-2.3.0/lib/ruote/log/storage_history.rb:79:in
>  `by_process'
>       /Users/doug/devroot/apps/bpm_reference/lib/ruote_history_ext.rb:6:in 
> `steps_by_process'


The process completes successfully, it just errors out when accessing the 
history

Doug



On Mar 26, 2012, at 2:36 PM, John Mettraux wrote:

> 
> 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

-- 
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

Reply via email to