Class OpenWFE::WorkItem
In: lib/openwfe/orest/worklistclient.rb
lib/openwfe/workitem.rb
Parent: Object

The base class for all the workitems.

Methods

External Aliases

attributes -> fields
attributes= -> fields=

Attributes

attributes  [RW] 
last_modified  [RW] 

Public Class methods

[Source]

    # File lib/openwfe/workitem.rb, line 88
88:         def WorkItem.from_h (h)
89: 
90:             #wi = eval("#{h[:type]}.new")
91:             wi = OpenWFE.get_class(h).new
92:             wi.last_modified = h[:last_modified]
93:             wi.attributes = h[:attributes]
94:             wi
95:         end

[Source]

    # File lib/openwfe/orest/worklistclient.rb, line 50
50:         def initialize
51:             @last_modified = nil
52:             @attributes = {}
53:             @attributes[MAP_TYPE] = E_SMAP
54:         end

[Source]

    # File lib/openwfe/workitem.rb, line 63
63:         def initialize
64:             @last_modified = nil
65:             @attributes = {}
66:         end

Public Instance methods

A shortcut for

    workitem.attributes['key']

is

    workitem['key']

(Note that

    workitem.key

will raise an exception if there is no attribute key).

[Source]

     # File lib/openwfe/workitem.rb, line 112
112:         def [] (key)
113: 
114:             @attributes[key]
115:         end

A shortcut for

    workitem.attributes['key'] = value

is

    workitem['key'] = value

[Source]

     # File lib/openwfe/workitem.rb, line 126
126:         def []= (key, value)
127: 
128:             @attributes[key] = value
129:         end

Produces a deep copy of the workitem

[Source]

     # File lib/openwfe/workitem.rb, line 179
179:         def dup
180:             OpenWFE::fulldup(self)
181:         end

The partner to the lookup_attribute() method. Behaves like it.

[Source]

     # File lib/openwfe/workitem.rb, line 217
217:         def has_attribute? (key)
218:             OpenWFE.has_attribute?(@attributes, key)
219:         end
has_field?(key)

Alias for has_attribute?

A smarter alternative to

    value = workitem.attributes[x]

Via this method, nested values can be reached. For example :

    wi = InFlowWorkItem.new()
    wi.attributes = {
        "field0" => "value0",
        "field1" => [ 0, 1, 2, 3, [ "a", "b", "c" ]],
        "field2" => {
            "a" => "AA",
            "b" => "BB",
            "c" => [ "C0", "C1", "C3" ]
        },
        "field3" => 3,
        "field99" => nil
    }

will verify the following assertions :

    assert wi.lookup_attribute("field3") == 3
    assert wi.lookup_attribute("field1.1") == 1
    assert wi.lookup_attribute("field1.4.1") == "b"
    assert wi.lookup_attribute("field2.c.1") == "C1"

[Source]

     # File lib/openwfe/workitem.rb, line 210
210:         def lookup_attribute (key)
211:             OpenWFE.lookup_attribute(@attributes, key)
212:         end
lookup_field(key)

Alias for lookup_attribute

In order to simplify code like :

   value = workitem.attributes['xyz']

to

   value = workitem.xyz

or

   value = workitem['xyz']

we overrode method_missing.

   workitem.xyz = "my new value"

is also possible

[Source]

     # File lib/openwfe/workitem.rb, line 150
150:         def method_missing (m, *args)
151: 
152:             methodname = m.to_s
153: 
154:             if args.length == 0
155:                 value = @attributes[methodname]
156:                 return value if value
157:                 raise "Missing attribute '#{methodname}' in workitem"
158:             end
159: 
160:             #if methodname == "[]" and args.length == 1
161:             #    value = @attributes[args[0]]
162:             #    return value if value
163:             #    raise "Missing attribute '#{methodname}' in workitem"
164:             #end
165:             #if methodname == "[]=" and args.length == 2
166:             #    return @attributes[args[0]] = args[1]
167:             #end
168: 
169:             if args.length == 1 and methodname[-1, 1] == "="
170:                 return @attributes[methodname[0..-2]] = args[0]
171:             end
172: 
173:             super(m, args)
174:         end

set_attribute() accomodates itself with nested key constructs.

[Source]

     # File lib/openwfe/workitem.rb, line 224
224:         def set_attribute (key, value)
225:             OpenWFE.set_attribute(@attributes, key, value)
226:         end
set_field(key, value)

Alias for set_attribute

[Source]

    # File lib/openwfe/workitem.rb, line 79
79:         def to_h
80: 
81:             h = {}
82:             h[:type] = self.class.name
83:             h[:last_modified] = @last_modified
84:             h[:attributes] = @attributes
85:             h
86:         end

Sets the last_modified field to now

[Source]

    # File lib/openwfe/workitem.rb, line 74
74:         def touch
75: 
76:             @last_modified = Time.now
77:         end

unset_attribute() accomodates itself with nested key constructs.

[Source]

     # File lib/openwfe/workitem.rb, line 231
231:         def unset_attribute (key)
232:             OpenWFE.unset_attribute(@attributes, key)
233:         end
unset_field(key)

Alias for unset_attribute

[Validate]