The openIMIS Backend tasks_management reference module.
Project description
openIMIS Backend tasks_management reference module
This repository holds the files of the openIMIS Backend Task Managemet reference module. It is dedicated to be deployed as a module of openimis-be_py.
ORM mapping:
- task_management_task, task_management_historicaltask > Task
- task_management_taskgroup, task_management_historicaltaskgroup > TaskGroup
- task_management_taskexecutor, task_management_historicaltaskexecutor > TaskExecutor
GraphQl Queries
- task, taskGroup, taskExecutor
Services
- Task
- create
- update
- delete
- complete_task
- resolve_task
- TaskGroup
- create
- update
- delete
- TaskExecutor
- create
- update
- delete
- CheckerLogicServiceMixin
- create
- update
- delete
- on_task_complete_service_handler
Configuration options (can be changed via core.ModuleConfiguration)
- gql_task_group_search_perms: 190001
- gql_task_group_create_perms: 190002
- gql_task_group_update_perms: 190003
- gql_task_group_delete_perms: 190004
- gql_task_search_perms: 191001
- gql_task_create_perms: 191002
- gql_task_update_perms: 191003
- gql_task_delete_perms: 191004
- default_executor_event: default
openIMIS Modules Dependencies
- core
Creating execution action handlers and business event handlers
When user action specified by the task is being passed to backend, the task service sends task_service.resolve_task
signal. The approach for handler is to bind to after
signal and check the specific executor_action_event
of the
task. The same approach is used for business event handlers, being required to bind on task_service.complete_task
.
# in signals.py in any module
def bind_service_signals():
bind_service_signal(
'task_service.resolve_task',
handler_hook,
bind_type=ServiceSignalBindType.AFTER
)
def handler_hook(**kwargs):
pass
Creating tasks for BaseService implementations
CheckerLogicServiceMixin allows implementations of core.services.BaseService
to generate tasks for create, update
and delete actions. this adds create__task methods to the service, with the same API as the methods.
Additionally the on_task_complete_service_handler
service method allows to generate complete_task
handlers for
core.services.BaseService
implementations.
# In service definition
class ExampleService(BaseService, CheckerLogicServiceMixin):
...
# to create a task instead of performing create operation, instead of:
# ExampleService(user).create(data)
ExampleService(user).create_create_task(data)
`
#in signals.py (any module, but the same module as service preferred)
def bind_service_signals():
bind_service_signal(
'task_service.complete_task',
on_task_complete_service_handler(ExampleService),
bind_type=ServiceSignalBindType.AFTER
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for openimis-be-tasks_management-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65762424e59b7db23374843e5540152332be0706e24c6cbe82f1d08547bcafa3 |
|
MD5 | 9624152fcb856115ac35aa9ac6afa420 |
|
BLAKE2b-256 | 6687d5dd68c7bf2e740988e990bee48e851953c460f26750f88f4df17a424839 |
Hashes for openimis_be_tasks_management-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7023612b057bd89aae71f6099162e1ace950d3384f0e80e20ba043f475410865 |
|
MD5 | fe21ff487d31990bfebbc9832822e6ca |
|
BLAKE2b-256 | c014c04ac10a43dff98ccb8c28f2a11f691438c2489e31925091dba4e629efb8 |