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