Class OpenWFE::WorklistClient
In: lib/openwfe/orest/worklistclient.rb
Parent: RestClient

a client to an OpenWFE worklists.

Methods

Public Class methods

[Source]

    # File lib/openwfe/orest/worklistclient.rb, line 62
62:         def initialize (url, username, password)
63:             super
64:         end

Public Instance methods

Delegate the workitem (transfer it to another store).

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 217
217:         def delegate (workitem, targetStoreName)
218: 
219:             ewi = OpenWFE.encode(workitem)
220: 
221:             params = {}
222:             params[TARGETSTORE] = targetStoreName
223: 
224:             decode(post('delegate', workitem.store, params, ewi))
225:         end

Delegate the workitem (ask the worklist to deliver it to another participant).

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 231
231:         def delegate_to_participant (workitem, targetParticipantName)
232: 
233:             ewi = OpenWFE.encode(workitem)
234: 
235:             params = {}
236:             params[TARGETPARTICIPANT] = targetParticipantName
237: 
238:             decode(post('delegate', workitem.store, params, ewi))
239:         end

TODO : rdoc me

[Source]

    # File lib/openwfe/orest/worklistclient.rb, line 93
93:         def find_flow_instance (store_name, workflow_instance_id)
94: 
95:             params = {}
96:             params["id"] = workflow_instance_id
97: 
98:             decode(get('findFlowInstance', store_name, params))
99:         end
forward_workitem(workitem)

Alias for proceed_workitem

Returns a workitem and makes sure it‘s locked in the worklist. Thus, the usage of the methods saveWorkitem() and forwardWorkitem() is possible.

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 131
131:         def get_and_lock_workitem (storeName, flowExpressionId)
132: 
133:             #puts "...getAndLockWorkitem() for #{flowExpressionId}"
134: 
135:             get_item('getAndLockWorkitem', storeName, flowExpressionId)
136:         end

Returns the headers of a given store.

[Source]

    # File lib/openwfe/orest/worklistclient.rb, line 82
82:         def get_headers (storeName, limit=1000)
83: 
84:             params = {}
85:             params["limit"] = limit
86: 
87:             decode(get('getHeaders', storeName, params))
88:         end
get_store_names()

Alias for list_stores

Returns a workitem (but doesn‘t put a lock on it, thus modifications to it cannot be communicated with saveWorkitem() or forwardWorkitem() to the worklist)

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 121
121:         def get_workitem (storeName, flowExpressionId)
122: 
123:             get_item('getWorkitem', storeName, flowExpressionId)
124:         end

Launches a flow (on a given engine and with a given launchitem). The ‘engineId’ corresponds to an engine‘s participant name (see etc/engine/participant-map.xml)

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 106
106:         def launch_flow (engineId, launchitem)
107: 
108:             eli = OpenWFE::XmlCodec::encode(launchitem)
109: 
110:             params = {}
111:             params[ENGINEID] = engineId
112: 
113:             decode(post('launchFlow', nil, params, eli))
114:         end

Returns the list of flow URLs the user owning this session may launch.

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 207
207:         def list_launchables ()
208: 
209:             params = {}
210: 
211:             decode(get('listLaunchables', nil, params))
212:         end

Returns the list of stores the worklist hosts

[Source]

    # File lib/openwfe/orest/worklistclient.rb, line 69
69:         def list_stores
70:             r = get('listStores', nil, nil)
71:             decode(r)
72:         end

Returns the workitem to the worklist so that it can resume its flow (changes to the workitem are saved).

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 196
196:         def proceed_workitem (workitem)
197: 
198:             post_item('forwardWorkitem', workitem)
199:         end

Given a queryMap (a dict of keys and values), locks and returns the first workitem matching.

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 142
142:         def query_and_lock_workitem (storeName, queryMap)
143: 
144:             hs = get_headers(storeName)
145:             hs.each do |h|
146: 
147:                 #puts "...h.id  #{h.flowExpressionId}"
148:                 #h.attributes.each do |k, v|
149:                 #    puts "......h '#{k}' => '#{v}'"
150:                 #end
151: 
152:                 ok = true
153:                 id = nil
154: 
155:                 queryMap.each do |key, value|
156: 
157:                     #puts "...'#{key}' => '#{h.attributes[key]}' ?= '#{value}'"
158:                     ok = (ok and h.attributes[key] == value)
159:                         #
160:                         # the parenthesis are very important
161: 
162:                     #puts "  .ok is #{ok}"
163:                     #puts "  .id is #{h.flowExpressionId}"
164:                     break unless ok
165:                 end
166: 
167:                 #puts "  .id is #{h.flowExpressionId}"
168: 
169:                 get_and_lock_workitem(storeName, h.flow_expression_id) if ok
170:             end
171: 
172:             nil
173:         end

Notifies the worklist that the given workitem has to be unlocked any local (client-side) modification to it are ignored.

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 179
179:         def release_workitem (workitem)
180: 
181:             post_item('releaseWorkitem', workitem)
182:         end

Saves back the workitem in the worklist (and releases it)

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 187
187:         def save_workitem (workitem)
188: 
189:             post_item('saveWorkitem', workitem)
190:         end

Protected Instance methods

def queryStore (storeName, query) end

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 246
246:             def get_item (rest_method_name, store_name, flow_expression_id)
247: 
248:                 fei = OpenWFE::XmlCodec::encode flow_expression_id
249:                 fei = OpenWFE::xmldoc_to_string fei, false
250: 
251:                 params = {}
252: 
253:                 wi = decode(post(rest_method_name, store_name, params, fei))
254: 
255:                 wi.store = store_name if wi
256: 
257:                 wi
258:             end

[Source]

     # File lib/openwfe/orest/worklistclient.rb, line 260
260:             def post_item (rest_method_name, workitem)
261: 
262:                 ewi = OpenWFE::XmlCodec::encode(workitem)
263: 
264:                 params = {}
265: 
266:                 decode(post(rest_method_name, workitem.store, params, ewi))
267:             end

[Validate]