Class: WEEL
- Inherits:
-
Object
- Object
- WEEL
- Defined in:
- lib/weel.rb
Defined Under Namespace
Modules: HashExt, Signal Classes: ConnectionWrapperBase, Continue, DSLRealization, ManipulateHash, ManipulateStructure, Position, ProcString, ReadHash, ReadOnlyHash, ReadStructure, Status
Class Method Summary collapse
-
.connectionwrapper(aClassname, *args) ⇒ Object
}}}.
-
.control(flow, &block) ⇒ Object
}}}.
-
.data(data_elements) ⇒ Object
}}}.
-
.endpoint(new_endpoints) ⇒ Object
}}}.
-
.flow(flow_data = nil) ⇒ Object
}}}.
-
.search(*weel_search) ⇒ Object
}}}.
Instance Method Summary collapse
-
#abandon ⇒ Object
}}}.
-
#connectionwrapper ⇒ Object
set the connectionwrapper.
-
#connectionwrapper=(new_weel_connectionwrapper) ⇒ Object
}}}.
-
#connectionwrapper_args ⇒ Object
Get/Set the connectionwrapper arguments.
-
#connectionwrapper_args=(args) ⇒ Object
}}}.
-
#data(new_data = nil) ⇒ Object
}}}.
-
#description(&blk) ⇒ Object
get/set workflow description.
-
#description=(code) ⇒ Object
{{{.
-
#endpoint(new_endpoints) ⇒ Object
}}}.
-
#endpoints(new_endpoints = nil) ⇒ Object
}}}.
-
#initialize(*args) ⇒ WEEL
constructor
{{{.
-
#positions ⇒ Object
{{{.
-
#search(new_weel_search = false) ⇒ Object
Set search positions set new_weel_search to a boolean (or anything else) to start the process from beginning (reset serach positions).
-
#start ⇒ Object
Start the workflow execution.
-
#state ⇒ Object
Get the state of execution (ready|running|stopping|stopped|finished|abandoned).
-
#state_signal ⇒ Object
}}}.
-
#status ⇒ Object
}}}.
-
#stop ⇒ Object
Stop the workflow execution.
Constructor Details
#initialize(*args) ⇒ WEEL
{{{
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/weel.rb', line 23 def initialize(*args)# {{{ @dslr = DSLRealization.new @dslr.__weel_connectionwrapper_args = args initialize_search if methods.include?(:initialize_search) initialize_data if methods.include?(:initialize_data) initialize_endpoints if methods.include?(:initialize_endpoints) initialize_connectionwrapper if methods.include?(:initialize_connectionwrapper) initialize_control if methods.include?(:initialize_control) initialize_flow_data if methods.include?(:initialize_flow_data) end |
Class Method Details
.connectionwrapper(aClassname, *args) ⇒ Object
}}}
445 446 447 448 449 450 |
# File 'lib/weel.rb', line 445 def self::connectionwrapper(aClassname, *args)# {{{ define_method :initialize_connectionwrapper do self.connectionwrapper = aClassname self.connectionwrapper_args = args unless args.empty? end end |
.control(flow, &block) ⇒ Object
}}}
451 452 453 454 455 |
# File 'lib/weel.rb', line 451 def self::control(flow, &block)# {{{ define_method :initialize_control do self.description = block end end |
.data(data_elements) ⇒ Object
}}}
436 437 438 439 440 441 442 443 444 |
# File 'lib/weel.rb', line 436 def self::data(data_elements)# {{{ @@__weel_new_data_elements ||= {} @@__weel_new_data_elements.merge! data_elements define_method :initialize_data do @@__weel_new_data_elements.each do |name,value| @dslr.__weel_data[name.to_s.to_sym] = value end end end |
.endpoint(new_endpoints) ⇒ Object
}}}
426 427 428 429 430 431 432 433 434 435 |
# File 'lib/weel.rb', line 426 def self::endpoint(new_endpoints)# {{{ @@__weel_new_endpoints ||= {} @@__weel_new_endpoints.merge! new_endpoints remove_method :initialize_endpoints if method_defined? :initialize_endpoints define_method :initialize_endpoints do @@__weel_new_endpoints.each do |name,value| @dslr.__weel_endpoints[name.to_s.to_sym] = value end end end |
.flow(flow_data = nil) ⇒ Object
}}}
456 457 458 459 460 |
# File 'lib/weel.rb', line 456 def self::flow(flow_data=nil) # {{{ define_method :initialize_flow_data do self.flow_data = flow_data end if flow_data end |
.search(*weel_search) ⇒ Object
}}}
421 422 423 424 425 |
# File 'lib/weel.rb', line 421 def self::search(*weel_search)# {{{ define_method :initialize_search do self.search weel_search end end |
Instance Method Details
#abandon ⇒ Object
}}}
1162 1163 1164 |
# File 'lib/weel.rb', line 1162 def abandon # {{{ @dslr.__weel_state = :abandoned end |
#connectionwrapper ⇒ Object
set the connectionwrapper
1130 1131 1132 |
# File 'lib/weel.rb', line 1130 def connectionwrapper # {{{ @dslr.__weel_connectionwrapper end |
#connectionwrapper=(new_weel_connectionwrapper) ⇒ Object
}}}
1133 1134 1135 1136 1137 1138 1139 1140 1141 |
# File 'lib/weel.rb', line 1133 def connectionwrapper=(new_weel_connectionwrapper) # {{{ superclass = new_weel_connectionwrapper while superclass check_ok = true if superclass == WEEL::ConnectionWrapperBase superclass = superclass.superclass end raise "ConnectionWrapper is not inherited from ConnectionWrapperBase" unless check_ok @dslr.__weel_connectionwrapper = new_weel_connectionwrapper end |
#connectionwrapper_args ⇒ Object
Get/Set the connectionwrapper arguments
1144 1145 1146 |
# File 'lib/weel.rb', line 1144 def connectionwrapper_args # {{{ @dslr.__weel_connectionwrapper_args end |
#connectionwrapper_args=(args) ⇒ Object
}}}
1147 1148 1149 1150 1151 1152 |
# File 'lib/weel.rb', line 1147 def connectionwrapper_args=(args) # {{{ if args.class == Array @dslr.__weel_connectionwrapper_args = args end nil end |
#data(new_data = nil) ⇒ Object
}}}
1224 1225 1226 1227 1228 1229 |
# File 'lib/weel.rb', line 1224 def data(new_data=nil) # {{{ unless new_data.nil? || !new_data.is_a?(Hash) new_data.each{ |k,v| @dslr.__weel_data[k] = v } end @dslr.__weel_data end |
#description(&blk) ⇒ Object
get/set workflow description
1167 1168 1169 |
# File 'lib/weel.rb', line 1167 def description(&blk) self.description=(blk) end |
#description=(code) ⇒ Object
{{{
1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 |
# File 'lib/weel.rb', line 1170 def description=(code) # {{{ (class << self; self; end).class_eval do remove_method :__weel_control_flow if method_defined? :__weel_control_flow define_method :__weel_control_flow do |state,final_state=:finished| @dslr.__weel_positions.clear @dslr.__weel_state = state begin if code.is_a? Proc @dslr.instance_eval(&code) else @dslr.instance_eval(code) end rescue SyntaxError => se @dslr.__weel_state = :stopping @dslr.__weel_connectionwrapper::inform_syntax_error(@dslr.__weel_connectionwrapper_args,se,code) rescue NameError => err # don't look into it, or it will explode @dslr.__weel_state = :stopping @dslr.__weel_connectionwrapper::inform_syntax_error(@dslr.__weel_connectionwrapper_args,Exception.new("main: `#{err.name}` is not a thing that can be used. Maybe it is meant to be a string and you forgot quotes?"),code) rescue => err @dslr.__weel_state = :stopping @dslr.__weel_connectionwrapper::inform_syntax_error(@dslr.__weel_connectionwrapper_args,err,code) end if @dslr.__weel_state == :running || @dslr.__weel_state == :finishing ipc = { :unmark => [] } @dslr.__weel_positions.each{ |wp| ipc[:unmark] << wp } @dslr.__weel_positions.clear @dslr.__weel_connectionwrapper::inform_position_change(@dslr.__weel_connectionwrapper_args,ipc) @dslr.__weel_state = :finished @dslr.__weel_state = :abandoned if @dslr.__weel_abandon? end if @dslr.__weel_state == :stopping @dslr.__weel_finalize end end end end |
#endpoint(new_endpoints) ⇒ Object
}}}
1236 1237 1238 1239 1240 1241 |
# File 'lib/weel.rb', line 1236 def endpoint(new_endpoints) # {{{ unless new_endpoints.nil? || !new_endpoints.is_a?(Hash) || !new_endpoints.length == 1 new_endpoints.each{ |k,v| @dslr.__weel_endpoints[k] = v } end nil end |
#endpoints(new_endpoints = nil) ⇒ Object
}}}
1230 1231 1232 1233 1234 1235 |
# File 'lib/weel.rb', line 1230 def endpoints(new_endpoints=nil) # {{{ unless new_endpoints.nil? || !new_endpoints.is_a?(Hash) new_endpoints.each{ |k,v| @dslr.__weel_endpoints[k] = v } end @dslr.__weel_endpoints end |
#positions ⇒ Object
{{{
1125 1126 1127 |
# File 'lib/weel.rb', line 1125 def positions # {{{ @dslr.__weel_positions end |
#search(new_weel_search = false) ⇒ Object
Set search positions set new_weel_search to a boolean (or anything else) to start the process from beginning (reset serach positions)
1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 |
# File 'lib/weel.rb', line 1209 def search(new_weel_search=false) # {{{ @dslr.__weel_search_positions.clear new_weel_search = [new_weel_search] if new_weel_search.is_a?(Position) if !new_weel_search.is_a?(Array) || new_weel_search.empty? false else new_weel_search.each do |search_position| @dslr.__weel_search_positions[search_position.position] = search_position end true end end |
#start ⇒ Object
Start the workflow execution
1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 |
# File 'lib/weel.rb', line 1258 def start # {{{ return nil if @dslr.__weel_state != :ready && @dslr.__weel_state != :stopped @dslr.__weel_main = Thread.new do Thread.current[:branch_search] = true if @dslr.__weel_search_positions.any? begin __weel_control_flow(:running) rescue => e puts e. puts e.backtrace connectionwrapper::inform_connectionwrapper_error connectionwrapper_args, e end end end |
#state ⇒ Object
Get the state of execution (ready|running|stopping|stopped|finished|abandoned)
1155 1156 1157 |
# File 'lib/weel.rb', line 1155 def state # {{{ @dslr.__weel_state end |
#state_signal ⇒ Object
}}}
1158 1159 1160 1161 |
# File 'lib/weel.rb', line 1158 def state_signal # {{{ connectionwrapper::inform_state_change connectionwrapper_args, state, data state end |
#status ⇒ Object
}}}
1242 1243 1244 |
# File 'lib/weel.rb', line 1242 def status # {{{ @dslr.__weel_status end |
#stop ⇒ Object
Stop the workflow execution
1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 |
# File 'lib/weel.rb', line 1247 def stop # {{{ Thread.new do if @dslr.__weel_state == :running @dslr.__weel_state = :stopping @dslr.__weel_main.join if @dslr.__weel_main elsif @dslr.__weel_state == :ready || @dslr.__weel_state == :stopped @dslr.__weel_state = :stopped end end end |