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