On Sun, May 4, 2008 at 10:47 PM, Arjan van Bentem
<[EMAIL PROTECTED]> wrote:
>
> In my workflow application, based on ruote-web, I not only need to
> update workflow fields, but also some external data (which outlives
> the process when it is completed or canceled).
Hello Arjan,
I've tried to make it shorter :
---8<---
module OpenWFE::Extras
#
# reopening Workitem to add the ar_lookup method
#
class Workitem
#
# ar_lookup('customer')
#
# will expect the field (attribute) 'customer' to hold an array (or a comma
# separated list) like [ 'Customer', 'find_by_hair_color', 'blue' ] or
# "Customer, find_by_petname_and_city, Chester, Kualalumpur".
#
# Will return the corresponding active record[s].
#
# field_name is supposed to hold the name of a field in this workitem.
#
def ar_lookup (field_name)
# TODO : add caching
fvalue = self.field field_name
fvalue = if fvalue.is_a?(Array)
fvalue
elsif fvalue.is_a?(String)
fvalue.split(",").collect { |e| e.strip }
else
nil
end
return nil unless fvalue
class_name, method_name, *args = fvalue
# args is an array
clazz = class_name.constantize
clazz.send method_name, args
end
end
end
--->8---
This version expects things like :
set :field => "customer", :val => [ "Customer",
"find_by_name_and_city", "Chester", "NY" ]
or
set :field => "pet", :value => "Pet, find_by_id, avb35"
It's a bit lighter than your version.
You should then be able to do :
---8<---
<% form_tag "/workitem/update/[EMAIL PROTECTED]" %>
<% fields_for :external_data, @workitem.ar_lookup('customer') do |f| %>
a: <%= f.text_field :my_field_a %>
b: <%= f.text_field :my_field_b %>
c: <%= f.text_field :my_field_c %>
<% end %>
:
:
<% end %>
--->8---
In a fully RESTful world, we would do :
set :field => "external_stuff", :value => "http://dataserver/customer/xyz"
and PUT/GET/DELETE it. I'm thinking about it.
Hope this helps, cheers,
--
John Mettraux - http://jmettraux.wordpress.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"OpenWFEru users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/openwferu-users?hl=en
-~----------~----~----~----~------~----~------~--~---