Class OpenWFE::ErrorJournal
In: lib/openwfe/expool/errorjournal.rb
Parent: Service

This is a base class for all error journal, don‘t instantiate, work rather with InMemoryErrorJournal (only for testing envs though), or YamlErrorJournal.

Methods

Included Modules

OwfeServiceLocator FeiMixin

Public Class methods

[Source]

     # File lib/openwfe/expool/errorjournal.rb, line 151
151:         def initialize (service_name, application_context)
152: 
153:             super
154: 
155:             get_expression_pool.add_observer :error do |event, *args|
156:                 #
157:                 # logs each error occurring in the expression pool
158:                 
159:                 begin
160: 
161:                     record_error(ProcessError.new(*args))
162: 
163:                 rescue Exception => e
164:                     lwarn { "*** process error : \n" + args.join("\n") }
165:                 end
166:             end
167: 
168:             get_expression_pool.add_observer :terminate do |event, *args|
169:                 #
170:                 # removes error log when a process terminates
171: 
172:                 fei = args[0].fei
173: 
174:                 remove_error_log fei.wfid \
175:                     if fei.is_in_parent_process?
176:             end
177:         end

A utility method : given a list of errors, will make sure that for each flow expression only one expression (the most recent) will get listed. Returns a list of errors, from the oldest to the most recent.

Could be useful when considering a process where multiple replay attempts failed.

[Source]

     # File lib/openwfe/expool/errorjournal.rb, line 236
236:         def ErrorJournal.reduce_error_list (errors)
237: 
238:             h = {}
239: 
240:             errors.each do |e|
241:                 h[e.fei] = e
242:                     #
243:                     # last errors do override previous errors for the
244:                     # same fei
245:             end
246: 
247:             h.values.sort do |error_a, error_b|
248:                 error_a.date <=> error_b.date
249:             end
250:         end

Public Instance methods

Returns true if the given wfid (or fei) (process instance id) has had errors.

[Source]

     # File lib/openwfe/expool/errorjournal.rb, line 183
183:         def has_errors? (wfid)
184: 
185:             get_error_log(wfid).size > 0
186:         end

[Validate]