DatabasePatches

Материал из RunaWFE
Версия от 11:35, 26 декабря 2020; WikiSysop (обсуждение | вклад) (1 версия импортирована)
Перейти к навигации Перейти к поиску

Версионность БД

Версия 4.5.0

© 2015-2023, ООО "Процессные технологии"

# Описание системы патчей

Патчи применяются только при обновлении системы с более ранней версии, при начальной установке DDL формируется на основании аннотаций механизмом Hibernate.

При внесении изменений в систему и её развитии иногда приходится менять схему базы данных. Для таких случаев предусмотрена функциональность по применению патчей над базой данных. Патчи применяются при старте системы и в общем случае могут не только менять структуру базы данных, но и делать какие-либо другие действия. Для добавления патча необходимо:

  1. Написать патч, реализующий интерфейс ru.runa.wfe.commons.dbpatch.DBPatch. В методе applyPatch патч должен проделать всю работу по изменению данных (DML инструкции) в транзакции, и в методах getDDLQueriesBefore, getDDLQueriesAfter (опционально) вернуть DDL SQL.
  2. В классе ru.runa.wfe.commons.logic.InitializerLogic добавить написанный патч в конец массива dbPatches.

# История изменений

Текущую версию можно посмотреть в БД с помощью запроса.

SELECT VALUE FROM WFE_CONSTANTS WHERE NAME='ru.runa.database_version'


описание дополнительная информация
Версия 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.