Сервис управления задачами
Описание
ru.bgcrm.core.task.TaskService управляет определениями обработчиков в
справочнике задач. Конкретные запуски для процессов создаются через
ProcessTaskService.
| Сервис зарегистрирован в глобальном контексте. Соответственно может быть вызван из контекста. |
val taskService = ServerContext.lookup(TaskService::class.java)
Конфигурация
Справочник и сервис доступны независимо от исполнителя. Чтобы созданные задачи процесса
выполнялись автоматически, включите TaskRunner в конфигурации сервера:
task.runner.enabled=true
Дополнительные ключи и устройство исполнения описаны на странице Модуль «Задачи».
Методы
TaskService
fun createTask(task: CreateTaskRequest): Task
fun updateTask(task: UpdateTaskRequest)
fun disableTask(id: Int)
fun enableTask(id: Int)
fun getTaskById(id: Int): Task
fun deleteTask(id: Int)
Отказывает, пока задача используется в правилах автоматизации типов процессов либо у неё остались запуски в статусах "В ожидании", "Выполняется" или "Ошибка" с неисчерпанными попытками.
fun rollbackTask(request: RollbackTaskRequest): Task
Правку откатывает возвратом полей к значениям до неё, удаление — восстановлением задачи под прежним id. Создание и восстановление не откатываются.
fun searchTasks(request: TaskSearchRequest, page: Page?): SearchResult<Task>
fun searchTaskUsage(id: Int, page: Page?): SearchResult<TaskUsage>
fun searchTaskAudit(request: TaskAuditSearchRequest, page: Page?): SearchResult<TaskAuditRecord>
fun searchTaskHandlers(filter: String?): List<TaskHandlerClass>
Отдаёт скомпилированные классы динамического кода, реализующие TaskHandler; классы из сборки
в выборку не попадают.
Модели
Task
| Field | Type | Description |
|---|---|---|
id |
Int |
Id задачи |
title |
String |
Наименование задачи |
clazz |
String? |
Класс обработчик задачи |
script |
String? |
Скрипт |
enabled |
Boolean |
Включена |
Должно быть заполнено хотя бы одно из полей clazz и script. Если заполнены оба,
при выполнении используется класс.
CreateTaskRequest
| Field | Type | Description |
|---|---|---|
title |
String |
Наименование задачи |
clazz |
String? |
Класс обработчик задачи |
script |
String? |
Скрипт |
UpdateTaskRequest
| Field | Type | Description |
|---|---|---|
id |
Int |
Id задачи |
title |
String |
Наименование задачи |
clazz |
String? |
Класс обработчик задачи |
script |
String? |
Скрипт |
TaskSearchRequest
| Field | Type | Description |
|---|---|---|
id |
Int? |
Id задачи |
filter |
String? |
Фильтры по наименованию, классу, скрипту |
enabled |
Boolean? |
Состояние задачи |
RollbackTaskRequest
| Field | Type | Description |
|---|---|---|
taskId |
Int |
Id задачи |
recordId |
Int |
Id последней записи истории по задаче |
TaskAuditSearchRequest
| Field | Type | Description |
|---|---|---|
taskId |
Int? |
Id задачи |
actions |
Set<TaskAuditAction> |
Фильтр по действиям: CREATE, UPDATE, DELETE, RESTORE |
deleted |
Boolean |
Только удалённые задачи: последние записи удаления по задачам, которых нет в справочнике |
TaskAuditRecord
| Field | Type | Description |
|---|---|---|
id |
Int |
Id записи истории |
taskId |
Int |
Id задачи |
action |
String |
Код действия: create, update, delete, restore |
actionTitle |
String |
Действие словами: создана, изменена, удалена, восстановлена |
userId |
Int |
Id пользователя |
userName |
String? |
Имя пользователя из кэша |
time |
Long |
Время записи, миллисекунды |
title |
String |
Наименование задачи на момент записи |
changes |
List<TaskFieldChange> |
Изменения по полям |
У создания, удаления и восстановления в changes лежит полный снимок полей задачи в after.
Состояние хранится словами: включена и выключена.
|
TaskFieldChange
| Field | Type | Description |
|---|---|---|
field |
String |
Поле: title, clazz, script, enabled |
title |
String |
Наименование поля |
before |
String? |
Значение до изменения |
after |
String? |
Значение после изменения |
TaskUsage
| Field | Type | Description |
|---|---|---|
processTypeId |
Int |
Id типа процесса |
processTypeTitle |
String? |
Наименование типа процесса |
rules |
List<TaskUsageRule> |
Правила автоматизации этого типа, где используется задача |