Как вы получаете состояние WorkflowExecution, если все, что у вас есть, это workflowId в Amazon SWF
Кажется, что все операции SWF для получения состояния выполнения всегда также нуждаются в runId
(их ссылка на выполнение рабочего процесса), и я не хочу хранить это. Я хочу быть в состоянии сделать поиск на основе workflowId
только (мой идентификатор, а не их). Возможно ли что-нибудь подобное вообще?
Я имею в виду, я думаю, я мог бы добавить некоторые теги, чтобы получить его по тегам, но это немного неловко, если я уже прошел workflowId
также.
1 ответ
Решение
Да, согласно документации API ListOpenWorkflowExecutions, пользователь может фильтровать открытые выполнения по workflowId.
Пример Python, использующий boto.swf
(используйте 1. из этого поста для настройки домена):
$ ipython Python 2.7.3 (по умолчанию, 10 апреля 2013 г., 06:20:15) Введите "авторское право", "кредиты" или "лицензия" для получения дополнительной информации. В [1]: импортировать boto.swf.layer2 как swf В [2]: domain = swf.Domain(name='stackru') В [3]: domain.workflows() Out[3]: [ WorkflowType 'MyWorkflow-1.0' в 0x32a44d0 ] В [4]: myworkflow = domain.workflows()[0] В [5]: execute = myworkflow.start(workflow_id='my_wf_id', task_list='default') В [6]: other_execution = myworkflow.start(workflow_id='some_other_wf_id', task_list='default') В [7]: domain.executions() Из [7]: [ WorkflowExecution 'MyWorkflow-1.0' в 0x32a4910, WorkflowExecution 'MyWorkflow-1.0' в 0x32ac090, WorkflowExecution 'MyWorkflow-1.0' в 0x32ac210 ] В [8]: execute.describe() Из [8]: {'executeConfiguration': {'childPolicy': 'TERMINATE', 'executeStartToCloseTimeout': '3600', 'taskList': {'name': 'default'}, 'taskStartToCloseTimeout': '300'}, 'executeInfo': {'cancelRequested': False, 'выполнение': {'runId': '...', 'workflowId': 'my_wf_id'}, 'executeStatus': 'OPEN', 'startTimestamp': 1374482188.063, 'workflowType': {'name': 'MyWorkflow', 'version': '1.0'}}, 'openCounts': {'openActivityTasks': 0, 'openChildWorkflowExecutions': 0, 'openDecisionTasks': 1, 'openTimers': 0}} В [9]: domain.executions(workflow_id='my_wf_id') Выход [9]: [ WorkflowExecution 'MyWorkflow-1.0' в 0x344fad0 ] В [10]: domain.executions(workflow_id='my_wf_id')[0].describe() Из [10]: {'executeConfiguration': {'childPolicy': 'TERMINATE', 'executeStartToCloseTimeout': '3600', 'taskList': {'name': 'default'}, 'taskStartToCloseTimeout': '300'}, 'executeInfo': {'cancelRequested': False, 'выполнение': {'runId': '...', 'workflowId': 'my_wf_id'}, 'executeStatus': 'OPEN', 'startTimestamp': 1374482188.063, 'workflowType': {'name': 'MyWorkflow', 'version': '1.0'}}, 'openCounts': {'openActivityTasks': 0, 'openChildWorkflowExecutions': 0, 'openDecisionTasks': 1, 'openTimers': 0}}