From 78db08d166eae4031756e86e15c8284e56c37c4e Mon Sep 17 00:00:00 2001 From: elgekko Date: Tue, 5 Sep 2023 20:46:55 +0200 Subject: [PATCH] v0.1.4 --- .idea/compiler.xml | 2 + .idea/encodings.xml | 1 + lis-app/pom.xml | 31 +- .../src/main/resources/application-dev.yaml | 26 +- lis-app/src/main/resources/application.yaml | 17 + lis-app/src/main/resources/logback-spring.xml | 47 + .../workflow/ImportIncomingInvoicesIT.java | 45 + lis-db/migrations/README | 2 +- .../migrations/scripts/006_camunda_engine.sql | 1931 +++++++++++++++++ .../scripts/007_camunda_identity.sql | 122 ++ .../src/main/java/hu/user/lis/db/Invoice.java | 9 +- .../src/main/java/hu/user/lis/db/Project.java | 10 +- .../lis/ui/data/IncomeMarginsDataModel.java | 8 +- .../user/lis/ui/data/PartnersDataModel.java | 4 + .../ui/data/ProjectAssociatesDataModel.java | 8 + .../user/lis/ui/data/ProjectsDataModel.java | 4 + .../lis/ui/editor/InvoiceEditorModel.java | 20 +- .../lis/ui/editor/ProjectEditorModel.java | 8 +- .../ui/editor/ServiceRecordEditorModel.java | 69 +- .../ui/editor/common/EntityEditorModel.java | 18 +- .../user/lis/ui/view/PartnersViewModel.java | 13 + .../user/lis/ui/view/ProjectsViewModel.java | 11 + lis-ui/src/main/resources/web/associates.zul | 2 +- lis-ui/src/main/resources/web/partners.zul | 2 +- lis-ui/src/main/resources/web/projects.zul | 2 +- .../main/resources/web/service-records.zul | 2 +- lis-ui/src/main/resources/web/settings.zul | 2 +- lis-workflow/pom.xml | 48 + .../workflow/invoice/DownloadInvoiceData.java | 40 + .../lis/workflow/invoice/ListNewInvoices.java | 20 + .../resources/import-incoming-invoices.bpmn | 53 + pom.xml | 2 + 32 files changed, 2533 insertions(+), 46 deletions(-) create mode 100644 lis-app/src/main/resources/logback-spring.xml create mode 100644 lis-app/src/test/java/hu/user/lis/workflow/ImportIncomingInvoicesIT.java create mode 100644 lis-db/migrations/scripts/006_camunda_engine.sql create mode 100644 lis-db/migrations/scripts/007_camunda_identity.sql create mode 100644 lis-workflow/pom.xml create mode 100644 lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java create mode 100644 lis-workflow/src/main/java/hu/user/lis/workflow/invoice/ListNewInvoices.java create mode 100644 lis-workflow/src/main/resources/import-incoming-invoices.bpmn diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 0feed9e..6773a7a 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -23,6 +23,7 @@ + @@ -32,6 +33,7 @@ + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 4431c81..41e5117 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -8,6 +8,7 @@ + diff --git a/lis-app/pom.xml b/lis-app/pom.xml index 665a754..815ef70 100644 --- a/lis-app/pom.xml +++ b/lis-app/pom.xml @@ -3,7 +3,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 lis-app - 0.1.3-SNAPSHOT + 0.1.4-SNAPSHOT hu.user lis @@ -67,6 +67,20 @@ + + + + + + + + + + + + + + org.springframework.boot spring-boot-starter-web @@ -79,6 +93,10 @@ org.springframework.boot spring-boot-starter-tomcat + + + + @@ -116,6 +134,11 @@ lis-services 0.0.1-SNAPSHOT + + hu.user + lis-workflow + 0.0.1-SNAPSHOT + org.assertj assertj-core @@ -126,5 +149,11 @@ junit test + + org.camunda.bpm + camunda-bpm-assert + ${camunda.spring-boot.version} + test + diff --git a/lis-app/src/main/resources/application-dev.yaml b/lis-app/src/main/resources/application-dev.yaml index bd0d54e..dc31738 100644 --- a/lis-app/src/main/resources/application-dev.yaml +++ b/lis-app/src/main/resources/application-dev.yaml @@ -9,10 +9,12 @@ spring: jpa: # hibernate: # use-new-id-generator-mappings: false - show-sql: false + show-sql: true properties: hibernate: format_sql: true + main: + banner-mode: off output: ansi: enabled: always @@ -21,6 +23,28 @@ spring: url: jdbc:db2://localhost:50000/lis username: db2admin password: password +camunda.bpm: + generic-properties.properties: + telemetry-reporter-activate: false + job-executor-acquire-by-priority: true + job-execution: + core-pool-size: 10 + #lock-time-in-millis: 600000 + database: + type: db2 + schema-update: false + table-prefix: CAMUNDA. + schema-name: CAMUNDA + webapp: + enabled: true + index-redirect-enabled: false + admin-user: + id: kermit + password: password + firstName: Kermit + filter: + create: All tasks + job-execution.enabled: true logging: level: org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ERROR diff --git a/lis-app/src/main/resources/application.yaml b/lis-app/src/main/resources/application.yaml index 663e02b..77ec089 100644 --- a/lis-app/src/main/resources/application.yaml +++ b/lis-app/src/main/resources/application.yaml @@ -21,7 +21,24 @@ spring: url: jdbc:db2://dvdev.in.useribm.hu:50000/lis username: db2admin password: password +camunda.bpm: + database: + type: db2 + schema-update: false + table-prefix: CAMUNDA. + schema-name: CAMUNDA + webapp: + enabled: true + index-redirect-enabled: false + admin-user: + id: kermit + password: password + firstName: Kermit + filter: + create: All tasks + job-execution.enabled: true logging: + # config: classpath:log4j2.xml level: org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ERROR # org.springframework.security: DEBUG diff --git a/lis-app/src/main/resources/logback-spring.xml b/lis-app/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..cf0a9f0 --- /dev/null +++ b/lis-app/src/main/resources/logback-spring.xml @@ -0,0 +1,47 @@ + + + + + + + + + %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable + + + + + + ${LOGS}/spring-boot-logger.log + + %d %p %C{1.} [%t] %m%n + + + + + ${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log + + + 10MB + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lis-app/src/test/java/hu/user/lis/workflow/ImportIncomingInvoicesIT.java b/lis-app/src/test/java/hu/user/lis/workflow/ImportIncomingInvoicesIT.java new file mode 100644 index 0000000..dc440d5 --- /dev/null +++ b/lis-app/src/test/java/hu/user/lis/workflow/ImportIncomingInvoicesIT.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) $today.year-$today.month-24. + * By elGekko + */ + +package hu.user.lis.workflow; + +import lombok.extern.log4j.Log4j2; +import org.camunda.bpm.engine.RuntimeService; +import org.camunda.bpm.engine.runtime.ProcessInstance; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + + +@Log4j2 +@SpringBootTest +@RunWith(SpringRunner.class) +@ActiveProfiles("dev") +@ComponentScan("hu.user.lis") +@TestPropertySource("classpath:application-dev.yaml") +public class ImportIncomingInvoicesIT { + @Autowired + private RuntimeService runtimeService; + + @Test + public void testImportIncomingInvoice() throws InterruptedException { + + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("importIncomingInvoices"); + + //verify(processInstance).hasFinished("WorkFinished"); + while (true) { + ProcessInstance active = runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getProcessInstanceId()).active().singleResult(); + if (active == null) { + break; + } + Thread.sleep(1000); + } + } +} \ No newline at end of file diff --git a/lis-db/migrations/README b/lis-db/migrations/README index 154d66b..c1cb487 100644 --- a/lis-db/migrations/README +++ b/lis-db/migrations/README @@ -56,7 +56,7 @@ docker remove lis MIGRATE migrate new create profile --idpattern=000 - +migrate up --env=prod Move data ---------- diff --git a/lis-db/migrations/scripts/006_camunda_engine.sql b/lis-db/migrations/scripts/006_camunda_engine.sql new file mode 100644 index 0000000..3e42bf5 --- /dev/null +++ b/lis-db/migrations/scripts/006_camunda_engine.sql @@ -0,0 +1,1931 @@ +-- // camunda engine +-- Migration SQL that makes the change goes here. +CREATE SCHEMA CAMUNDA; +SET SCHEMA CAMUNDA; + +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +create table ACT_GE_PROPERTY ( + NAME_ varchar(64) not null, + VALUE_ varchar(300), + REV_ integer, + primary key (NAME_) +); + +insert into ACT_GE_PROPERTY +values ('schema.version', 'fox', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(fox)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +insert into ACT_GE_PROPERTY +values ('deployment.lock', '0', 1); + +insert into ACT_GE_PROPERTY +values ('history.cleanup.job.lock', '0', 1); + +insert into ACT_GE_PROPERTY +values ('startup.lock', '0', 1); + +insert into ACT_GE_PROPERTY +values ('telemetry.lock', '0', 1); + +insert into ACT_GE_PROPERTY +values ('installationId.lock', '0', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + DEPLOYMENT_ID_ varchar(64), + BYTES_ BLOB, + GENERATED_ smallint check(GENERATED_ in (1,0)), + TENANT_ID_ varchar(64), + TYPE_ integer, + CREATE_TIME_ timestamp, + ROOT_PROC_INST_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_GE_SCHEMA_LOG ( + ID_ varchar(64) not null, + TIMESTAMP_ timestamp, + VERSION_ varchar(255), + primary key (ID_) +); + +insert into ACT_GE_SCHEMA_LOG +values ('0', CURRENT_TIMESTAMP, '7.19.0'); + +create table ACT_RE_DEPLOYMENT ( + ID_ varchar(64) not null, + NAME_ varchar(255), + DEPLOY_TIME_ timestamp, + SOURCE_ varchar(255), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_EXECUTION ( + ID_ varchar(64) not null, + REV_ integer, + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + BUSINESS_KEY_ varchar(255), + PARENT_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + SUPER_EXEC_ varchar(64), + SUPER_CASE_EXEC_ varchar(64), + CASE_INST_ID_ varchar(64), + ACT_ID_ varchar(255), + ACT_INST_ID_ varchar(64), + IS_ACTIVE_ smallint check(IS_ACTIVE_ in (1,0)), + IS_CONCURRENT_ smallint check(IS_CONCURRENT_ in (1,0)), + IS_SCOPE_ smallint check(IS_SCOPE_ in (1,0)), + IS_EVENT_SCOPE_ smallint check(IS_EVENT_SCOPE_ in (1,0)), + SUSPENSION_STATE_ integer, + CACHED_ENT_STATE_ integer, + SEQUENCE_COUNTER_ bigint, + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_JOB ( + ID_ varchar(64) not null, + REV_ integer, + TYPE_ varchar(255) not null, + LOCK_EXP_TIME_ timestamp, + LOCK_OWNER_ varchar(255), + EXCLUSIVE_ smallint check(EXCLUSIVE_ in (1,0)), + EXECUTION_ID_ varchar(64), + PROCESS_INSTANCE_ID_ varchar(64), + PROCESS_DEF_ID_ varchar(64), + PROCESS_DEF_KEY_ varchar(255), + RETRIES_ integer, + EXCEPTION_STACK_ID_ varchar(64), + EXCEPTION_MSG_ varchar(4000), + FAILED_ACT_ID_ varchar(255), + DUEDATE_ timestamp, + REPEAT_ varchar(255), + REPEAT_OFFSET_ bigint default 0, + HANDLER_TYPE_ varchar(255), + HANDLER_CFG_ varchar(4000), + DEPLOYMENT_ID_ varchar(64), + SUSPENSION_STATE_ integer not null default 1, + JOB_DEF_ID_ varchar(64), + PRIORITY_ bigint not null default 0, + SEQUENCE_COUNTER_ bigint, + TENANT_ID_ varchar(64), + CREATE_TIME_ timestamp, + LAST_FAILURE_LOG_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_JOBDEF ( + ID_ varchar(64) not null, + REV_ integer, + PROC_DEF_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + ACT_ID_ varchar(255), + JOB_TYPE_ varchar(255) not null, + JOB_CONFIGURATION_ varchar(255), + SUSPENSION_STATE_ integer, + JOB_PRIORITY_ bigint, + TENANT_ID_ varchar(64), + DEPLOYMENT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RE_PROCDEF ( + ID_ varchar(64) not null, + REV_ integer, + CATEGORY_ varchar(255), + NAME_ varchar(255), + KEY_ varchar(255) not null, + VERSION_ integer not null, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + DGRM_RESOURCE_NAME_ varchar(4000), + HAS_START_FORM_KEY_ smallint check(HAS_START_FORM_KEY_ in (1,0)), + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(64), + VERSION_TAG_ varchar(64), + HISTORY_TTL_ integer, + STARTABLE_ smallint default 1 NOT NULL check(STARTABLE_ in (1,0)), + primary key (ID_) +); + +create table ACT_RE_CAMFORMDEF ( + ID_ varchar(64) not null, + REV_ integer, + KEY_ varchar(255) not null, + VERSION_ integer not null, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_TASK ( + ID_ varchar(64) not null, + REV_ integer, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + CASE_DEF_ID_ varchar(64), + NAME_ varchar(255), + PARENT_TASK_ID_ varchar(64), + DESCRIPTION_ varchar(4000), + TASK_DEF_KEY_ varchar(255), + OWNER_ varchar(255), + ASSIGNEE_ varchar(255), + DELEGATION_ varchar(64), + PRIORITY_ integer, + CREATE_TIME_ timestamp, + LAST_UPDATED_ timestamp, + DUE_DATE_ timestamp, + FOLLOW_UP_DATE_ timestamp, + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_IDENTITYLINK ( + ID_ varchar(64) not null, + REV_ integer, + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_VARIABLE ( + ID_ varchar(64) not null, + REV_ integer, + TYPE_ varchar(255) not null, + NAME_ varchar(255) not null, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + TASK_ID_ varchar(64), + BATCH_ID_ varchar(64), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + VAR_SCOPE_ varchar(64) not null, + SEQUENCE_COUNTER_ bigint, + IS_CONCURRENT_LOCAL_ smallint check(IS_CONCURRENT_LOCAL_ in (1,0)), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_EVENT_SUBSCR ( + ID_ varchar(64) not null, + REV_ integer, + EVENT_TYPE_ varchar(255) not null, + EVENT_NAME_ varchar(255), + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + ACTIVITY_ID_ varchar(255), + CONFIGURATION_ varchar(255), + CREATED_ timestamp not null, + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_INCIDENT ( + ID_ varchar(64) not null, + REV_ integer not null, + INCIDENT_TIMESTAMP_ timestamp not null, + INCIDENT_MSG_ varchar(4000), + INCIDENT_TYPE_ varchar(255) not null, + EXECUTION_ID_ varchar(64), + ACTIVITY_ID_ varchar(255), + FAILED_ACTIVITY_ID_ varchar(255), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + CAUSE_INCIDENT_ID_ varchar(64), + ROOT_CAUSE_INCIDENT_ID_ varchar(64), + CONFIGURATION_ varchar(255), + TENANT_ID_ varchar(64), + JOB_DEF_ID_ varchar(64), + ANNOTATION_ varchar(4000), + primary key (ID_) +); + +create table ACT_RU_AUTHORIZATION ( + ID_ varchar(64) not null, + REV_ integer not null, + TYPE_ integer not null, + GROUP_ID_ varchar(255), + USER_ID_ varchar(255), + RESOURCE_TYPE_ integer not null, + RESOURCE_ID_ varchar(255), + PERMS_ integer, + REMOVAL_TIME_ timestamp, + ROOT_PROC_INST_ID_ varchar(64), + primary key (ID_), + UNI_USER_ID_ varchar (255) not null generated always as (case when "USER_ID_" is null then "ID_" else "USER_ID_" end), + UNI_GROUP_ID_ varchar (255) not null generated always as (case when "GROUP_ID_" is null then "ID_" else "GROUP_ID_" end), + UNI_RESOURCE_ID_ varchar (255) not null generated always as (case when "RESOURCE_ID_" is null then "ID_" else "RESOURCE_ID_" end) +); + +create table ACT_RU_FILTER ( + ID_ varchar(64) not null, + REV_ integer not null, + RESOURCE_TYPE_ varchar(255) not null, + NAME_ varchar(255) not null, + OWNER_ varchar(255), + QUERY_ CLOB not null, + PROPERTIES_ CLOB, + primary key (ID_) +); + +create table ACT_RU_METER_LOG ( + ID_ varchar(64) not null, + NAME_ varchar(64) not null, + REPORTER_ varchar(255), + VALUE_ bigint, + TIMESTAMP_ timestamp, + MILLISECONDS_ bigint DEFAULT 0, + primary key (ID_) +); + +create table ACT_RU_TASK_METER_LOG ( + ID_ varchar(64) not null, + ASSIGNEE_HASH_ bigint, + TIMESTAMP_ timestamp, + primary key (ID_) +); + +create table ACT_RU_EXT_TASK ( + ID_ varchar(64) not null, + REV_ integer not null, + WORKER_ID_ varchar(255), + TOPIC_NAME_ varchar(255), + RETRIES_ integer, + ERROR_MSG_ varchar(4000), + ERROR_DETAILS_ID_ varchar(64), + LOCK_EXP_TIME_ timestamp, + SUSPENSION_STATE_ integer, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + ACT_ID_ varchar(255), + ACT_INST_ID_ varchar(64), + TENANT_ID_ varchar(64), + PRIORITY_ bigint not null default 0, + LAST_FAILURE_LOG_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_RU_BATCH ( + ID_ varchar(64) not null, + REV_ integer not null, + TYPE_ varchar(255), + TOTAL_JOBS_ integer, + JOBS_CREATED_ integer, + JOBS_PER_SEED_ integer, + INVOCATIONS_PER_JOB_ integer, + SEED_JOB_DEF_ID_ varchar(64), + BATCH_JOB_DEF_ID_ varchar(64), + MONITOR_JOB_DEF_ID_ varchar(64), + SUSPENSION_STATE_ integer, + CONFIGURATION_ varchar(255), + TENANT_ID_ varchar(64), + CREATE_USER_ID_ varchar(255), + START_TIME_ timestamp, + EXEC_START_TIME_ timestamp, + primary key (ID_) +); + +create index ACT_IDX_EXECUTION_ROOT_PI on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_); +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_EXEC_TENANT_ID on ACT_RU_EXECUTION(TENANT_ID_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +create index ACT_IDX_TASK_LAST_UPDATED on ACT_RU_TASK(LAST_UPDATED_); +create index ACT_IDX_TASK_ASSIGNEE on ACT_RU_TASK(ASSIGNEE_); +create index ACT_IDX_TASK_OWNER on ACT_RU_TASK(OWNER_); +create index ACT_IDX_TASK_TENANT_ID on ACT_RU_TASK(TENANT_ID_); +create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_); +create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_); +create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_); +create index ACT_IDX_EVENT_SUBSCR_TENANT_ID on ACT_RU_EVENT_SUBSCR(TENANT_ID_); + +create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); +create index ACT_IDX_VARIABLE_TENANT_ID on ACT_RU_VARIABLE(TENANT_ID_); +create index ACT_IDX_VARIABLE_TASK_NAME_TYPE on ACT_RU_VARIABLE(TASK_ID_, NAME_, TYPE_); + +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +create index ACT_IDX_INC_CONFIGURATION on ACT_RU_INCIDENT(CONFIGURATION_); +create index ACT_IDX_INC_TENANT_ID on ACT_RU_INCIDENT(TENANT_ID_); +-- CAM-5914 +create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_); +create index ACT_IDX_JOB_PROCINST on ACT_RU_JOB(PROCESS_INSTANCE_ID_); +create index ACT_IDX_JOB_TENANT_ID on ACT_RU_JOB(TENANT_ID_); +create index ACT_IDX_JOBDEF_TENANT_ID on ACT_RU_JOBDEF(TENANT_ID_); + +-- new metric milliseconds column +CREATE INDEX ACT_IDX_METER_LOG_MS ON ACT_RU_METER_LOG(MILLISECONDS_); +CREATE INDEX ACT_IDX_METER_LOG_NAME_MS ON ACT_RU_METER_LOG(NAME_, MILLISECONDS_); +CREATE INDEX ACT_IDX_METER_LOG_REPORT ON ACT_RU_METER_LOG(NAME_, REPORTER_, MILLISECONDS_); + +-- old metric timestamp column +CREATE INDEX ACT_IDX_METER_LOG_TIME ON ACT_RU_METER_LOG(TIMESTAMP_); +CREATE INDEX ACT_IDX_METER_LOG ON ACT_RU_METER_LOG(NAME_, TIMESTAMP_); + +-- task metric timestamp column +CREATE INDEX ACT_IDX_TASK_METER_LOG_TIME ON ACT_RU_TASK_METER_LOG(TIMESTAMP_); + +create index ACT_IDX_EXT_TASK_TOPIC ON ACT_RU_EXT_TASK(TOPIC_NAME_); +create index ACT_IDX_EXT_TASK_TENANT_ID ON ACT_RU_EXT_TASK(TENANT_ID_); +create index ACT_IDX_EXT_TASK_PRIORITY ON ACT_RU_EXT_TASK(PRIORITY_); +create index ACT_IDX_EXT_TASK_ERR_DETAILS ON ACT_RU_EXT_TASK(ERROR_DETAILS_ID_); +create index ACT_IDX_AUTH_GROUP_ID ON ACT_RU_AUTHORIZATION(GROUP_ID_); +create index ACT_IDX_JOB_JOB_DEF_ID on ACT_RU_JOB(JOB_DEF_ID_); + +create unique index ACT_UNIQ_AUTH_USER on ACT_RU_AUTHORIZATION(TYPE_,UNI_USER_ID_,RESOURCE_TYPE_,UNI_RESOURCE_ID_); +create unique index ACT_UNIQ_AUTH_GROUP on ACT_RU_AUTHORIZATION(TYPE_,UNI_GROUP_ID_,RESOURCE_TYPE_,UNI_RESOURCE_ID_); +create unique index ACT_UNIQ_VARIABLE on ACT_RU_VARIABLE(VAR_SCOPE_,NAME_); + +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PARENT + foreign key (PARENT_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_SUPER + foreign key (SUPER_EXEC_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_TSKASS_TASK + foreign key (TASK_ID_) + references ACT_RU_TASK (ID_); + +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_ATHRZ_PROCEDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION(ID_); + +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_BYTEARRAY + foreign key (BYTEARRAY_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RU_EVENT_SUBSCR + add constraint ACT_FK_EVENT_EXEC + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION(ID_); + +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_CAUSE + foreign key (CAUSE_INCIDENT_ID_) + references ACT_RU_INCIDENT (ID_); + +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_RCAUSE + foreign key (ROOT_CAUSE_INCIDENT_ID_) + references ACT_RU_INCIDENT (ID_); + +alter table ACT_RU_EXT_TASK + add constraint ACT_FK_EXT_TASK_ERROR_DETAILS + foreign key (ERROR_DETAILS_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_INCIDENT_JOB_DEF on ACT_RU_INCIDENT(JOB_DEF_ID_); +alter table ACT_RU_INCIDENT + add constraint ACT_FK_INC_JOB_DEF + foreign key (JOB_DEF_ID_) + references ACT_RU_JOBDEF (ID_); + +alter table ACT_RU_EXT_TASK + add constraint ACT_FK_EXT_TASK_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_BATCH_SEED_JOB_DEF ON ACT_RU_BATCH(SEED_JOB_DEF_ID_); +alter table ACT_RU_BATCH + add constraint ACT_FK_BATCH_SEED_JOB_DEF + foreign key (SEED_JOB_DEF_ID_) + references ACT_RU_JOBDEF (ID_); + +create index ACT_IDX_BATCH_MONITOR_JOB_DEF ON ACT_RU_BATCH(MONITOR_JOB_DEF_ID_); +alter table ACT_RU_BATCH + add constraint ACT_FK_BATCH_MONITOR_JOB_DEF + foreign key (MONITOR_JOB_DEF_ID_) + references ACT_RU_JOBDEF (ID_); + +create index ACT_IDX_BATCH_JOB_DEF ON ACT_RU_BATCH(BATCH_JOB_DEF_ID_); +alter table ACT_RU_BATCH + add constraint ACT_FK_BATCH_JOB_DEF + foreign key (BATCH_JOB_DEF_ID_) + references ACT_RU_JOBDEF (ID_); + +create index ACT_IDX_BATCH_ID ON ACT_RU_VARIABLE(BATCH_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_BATCH + foreign key (BATCH_ID_) + references ACT_RU_BATCH (ID_); + +-- indexes for concurrency problems - https://app.camunda.com/jira/browse/CAM-1646 -- +create index ACT_IDX_EXECUTION_PROC on ACT_RU_EXECUTION(PROC_DEF_ID_); +create index ACT_IDX_EXECUTION_PARENT on ACT_RU_EXECUTION(PARENT_ID_); +create index ACT_IDX_EXECUTION_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_); +create index ACT_IDX_EXECUTION_PROCINST on ACT_RU_EXECUTION(PROC_INST_ID_); +create index ACT_IDX_EVENT_SUBSCR_EXEC on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_); +create index ACT_IDX_BA_DEPLOYMENT on ACT_GE_BYTEARRAY(DEPLOYMENT_ID_); +create index ACT_IDX_IDENT_LNK_TASK on ACT_RU_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_INCIDENT_EXEC on ACT_RU_INCIDENT(EXECUTION_ID_); +create index ACT_IDX_INCIDENT_PROCINST on ACT_RU_INCIDENT(PROC_INST_ID_); +create index ACT_IDX_INCIDENT_PROC_DEF_ID on ACT_RU_INCIDENT(PROC_DEF_ID_); +create index ACT_IDX_INCIDENT_CAUSE on ACT_RU_INCIDENT(CAUSE_INCIDENT_ID_); +create index ACT_IDX_INCIDENT_ROOT_CAUSE on ACT_RU_INCIDENT(ROOT_CAUSE_INCIDENT_ID_); +create index ACT_IDX_JOB_EXCEPTION_STACK on ACT_RU_JOB(EXCEPTION_STACK_ID_); +create index ACT_IDX_VARIABLE_BA on ACT_RU_VARIABLE(BYTEARRAY_ID_); +create index ACT_IDX_VARIABLE_EXEC on ACT_RU_VARIABLE(EXECUTION_ID_); +create index ACT_IDX_VARIABLE_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_); +create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_); +create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_); +create index ACT_IDX_TASK_PROC_DEF_ID on ACT_RU_TASK(PROC_DEF_ID_); +-- index for deadlock problem - https://app.camunda.com/jira/browse/CAM-4440 -- +create index ACT_IDX_AUTH_RESOURCE_ID on ACT_RU_AUTHORIZATION(RESOURCE_ID_); +-- index to prevent deadlock on fk constraint - https://app.camunda.com/jira/browse/CAM-5440 -- +create index ACT_IDX_EXT_TASK_EXEC on ACT_RU_EXT_TASK(EXECUTION_ID_); + + +-- indexes to improve deployment +create index ACT_IDX_BYTEARRAY_ROOT_PI on ACT_GE_BYTEARRAY(ROOT_PROC_INST_ID_); +create index ACT_IDX_BYTEARRAY_RM_TIME on ACT_GE_BYTEARRAY(REMOVAL_TIME_); +create index ACT_IDX_BYTEARRAY_NAME on ACT_GE_BYTEARRAY(NAME_); +create index ACT_IDX_DEPLOYMENT_NAME on ACT_RE_DEPLOYMENT(NAME_); +create index ACT_IDX_DEPLOYMENT_TENANT_ID on ACT_RE_DEPLOYMENT(TENANT_ID_); +create index ACT_IDX_JOBDEF_PROC_DEF_ID ON ACT_RU_JOBDEF(PROC_DEF_ID_); +create index ACT_IDX_JOB_HANDLER_TYPE ON ACT_RU_JOB(HANDLER_TYPE_); +create index ACT_IDX_EVENT_SUBSCR_EVT_NAME ON ACT_RU_EVENT_SUBSCR(EVENT_NAME_); +create index ACT_IDX_PROCDEF_DEPLOYMENT_ID ON ACT_RE_PROCDEF(DEPLOYMENT_ID_); +create index ACT_IDX_PROCDEF_TENANT_ID ON ACT_RE_PROCDEF(TENANT_ID_); +create index ACT_IDX_PROCDEF_VER_TAG ON ACT_RE_PROCDEF(VERSION_TAG_); + +-- indices for history cleanup: https://jira.camunda.com/browse/CAM-11616 +create index ACT_IDX_AUTH_ROOT_PI on ACT_RU_AUTHORIZATION(ROOT_PROC_INST_ID_); +create index ACT_IDX_AUTH_RM_TIME on ACT_RU_AUTHORIZATION(REMOVAL_TIME_); +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +-- create case definition table -- + +create table ACT_RE_CASE_DEF ( + ID_ varchar(64) not null, + REV_ integer, + CATEGORY_ varchar(255), + NAME_ varchar(255), + KEY_ varchar(255) not null, + VERSION_ integer not null, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + DGRM_RESOURCE_NAME_ varchar(4000), + TENANT_ID_ varchar(64), + HISTORY_TTL_ integer, + primary key (ID_) +); + +-- create case execution table -- + +create table ACT_RU_CASE_EXECUTION ( + ID_ varchar(64) not null, + REV_ integer, + CASE_INST_ID_ varchar(64), + SUPER_CASE_EXEC_ varchar(64), + SUPER_EXEC_ varchar(64), + BUSINESS_KEY_ varchar(255), + PARENT_ID_ varchar(64), + CASE_DEF_ID_ varchar(64), + ACT_ID_ varchar(255), + PREV_STATE_ integer, + CURRENT_STATE_ integer, + REQUIRED_ smallint check(REQUIRED_ in (1,0)), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +-- create case sentry part table -- + +create table ACT_RU_CASE_SENTRY_PART ( + ID_ varchar(64) not null, + REV_ integer, + CASE_INST_ID_ varchar(64), + CASE_EXEC_ID_ varchar(64), + SENTRY_ID_ varchar(255), + TYPE_ varchar(255), + SOURCE_CASE_EXEC_ID_ varchar(64), + STANDARD_EVENT_ varchar(255), + SOURCE_ varchar(255), + VARIABLE_EVENT_ varchar(255), + VARIABLE_NAME_ varchar(255), + SATISFIED_ smallint check(SATISFIED_ in (1,0)), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +-- create index on business key -- +create index ACT_IDX_CASE_EXEC_BUSKEY on ACT_RU_CASE_EXECUTION(BUSINESS_KEY_); + +-- https://app.camunda.com/jira/browse/CAM-9165 +create index ACT_IDX_CASE_EXE_CASE_INST on ACT_RU_CASE_EXECUTION(CASE_INST_ID_); + +-- create foreign key constraints on ACT_RU_CASE_EXECUTION -- +alter table ACT_RU_CASE_EXECUTION + add constraint ACT_FK_CASE_EXE_CASE_INST + foreign key (CASE_INST_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +alter table ACT_RU_CASE_EXECUTION + add constraint ACT_FK_CASE_EXE_PARENT + foreign key (PARENT_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +alter table ACT_RU_CASE_EXECUTION + add constraint ACT_FK_CASE_EXE_CASE_DEF + foreign key (CASE_DEF_ID_) + references ACT_RE_CASE_DEF(ID_); + +-- create foreign key constraints on ACT_RU_VARIABLE -- +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_CASE_EXE + foreign key (CASE_EXECUTION_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_CASE_INST + foreign key (CASE_INST_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +-- create foreign key constraints on ACT_RU_TASK -- +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_CASE_EXE + foreign key (CASE_EXECUTION_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_CASE_DEF + foreign key (CASE_DEF_ID_) + references ACT_RE_CASE_DEF(ID_); + +-- create foreign key constraints on ACT_RU_CASE_SENTRY_PART -- +alter table ACT_RU_CASE_SENTRY_PART + add constraint ACT_FK_CASE_SENTRY_CASE_INST + foreign key (CASE_INST_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +alter table ACT_RU_CASE_SENTRY_PART + add constraint ACT_FK_CASE_SENTRY_CASE_EXEC + foreign key (CASE_EXEC_ID_) + references ACT_RU_CASE_EXECUTION(ID_); + +-- indexes for concurrency problems - https://app.camunda.com/jira/browse/CAM-1646 -- +create index ACT_IDX_CASE_EXEC_CASE on ACT_RU_CASE_EXECUTION(CASE_DEF_ID_); +create index ACT_IDX_CASE_EXEC_PARENT on ACT_RU_CASE_EXECUTION(PARENT_ID_); +create index ACT_IDX_VARIABLE_CASE_EXEC on ACT_RU_VARIABLE(CASE_EXECUTION_ID_); +create index ACT_IDX_VARIABLE_CASE_INST on ACT_RU_VARIABLE(CASE_INST_ID_); +create index ACT_IDX_TASK_CASE_EXEC on ACT_RU_TASK(CASE_EXECUTION_ID_); +create index ACT_IDX_TASK_CASE_DEF_ID on ACT_RU_TASK(CASE_DEF_ID_); + +-- add indexes for ACT_RU_CASE_SENTRY_PART -- +create index ACT_IDX_CASE_SENTRY_CASE_INST on ACT_RU_CASE_SENTRY_PART(CASE_INST_ID_); +create index ACT_IDX_CASE_SENTRY_CASE_EXEC on ACT_RU_CASE_SENTRY_PART(CASE_EXEC_ID_); + +create index ACT_IDX_CASE_DEF_TENANT_ID on ACT_RE_CASE_DEF(TENANT_ID_); +create index ACT_IDX_CASE_EXEC_TENANT_ID on ACT_RU_CASE_EXECUTION(TENANT_ID_); +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +-- create decision definition table -- +create table ACT_RE_DECISION_DEF ( + ID_ varchar(64) not null, + REV_ integer, + CATEGORY_ varchar(255), + NAME_ varchar(255), + KEY_ varchar(255) not null, + VERSION_ integer not null, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + DGRM_RESOURCE_NAME_ varchar(4000), + DEC_REQ_ID_ varchar(64), + DEC_REQ_KEY_ varchar(255), + TENANT_ID_ varchar(64), + HISTORY_TTL_ integer, + VERSION_TAG_ varchar(64), + primary key (ID_) +); + +-- create decision requirements definition table -- +create table ACT_RE_DECISION_REQ_DEF ( + ID_ varchar(64) NOT NULL, + REV_ integer, + CATEGORY_ varchar(255), + NAME_ varchar(255), + KEY_ varchar(255) NOT NULL, + VERSION_ integer NOT NULL, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + DGRM_RESOURCE_NAME_ varchar(4000), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +alter table ACT_RE_DECISION_DEF + add constraint ACT_FK_DEC_REQ + foreign key (DEC_REQ_ID_) + references ACT_RE_DECISION_REQ_DEF(ID_); + +create index ACT_IDX_DEC_DEF_TENANT_ID on ACT_RE_DECISION_DEF(TENANT_ID_); +create index ACT_IDX_DEC_DEF_REQ_ID on ACT_RE_DECISION_DEF(DEC_REQ_ID_); +create index ACT_IDX_DEC_REQ_DEF_TENANT_ID on ACT_RE_DECISION_REQ_DEF(TENANT_ID_); +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +create table ACT_HI_PROCINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64) not null, + BUSINESS_KEY_ varchar(255), + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64) not null, + START_TIME_ timestamp not null, + END_TIME_ timestamp, + REMOVAL_TIME_ timestamp, + DURATION_ bigint, + START_USER_ID_ varchar(255), + START_ACT_ID_ varchar(255), + END_ACT_ID_ varchar(255), + SUPER_PROCESS_INSTANCE_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + SUPER_CASE_INSTANCE_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + DELETE_REASON_ varchar(4000), + TENANT_ID_ varchar(64), + STATE_ varchar(255), + primary key (ID_) +); + +alter table ACT_HI_PROCINST add constraint PROC_INST_ID_ unique(PROC_INST_ID_); + +create table ACT_HI_ACTINST ( + ID_ varchar(64) not null, + PARENT_ACT_INST_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64) not null, + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64) not null, + EXECUTION_ID_ varchar(64) not null, + ACT_ID_ varchar(255) not null, + TASK_ID_ varchar(64), + CALL_PROC_INST_ID_ varchar(64), + CALL_CASE_INST_ID_ varchar(64), + ACT_NAME_ varchar(255), + ACT_TYPE_ varchar(255) not null, + ASSIGNEE_ varchar(255), + START_TIME_ timestamp not null, + END_TIME_ timestamp, + DURATION_ bigint, + ACT_INST_STATE_ integer, + SEQUENCE_COUNTER_ bigint, + TENANT_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_TASKINST ( + ID_ varchar(64) not null, + TASK_DEF_KEY_ varchar(255), + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + CASE_DEF_KEY_ varchar(255), + CASE_DEF_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + NAME_ varchar(255), + PARENT_TASK_ID_ varchar(64), + DESCRIPTION_ varchar(4000), + OWNER_ varchar(255), + ASSIGNEE_ varchar(255), + START_TIME_ timestamp not null, + END_TIME_ timestamp, + DURATION_ bigint, + DELETE_REASON_ varchar(4000), + PRIORITY_ integer, + DUE_DATE_ timestamp, + FOLLOW_UP_DATE_ timestamp, + TENANT_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_VARINST ( + ID_ varchar(64) not null, + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + CASE_DEF_KEY_ varchar(255), + CASE_DEF_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(100), + CREATE_TIME_ timestamp, + REV_ integer, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + TENANT_ID_ varchar(64), + STATE_ varchar(20), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_DETAIL ( + ID_ varchar(64) not null, + TYPE_ varchar(255) not null, + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + CASE_DEF_KEY_ varchar(255), + CASE_DEF_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + VAR_INST_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(255), + REV_ integer, + TIME_ timestamp not null, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + SEQUENCE_COUNTER_ bigint, + TENANT_ID_ varchar(64), + OPERATION_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + INITIAL_ smallint check(INITIAL_ in (1,0)), + primary key (ID_) +); + +create table ACT_HI_IDENTITYLINK ( + ID_ varchar(64) not null, + TIMESTAMP_ timestamp not null, + TYPE_ varchar(255), + USER_ID_ varchar(255), + GROUP_ID_ varchar(255), + TASK_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + OPERATION_TYPE_ varchar(64), + ASSIGNER_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + TENANT_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_COMMENT ( + ID_ varchar(64) not null, + TYPE_ varchar(255), + TIME_ timestamp not null, + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + ACTION_ varchar(255), + MESSAGE_ varchar(4000), + FULL_MSG_ BLOB, + TENANT_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_ATTACHMENT ( + ID_ varchar(64) not null, + REV_ integer, + USER_ID_ varchar(255), + NAME_ varchar(255), + DESCRIPTION_ varchar(4000), + TYPE_ varchar(255), + TASK_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + URL_ varchar(4000), + CONTENT_ID_ varchar(64), + TENANT_ID_ varchar(64), + CREATE_TIME_ timestamp, + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_OP_LOG ( + ID_ varchar(64) not null, + DEPLOYMENT_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + CASE_DEF_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + CASE_EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + JOB_ID_ varchar(64), + JOB_DEF_ID_ varchar(64), + BATCH_ID_ varchar(64), + USER_ID_ varchar(255), + TIMESTAMP_ timestamp not null, + OPERATION_TYPE_ varchar(64), + OPERATION_ID_ varchar(64), + ENTITY_TYPE_ varchar(30), + PROPERTY_ varchar(64), + ORG_VALUE_ varchar(4000), + NEW_VALUE_ varchar(4000), + TENANT_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + CATEGORY_ varchar(64), + EXTERNAL_TASK_ID_ varchar(64), + ANNOTATION_ varchar(4000), + primary key (ID_) +); + +create table ACT_HI_INCIDENT ( + ID_ varchar(64) not null, + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + CREATE_TIME_ timestamp not null, + END_TIME_ timestamp, + INCIDENT_MSG_ varchar(4000), + INCIDENT_TYPE_ varchar(255) not null, + ACTIVITY_ID_ varchar(255), + FAILED_ACTIVITY_ID_ varchar(255), + CAUSE_INCIDENT_ID_ varchar(64), + ROOT_CAUSE_INCIDENT_ID_ varchar(64), + CONFIGURATION_ varchar(255), + HISTORY_CONFIGURATION_ varchar(255), + INCIDENT_STATE_ integer, + TENANT_ID_ varchar(64), + JOB_DEF_ID_ varchar(64), + ANNOTATION_ varchar(4000), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_JOB_LOG ( + ID_ varchar(64) not null, + TIMESTAMP_ timestamp not null, + JOB_ID_ varchar(64) not null, + JOB_DUEDATE_ timestamp, + JOB_RETRIES_ integer, + JOB_PRIORITY_ bigint not null default 0, + JOB_EXCEPTION_MSG_ varchar(4000), + JOB_EXCEPTION_STACK_ID_ varchar(64), + JOB_STATE_ integer, + JOB_DEF_ID_ varchar(64), + JOB_DEF_TYPE_ varchar(255), + JOB_DEF_CONFIGURATION_ varchar(255), + ACT_ID_ varchar(255), + FAILED_ACT_ID_ varchar(255), + EXECUTION_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROCESS_INSTANCE_ID_ varchar(64), + PROCESS_DEF_ID_ varchar(64), + PROCESS_DEF_KEY_ varchar(255), + DEPLOYMENT_ID_ varchar(64), + SEQUENCE_COUNTER_ bigint, + TENANT_ID_ varchar(64), + HOSTNAME_ varchar(255), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_BATCH ( + ID_ varchar(64) not null, + TYPE_ varchar(255), + TOTAL_JOBS_ integer, + JOBS_PER_SEED_ integer, + INVOCATIONS_PER_JOB_ integer, + SEED_JOB_DEF_ID_ varchar(64), + MONITOR_JOB_DEF_ID_ varchar(64), + BATCH_JOB_DEF_ID_ varchar(64), + TENANT_ID_ varchar(64), + CREATE_USER_ID_ varchar(255), + START_TIME_ timestamp not null, + END_TIME_ timestamp, + REMOVAL_TIME_ timestamp, + EXEC_START_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_EXT_TASK_LOG ( + ID_ varchar(64) not null, + TIMESTAMP_ timestamp not null, + EXT_TASK_ID_ varchar(64) not null, + RETRIES_ integer, + TOPIC_NAME_ varchar(255), + WORKER_ID_ varchar(255), + PRIORITY_ bigint not null default 0, + ERROR_MSG_ varchar(4000), + ERROR_DETAILS_ID_ varchar(64), + ACT_ID_ varchar(255), + ACT_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_DEF_KEY_ varchar(255), + TENANT_ID_ varchar(64), + STATE_ integer, + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_); +create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_); +create index ACT_IDX_HI_PRO_INST_TENANT_ID on ACT_HI_PROCINST(TENANT_ID_); +create index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY on ACT_HI_PROCINST(PROC_DEF_KEY_); +create index ACT_IDX_HI_PRO_INST_PROC_TIME on ACT_HI_PROCINST(START_TIME_, END_TIME_); +create index ACT_IDX_HI_PI_PDEFID_END_TIME on ACT_HI_PROCINST(PROC_DEF_ID_, END_TIME_); +create index ACT_IDX_HI_PRO_INST_ROOT_PI on ACT_HI_PROCINST(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_PRO_INST_RM_TIME on ACT_HI_PROCINST(REMOVAL_TIME_); + +create index ACT_IDX_HI_ACTINST_ROOT_PI on ACT_HI_ACTINST(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_ACT_INST_START_END on ACT_HI_ACTINST(START_TIME_, END_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_COMP on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_, END_TIME_, ID_); +create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, PROC_INST_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_); +create index ACT_IDX_HI_ACT_INST_TENANT_ID on ACT_HI_ACTINST(TENANT_ID_); +create index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY on ACT_HI_ACTINST(PROC_DEF_KEY_); +create index ACT_IDX_HI_AI_PDEFID_END_TIME on ACT_HI_ACTINST(PROC_DEF_ID_, END_TIME_); +create index ACT_IDX_HI_ACT_INST_RM_TIME on ACT_HI_ACTINST(REMOVAL_TIME_); + +create index ACT_IDX_HI_TASKINST_ROOT_PI on ACT_HI_TASKINST(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_TENANT_ID on ACT_HI_TASKINST(TENANT_ID_); +create index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY on ACT_HI_TASKINST(PROC_DEF_KEY_); +create index ACT_IDX_HI_TASKINST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); +create index ACT_IDX_HI_TASKINSTID_PROCINST on ACT_HI_TASKINST(ID_,PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_RM_TIME on ACT_HI_TASKINST(REMOVAL_TIME_); +create index ACT_IDX_HI_TASK_INST_START on ACT_HI_TASKINST(START_TIME_); +create index ACT_IDX_HI_TASK_INST_END on ACT_HI_TASKINST(END_TIME_); + +create index ACT_IDX_HI_DETAIL_ROOT_PI on ACT_HI_DETAIL(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_); +create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_); +create index ACT_IDX_HI_DETAIL_CASE_INST on ACT_HI_DETAIL(CASE_INST_ID_); +create index ACT_IDX_HI_DETAIL_CASE_EXEC on ACT_HI_DETAIL(CASE_EXECUTION_ID_); +create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_); +create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_); +create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_); +create index ACT_IDX_HI_DETAIL_TENANT_ID on ACT_HI_DETAIL(TENANT_ID_); +create index ACT_IDX_HI_DETAIL_PROC_DEF_KEY on ACT_HI_DETAIL(PROC_DEF_KEY_); +create index ACT_IDX_HI_DETAIL_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_); +create index ACT_IDX_HI_DETAIL_RM_TIME on ACT_HI_DETAIL(REMOVAL_TIME_); +create index ACT_IDX_HI_DETAIL_TASK_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_, TASK_ID_); +create index ACT_IDX_HI_DETAIL_VAR_INST_ID on ACT_HI_DETAIL(VAR_INST_ID_); + +create index ACT_IDX_HI_IDENT_LNK_ROOT_PI on ACT_HI_IDENTITYLINK(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); +create index ACT_IDX_HI_IDENT_LNK_TENANT_ID on ACT_HI_IDENTITYLINK(TENANT_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY on ACT_HI_IDENTITYLINK(PROC_DEF_KEY_); +create index ACT_IDX_HI_IDENT_LINK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LINK_RM_TIME on ACT_HI_IDENTITYLINK(REMOVAL_TIME_); +create index ACT_IDX_HI_IDENT_LNK_TIMESTAMP on ACT_HI_IDENTITYLINK(TIMESTAMP_); + +create index ACT_IDX_HI_VARINST_ROOT_PI on ACT_HI_VARINST(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_); +create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_); +create index ACT_IDX_HI_CASEVAR_CASE_INST on ACT_HI_VARINST(CASE_INST_ID_); +create index ACT_IDX_HI_VAR_INST_TENANT_ID on ACT_HI_VARINST(TENANT_ID_); +create index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY on ACT_HI_VARINST(PROC_DEF_KEY_); +create index ACT_IDX_HI_VARINST_BYTEAR on ACT_HI_VARINST(BYTEARRAY_ID_); +create index ACT_IDX_HI_VARINST_RM_TIME on ACT_HI_VARINST(REMOVAL_TIME_); +create index ACT_IDX_HI_VAR_PI_NAME_TYPE on ACT_HI_VARINST(PROC_INST_ID_, NAME_, VAR_TYPE_); +create index ACT_IDX_HI_VARINST_NAME on ACT_HI_VARINST(NAME_); +create index ACT_IDX_HI_VARINST_ACT_INST_ID on ACT_HI_VARINST(ACT_INST_ID_); + +create index ACT_IDX_HI_INCIDENT_TENANT_ID on ACT_HI_INCIDENT(TENANT_ID_); +create index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY on ACT_HI_INCIDENT(PROC_DEF_KEY_); +create index ACT_IDX_HI_INCIDENT_ROOT_PI on ACT_HI_INCIDENT(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_INCIDENT_PROCINST on ACT_HI_INCIDENT(PROC_INST_ID_); +create index ACT_IDX_HI_INCIDENT_RM_TIME on ACT_HI_INCIDENT(REMOVAL_TIME_); +create index ACT_IDX_HI_INCIDENT_CREATE_TIME on ACT_HI_INCIDENT(CREATE_TIME_); +create index ACT_IDX_HI_INCIDENT_END_TIME on ACT_HI_INCIDENT(END_TIME_); + +create index ACT_IDX_HI_JOB_LOG_ROOT_PI on ACT_HI_JOB_LOG(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_JOB_LOG_PROCINST on ACT_HI_JOB_LOG(PROCESS_INSTANCE_ID_); +create index ACT_IDX_HI_JOB_LOG_PROCDEF on ACT_HI_JOB_LOG(PROCESS_DEF_ID_); +create index ACT_IDX_HI_JOB_LOG_TENANT_ID on ACT_HI_JOB_LOG(TENANT_ID_); +create index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID on ACT_HI_JOB_LOG(JOB_DEF_ID_); +create index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY on ACT_HI_JOB_LOG(PROCESS_DEF_KEY_); +create index ACT_IDX_HI_JOB_LOG_EX_STACK on ACT_HI_JOB_LOG(JOB_EXCEPTION_STACK_ID_); +create index ACT_IDX_HI_JOB_LOG_RM_TIME on ACT_HI_JOB_LOG(REMOVAL_TIME_); +create index ACT_IDX_HI_JOB_LOG_JOB_CONF on ACT_HI_JOB_LOG(JOB_DEF_CONFIGURATION_); + +create index ACT_HI_BAT_RM_TIME on ACT_HI_BATCH(REMOVAL_TIME_); + +create index ACT_HI_EXT_TASK_LOG_ROOT_PI on ACT_HI_EXT_TASK_LOG(ROOT_PROC_INST_ID_); +create index ACT_HI_EXT_TASK_LOG_PROCINST on ACT_HI_EXT_TASK_LOG(PROC_INST_ID_); +create index ACT_HI_EXT_TASK_LOG_PROCDEF on ACT_HI_EXT_TASK_LOG(PROC_DEF_ID_); +create index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY on ACT_HI_EXT_TASK_LOG(PROC_DEF_KEY_); +create index ACT_HI_EXT_TASK_LOG_TENANT_ID on ACT_HI_EXT_TASK_LOG(TENANT_ID_); +create index ACT_IDX_HI_EXTTASKLOG_ERRORDET on ACT_HI_EXT_TASK_LOG(ERROR_DETAILS_ID_); +create index ACT_HI_EXT_TASK_LOG_RM_TIME on ACT_HI_EXT_TASK_LOG(REMOVAL_TIME_); + +create index ACT_IDX_HI_OP_LOG_ROOT_PI on ACT_HI_OP_LOG(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_OP_LOG_PROCINST on ACT_HI_OP_LOG(PROC_INST_ID_); +create index ACT_IDX_HI_OP_LOG_PROCDEF on ACT_HI_OP_LOG(PROC_DEF_ID_); +create index ACT_IDX_HI_OP_LOG_TASK on ACT_HI_OP_LOG(TASK_ID_); +create index ACT_IDX_HI_OP_LOG_RM_TIME on ACT_HI_OP_LOG(REMOVAL_TIME_); +create index ACT_IDX_HI_OP_LOG_TIMESTAMP on ACT_HI_OP_LOG(TIMESTAMP_); +create index ACT_IDX_HI_OP_LOG_USER_ID on ACT_HI_OP_LOG(USER_ID_); +create index ACT_IDX_HI_OP_LOG_OP_TYPE on ACT_HI_OP_LOG(OPERATION_TYPE_); +create index ACT_IDX_HI_OP_LOG_ENTITY_TYPE on ACT_HI_OP_LOG(ENTITY_TYPE_); + +create index ACT_IDX_HI_ATTACHMENT_CONTENT on ACT_HI_ATTACHMENT(CONTENT_ID_); +create index ACT_IDX_HI_COMMENT_ROOT_PI on ACT_HI_COMMENT(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_ATTACHMENT_PROCINST on ACT_HI_ATTACHMENT(PROC_INST_ID_); +create index ACT_IDX_HI_ATTACHMENT_TASK on ACT_HI_ATTACHMENT(TASK_ID_); +create index ACT_IDX_HI_ATTACHMENT_RM_TIME on ACT_HI_ATTACHMENT(REMOVAL_TIME_); + +create index ACT_IDX_HI_COMMENT_TASK on ACT_HI_COMMENT(TASK_ID_); +create index ACT_IDX_HI_ATTACHMENT_ROOT_PI on ACT_HI_ATTACHMENT(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_COMMENT_PROCINST on ACT_HI_COMMENT(PROC_INST_ID_); +create index ACT_IDX_HI_COMMENT_RM_TIME on ACT_HI_COMMENT(REMOVAL_TIME_); +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +create table ACT_HI_CASEINST ( + ID_ varchar(64) not null, + CASE_INST_ID_ varchar(64) not null, + BUSINESS_KEY_ varchar(255), + CASE_DEF_ID_ varchar(64) not null, + CREATE_TIME_ timestamp not null, + CLOSE_TIME_ timestamp, + DURATION_ bigint, + STATE_ integer, + CREATE_USER_ID_ varchar(255), + SUPER_CASE_INSTANCE_ID_ varchar(64), + SUPER_PROCESS_INSTANCE_ID_ varchar(64), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +alter table ACT_HI_CASEINST add constraint CASE_INST_ID_ unique(CASE_INST_ID_); + +create table ACT_HI_CASEACTINST ( + ID_ varchar(64) not null, + PARENT_ACT_INST_ID_ varchar(64), + CASE_DEF_ID_ varchar(64) not null, + CASE_INST_ID_ varchar(64) not null, + CASE_ACT_ID_ varchar(255) not null, + TASK_ID_ varchar(64), + CALL_PROC_INST_ID_ varchar(64), + CALL_CASE_INST_ID_ varchar(64), + CASE_ACT_NAME_ varchar(255), + CASE_ACT_TYPE_ varchar(255), + CREATE_TIME_ timestamp not null, + END_TIME_ timestamp, + DURATION_ bigint, + STATE_ integer, + REQUIRED_ smallint check(REQUIRED_ in (1,0)), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +create index ACT_IDX_HI_CAS_I_CLOSE on ACT_HI_CASEINST(CLOSE_TIME_); +create index ACT_IDX_HI_CAS_I_BUSKEY on ACT_HI_CASEINST(BUSINESS_KEY_); +create index ACT_IDX_HI_CAS_I_TENANT_ID on ACT_HI_CASEINST(TENANT_ID_); +create index ACT_IDX_HI_CAS_A_I_CREATE on ACT_HI_CASEACTINST(CREATE_TIME_); +create index ACT_IDX_HI_CAS_A_I_END on ACT_HI_CASEACTINST(END_TIME_); +create index ACT_IDX_HI_CAS_A_I_COMP on ACT_HI_CASEACTINST(CASE_ACT_ID_, END_TIME_, ID_); +create index ACT_IDX_HI_CAS_A_I_TENANT_ID on ACT_HI_CASEACTINST(TENANT_ID_); +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +-- create history decision instance table -- +create table ACT_HI_DECINST ( + ID_ varchar(64) NOT NULL, + DEC_DEF_ID_ varchar(64) NOT NULL, + DEC_DEF_KEY_ varchar(255) NOT NULL, + DEC_DEF_NAME_ varchar(255), + PROC_DEF_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + CASE_DEF_KEY_ varchar(255), + CASE_DEF_ID_ varchar(64), + CASE_INST_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + ACT_ID_ varchar(255), + EVAL_TIME_ timestamp not null, + REMOVAL_TIME_ timestamp, + COLLECT_VALUE_ double precision, + USER_ID_ varchar(255), + ROOT_DEC_INST_ID_ varchar(64), + ROOT_PROC_INST_ID_ varchar(64), + DEC_REQ_ID_ varchar(64), + DEC_REQ_KEY_ varchar(255), + TENANT_ID_ varchar(64), + primary key (ID_) +); + +-- create history decision input table -- +create table ACT_HI_DEC_IN ( + ID_ varchar(64) NOT NULL, + DEC_INST_ID_ varchar(64) NOT NULL, + CLAUSE_ID_ varchar(64), + CLAUSE_NAME_ varchar(255), + VAR_TYPE_ varchar(100), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + TENANT_ID_ varchar(64), + CREATE_TIME_ timestamp, + ROOT_PROC_INST_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + +-- create history decision output table -- +create table ACT_HI_DEC_OUT ( + ID_ varchar(64) NOT NULL, + DEC_INST_ID_ varchar(64) NOT NULL, + CLAUSE_ID_ varchar(64), + CLAUSE_NAME_ varchar(255), + RULE_ID_ varchar(64), + RULE_ORDER_ integer, + VAR_NAME_ varchar(255), + VAR_TYPE_ varchar(100), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + TENANT_ID_ varchar(64), + CREATE_TIME_ timestamp, + ROOT_PROC_INST_ID_ varchar(64), + REMOVAL_TIME_ timestamp, + primary key (ID_) +); + + +create index ACT_IDX_HI_DEC_INST_ID on ACT_HI_DECINST(DEC_DEF_ID_); +create index ACT_IDX_HI_DEC_INST_KEY on ACT_HI_DECINST(DEC_DEF_KEY_); +create index ACT_IDX_HI_DEC_INST_PI on ACT_HI_DECINST(PROC_INST_ID_); +create index ACT_IDX_HI_DEC_INST_CI on ACT_HI_DECINST(CASE_INST_ID_); +create index ACT_IDX_HI_DEC_INST_ACT on ACT_HI_DECINST(ACT_ID_); +create index ACT_IDX_HI_DEC_INST_ACT_INST on ACT_HI_DECINST(ACT_INST_ID_); +create index ACT_IDX_HI_DEC_INST_TIME on ACT_HI_DECINST(EVAL_TIME_); +create index ACT_IDX_HI_DEC_INST_TENANT_ID on ACT_HI_DECINST(TENANT_ID_); +create index ACT_IDX_HI_DEC_INST_ROOT_ID on ACT_HI_DECINST(ROOT_DEC_INST_ID_); +create index ACT_IDX_HI_DEC_INST_REQ_ID on ACT_HI_DECINST(DEC_REQ_ID_); +create index ACT_IDX_HI_DEC_INST_REQ_KEY on ACT_HI_DECINST(DEC_REQ_KEY_); +create index ACT_IDX_HI_DEC_INST_ROOT_PI on ACT_HI_DECINST(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_DEC_INST_RM_TIME on ACT_HI_DECINST(REMOVAL_TIME_); + +create index ACT_IDX_HI_DEC_IN_INST on ACT_HI_DEC_IN(DEC_INST_ID_); +create index ACT_IDX_HI_DEC_IN_CLAUSE on ACT_HI_DEC_IN(DEC_INST_ID_, CLAUSE_ID_); +create index ACT_IDX_HI_DEC_IN_ROOT_PI on ACT_HI_DEC_IN(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_DEC_IN_RM_TIME on ACT_HI_DEC_IN(REMOVAL_TIME_); + +create index ACT_IDX_HI_DEC_OUT_INST on ACT_HI_DEC_OUT(DEC_INST_ID_); +create index ACT_IDX_HI_DEC_OUT_RULE on ACT_HI_DEC_OUT(RULE_ORDER_, CLAUSE_ID_); +create index ACT_IDX_HI_DEC_OUT_ROOT_PI on ACT_HI_DEC_OUT(ROOT_PROC_INST_ID_); +create index ACT_IDX_HI_DEC_OUT_RM_TIME on ACT_HI_DEC_OUT(REMOVAL_TIME_); + +SET SCHEMA DB2ADMIN; + +-- //@UNDO +-- SQL to undo the change goes here. + +SET SCHEMA CAMUNDA; + +alter table ACT_RE_DECISION_DEF + drop constraint ACT_FK_DEC_REQ; + +drop index ACT_IDX_DEC_DEF_TENANT_ID; +drop index ACT_IDX_DEC_DEF_REQ_ID; +drop index ACT_IDX_DEC_REQ_DEF_TENANT_ID; + +drop table ACT_RE_DECISION_DEF; +drop table ACT_RE_DECISION_REQ_DEF; + +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +drop index ACT_IDX_CASE_EXEC_BUSKEY; + +alter table ACT_RU_CASE_EXECUTION + drop foreign key ACT_FK_CASE_EXE_CASE_INST; + +alter table ACT_RU_CASE_EXECUTION + drop foreign key ACT_FK_CASE_EXE_PARENT; + +alter table ACT_RU_CASE_EXECUTION + drop foreign key ACT_FK_CASE_EXE_CASE_DEF; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_CASE_EXE; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_CASE_INST; + +alter table ACT_RU_TASK + drop foreign key ACT_FK_TASK_CASE_EXE; + +alter table ACT_RU_TASK + drop foreign key ACT_FK_TASK_CASE_DEF; + +alter table ACT_RU_CASE_SENTRY_PART + drop foreign key ACT_FK_CASE_SENTRY_CASE_INST; + +alter table ACT_RU_CASE_SENTRY_PART + drop foreign key ACT_FK_CASE_SENTRY_CASE_EXEC; + +-- indexes for concurrency problems - https://app.camunda.com/jira/browse/CAM-1646 -- +drop index ACT_IDX_CASE_EXEC_CASE; +drop index ACT_IDX_CASE_EXEC_PARENT; +drop index ACT_IDX_VARIABLE_CASE_EXEC; +drop index ACT_IDX_VARIABLE_CASE_INST; +drop index ACT_IDX_TASK_CASE_EXEC; +drop index ACT_IDX_TASK_CASE_DEF_ID; +drop index ACT_IDX_CASE_SENTRY_CASE_INST; +drop index ACT_IDX_CASE_SENTRY_CASE_EXEC; + +drop index ACT_IDX_CASE_DEF_TENANT_ID; +drop index ACT_IDX_CASE_EXEC_TENANT_ID; + +-- https://app.camunda.com/jira/browse/CAM-9165 +drop index ACT_IDX_CASE_EXE_CASE_INST; + +drop table ACT_RE_CASE_DEF; +drop table ACT_RU_CASE_EXECUTION; +drop table ACT_RU_CASE_SENTRY_PART; +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +drop index ACT_IDX_BYTEARRAY_ROOT_PI; +drop index ACT_IDX_BYTEARRAY_RM_TIME; +drop index ACT_IDX_EXECUTION_ROOT_PI; +drop index ACT_IDX_EXEC_BUSKEY; +drop index ACT_IDX_TASK_CREATE; +drop index ACT_IDX_TASK_LAST_UPDATED; +drop index ACT_IDX_TASK_ASSIGNEE; +drop index ACT_IDX_TASK_OWNER; +drop index ACT_IDX_IDENT_LNK_USER; +drop index ACT_IDX_IDENT_LNK_GROUP; +drop index ACT_IDX_VARIABLE_TASK_ID; +drop index ACT_IDX_VARIABLE_TASK_NAME_TYPE; +drop index ACT_IDX_INC_CONFIGURATION; +drop index ACT_IDX_JOB_PROCINST; +drop index ACT_UNIQ_AUTH_USER; +drop index ACT_UNIQ_AUTH_GROUP; +drop index ACT_UNIQ_VARIABLE; +drop index ACT_IDX_AUTH_GROUP_ID; + +alter table ACT_GE_BYTEARRAY + drop foreign key ACT_FK_BYTEARR_DEPL; + +alter table ACT_RU_EXECUTION + drop foreign key ACT_FK_EXE_PROCINST; + +alter table ACT_RU_EXECUTION + drop foreign key ACT_FK_EXE_PARENT; + +alter table ACT_RU_EXECUTION + drop foreign key ACT_FK_EXE_SUPER; + +alter table ACT_RU_EXECUTION + drop foreign key ACT_FK_EXE_PROCDEF; + +alter table ACT_RU_IDENTITYLINK + drop foreign key ACT_FK_TSKASS_TASK; + +alter table ACT_RU_IDENTITYLINK + drop foreign key ACT_FK_ATHRZ_PROCEDEF; + +alter table ACT_RU_TASK + drop foreign key ACT_FK_TASK_EXE; + +alter table ACT_RU_TASK + drop foreign key ACT_FK_TASK_PROCINST; + +alter table ACT_RU_TASK + drop foreign key ACT_FK_TASK_PROCDEF; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_EXE; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_PROCINST; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_BYTEARRAY; + +alter table ACT_RU_JOB + drop foreign key ACT_FK_JOB_EXCEPTION; + +alter table ACT_RU_EVENT_SUBSCR + drop foreign key ACT_FK_EVENT_EXEC; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_EXE; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_PROCINST; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_PROCDEF; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_CAUSE; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_RCAUSE; + +alter table ACT_RU_INCIDENT + drop foreign key ACT_FK_INC_JOB_DEF; + +alter table ACT_RU_EXT_TASK + drop foreign key ACT_FK_EXT_TASK_EXE; + +alter table ACT_RU_BATCH + drop foreign key ACT_FK_BATCH_SEED_JOB_DEF; + +alter table ACT_RU_BATCH + drop foreign key ACT_FK_BATCH_MONITOR_JOB_DEF; + +alter table ACT_RU_BATCH + drop foreign key ACT_FK_BATCH_JOB_DEF; + +alter table ACT_RU_EXT_TASK + drop foreign key ACT_FK_EXT_TASK_ERROR_DETAILS; + +alter table ACT_RU_VARIABLE + drop foreign key ACT_FK_VAR_BATCH; + +drop index ACT_IDX_EVENT_SUBSCR_CONFIG_; +drop index ACT_IDX_ATHRZ_PROCEDEF; + +-- indexes for concurrency problems - https://app.camunda.com/jira/browse/CAM-1646 -- +drop index ACT_IDX_EXECUTION_PROC; +drop index ACT_IDX_EXECUTION_PARENT; +drop index ACT_IDX_EXECUTION_SUPER; +drop index ACT_IDX_EXECUTION_PROCINST; +drop index ACT_IDX_EVENT_SUBSCR_EXEC; +drop index ACT_IDX_BA_DEPLOYMENT; +drop index ACT_IDX_IDENT_LNK_TASK; +drop index ACT_IDX_INCIDENT_EXEC; +drop index ACT_IDX_INCIDENT_PROCINST; +drop index ACT_IDX_INCIDENT_PROC_DEF_ID; +drop index ACT_IDX_INCIDENT_CAUSE; +drop index ACT_IDX_INCIDENT_ROOT_CAUSE; +drop index ACT_IDX_INCIDENT_JOB_DEF; +drop index ACT_IDX_JOB_EXCEPTION_STACK; +drop index ACT_IDX_VARIABLE_BA; +drop index ACT_IDX_VARIABLE_EXEC; +drop index ACT_IDX_VARIABLE_PROCINST; +drop index ACT_IDX_TASK_EXEC; +drop index ACT_IDX_TASK_PROCINST; +drop index ACT_IDX_TASK_PROC_DEF_ID; + +-- new metric milliseconds column +DROP INDEX ACT_IDX_METER_LOG_MS; +DROP INDEX ACT_IDX_METER_LOG_NAME_MS; +DROP INDEX ACT_IDX_METER_LOG_REPORT; + +-- old metric timestamp column +DROP INDEX ACT_IDX_METER_LOG_TIME; +DROP INDEX ACT_IDX_METER_LOG; + +-- task metric timestamp column +drop index ACT_IDX_TASK_METER_LOG_TIME; + +drop index ACT_IDX_AUTH_RESOURCE_ID; +drop index ACT_IDX_EXT_TASK_TOPIC; +drop index ACT_IDX_EXT_TASK_EXEC; + +drop index ACT_IDX_BYTEARRAY_NAME; +drop index ACT_IDX_DEPLOYMENT_NAME; +drop index ACT_IDX_JOBDEF_PROC_DEF_ID; +drop index ACT_IDX_JOB_HANDLER_TYPE; +drop index ACT_IDX_EVENT_SUBSCR_EVT_NAME; +drop index ACT_IDX_PROCDEF_DEPLOYMENT_ID; + +drop index ACT_IDX_EXT_TASK_TENANT_ID; +drop index ACT_IDX_EXT_TASK_PRIORITY; +drop index ACT_IDX_EXT_TASK_ERR_DETAILS; +drop index ACT_IDX_INC_TENANT_ID; +drop index ACT_IDX_JOBDEF_TENANT_ID; +drop index ACT_IDX_JOB_TENANT_ID; +drop index ACT_IDX_EVENT_SUBSCR_TENANT_ID; +drop index ACT_IDX_VARIABLE_TENANT_ID; +drop index ACT_IDX_TASK_TENANT_ID; +drop index ACT_IDX_EXEC_TENANT_ID; +drop index ACT_IDX_PROCDEF_TENANT_ID; +drop index ACT_IDX_DEPLOYMENT_TENANT_ID; + +drop index ACT_IDX_JOB_JOB_DEF_ID; +drop index ACT_IDX_BATCH_SEED_JOB_DEF; +drop index ACT_IDX_BATCH_MONITOR_JOB_DEF; +drop index ACT_IDX_BATCH_JOB_DEF; + +drop index ACT_IDX_PROCDEF_VER_TAG; + +drop index ACT_IDX_JOB_EXECUTION_ID; + +drop index ACT_IDX_AUTH_ROOT_PI; +drop index ACT_IDX_AUTH_RM_TIME; + +drop index ACT_IDX_BATCH_ID; + +drop table ACT_GE_PROPERTY; +drop table ACT_GE_BYTEARRAY; +drop table ACT_RE_DEPLOYMENT; +drop table ACT_RE_PROCDEF; +drop table ACT_RE_CAMFORMDEF; +drop table ACT_RU_VARIABLE; +drop table ACT_RU_IDENTITYLINK; +drop table ACT_RU_TASK; +drop table ACT_RU_EXECUTION; +drop table ACT_RU_JOB; +drop table ACT_RU_JOBDEF; +drop table ACT_RU_EVENT_SUBSCR; +drop table ACT_RU_INCIDENT; +drop table ACT_RU_AUTHORIZATION; +drop table ACT_RU_FILTER; +drop table ACT_RU_METER_LOG; +drop table ACT_RU_TASK_METER_LOG; +drop table ACT_RU_EXT_TASK; +drop table ACT_RU_BATCH; +drop table ACT_GE_SCHEMA_LOG; +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +drop index ACT_IDX_HI_DEC_INST_ID; +drop index ACT_IDX_HI_DEC_INST_KEY; +drop index ACT_IDX_HI_DEC_INST_PI; +drop index ACT_IDX_HI_DEC_INST_CI; +drop index ACT_IDX_HI_DEC_INST_ACT; +drop index ACT_IDX_HI_DEC_INST_ACT_INST; +drop index ACT_IDX_HI_DEC_INST_TIME; +drop index ACT_IDX_HI_DEC_INST_TENANT_ID; +drop index ACT_IDX_HI_DEC_INST_ROOT_ID; +drop index ACT_IDX_HI_DEC_INST_REQ_ID; +drop index ACT_IDX_HI_DEC_INST_REQ_KEY; +drop index ACT_IDX_HI_DEC_INST_ROOT_PI; +drop index ACT_IDX_HI_DEC_INST_RM_TIME; + +drop index ACT_IDX_HI_DEC_IN_INST; +drop index ACT_IDX_HI_DEC_IN_CLAUSE; +drop index ACT_IDX_HI_DEC_IN_ROOT_PI; +drop index ACT_IDX_HI_DEC_IN_RM_TIME; + +drop index ACT_IDX_HI_DEC_OUT_INST; +drop index ACT_IDX_HI_DEC_OUT_RULE; +drop index ACT_IDX_HI_DEC_OUT_ROOT_PI; +drop index ACT_IDX_HI_DEC_OUT_RM_TIME; + +drop table ACT_HI_DECINST; + +drop table ACT_HI_DEC_IN; + +drop table ACT_HI_DEC_OUT; +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +drop index ACT_IDX_HI_CAS_I_CLOSE; +drop index ACT_IDX_HI_CAS_I_BUSKEY; +drop index ACT_IDX_HI_CAS_I_TENANT_ID; +drop index ACT_IDX_HI_CAS_A_I_CREATE; +drop index ACT_IDX_HI_CAS_A_I_END; +drop index ACT_IDX_HI_CAS_A_I_COMP; +drop index ACT_IDX_HI_CAS_A_I_TENANT_ID; + +drop table ACT_HI_CASEINST; +drop table ACT_HI_CASEACTINST; +-- +-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH +-- under one or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information regarding copyright +-- ownership. Camunda licenses this file to you under the Apache License, +-- Version 2.0; you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +drop index ACT_IDX_HI_PRO_INST_END; +drop index ACT_IDX_HI_PRO_I_BUSKEY; +drop index ACT_IDX_HI_PRO_INST_TENANT_ID; +drop index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY; +drop index ACT_IDX_HI_PRO_INST_PROC_TIME; +drop index ACT_IDX_HI_PI_PDEFID_END_TIME; +drop index ACT_IDX_HI_PRO_INST_ROOT_PI; +drop index ACT_IDX_HI_PRO_INST_RM_TIME; + +drop index ACT_IDX_HI_ACTINST_ROOT_PI; +drop index ACT_IDX_HI_ACT_INST_START_END; +drop index ACT_IDX_HI_ACT_INST_END; +drop index ACT_IDX_HI_ACT_INST_PROCINST; +drop index ACT_IDX_HI_ACT_INST_COMP; +drop index ACT_IDX_HI_ACT_INST_STATS; +drop index ACT_IDX_HI_ACT_INST_TENANT_ID; +drop index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY; +drop index ACT_IDX_HI_AI_PDEFID_END_TIME; +drop index ACT_IDX_HI_ACT_INST_RM_TIME; + +drop index ACT_IDX_HI_TASKINST_ROOT_PI; +drop index ACT_IDX_HI_TASK_INST_TENANT_ID; +drop index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY; +drop index ACT_IDX_HI_TASKINST_PROCINST; +drop index ACT_IDX_HI_TASKINSTID_PROCINST; +drop index ACT_IDX_HI_TASK_INST_RM_TIME; +drop index ACT_IDX_HI_TASK_INST_START; +drop index ACT_IDX_HI_TASK_INST_END; + +drop index ACT_IDX_HI_IDENT_LNK_ROOT_PI; +drop index ACT_IDX_HI_IDENT_LNK_USER; +drop index ACT_IDX_HI_IDENT_LNK_GROUP; +drop index ACT_IDX_HI_IDENT_LNK_TENANT_ID; +drop index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY; +drop index ACT_IDX_HI_IDENT_LINK_TASK; +drop index ACT_IDX_HI_IDENT_LINK_RM_TIME; +drop index ACT_IDX_HI_IDENT_LNK_TIMESTAMP; + +drop index ACT_IDX_HI_DETAIL_ROOT_PI; +drop index ACT_IDX_HI_DETAIL_PROC_INST; +drop index ACT_IDX_HI_DETAIL_ACT_INST; +drop index ACT_IDX_HI_DETAIL_CASE_INST; +drop index ACT_IDX_HI_DETAIL_CASE_EXEC; +drop index ACT_IDX_HI_DETAIL_TIME; +drop index ACT_IDX_HI_DETAIL_NAME; +drop index ACT_IDX_HI_DETAIL_TASK_ID; +drop index ACT_IDX_HI_DETAIL_TENANT_ID; +drop index ACT_IDX_HI_DETAIL_PROC_DEF_KEY; +drop index ACT_IDX_HI_DETAIL_BYTEAR; +drop index ACT_IDX_HI_DETAIL_RM_TIME; +drop index ACT_IDX_HI_DETAIL_TASK_BYTEAR; +drop index ACT_IDX_HI_DETAIL_VAR_INST_ID; + +drop index ACT_IDX_HI_VARINST_ROOT_PI; +drop index ACT_IDX_HI_PROCVAR_PROC_INST; +drop index ACT_IDX_HI_PROCVAR_NAME_TYPE; +drop index ACT_IDX_HI_CASEVAR_CASE_INST; +drop index ACT_IDX_HI_VAR_INST_TENANT_ID; +drop index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY; +drop index ACT_IDX_HI_VARINST_BYTEAR; +drop index ACT_IDX_HI_VARINST_RM_TIME; +drop index ACT_IDX_HI_VAR_PI_NAME_TYPE; +drop index ACT_IDX_HI_VARINST_NAME; +drop index ACT_IDX_HI_VARINST_ACT_INST_ID; + +drop index ACT_IDX_HI_INCIDENT_TENANT_ID; +drop index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY; +drop index ACT_IDX_HI_INCIDENT_ROOT_PI; +drop index ACT_IDX_HI_INCIDENT_PROCINST; +drop index ACT_IDX_HI_INCIDENT_RM_TIME; +drop index ACT_IDX_HI_INCIDENT_CREATE_TIME; +drop index ACT_IDX_HI_INCIDENT_END_TIME; + +drop index ACT_IDX_HI_JOB_LOG_ROOT_PI; +drop index ACT_IDX_HI_JOB_LOG_PROCINST; +drop index ACT_IDX_HI_JOB_LOG_PROCDEF; +drop index ACT_IDX_HI_JOB_LOG_TENANT_ID; +drop index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID; +drop index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY; +drop index ACT_IDX_HI_JOB_LOG_EX_STACK; +drop index ACT_IDX_HI_JOB_LOG_RM_TIME; +drop index ACT_IDX_HI_JOB_LOG_JOB_CONF; + +drop index ACT_HI_EXT_TASK_LOG_ROOT_PI; +drop index ACT_HI_EXT_TASK_LOG_PROCINST; +drop index ACT_HI_EXT_TASK_LOG_PROCDEF; +drop index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY; +drop index ACT_HI_EXT_TASK_LOG_TENANT_ID; +drop index ACT_IDX_HI_EXTTASKLOG_ERRORDET; +drop index ACT_HI_EXT_TASK_LOG_RM_TIME; + +drop index ACT_HI_BAT_RM_TIME; + +drop index ACT_IDX_HI_OP_LOG_ROOT_PI; +drop index ACT_IDX_HI_OP_LOG_PROCINST; +drop index ACT_IDX_HI_OP_LOG_PROCDEF; +drop index ACT_IDX_HI_OP_LOG_TASK; +drop index ACT_IDX_HI_OP_LOG_RM_TIME; +drop index ACT_IDX_HI_OP_LOG_TIMESTAMP; +drop index ACT_IDX_HI_OP_LOG_USER_ID; +drop index ACT_IDX_HI_OP_LOG_OP_TYPE; +drop index ACT_IDX_HI_OP_LOG_ENTITY_TYPE; + +drop index ACT_IDX_HI_ATTACHMENT_CONTENT; +drop index ACT_IDX_HI_ATTACHMENT_ROOT_PI; +drop index ACT_IDX_HI_ATTACHMENT_PROCINST; +drop index ACT_IDX_HI_ATTACHMENT_TASK; +drop index ACT_IDX_HI_ATTACHMENT_RM_TIME; + +drop index ACT_IDX_HI_COMMENT_TASK; +drop index ACT_IDX_HI_COMMENT_ROOT_PI; +drop index ACT_IDX_HI_COMMENT_PROCINST; +drop index ACT_IDX_HI_COMMENT_RM_TIME; + +drop table ACT_HI_PROCINST; +drop table ACT_HI_ACTINST; +drop table ACT_HI_VARINST; +drop table ACT_HI_TASKINST; +drop table ACT_HI_DETAIL; +drop table ACT_HI_COMMENT; +drop table ACT_HI_ATTACHMENT; +drop table ACT_HI_OP_LOG; +drop table ACT_HI_INCIDENT; +drop table ACT_HI_JOB_LOG; +drop table ACT_HI_BATCH; +drop table ACT_HI_IDENTITYLINK; +drop table ACT_HI_EXT_TASK_LOG; + +SET SCHEMA DB2ADMIN; diff --git a/lis-db/migrations/scripts/007_camunda_identity.sql b/lis-db/migrations/scripts/007_camunda_identity.sql new file mode 100644 index 0000000..7b03fe3 --- /dev/null +++ b/lis-db/migrations/scripts/007_camunda_identity.sql @@ -0,0 +1,122 @@ +-- // camunda identity +-- Migration SQL that makes the change goes here. +SET SCHEMA CAMUNDA; + +create table ACT_ID_GROUP ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + TYPE_ varchar(255), + primary key (ID_) +); + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ varchar(64) not null, + GROUP_ID_ varchar(64) not null, + primary key (USER_ID_, GROUP_ID_) +); + +create table ACT_ID_USER ( + ID_ varchar(64) not null, + REV_ integer, + FIRST_ varchar(255), + LAST_ varchar(255), + EMAIL_ varchar(255), + PWD_ varchar(255), + SALT_ varchar(255), + LOCK_EXP_TIME_ timestamp, + ATTEMPTS_ integer, + PICTURE_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_ID_INFO ( + ID_ varchar(64) not null, + REV_ integer, + USER_ID_ varchar(64), + TYPE_ varchar(64), + KEY_ varchar(255), + VALUE_ varchar(255), + PASSWORD_ BLOB, + PARENT_ID_ varchar(255), + primary key (ID_) +); + +create table ACT_ID_TENANT ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + primary key (ID_) +); + +create table ACT_ID_TENANT_MEMBER ( + ID_ varchar(64) not null, + TENANT_ID_ varchar(64) not null, + USER_ID_ varchar(64), + GROUP_ID_ varchar(64), + primary key (ID_), + UNI_USER_ID_ varchar (255) not null generated always as (case when "USER_ID_" is null then "ID_" else "USER_ID_" end), + UNI_GROUP_ID_ varchar (255) not null generated always as (case when "GROUP_ID_" is null then "ID_" else "GROUP_ID_" end) +); + +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_GROUP + foreign key (GROUP_ID_) + references ACT_ID_GROUP (ID_); + +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_USER + foreign key (USER_ID_) + references ACT_ID_USER (ID_); + +alter table ACT_ID_TENANT_MEMBER + add constraint ACT_FK_TENANT_MEMB + foreign key (TENANT_ID_) + references ACT_ID_TENANT (ID_); + +alter table ACT_ID_TENANT_MEMBER + add constraint ACT_FK_TENANT_MEMB_USER + foreign key (USER_ID_) + references ACT_ID_USER (ID_); + +alter table ACT_ID_TENANT_MEMBER + add constraint ACT_FK_TENANT_MEMB_GROUP + foreign key (GROUP_ID_) + references ACT_ID_GROUP (ID_); + +create unique index ACT_UNIQ_TENANT_MEMB_USER on ACT_ID_TENANT_MEMBER(TENANT_ID_,UNI_USER_ID_); +create unique index ACT_UNIQ_TENANT_MEMB_GROUP on ACT_ID_TENANT_MEMBER(TENANT_ID_,UNI_GROUP_ID_); + +SET SCHEMA DB2ADMIN; + +-- //@UNDO +-- SQL to undo the change goes here. +SET SCHEMA CAMUNDA; + +drop index ACT_UNIQ_TENANT_MEMB_USER; +drop index ACT_UNIQ_TENANT_MEMB_GROUP; + +alter table ACT_ID_MEMBERSHIP + drop foreign key ACT_FK_MEMB_GROUP; + +alter table ACT_ID_MEMBERSHIP + drop foreign key ACT_FK_MEMB_USER; + +alter table ACT_ID_TENANT_MEMBER + drop constraint ACT_FK_TENANT_MEMB; + +alter table ACT_ID_TENANT_MEMBER + drop constraint ACT_FK_TENANT_MEMB_USER; + +alter table ACT_ID_TENANT_MEMBER + drop constraint ACT_FK_TENANT_MEMB_GROUP; + +drop table ACT_ID_TENANT_MEMBER; +drop table ACT_ID_TENANT; +drop table ACT_ID_INFO; +drop table ACT_ID_MEMBERSHIP; +drop table ACT_ID_GROUP; +drop table ACT_ID_USER; + +SET SCHEMA DB2ADMIN; + diff --git a/lis-db/src/main/java/hu/user/lis/db/Invoice.java b/lis-db/src/main/java/hu/user/lis/db/Invoice.java index 38d0bf1..abfaf46 100644 --- a/lis-db/src/main/java/hu/user/lis/db/Invoice.java +++ b/lis-db/src/main/java/hu/user/lis/db/Invoice.java @@ -38,8 +38,9 @@ public class Invoice implements Serializable { @JoinColumn(name = "partner_id") @JsonIncludeProperties({"id"}) Partner partner; -// @ManyToOne(fetch = FetchType.LAZY) -// @JoinColumn(name = "project_id") -// @JsonIncludeProperties({"id"}) -// Project project; + + @ManyToOne + @JoinColumn(name = "project_id") + @JsonIncludeProperties({"id"}) + Project project; } diff --git a/lis-db/src/main/java/hu/user/lis/db/Project.java b/lis-db/src/main/java/hu/user/lis/db/Project.java index 3492c53..e02ac34 100644 --- a/lis-db/src/main/java/hu/user/lis/db/Project.java +++ b/lis-db/src/main/java/hu/user/lis/db/Project.java @@ -30,22 +30,22 @@ public class Project implements Serializable { @JsonIncludeProperties({"id"}) Partner partner; - @OneToMany(targetEntity = IncomingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) - @JoinColumn(name = "projectId", referencedColumnName = "id") + @OneToMany(targetEntity = IncomingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "project_id", referencedColumnName = "id") @Where(clause = "income=1") @Fetch(FetchMode.JOIN) @JsonIncludeProperties({"id"}) Set incomingInvoices; - @OneToMany(targetEntity = OutgoingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) - @JoinColumn(name = "projectId", referencedColumnName = "id") + @OneToMany(targetEntity = OutgoingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "project_id", referencedColumnName = "id") @Where(clause = "income=0") @Fetch(FetchMode.JOIN) @JsonIncludeProperties({"id"}) Set outgoingInvoices; @OneToMany(targetEntity = Treasury.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) - @JoinColumn(name = "projectId", referencedColumnName = "id") + @JoinColumn(name = "project_id", referencedColumnName = "id") @Fetch(FetchMode.JOIN) @JsonIncludeProperties({"id"}) Set treasuries; diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/IncomeMarginsDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/IncomeMarginsDataModel.java index 3e5d23b..4e8ef17 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/IncomeMarginsDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/IncomeMarginsDataModel.java @@ -15,7 +15,7 @@ import java.util.stream.Collectors; @Log4j2 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class IncomeMarginsDataModel extends ArrayList { - public void recalculate(Project project) { + public void recalculate(Project project, ServiceRecordsDataModel serviceRecordsDataModel) { clear(); Map balances = new HashMap<>(); Set outgoingInvoices = project.getOutgoingInvoices(); @@ -40,6 +40,12 @@ public class IncomeMarginsDataModel extends ArrayList { } } + + for (int i = 0; i < serviceRecordsDataModel.getSize(); i++) { + ServiceRecord serviceRecord = serviceRecordsDataModel.getElementAt(i); + substractBalance(balances, Currency.HUF, serviceRecord.getCost()); + } + balances.entrySet().stream() .map(s -> IncomeMargin.builder().currency(s.getKey()).amount(s.getValue()).build()) .sorted(Comparator.comparing(IncomeMargin::getCurrency)) diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java index a819a64..155d20b 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java @@ -86,4 +86,8 @@ public class PartnersDataModel extends CachedSpringDataModel { public Partner save(Partner selectedEntity) { return partnerRepository.save(selectedEntity); } + + public void delete(Partner selectedEntity) { + partnerRepository.delete(selectedEntity); + } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectAssociatesDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectAssociatesDataModel.java index dd7fab7..f6c5fa3 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectAssociatesDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectAssociatesDataModel.java @@ -59,4 +59,12 @@ public class ProjectAssociatesDataModel { projectAssociateRepository.saveAll(associates); } } + + public void addProjectAssociate(Project project, Associate associate) { + ProjectAssociate projectAssociate = ProjectAssociate.builder() + .projectId(project.getId()) + .associateId(associate.getId()) + .build(); + projectAssociateRepository.save(projectAssociate); + } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java index a7329c8..c3b050b 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java @@ -112,4 +112,8 @@ public class ProjectsDataModel extends CachedSpringDataModel { public Project clone(Project entity) { return projectDataService.clone(entity); } + + public void delete(Project selectedEntity) { + projectRepository.delete(selectedEntity); + } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java index a80cd06..8bad8a1 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/InvoiceEditorModel.java @@ -10,11 +10,14 @@ import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.zkoss.bind.BindContext; import org.zkoss.bind.BindUtils; +import org.zkoss.bind.PropertyChangeEvent; import org.zkoss.bind.annotation.*; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zul.Messagebox; +import java.util.Arrays; import java.util.Objects; @Log4j2 @@ -61,8 +64,8 @@ public class InvoiceEditorModel extends EntityEditorModel { Objects.nonNull(entity.getCompletionDate()) && Objects.nonNull(entity.getCreateDate()) && Objects.nonNull(entity.getPaymentDeadline()) && - entity.getCreateDate().before(entity.getCompletionDate()) && - entity.getCompletionDate().before(entity.getPaymentDeadline()); + (entity.getCreateDate().before(entity.getCompletionDate()) || entity.getCreateDate().equals(entity.getCompletionDate())) && + (entity.getCompletionDate().before(entity.getPaymentDeadline()) || entity.getCompletionDate().equals(entity.getPaymentDeadline())); } @Command @@ -83,4 +86,17 @@ public class InvoiceEditorModel extends EntityEditorModel { BindUtils.postNotifyChange(getFormDocument(), "file"); validate(); } + + @Override + public void onEvent(Event evt) { + String[] dates = {"completionDate", "createDate", "paymentDeadline"}; + if (isEventForCurrentDocument(evt)) { + PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; + if (Arrays.asList(dates).contains(propertyEvent.getProperty())) { + log.info(""); + } + validate(); + } + } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java index 4382cef..8d1ce0e 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java @@ -110,7 +110,7 @@ public class ProjectEditorModel extends EntityEditorModel { initAssociates(); serviceRecordsDataModel.search(getFormDocument(), true); getEntitySelectorRouter().configureSelector(Partner.class, getFormDocument(), "partner"); - incomeMarginsDataModel.recalculate(getFormDocument()); + incomeMarginsDataModel.recalculate(getFormDocument(), serviceRecordsDataModel); } @@ -350,4 +350,10 @@ public class ProjectEditorModel extends EntityEditorModel { validate(); } + @Override + public void validate() { + super.validate(); + incomeMarginsDataModel.recalculate(getFormDocument(), serviceRecordsDataModel); + } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java index c8d58ad..b6b184b 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java @@ -14,11 +14,15 @@ import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.zkoss.bind.BindContext; import org.zkoss.bind.BindUtils; +import org.zkoss.bind.PropertyChangeEvent; import org.zkoss.bind.annotation.*; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zul.Messagebox; +import org.zkoss.zul.Window; import java.time.LocalDate; import java.time.ZoneId; @@ -35,6 +39,9 @@ public class ServiceRecordEditorModel extends EntityEditorModel { @WireVariable ProjectAssociatesDataModel projectAssociatesDataModel; + private EntitySelectorModel projectEntitySelectorModel; + + @Init public void init() { super.init(); @@ -50,8 +57,12 @@ public class ServiceRecordEditorModel extends EntityEditorModel { private void initEntitySelectors() { getEntitySelectorRouter().configureSelector(Associate.class, getFormDocument(), "associate"); - EntitySelectorModel projectEntitySelectorModel = getEntitySelectorRouter().configureSelector(Project.class, getFormDocument(), "project"); - List projectAssociates = projectAssociatesDataModel.searchByAssociate(currentProfile.getAssociate().getId()); + projectEntitySelectorModel = getEntitySelectorRouter().configureSelector(Project.class, getFormDocument(), "project"); + initProjectSelector(); + } + + private void initProjectSelector() { + List projectAssociates = projectAssociatesDataModel.searchByAssociate(getFormDocument().getAssociate().getId()); projectEntitySelectorModel.addStaticFilter("projects", getProjectIds(projectAssociates)); } @@ -60,22 +71,33 @@ public class ServiceRecordEditorModel extends EntityEditorModel { getFormDocument().setWorkDay(Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant())); } + @Command @Override - protected boolean executePreSaveTask() { - boolean[] result = {true}; - Optional opProjectAssociate = projectAssociatesDataModel.searchByAssociateAndProject(getFormDocument().getAssociate().getId(), - getFormDocument().getProject().getId()); - if (!opProjectAssociate.isPresent()) { - Messagebox.show("A munkatárs a kiválasztott projekt résztvevője lesz.", "Megerősítés", - Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, e -> { - if (e.getName().equals("onCancel")) { - result[0] = false; - } else { - - } - }); + public void onCloseWindow(@BindingParam("target") Window target, @BindingParam("save") boolean save) { + if (save) { + + Optional opProjectAssociate = projectAssociatesDataModel.searchByAssociateAndProject(getFormDocument().getAssociate().getId(), + getFormDocument().getProject().getId()); + if (opProjectAssociate.isPresent()) { + doSave(target); + } else { + Messagebox.show("A munkatárs a kiválasztott projekt résztvevője lesz.", "Megerősítés", + Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, e -> { + if (!e.getName().equals("onCancel")) { + projectAssociatesDataModel.addProjectAssociate(getFormDocument().getProject(), getFormDocument().getAssociate()); + doSave(target); + } + }); + } + } else { + Events.postEvent(new Event("onClose", target, null)); + } + } + + private void doSave(Window target) { + if (isSaveEnabled()) { + Events.postEvent(new Event("onClose", target, getFormDocument())); } - return result[0]; } private List getProjectIds(List projectAssociates) { @@ -114,4 +136,19 @@ public class ServiceRecordEditorModel extends EntityEditorModel { BindUtils.postNotifyChange(getFormDocument(), "file"); validate(); } + + @Override + public void onEvent(Event evt) { + if (isEventForCurrentDocument(evt)) { + PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; + log.info("Property changed: {}", propertyEvent.getProperty()); + + if ("associate".equals(propertyEvent.getProperty())) { + initProjectSelector(); + } + + validate(); + } + } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/common/EntityEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/common/EntityEditorModel.java index 62f055e..3670d43 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/common/EntityEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/common/EntityEditorModel.java @@ -55,7 +55,7 @@ public abstract class EntityEditorModel extends Abstract @Command public void onCloseWindow(@BindingParam("target") Window target, @BindingParam("save") boolean save) { if (save) { - if (saveEnabled && executePreSaveTask()) { + if (saveEnabled) { Events.postEvent(new Event("onClose", target, formDocument)); } } else { @@ -63,10 +63,6 @@ public abstract class EntityEditorModel extends Abstract } } - protected boolean executePreSaveTask() { - return true; - } - private void setSaveEnabled(boolean saveEnabled) { this.saveEnabled = saveEnabled; log.info("Document save enabled {}", saveEnabled); @@ -111,13 +107,17 @@ public abstract class EntityEditorModel extends Abstract @Override public void onEvent(Event evt) { + if (isEventForCurrentDocument(evt)) { + validate(); + } + } + + protected boolean isEventForCurrentDocument(Event evt) { if (evt instanceof PropertyChangeEvent) { PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; - if (Objects.nonNull(propertyEvent.getBase()) && Objects.nonNull(formDocument) && propertyEvent.getBase().equals(formDocument)) { - log.info("Event {}", evt.getName()); - validate(); - } + return (Objects.nonNull(propertyEvent.getBase()) && Objects.nonNull(formDocument) && propertyEvent.getBase().equals(formDocument)); } + return false; } @Destroy diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java index d2e51c3..5f84d12 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java @@ -12,6 +12,7 @@ import lombok.extern.log4j.Log4j2; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.zk.ui.select.annotation.WireVariable; +import org.zkoss.zul.Messagebox; import static hu.user.lis.ui.data.CachedDataModel.ASCENDING; import static hu.user.lis.ui.data.CachedDataModel.NATURAL; @@ -70,4 +71,16 @@ public class PartnersViewModel extends FilterActiveViewModel { refresh(); }); } + + @Command + public void onDelete() { + Messagebox.show("Biztosan törli a kijelölt elemet?", "Megerősítés", + Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, e -> { + if (!e.getName().equals("onCancel")) { + partnersDataModel.delete(getSelectedEntity()); + refresh(); + } + }); + } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java index 8e31c07..125b900 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java @@ -15,6 +15,7 @@ import org.zkoss.bind.annotation.Init; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.select.annotation.WireVariable; +import org.zkoss.zul.Messagebox; import java.util.Map; import java.util.Objects; @@ -94,4 +95,14 @@ public class ProjectsViewModel extends FilterActiveViewModel implements eventBus.unregister(this); } + @Command + public void onDelete() { + Messagebox.show("Biztosan törli a kijelölt elemet?", "Megerősítés", + Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, e -> { + if (!e.getName().equals("onCancel")) { + projectsDataModel.delete(getSelectedEntity()); + refresh(); + } + }); + } } diff --git a/lis-ui/src/main/resources/web/associates.zul b/lis-ui/src/main/resources/web/associates.zul index 9f1207e..eb0ac5f 100644 --- a/lis-ui/src/main/resources/web/associates.zul +++ b/lis-ui/src/main/resources/web/associates.zul @@ -14,7 +14,7 @@ - - - - - diff --git a/lis-workflow/pom.xml b/lis-workflow/pom.xml new file mode 100644 index 0000000..5ae50fa --- /dev/null +++ b/lis-workflow/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + lis-workflow + + hu.user + lis + 0.0.1-SNAPSHOT + + + + hu.user + lis-db + 0.0.1-SNAPSHOT + + + hu.user + lis-services + 0.0.1-SNAPSHOT + + + org.camunda.bpm + camunda-engine-spring + ${camunda.spring-boot.version} + + + org.camunda.bpm.springboot + camunda-bpm-spring-boot-starter-webapp + ${camunda.spring-boot.version} + + + org.apache.tomcat.embed + tomcat-embed-websocket + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.camunda.bpm.springboot + camunda-bpm-spring-boot-starter-rest + ${camunda.spring-boot.version} + + + diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java new file mode 100644 index 0000000..b9e1730 --- /dev/null +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/DownloadInvoiceData.java @@ -0,0 +1,40 @@ +package hu.user.lis.workflow.invoice; + +import hu.user.lis.db.Invoice; +import hu.user.lis.db.Partner; +import hu.user.lis.db.repository.InvoiceRepository; +import hu.user.lis.db.repository.PartnerRepository; +import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.RandomUtils; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Log4j2 +@Component +public class DownloadInvoiceData implements JavaDelegate { + @Autowired + InvoiceRepository invoiceRepository; + @Autowired + PartnerRepository partnerRepository; + + @Override + public void execute(DelegateExecution delegateExecution) throws Exception { + String invoiceHumanId = (String) delegateExecution.getVariableLocal("invoice"); + log.info("Processing incoice {}", invoiceHumanId); + Invoice invoice = Invoice.builder() + .humanId(invoiceHumanId) + .partner(getRandomPartner()) + .build(); + invoiceRepository.save(invoice); + log.info("Invoice {} processed", invoiceHumanId); + } + + private Partner getRandomPartner() { + List partners = partnerRepository.findAll(); + return partners.get(RandomUtils.nextInt(0, partners.size())); + } +} diff --git a/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/ListNewInvoices.java b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/ListNewInvoices.java new file mode 100644 index 0000000..0f91876 --- /dev/null +++ b/lis-workflow/src/main/java/hu/user/lis/workflow/invoice/ListNewInvoices.java @@ -0,0 +1,20 @@ +package hu.user.lis.workflow.invoice; + +import lombok.extern.log4j.Log4j2; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; + +@Log4j2 +@Component +public class ListNewInvoices implements JavaDelegate { + @Override + public void execute(DelegateExecution delegateExecution) throws Exception { + log.info("Executing"); + List invoices = Arrays.asList("Invoice-test-1", "Invoice-test-2", "Invoice-test-3"); + delegateExecution.setVariableLocal("invoices", invoices); + } +} diff --git a/lis-workflow/src/main/resources/import-incoming-invoices.bpmn b/lis-workflow/src/main/resources/import-incoming-invoices.bpmn new file mode 100644 index 0000000..4c01002 --- /dev/null +++ b/lis-workflow/src/main/resources/import-incoming-invoices.bpmn @@ -0,0 +1,53 @@ + + + + + Flow_1gzempz + + + + + Flow_1gzempz + Flow_15jorzs + + + + + Flow_15jorzs + Flow_1v1bne3 + + + + Flow_1v1bne3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index f5cc248..2ce5709 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,7 @@ 0.0.1-SNAPSHOT pom + lis-workflow lis-services lis-db lis-ui @@ -16,6 +17,7 @@ 1.8 1.8 1.8 + 7.19.0 org.springframework.boot -- 2.54.0