class WEEL
Public Class Methods
Source
# File lib/weel.rb, line 459 def self::connectionwrapper(aClassname, *args)# {{{ define_method :initialize_connectionwrapper do self.connectionwrapper = aClassname self.connectionwrapper_args = args unless args.empty? end end
Source
# File lib/weel.rb, line 465 def self::control(flow, &block)# {{{ define_method :initialize_control do self.description = block end end
Source
# File lib/weel.rb, line 450 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
Source
# File lib/weel.rb, line 440 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
Source
# File lib/weel.rb, line 470 def self::flow(flow_data=nil) # {{{ define_method :initialize_flow_data do self.flow_data = flow_data end if flow_data end
Source
# File lib/weel.rb, line 21 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
Source
# File lib/weel.rb, line 435 def self::search(*weel_search)# {{{ define_method :initialize_search do self.search weel_search end end
Public Instance Methods
Source
# File lib/weel.rb, line 1119 def abandon # {{{ @dslr.__weel_state = :abandoned end
Source
# File lib/weel.rb, line 1087 def connectionwrapper # {{{ @dslr.__weel_connectionwrapper end
set the connectionwrapper
Source
# File lib/weel.rb, line 1090 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
Source
# File lib/weel.rb, line 1101 def connectionwrapper_args # {{{ @dslr.__weel_connectionwrapper_args end
Get/Set the connectionwrapper arguments
Source
# File lib/weel.rb, line 1104 def connectionwrapper_args=(args) # {{{ if args.class == Array @dslr.__weel_connectionwrapper_args = args end nil end
Source
# File lib/weel.rb, line 1183 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
Source
# File lib/weel.rb, line 1124 def description(&blk) self.description=(blk) end
get/set workflow description
Source
# File lib/weel.rb, line 1127 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 end if @dslr.__weel_state == :simulating @dslr.__weel_state = final_state end if @dslr.__weel_state == :stopping @dslr.__weel_finalize end end end end
Source
# File lib/weel.rb, line 1195 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
Source
# File lib/weel.rb, line 1189 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
Source
# File lib/weel.rb, line 1168 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
Set search positions set new_weel_search to a boolean (or anything else) to start the process from beginning (reset serach positions)
Source
# File lib/weel.rb, line 1231 def sim # {{{ stat = @dslr.__weel_state return nil unless stat == :ready || stat == :stopped @dslr.__weel_main = Thread.new do __weel_control_flow :simulating, stat end end
Source
# File lib/weel.rb, line 1217 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.message puts e.backtrace connectionwrapper::inform_connectionwrapper_error connectionwrapper_args, e end end end
Start the workflow execution
Source
# File lib/weel.rb, line 1112 def state # {{{ @dslr.__weel_state end
Get the state of execution (ready|running|stopping|stopped|finished|simulating|abandoned)
Source
# File lib/weel.rb, line 1115 def state_signal # {{{ connectionwrapper::inform_state_change connectionwrapper_args, state state end
Source
# File lib/weel.rb, line 1206 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
Stop the workflow execution