Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'tiny_prolog_ext.rb'
- require File.expand_path(File.dirname(__FILE__) + '/tiny_prolog_ext.rb')
- require 'tiny_prolog.rb'
- class BusinessLogic
- def initialize
- @action = pred 'action'
- @wait_payment = pred 'wait_payment'
- @send_deliver = pred 'send_deliver'
- @send_ack = pred 'send_ack'
- @canceling_order = pred 'canceling_order'
- @cancel = pred 'cancel'
- @complete = pred 'complete'
- @payment_recieved = pred 'payment_recieved'
- @timeout_occur = pred 'timeout_occur'
- @cancel_recieved = pred 'cancel_recieved'
- @cancel_order = pred 'cancel_order'
- @deliver_cancel = pred 'deliver_cancel'
- @deliver_completed = pred 'deliver_completed'
- @ack_sended = pred 'ack_sended'
- ['action', 'wait_payment', 'send_deliver', 'send_ack', 'canceling_order', 'cancel', 'complete'].each { |meth| self.send(meth)}
- ['payment_recieved', 'timeout_occur', 'cancel_recieved', 'cancel_order', 'deliver_cancel', 'deliver_completed', 'ack_sended'].each { |meth| self.send(meth)}
- action['wait_payment'] <<= [n0t(payment_recieved[]), n0t(cancel_recieved[]), n0t(timeout_occur[])]
- action['send_deliver'] <<= [payment_recieved[], action['wait_payment'], n0t(cancel_recieved[]), n0t(timeout_occur[])]
- action['complete'] <<= [deliver_completed[], action['send_deliver']]
- action['cancel'] <<= [timeout_occur[]]
- action['cancel'] <<= [cancel_recieved[]]
- action['cancel'] <<= [action['send_deliver'], deliver_cancel[]]
- @action['send_ack'] <<= [payment_recieved[], cancel_order[]]
- @action['cancel'] <<= [action['send_ack'], ack_sended[]]
- end
- def tell(fact)
- eval("#{fact.to_s}[].fact") if !ask(fact)
- end
- def current_action
- arr =[]
- resolve action[:X] do |env|
- arr << env[:X]
- end
- return arr[-1].to_sym
- end
- private
- def method_missing(mesh, *args)
- self.class.class_eval { define_method(mesh){ eval("@#{mesh.to_s}")} }
- eval("@#{mesh.to_s}")
- end
- end
Add Comment
Please, Sign In to add comment