Стоит следующая задача.
Имеются сервисы, которые используют некий набор общим кастомных
модулей-стартеров.
Этот стартер представляет из себя некий набор библиотечек, одной из которых является
Camunda BPMN. И вот важно понимать что у движка этой Camunda есть своя база, т.е каждый сервис, который использует внутри себя возможности Camunda - должен подтянуть зависимость. И каждый такой сервис имеет свою собственную базу, на которую движок и накатывает служебные таблички и прочие вещи.
Происходит следующая вещь: движок в этом общем стартере обновляется, а значит каждый сервис неявно подвержен к изменениям, так как обновление влечёт за собой какие-то DDL/DML SQL изменения, они даже
публикуются. Так вот, нельзя допустить потерю данных при обновлении движка. По дефолту каждый такой сервисок имеет у себя версионную миграцию через
liquibase.
Моя идея заключается в том, чтобы внутри стартера написать общий функционал, который будет доступен из коробки. И в таком случае нужно провести миграцию, написав скриптик. Каждый сервис, подтягивая этот стартер, так же будет выполнять этот скриптик. И тут важно сказать, что нужно не дать ошибкам выползти, нельзя производить миграцию N-е кол-во раз, поэтому я решил использовать
предусловия и получил что-то такое:
--preconditions onFail:CONTINUE onError:CONTINUE
ALTER TABLE ACT_HI_OP_LOG
ADD CATEGORY_ VARCHAR(64);
--preconditions onFail:CONTINUE onError:CONTINUE
ALTER TABLE ACT_HI_OP_LOG
ADD EXTERNAL_TASK_ID_ VARCHAR(64);
--preconditions onFail:CONTINUE onError:CONTINUE
CREATE TABLE ACT_GE_SCHEMA_LOG
(
ID_ VARCHAR(64),
TIMESTAMP_ timestamp,
VERSION_ VARCHAR(255),
PRIMARY KEY (ID_)
);
--preconditions onFail:CONTINUE onError:CONTINUE
INSERT INTO ACT_GE_SCHEMA_LOG
VALUES ('0', CURRENT_TIMESTAMP, '7.11.0');
--preconditions onFail:CONTINUE onError:CONTINUE
CREATE INDEX ACT_IDX_HI_OP_LOG_USER_ID ON ACT_HI_OP_LOG (USER_ID_);
--preconditions onFail:CONTINUE onError:CONTINUE
CREATE INDEX ACT_IDX_HI_OP_LOG_OP_TYPE ON ACT_HI_OP_LOG (OPERATION_TYPE_);
--preconditions onFail:CONTINUE onError:CONTINUE
CREATE INDEX ACT_IDX_HI_OP_LOG_ENTITY_TYPE ON ACT_HI_OP_LOG (ENTITY_TYPE_);
Эта идея является правильной?