DatabasePatches
Версионность внутренней БД сервиса
Версия 4.6.0
© 2015-2023, ООО "Процессные технологии"
# Описание системы патчей
Патчи применяются только при обновлении системы с более ранней версии, при начальной установке DDL формируется на основании аннотаций механизмом Hibernate.
При внесении изменений в систему и её развитии иногда приходится менять схему базы данных. Для таких случаев предусмотрена функциональность по применению патчей над базой данных. Патчи применяются при старте системы и в общем случае могут не только менять структуру базы данных, но и делать какие-либо другие действия. Для добавления патча необходимо:
- Написать класс-патч, расширяющий ru.runa.wfe.commons.dbmigration.DbMigration. В методе executeDML патч должен проделать всю работу по изменению данных (DML инструкции) в транзакции, и в методах executeDDLBefore, executeDDLAfter (опционально) вернуть DDL SQL.
- В классе ru.runa.wfe.commons.dbmigration.DbMigrationsConfig добавить написанный патч в конец списка.
# История изменений
Текущую версию можно посмотреть в БД с помощью запроса SELECT VALUE FROM WFE_CONSTANTS WHERE NAME='ru.runa.database_version' 4.4.2-.
№ | описание | дополнительная информация |
Версия 4.0.0 | ||
21 | AddHierarchyProcess
Добавление информации об иерархии подпроцессов для группировки экземпляров процессов по подпроцессам |
Добавлен столбец BPM_PROCESS.TREE_PATH |
22 | JbpmRefactoringPatch
Преобразование структуры БД JBPM_* в текущую BPM_* |
Патч выполнялся только на MSSQL, можно задать дополнительные настройки. См. Файл:JbpmRefactoringPatch.properties |
23 | TransitionLogPatch
Создание записей в таблице логов о прошедших переходах на процессах 3-й версии |
|
Версия 4.0.1 | ||
24 | PerformancePatch401
Реорганизованы индексы в таблицах PERMISSION_MAPPING и BPM_VARIABLE |
Для MSSQL создан индекс с включением столбцов
CREATE NONCLUSTERED INDEX IX_VARIABLE_NAME ON BPM_VARIABLE (NAME) INCLUDE (PROCESS_ID, STRINGVALUE) |
25 | TaskEndDateRemovalPatch
Ранее выполненные задания оставались храниться в таблице BPM_TASK, теперь удаляются после выполнения. Информация о выполнении хранится в логах BPM_LOG. |
Удалён столбец BPM_TASK.END_DATE |
Версия 4.0.3 | ||
26 | PermissionMappingPatch403
Реорганизованы индексы в таблицах PERMISSION_MAPPING |
DROP INDEX IX_PERMISSION_BY_IDENTIFIABLE ON PERMISSION_MAPPING ALTER TABLE PERMISSION_MAPPING ADD CONSTRAINT UQ_MAPPINGS UNIQUE (IDENTIFIABLE_ID, TYPE_ID, MASK, EXECUTOR_ID) |
Версия 4.0.4 | ||
27 | NodeTypeChangePatch
В связи с изменением значений перечисления NodeType к верхнему регистру |
Изменены данные в столбцах BPM_TOKEN.NODE_TYPE, BPM_LOG.CONTENT |
Версия 4.0.5 | ||
28 | ExpandDescriptionsPatch
Максимальное количество символов для описаний увеличено до 1024 |
ALTER TABLE BPM_TASK ALTER COLUMN DESCRIPTION varchar(1024) ALTER TABLE BPM_PROCESS_DEFINITION ALTER COLUMN DESCRIPTION varchar(1024) ALTER TABLE EXECUTOR_RELATION ALTER COLUMN DESCRIPTION varchar(1024) ALTER TABLE EXECUTOR ALTER COLUMN DESCRIPTION varchar(1024) |
Версия 4.0.6 | ||
29 | TaskOpenedByExecutorsPatch
Вместо признака прочтённого задания позволяет формировать список пользователей, просмотревших задание |
CREATE TABLE BPM_TASK_OPENED (TASK_ID numeric(19,0) NOT NULL, EXECUTOR_ID numeric(19,0) NOT NULL) ALTER TABLE BPM_TASK_OPENED ADD CONSTRAINT FK_TASK_OPENED_TASK FOREIGN KEY (TASK_ID) REFERENCES BPM_TASK (ID) ALTER TABLE BPM_TASK DROP COLUMN FIRST_OPEN |
Версия 4.1.0 | ||
30 | AddNodeIdToProcessLogPatch
Обеспечивает хранение привязки записи истории выполнения к узлу |
ALTER TABLE BPM_LOG ADD NODE_ID varchar(255) |
31 | AddSubProcessIndexColumn
Обеспечивает возможность запускать (мульти)подпроцессы в цикле |
ALTER TABLE BPM_SUBPROCESS ADD SUBPROCESS_INDEX int |
Версия 4.1.1 | ||
32 | AddCreateDateColumns
Добавляет столбец CREATE_DATE почти во все таблицы для целей аудита После обновления БД нужно перезапустить систему. |
Операции для MSSQL:
sp_rename 'BPM_LOG.LOG_DATE', 'CREATE_DATE', 'COLUMN' sp_rename 'BPM_PROCESS_DEFINITION.DEPLOYED', 'CREATE_DATE', 'COLUMN' sp_rename 'SYSTEM_LOG.TIME', 'CREATE_DATE', 'COLUMN' ALTER TABLE BATCH_PRESENTATION ADD CREATE_DATE datetime ALTER TABLE BOT ADD CREATE_DATE datetime ALTER TABLE BOT_STATION ADD CREATE_DATE datetime ALTER TABLE BOT_TASK ADD CREATE_DATE datetime ALTER TABLE BPM_JOB ADD CREATE_DATE datetime ALTER TABLE BPM_SUBPROCESS ADD CREATE_DATE datetime ALTER TABLE BPM_SWIMLANE ADD CREATE_DATE datetime ALTER TABLE BPM_VARIABLE ADD CREATE_DATE datetime ALTER TABLE EXECUTOR ADD CREATE_DATE datetime ALTER TABLE EXECUTOR_GROUP_MEMBER ADD CREATE_DATE datetime ALTER TABLE EXECUTOR_RELATION ADD CREATE_DATE datetime ALTER TABLE EXECUTOR_RELATION_PAIR ADD CREATE_DATE datetime ALTER TABLE LOCALIZATION ADD CREATE_DATE datetime ALTER TABLE PROFILE ADD CREATE_DATE datetime ALTER TABLE SUBSTITUTION ADD CREATE_DATE datetime ALTER TABLE SUBSTITUTION_CRITERIA ADD CREATE_DATE datetime Для каждой таблицы: UPDATE ${TABLE_NAME} SET CREATE_DATE=:createDate WHERE CREATE_DATE IS NULL |
Версия 4.2.0 | ||
33 | AddEmbeddedFileForBotTask
Добавляет столбец для хранения файла в задании бота |
Операции для MSSQL:
ALTER TABLE BOT_TASK ADD EMBEDDED_FILE image |
34 | AddColumnForEmbeddedBotTaskFileName
Добавляет столбец для хранения названия файла в задании бота |
ALTER TABLE BOT_TASK ADD EMBEDDED_FILE_NAME varchar(1024) |
35 | AddSettingsTable
Добавляет таблицу для хранения настроек в БД |
CREATE TABLE BPM_SETTING (ID NUMBER NOT NULL, FILE_NAME VARCHAR(1024) NOT NULL, NAME VARCHAR(1024) NOT NULL, VALUE VARCHAR(1024)); CREATE SEQUENCE SEQ_BPM_SETTING; |
36 | AddSequentialFlagToBot
Добавляет столбец для последовательного режима выполнения задания бота |
ALTER TABLE BOT ADD IS_SEQUENTIAL NUMBER; ALTER TABLE BOT_TASK ADD IS_SEQUENTIAL NUMBER; UPDATE BOT SET IS_SEQUENTIAL=0 WHERE IS_SEQUENTIAL IS NULL; UPDATE BOT_TASK SET IS_SEQUENTIAL=0 WHERE IS_SEQUENTIAL IS NULL; COMMIT; |
37 | CreateAggregatedLogsTables
Добавляет таблицы для расширенного аудита выполнения БП |
Операции для Oracle:
CREATE SEQUENCE SEQ_BPM_AGGLOG_ASSIGNMENTS; CREATE SEQUENCE SEQ_BPM_AGGLOG_PROCESS; CREATE SEQUENCE SEQ_BPM_AGGLOG_TASKS; CREATE TABLE BPM_AGGLOG_ASSIGNMENTS (ID NUMBER(19, 0) NOT NULL, DISCRIMINATOR CHAR(1 BYTE) NOT NULL, ASSIGNMENT_OBJECT_ID NUMBER(19, 0) NOT NULL, IDX NUMBER(10, 0) NOT NULL, ASSIGNMENT_DATE DATE NOT NULL, OLD_EXECUTOR_NAME VARCHAR2(1024 BYTE), NEW_EXECUTOR_NAME VARCHAR2(1024 BYTE), CONSTRAINT SYS_C0012885 PRIMARY KEY (ID) USING INDEX (CREATE UNIQUE INDEX SYS_C0012885 ON BPM_AGGLOG_ASSIGNMENTS (ID ASC)) ENABLE); CREATE INDEX IX_AGGLOG_ASSIGN_DATE ON BPM_AGGLOG_ASSIGNMENTS (ASSIGNMENT_DATE ASC); CREATE INDEX IX_AGGLOG_ASSIGN_EXECUTOR ON BPM_AGGLOG_ASSIGNMENTS (NEW_EXECUTOR_NAME ASC); CREATE INDEX IX_AGGLOG_ASSIGN_OBJECT ON BPM_AGGLOG_ASSIGNMENTS (ASSIGNMENT_OBJECT_ID ASC, IDX ASC); CREATE TABLE BPM_AGGLOG_PROCESS (ID NUMBER(19, 0) NOT NULL, PROCESS_ID NUMBER(19, 0) NOT NULL, PARENT_PROCESS_ID NUMBER(19, 0), START_ACTOR_NAME VARCHAR2(1024 BYTE), CANCEL_ACTOR_NAME VARCHAR2(1024 BYTE), CREATE_DATE DATE NOT NULL, END_DATE DATE, END_REASON NUMBER(10, 0) NOT NULL, CONSTRAINT SYS_C0012897 PRIMARY KEY (ID) USING INDEX (CREATE UNIQUE INDEX SYS_C0012897 ON BPM_AGGLOG_PROCESS (ID ASC)) ENABLE); CREATE INDEX IX_AGGLOG_PROCESS_CREATE_DATE ON BPM_AGGLOG_PROCESS (CREATE_DATE ASC); CREATE INDEX IX_AGGLOG_PROCESS_END_DATE ON BPM_AGGLOG_PROCESS (END_DATE ASC); CREATE INDEX IX_AGGLOG_PROCESS_INSTANCE ON BPM_AGGLOG_PROCESS (PROCESS_ID ASC); CREATE TABLE BPM_AGGLOG_TASKS (ID NUMBER(19, 0) NOT NULL, TASK_ID NUMBER(19, 0) NOT NULL, PROCESS_ID NUMBER(19, 0) NOT NULL, INITIAL_ACTOR_NAME VARCHAR2(1024 BYTE), COMPLETE_ACTOR_NAME VARCHAR2(1024 BYTE), CREATE_DATE DATE NOT NULL, DEADLINE_DATE DATE, END_DATE DATE, END_REASON NUMBER(10, 0) NOT NULL, TOKEN_ID NUMBER(19, 0) NOT NULL, NODE_ID VARCHAR2(1024 BYTE), TASK_NAME VARCHAR2(1024 BYTE), SWIMLANE_NAME VARCHAR2(1024 BYTE), CONSTRAINT SYS_C0012892 PRIMARY KEY (ID) USING INDEX (CREATE UNIQUE INDEX SYS_C0012892 ON BPM_AGGLOG_TASKS (ID ASC)) ENABLE); CREATE INDEX IX_AGGLOG_TASKS_CREATE_DATE ON BPM_AGGLOG_TASKS (CREATE_DATE ASC); CREATE INDEX IX_AGGLOG_TASKS_END_DATE ON BPM_AGGLOG_TASKS (END_DATE ASC); CREATE INDEX IX_AGGLOG_TASKS_PROCESS ON BPM_AGGLOG_TASKS (PROCESS_ID ASC); |
38 | TaskCreateLogSeverityChangedPatch
Изменяет приоритет операции Создание задания в аудите выполнения БП с DEBUG на INFO |
UPDATE BPM_LOG SET SEVERITY='INFO' WHERE DISCRIMINATOR='1'; COMMIT; |
39 |
AddColumnsToSubstituteEscalatedTasksPatch Добавляет столбцы в EXECUTOR для использования при просмотре истории эскалаций. Замечание. Для корректного срабатывания патча необходимо, чтобы в wfe.custom.botstation.properties было botstations.autostart.enable=false, перед запуском сервера нужно удалить директорию standalone/data/timer-service-data, и сделать так, чтобы во время работы патча на сервер не пытались залогиниться пользователи. Иначе возможна блокировка потоков на обращении к кешу исполнителей. После того, как патч сработал botstations.autostart.enable=false можно удалить из файла настройки. |
ALTER TABLE EXECUTOR ADD PROCESS_ID NUMBER; ALTER TABLE EXECUTOR ADD NODE_ID VARCHAR(255); COMMIT; |
Версия 4.2.1 | ||
40 |
AddMultiTaskIndexToTaskPatch Добавляет столбец в BPM_TASK для использования в качестве индекса задания в мультизадании, используется для отображения форм элемента мультизадания. |
ALTER TABLE BPM_TASK ADD TASK_INDEX NUMBER; |
Версия 4.2.2 | ||
41 |
AddDeploymentAuditPatch Добавляет столбцы в BPM_PROCESS_DEFINITION для аудита обновления определений БП. |
ALTER TABLE BPM_PROCESS_DEFINITION ADD CREATE_USER_ID NUMBER; ALTER TABLE BPM_PROCESS_DEFINITION ADD UPDATE_DATE DATE; ALTER TABLE BPM_PROCESS_DEFINITION ADD UPDATE_USER_ID NUMBER; |
Версия 4.3.0 | ||
42 |
AddAggregatedTaskIndexPatch Добавляет столбец в BPM_AGGLOG_TASKS, который заполняется только для мультизадания. |
ALTER TABLE BPM_AGGLOG_TASKS ADD TASK_INDEX NUMBER; |
43 |
AddParentProcessIdPatch Добавляет столбец-ссылку на родительский процесс в BPM_PROCESS и заполняет его данными из TREE_PATH. |
ALTER TABLE BPM_PROCESS ADD PARENT_ID NUMBER; |
44 |
CreateReportsTables Создаёт структуры для хранения определений отчётов. |
Создание таблиц REPORT, REPORT_PARAMETER |
45 |
AddDueDateExpressionToJobAndTask Добавляет исходные выражения времени выполнения задания и таймера. |
ALTER TABLE BPM_JOB ADD DUE_DATE_EXPRESSION VARCHAR(1024); ALTER TABLE BPM_TASK ADD DEADLINE_DATE_EXPRESSION VARCHAR(1024); |
46 |
AddBatchPresentationIsSharedPatch Добавляет признак общего фильтра в профилях. После обновления БД нужно перезапустить систему. |
ALTER TABLE BATCH_PRESENTATION ADD SHARED NUMBER; UPDATE BATCH_PRESENTATION SET SHARED = 0; ALTER TABLE BATCH_PRESENTATION MODIFY(SHARED NOT NULL) |
47 |
ExpandVarcharPatch Увеличивает вместимость всех строковых колонок до 1024 символов. |
По каждому строкому столбцу, например: ALTER TABLE BATCH_PRESENTATION MODIFY(CATEGORY VARCHAR(1024)) |
48 |
AddProcessAndTokenExecutionStatusPatch Определяет новые колонки для статуса выполнения точки управления и процесса и заполняет их. |
По каждому строкому столбцу, например: ALTER TABLE BPM_PROCESS ADD EXECUTION_STATUS VARCHAR(1024); ALTER TABLE BPM_TOKEN ADD EXECUTION_STATUS VARCHAR(1024); |
49 |
CreateAdminScriptTables Хранение административных скриптов в БД. |
CREATE TABLE ADMIN_SCRIPT (ID number(19,0) NOT NULL PRIMARY KEY, NAME varchar2(1024) NOT NULL, CONTENT blob NOT NULL); CREATE SEQUENCE SEQ_ADMIN_SCRIPT; ALTER TABLE ADMIN_SCRIPT ADD CONSTRAINT IX_ADMIN_SCRIPT_NAME UNIQUE (NAME); |
50 |
AddVariableUniqueKeyPatch Добавляет уникальный ключ на название переменной в контексте БП (в связи с использованием режима ID базового БП в мульти-подпроцессах). |
ALTER TABLE BPM_VARIABLE ADD CONSTRAINT UK_VARIABLE_PROCESS UNIQUE (PROCESS_ID, NAME) |
51 |
AddTokenErrorDataPatch Добавляет информацию об ошибке в точку управления. |
ALTER TABLE BPM_TOKEN ADD ERROR_DATE DATE; ALTER TABLE BPM_TOKEN ADD ERROR_MESSAGE VARCHAR(1024); |
52 |
AddTitleAndDepartmentColumnsToActorPatch Добавляет атрибуты Должность и Подразделение к пользователю. После обновления БД нужно перезапустить систему. |
ALTER TABLE EXECUTOR ADD TITLE VARCHAR(1024); ALTER TABLE EXECUTOR ADD DEPARTMENT VARCHAR(1024); |
53 |
AddAssignDateColumnPatch Добавляет колонку даты назвачения задания и заполняет её для существующих заданий. |
ALTER TABLE BPM_TASK ADD ASSIGN_DATE DATE; |
54 |
- |
- |
55 |
AddTokenMessageSelectorPatch Добавляет колонку с селектором данных маршрутизации для улучшения работы сигналов. |
ALTER TABLE BPM_TOKEN ADD MESSAGE_SELECTOR VARCHAR(1024); |
56 |
AddSubprocessBindingDatePatch Добавляет колонку для привязки раннего связывания иерархии подпроцессов. |
ALTER TABLE BPM_PROCESS_DEFINITION ADD SUBPROCESS_BINDING_DATE DATE; |
57 |
AddTransactionalBotSupport Добавляет колонки для работы бота в транзакционном режиме с композицией. |
ALTER TABLE BOT ADD IS_TRANSACTIONAL BOOLEAN; ALTER TABLE BOT ADD TRANSACTIONAL_TIMEOUT BIGINT; ALTER TABLE BOT ADD BOUND_DUE_DATE TIMESTAMP; ALTER TABLE BOT ADD BOUND_PROCESS_ID BIGINT; ALTER TABLE BOT ADD BOUND_SUBPROCESS_ID VARCHAR(1024); |
Версия 4.4.0 | ||
58 |
RefactorPermissionsStep1 Изменение структуры PERMISSION_MAPPING, конвертация данных. |
|
59 |
RefactorPermissionsStep3 Переименование полномочий в PERMISSION_MAPPING. |
|
60 |
AddProcessExternalData Добавлено bpm_process.external_data для внешнего идентификатора. |
|
61 |
RefactorPermissionsStep4 Продолжение с полномочиями. |
|
62 |
EmptyPatch Появился в связи с патчем по сигналам в тестовых ветках и ограничением единого счётчика. |
|
Версия 4.4.1 | ||
63 |
CreateChatDbPatch Чат в БП. |
|
64 |
RefactorPermissionsBack Продолжение с полномочиями. |
|
Версия 4.4.2 | ||
65 |
RemoveWfeConstants Поддержка патчей по названию, счётчик далее не используется. |
|
- |
CreateStatisticReportTable Данные для статистики. |