Add list_closed_workflow_executions and make validation/filtering on list_open_workflow_executions better
This commit is contained in:
parent
93120927f7
commit
d31105889e
4 changed files with 127 additions and 13 deletions
|
|
@ -61,9 +61,8 @@ class SWFBackend(BaseBackend):
|
|||
domains = reversed(domains)
|
||||
return domains
|
||||
|
||||
def list_open_workflow_executions(self, domain_name, start_time_filter,
|
||||
maximum_page_size, reverse_order,
|
||||
**kwargs):
|
||||
def list_open_workflow_executions(self, domain_name, maximum_page_size,
|
||||
tag_filter, reverse_order, **kwargs):
|
||||
self._process_timeouts()
|
||||
domain = self._get_domain(domain_name)
|
||||
if domain.status == "DEPRECATED":
|
||||
|
|
@ -72,10 +71,38 @@ class SWFBackend(BaseBackend):
|
|||
wfe for wfe in domain.workflow_executions
|
||||
if wfe.execution_status == 'OPEN'
|
||||
]
|
||||
|
||||
if tag_filter:
|
||||
for open_wfe in open_wfes:
|
||||
if tag_filter['tag'] not in open_wfe.tag_list:
|
||||
open_wfes.remove(open_wfe)
|
||||
if reverse_order:
|
||||
open_wfes = reversed(open_wfes)
|
||||
return open_wfes[0:maximum_page_size]
|
||||
|
||||
def list_closed_workflow_executions(self, domain_name, close_time_filter,
|
||||
tag_filter, close_status_filter, maximum_page_size, reverse_order,
|
||||
**kwargs):
|
||||
self._process_timeouts()
|
||||
domain = self._get_domain(domain_name)
|
||||
if domain.status == "DEPRECATED":
|
||||
raise SWFDomainDeprecatedFault(domain_name)
|
||||
closed_wfes = [
|
||||
wfe for wfe in domain.workflow_executions
|
||||
if wfe.execution_status == 'CLOSED'
|
||||
]
|
||||
if tag_filter:
|
||||
for closed_wfe in closed_wfes:
|
||||
if tag_filter['tag'] not in closed_wfe.tag_list:
|
||||
closed_wfes.remove(closed_wfe)
|
||||
if close_status_filter:
|
||||
for closed_wfe in closed_wfes:
|
||||
if close_status_filter != closed_wfe.close_status:
|
||||
closed_wfes.remove(closed_wfe)
|
||||
if reverse_order:
|
||||
closed_wfes = reversed(closed_wfes)
|
||||
return closed_wfes[0:maximum_page_size]
|
||||
|
||||
def register_domain(self, name, workflow_execution_retention_period_in_days,
|
||||
description=None):
|
||||
if self._get_domain(name, ignore_empty=True):
|
||||
|
|
@ -123,13 +150,13 @@ class SWFBackend(BaseBackend):
|
|||
|
||||
def start_workflow_execution(self, domain_name, workflow_id,
|
||||
workflow_name, workflow_version,
|
||||
tag_list=None, **kwargs):
|
||||
tag_list=None, input=None, **kwargs):
|
||||
domain = self._get_domain(domain_name)
|
||||
wf_type = domain.get_type("workflow", workflow_name, workflow_version)
|
||||
if wf_type.status == "DEPRECATED":
|
||||
raise SWFTypeDeprecatedFault(wf_type)
|
||||
wfe = WorkflowExecution(domain, wf_type, workflow_id,
|
||||
tag_list=tag_list, **kwargs)
|
||||
tag_list=tag_list, input=input, **kwargs)
|
||||
domain.add_workflow_execution(wfe)
|
||||
wfe.start()
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class WorkflowExecution(object):
|
|||
self.latest_execution_context = None
|
||||
self.parent = None
|
||||
self.start_timestamp = None
|
||||
self.tag_list = [] # TODO
|
||||
self.tag_list = kwargs.get("tag_list", None) or []
|
||||
self.timeout_type = None
|
||||
self.workflow_type = workflow_type
|
||||
# args processing
|
||||
|
|
@ -254,6 +254,7 @@ class WorkflowExecution(object):
|
|||
task_list=self.task_list,
|
||||
task_start_to_close_timeout=self.task_start_to_close_timeout,
|
||||
workflow_type=self.workflow_type,
|
||||
input=self.input
|
||||
)
|
||||
self.schedule_decision_task()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue