This repository holds the files of the openIMIS Backend Workflow reference module. It is dedicated to be deployed as a module of openimis-be_py.
- Workflow service
- register
- get systems/groups/workflows
Workflow service can be extended with custom adaptors to integrate with new workflow systems. Any adaptor have to
extend workflow.systems.base.WorkflowAdaptor
and return triggers as implementations of
workflow.systems.base.WorkflowHandler
.
WorkflowService.register_system_adaptor(CustomWorkflowAdaptor)
Querying available workflows can be done using WorkflowService.get_workflows
service. All registered workflow systems
have to implement filtering workflows by group and name.
workflows_result = WorkflowService.get_workflows(group='default', name='example')
if workflows_result['success']:
workflow_handlers = workflows_result['data']['workflows']
Workflow handlers are self contained triggers for a specific workflow in a given system. the WorkflowHandler.run
method allows perform a workflow run with a given payload.
payload = { ... }
result = handler.run(payload)
Depending on the system, workflow runs can be synchronous and will return result of the workflow, or asynchronous and will return necessary info to check workflow status in a given workflow system.