class WorkflowRb::MemoryPersistenceProvider

Public Class Methods

new() click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 8
def initialize
  @instances = []
  @subscriptions = []
  @unpublished_events = []
  @semaphore = Mutex.new
end

Public Instance Methods

create_new_workflow(workflow) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 15
def create_new_workflow(workflow)
  workflow.id = SecureRandom.uuid
  @instances << workflow
  workflow.id
end
create_subscription(subscription) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 37
def create_subscription(subscription)
  subscription.id = SecureRandom.uuid
  @subscriptions << subscription
  subscription.id
end
create_unpublished_event(pub) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 53
def create_unpublished_event(pub)
  @unpublished_events << pub
end
get_runnable_instances() click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 32
def get_runnable_instances
  @instances.select {|item| item.next_execution and (item.next_execution <= Time.new) and (item.status == WorkflowStatus::RUNNABLE)}
      .map {|item| item.id}
end
get_subscriptions(event_name, event_key) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 43
def get_subscriptions(event_name, event_key)
  @subscriptions.select { |sub| sub.event_name == event_name and sub.event_key == event_key }
end
get_unpublished_events() click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 61
def get_unpublished_events
  @unpublished_events
end
get_workflow_instance(id) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 28
def get_workflow_instance(id)
  @instances.select {|item| item.id == id}.first
end
persist_workflow(workflow) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 21
def persist_workflow(workflow)
  @semaphore.synchronize do
    @instances.delete_if {|item| item.id == workflow.id }
    @instances << workflow
  end
end
remove_unpublished_event(id) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 57
def remove_unpublished_event(id)
  @unpublished_events.delete_if { |pub| pub.id == id }
end
terminate_subscription(id) click to toggle source
# File lib/workflow_rb/services/memory_persistence_provider.rb, line 47
def terminate_subscription(id)
  @semaphore.synchronize do
    @subscriptions.delete_if { |sub| sub.id == id }
  end
end