diff --git a/build-system/pom.xml b/build-system/pom.xml index 2b1442348c4..0367ec837d0 100644 --- a/build-system/pom.xml +++ b/build-system/pom.xml @@ -63,10 +63,10 @@ 1.0.1 1.7.25 1.2.3 - 1.5.8.e1 - 4.3.14.RELEASE - 4.2.4.RELEASE + 5.0.6.RELEASE + 5.0.6.RELEASE 3.5.0 6.8.8 1.2 @@ -88,7 +88,7 @@ 6.5.0 10.11.1.1 1.8.0 - 2.8.9 + 2.9.5 1.15 2.20.1 0.9.11 @@ -831,6 +831,11 @@ spring-aop ${spring.version} + + org.springframework + spring-jcl + ${spring.version} + org.springframework.security spring-security-config diff --git a/config/sql/_all/mysql-upgrade-3.7-3.8.sql b/config/sql/_all/h2-3.9-all.sql similarity index 75% rename from config/sql/_all/mysql-upgrade-3.7-3.8.sql rename to config/sql/_all/h2-3.9-all.sql index 65070f50e13..4ede186d505 100644 --- a/config/sql/_all/mysql-upgrade-3.7-3.8.sql +++ b/config/sql/_all/h2-3.9-all.sql @@ -1,95 +1,12 @@ -DROP TABLE m_acc_cert_definition; -DROP TABLE m_acc_cert_wi_reference; -DROP TABLE m_acc_cert_wi; -DROP TABLE m_acc_cert_case; -DROP TABLE m_acc_cert_campaign; -DROP TABLE m_assignment_ext_boolean; -DROP TABLE m_assignment_ext_date; -DROP TABLE m_assignment_ext_long; -DROP TABLE m_assignment_ext_poly; -DROP TABLE m_assignment_ext_reference; -DROP TABLE m_assignment_ext_string; -DROP TABLE m_assignment_extension; -DROP TABLE m_assignment_policy_situation; -DROP TABLE m_assignment_reference; -DROP TABLE m_assignment; --- Don't touch audit tables --- DROP TABLE m_audit_delta; --- DROP TABLE m_audit_item; --- DROP TABLE m_audit_prop_value; --- DROP TABLE m_audit_ref_value; --- DROP TABLE m_audit_event; -DROP TABLE m_case; -DROP TABLE m_connector_host; -DROP TABLE m_connector_target_system; -DROP TABLE m_connector; -DROP TABLE m_exclusion; -DROP TABLE m_focus_photo; -DROP TABLE m_focus_policy_situation; -DROP TABLE m_form; -DROP TABLE m_function_library; -DROP TABLE m_generic_object; -DROP TABLE m_lookup_table_row; -DROP TABLE m_lookup_table; -DROP TABLE m_node; -DROP TABLE m_object_ext_boolean; -DROP TABLE m_object_ext_date; -DROP TABLE m_object_ext_long; -DROP TABLE m_object_ext_poly; -DROP TABLE m_object_ext_reference; -DROP TABLE m_object_ext_string; -DROP TABLE m_object_template; -DROP TABLE m_object_text_info; -DROP TABLE m_operation_execution; -DROP TABLE m_org_closure; -DROP TABLE m_org_org_type; -DROP TABLE m_org; -DROP TABLE m_reference; -DROP TABLE m_report; -DROP TABLE m_report_output; -DROP TABLE m_resource; -DROP TABLE m_role; -DROP TABLE m_security_policy; -DROP TABLE m_sequence; -DROP TABLE m_service_type; -DROP TABLE m_service; -DROP TABLE m_abstract_role; -DROP TABLE m_shadow; -DROP TABLE m_system_configuration; -DROP TABLE m_task_dependent; -DROP TABLE m_task; -DROP TABLE m_trigger; -DROP TABLE m_user_employee_type; -DROP TABLE m_user_organization; -DROP TABLE m_user_organizational_unit; -DROP TABLE m_value_policy; -DROP TABLE m_user; -DROP TABLE m_focus; -DROP TABLE m_object; - -SET FOREIGN_KEY_CHECKS = 0; - -ALTER TABLE m_audit_event - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; -ALTER TABLE m_audit_prop_value - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; -ALTER TABLE m_audit_ref_value - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; - -SET FOREIGN_KEY_CHECKS = 1; - -ALTER TABLE m_audit_delta - MODIFY COLUMN delta LONGBLOB, - MODIFY COLUMN fullResult LONGBLOB; - -ALTER TABLE m_audit_event - ADD COLUMN targetOwnerType INTEGER; +-- It's no use putting Quartz and Activiti in the same DB as midPoint data. (They need different modes of db opening.) +-- So, contrary to all the other databases, this file contains only midPoint-related scripts. +-- If you want to add Quartz and Activiti-related tables, please use files from quartz and activiti directories, respectively. CREATE TABLE m_acc_cert_campaign ( definitionRef_relation VARCHAR(157), definitionRef_targetOid VARCHAR(36), definitionRef_type INTEGER, - endTimestamp DATETIME(6), + endTimestamp TIMESTAMP, handlerUri VARCHAR(255), name_norm VARCHAR(255), name_orig VARCHAR(255), @@ -97,29 +14,26 @@ CREATE TABLE m_acc_cert_campaign ( ownerRef_targetOid VARCHAR(36), ownerRef_type INTEGER, stageNumber INTEGER, - startTimestamp DATETIME(6), + startTimestamp TIMESTAMP, state INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_acc_cert_case ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, administrativeStatus INTEGER, - archiveTimestamp DATETIME(6), + archiveTimestamp TIMESTAMP, disableReason VARCHAR(255), - disableTimestamp DATETIME(6), + disableTimestamp TIMESTAMP, effectiveStatus INTEGER, - enableTimestamp DATETIME(6), - validFrom DATETIME(6), - validTo DATETIME(6), - validityChangeTimestamp DATETIME(6), + enableTimestamp TIMESTAMP, + validFrom TIMESTAMP, + validTo TIMESTAMP, + validityChangeTimestamp TIMESTAMP, validityStatus INTEGER, currentStageOutcome VARCHAR(255), - fullObject LONGBLOB, + fullObject BLOB, objectRef_relation VARCHAR(157), objectRef_targetOid VARCHAR(36), objectRef_type INTEGER, @@ -127,9 +41,9 @@ CREATE TABLE m_acc_cert_case ( orgRef_targetOid VARCHAR(36), orgRef_type INTEGER, outcome VARCHAR(255), - remediedTimestamp DATETIME(6), - reviewDeadline DATETIME(6), - reviewRequestedTimestamp DATETIME(6), + remediedTimestamp TIMESTAMP, + reviewDeadline TIMESTAMP, + reviewRequestedTimestamp TIMESTAMP, stageNumber INTEGER, targetRef_relation VARCHAR(157), targetRef_targetOid VARCHAR(36), @@ -138,14 +52,11 @@ CREATE TABLE m_acc_cert_case ( tenantRef_targetOid VARCHAR(36), tenantRef_type INTEGER, PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_acc_cert_definition ( handlerUri VARCHAR(255), - lastCampaignClosedTimestamp DATETIME(6), - lastCampaignStartedTimestamp DATETIME(6), + lastCampaignClosedTimestamp TIMESTAMP, + lastCampaignStartedTimestamp TIMESTAMP, name_norm VARCHAR(255), name_orig VARCHAR(255), ownerRef_relation VARCHAR(157), @@ -153,26 +64,20 @@ CREATE TABLE m_acc_cert_definition ( ownerRef_type INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_acc_cert_wi ( id INTEGER NOT NULL, owner_id INTEGER NOT NULL, owner_owner_oid VARCHAR(36) NOT NULL, - closeTimestamp DATETIME(6), + closeTimestamp TIMESTAMP, outcome VARCHAR(255), - outputChangeTimestamp DATETIME(6), + outputChangeTimestamp TIMESTAMP, performerRef_relation VARCHAR(157), performerRef_targetOid VARCHAR(36), performerRef_type INTEGER, stageNumber INTEGER, PRIMARY KEY (owner_owner_oid, owner_id, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_acc_cert_wi_reference ( owner_id INTEGER NOT NULL, owner_owner_id INTEGER NOT NULL, @@ -181,26 +86,23 @@ CREATE TABLE m_acc_cert_wi_reference ( targetOid VARCHAR(36) NOT NULL, targetType INTEGER, PRIMARY KEY (owner_owner_owner_oid, owner_owner_id, owner_id, relation, targetOid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, administrativeStatus INTEGER, - archiveTimestamp DATETIME(6), + archiveTimestamp TIMESTAMP, disableReason VARCHAR(255), - disableTimestamp DATETIME(6), + disableTimestamp TIMESTAMP, effectiveStatus INTEGER, - enableTimestamp DATETIME(6), - validFrom DATETIME(6), - validTo DATETIME(6), - validityChangeTimestamp DATETIME(6), + enableTimestamp TIMESTAMP, + validFrom TIMESTAMP, + validTo TIMESTAMP, + validityChangeTimestamp TIMESTAMP, validityStatus INTEGER, assignmentOwner INTEGER, createChannel VARCHAR(255), - createTimestamp DATETIME(6), + createTimestamp TIMESTAMP, creatorRef_relation VARCHAR(157), creatorRef_targetOid VARCHAR(36), creatorRef_type INTEGER, @@ -209,7 +111,7 @@ CREATE TABLE m_assignment ( modifierRef_targetOid VARCHAR(36), modifierRef_type INTEGER, modifyChannel VARCHAR(255), - modifyTimestamp DATETIME(6), + modifyTimestamp TIMESTAMP, orderValue INTEGER, orgRef_relation VARCHAR(157), orgRef_targetOid VARCHAR(36), @@ -226,40 +128,28 @@ CREATE TABLE m_assignment ( extId INTEGER, extOid VARCHAR(36), PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_boolean ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, - booleanValue BIT NOT NULL, + booleanValue BOOLEAN NOT NULL, PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, booleanValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_date ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, - dateValue DATETIME(6) NOT NULL, + dateValue TIMESTAMP NOT NULL, PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, dateValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_long ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, longValue BIGINT NOT NULL, PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, longValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_poly ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, @@ -267,10 +157,7 @@ CREATE TABLE m_assignment_ext_poly ( orig VARCHAR(255) NOT NULL, norm VARCHAR(255), PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, orig) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_reference ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, @@ -279,20 +166,14 @@ CREATE TABLE m_assignment_ext_reference ( relation VARCHAR(157), targetType INTEGER, PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, targetoid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_ext_string ( item_id INTEGER NOT NULL, anyContainer_owner_id INTEGER NOT NULL, anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, stringValue VARCHAR(255) NOT NULL, PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, stringValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_extension ( owner_id INTEGER NOT NULL, owner_owner_oid VARCHAR(36) NOT NULL, @@ -303,18 +184,12 @@ CREATE TABLE m_assignment_extension ( referencesCount SMALLINT, stringsCount SMALLINT, PRIMARY KEY (owner_owner_oid, owner_id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_policy_situation ( assignment_id INTEGER NOT NULL, assignment_oid VARCHAR(36) NOT NULL, policySituation VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_assignment_reference ( owner_id INTEGER NOT NULL, owner_owner_oid VARCHAR(36) NOT NULL, @@ -323,15 +198,79 @@ CREATE TABLE m_assignment_reference ( targetOid VARCHAR(36) NOT NULL, targetType INTEGER, PRIMARY KEY (owner_owner_oid, owner_id, reference_type, relation, targetOid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); +CREATE TABLE m_audit_delta ( + checksum VARCHAR(32) NOT NULL, + record_id BIGINT NOT NULL, + delta BLOB, + deltaOid VARCHAR(36), + deltaType INTEGER, + fullResult BLOB, + objectName_norm VARCHAR(255), + objectName_orig VARCHAR(255), + resourceName_norm VARCHAR(255), + resourceName_orig VARCHAR(255), + resourceOid VARCHAR(36), + status INTEGER, + PRIMARY KEY (record_id, checksum) +); +CREATE TABLE m_audit_event ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY, + attorneyName VARCHAR(255), + attorneyOid VARCHAR(36), + channel VARCHAR(255), + eventIdentifier VARCHAR(255), + eventStage INTEGER, + eventType INTEGER, + hostIdentifier VARCHAR(255), + initiatorName VARCHAR(255), + initiatorOid VARCHAR(36), + initiatorType INTEGER, + message VARCHAR(1024), + nodeIdentifier VARCHAR(255), + outcome INTEGER, + parameter VARCHAR(255), + remoteHostAddress VARCHAR(255), + result VARCHAR(255), + sessionIdentifier VARCHAR(255), + targetName VARCHAR(255), + targetOid VARCHAR(36), + targetOwnerName VARCHAR(255), + targetOwnerOid VARCHAR(36), + targetOwnerType INTEGER, + targetType INTEGER, + taskIdentifier VARCHAR(255), + taskOID VARCHAR(255), + timestampValue TIMESTAMP, + PRIMARY KEY (id) +); +CREATE TABLE m_audit_item ( + changedItemPath VARCHAR(255) NOT NULL, + record_id BIGINT NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +); +CREATE TABLE m_audit_prop_value ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY, + name VARCHAR(255), + record_id BIGINT, + value VARCHAR(1024), + PRIMARY KEY (id) +); +CREATE TABLE m_audit_ref_value ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY, + name VARCHAR(255), + oid VARCHAR(36), + record_id BIGINT, + targetName_norm VARCHAR(255), + targetName_orig VARCHAR(255), + type VARCHAR(255), + PRIMARY KEY (id) +); CREATE TABLE m_case_wi ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, - closeTimestamp DATETIME(6), - deadline DATETIME(6), + closeTimestamp TIMESTAMP, + deadline TIMESTAMP, originalAssigneeRef_relation VARCHAR(157), originalAssigneeRef_targetOid VARCHAR(36), originalAssigneeRef_type INTEGER, @@ -341,10 +280,7 @@ CREATE TABLE m_case_wi ( performerRef_type INTEGER, stageNumber INTEGER, PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_case_wi_reference ( owner_id INTEGER NOT NULL, owner_owner_oid VARCHAR(36) NOT NULL, @@ -352,59 +288,44 @@ CREATE TABLE m_case_wi_reference ( targetOid VARCHAR(36) NOT NULL, targetType INTEGER, PRIMARY KEY (owner_owner_oid, owner_id, targetOid, relation) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_connector_target_system ( connector_oid VARCHAR(36) NOT NULL, targetSystemType VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_ext_item ( - id INTEGER NOT NULL AUTO_INCREMENT, + id INTEGER GENERATED BY DEFAULT AS IDENTITY, kind INTEGER, itemName VARCHAR(157), itemType VARCHAR(157), PRIMARY KEY (id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_focus_photo ( owner_oid VARCHAR(36) NOT NULL, - photo LONGBLOB, + photo BLOB, PRIMARY KEY (owner_oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_focus_policy_situation ( focus_oid VARCHAR(36) NOT NULL, policySituation VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object ( oid VARCHAR(36) NOT NULL, booleansCount SMALLINT, createChannel VARCHAR(255), - createTimestamp DATETIME(6), + createTimestamp TIMESTAMP, creatorRef_relation VARCHAR(157), creatorRef_targetOid VARCHAR(36), creatorRef_type INTEGER, datesCount SMALLINT, - fullObject LONGBLOB, + fullObject BLOB, lifecycleState VARCHAR(255), longsCount SMALLINT, modifierRef_relation VARCHAR(157), modifierRef_targetOid VARCHAR(36), modifierRef_type INTEGER, modifyChannel VARCHAR(255), - modifyTimestamp DATETIME(6), + modifyTimestamp TIMESTAMP, name_norm VARCHAR(255), name_orig VARCHAR(255), objectTypeClass INTEGER, @@ -416,40 +337,28 @@ CREATE TABLE m_object ( tenantRef_type INTEGER, version INTEGER NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_boolean ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, ownerType INTEGER NOT NULL, - booleanValue BIT NOT NULL, + booleanValue BOOLEAN NOT NULL, PRIMARY KEY (owner_oid, ownerType, item_id, booleanValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_date ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, ownerType INTEGER NOT NULL, - dateValue DATETIME(6) NOT NULL, + dateValue TIMESTAMP NOT NULL, PRIMARY KEY (owner_oid, ownerType, item_id, dateValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_long ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, ownerType INTEGER NOT NULL, longValue BIGINT NOT NULL, PRIMARY KEY (owner_oid, ownerType, item_id, longValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_poly ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, @@ -457,10 +366,7 @@ CREATE TABLE m_object_ext_poly ( orig VARCHAR(255) NOT NULL, norm VARCHAR(255), PRIMARY KEY (owner_oid, ownerType, item_id, orig) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_reference ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, @@ -469,35 +375,23 @@ CREATE TABLE m_object_ext_reference ( relation VARCHAR(157), targetType INTEGER, PRIMARY KEY (owner_oid, ownerType, item_id, targetoid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_ext_string ( item_id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, ownerType INTEGER NOT NULL, stringValue VARCHAR(255) NOT NULL, PRIMARY KEY (owner_oid, ownerType, item_id, stringValue) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_subtype ( object_oid VARCHAR(36) NOT NULL, subtype VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_object_text_info ( owner_oid VARCHAR(36) NOT NULL, text VARCHAR(255) NOT NULL, PRIMARY KEY (owner_oid, text) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_operation_execution ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, @@ -508,28 +402,19 @@ CREATE TABLE m_operation_execution ( taskRef_relation VARCHAR(157), taskRef_targetOid VARCHAR(36), taskRef_type INTEGER, - timestampValue DATETIME(6), + timestampValue TIMESTAMP, PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_org_closure ( ancestor_oid VARCHAR(36) NOT NULL, descendant_oid VARCHAR(36) NOT NULL, val INTEGER, PRIMARY KEY (ancestor_oid, descendant_oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_org_org_type ( org_oid VARCHAR(36) NOT NULL, orgType VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_reference ( owner_oid VARCHAR(36) NOT NULL, reference_type INTEGER NOT NULL, @@ -537,23 +422,17 @@ CREATE TABLE m_reference ( targetOid VARCHAR(36) NOT NULL, targetType INTEGER, PRIMARY KEY (owner_oid, reference_type, relation, targetOid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_service_type ( service_oid VARCHAR(36) NOT NULL, serviceType VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_shadow ( attemptNumber INTEGER, - dead BIT, - exist BIT, + dead BOOLEAN, + exist BOOLEAN, failedOperationType INTEGER, - fullSynchronizationTimestamp DATETIME(6), + fullSynchronizationTimestamp TIMESTAMP, intent VARCHAR(255), kind INTEGER, name_norm VARCHAR(255), @@ -565,23 +444,20 @@ CREATE TABLE m_shadow ( resourceRef_type INTEGER, status INTEGER, synchronizationSituation INTEGER, - synchronizationTimestamp DATETIME(6), + synchronizationTimestamp TIMESTAMP, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_task ( binding INTEGER, canRunOnNode VARCHAR(255), category VARCHAR(255), - completionTimestamp DATETIME(6), + completionTimestamp TIMESTAMP, executionStatus INTEGER, - fullResult LONGBLOB, + fullResult BLOB, handlerUri VARCHAR(255), - lastRunFinishTimestamp DATETIME(6), - lastRunStartTimestamp DATETIME(6), + lastRunFinishTimestamp TIMESTAMP, + lastRunStartTimestamp TIMESTAMP, name_norm VARCHAR(255), name_orig VARCHAR(255), node VARCHAR(255), @@ -597,7 +473,7 @@ CREATE TABLE m_task ( taskIdentifier VARCHAR(255), threadStopAction INTEGER, waitingReason INTEGER, - wfEndTimestamp DATETIME(6), + wfEndTimestamp TIMESTAMP, wfObjectRef_relation VARCHAR(157), wfObjectRef_targetOid VARCHAR(36), wfObjectRef_type INTEGER, @@ -605,63 +481,45 @@ CREATE TABLE m_task ( wfRequesterRef_relation VARCHAR(157), wfRequesterRef_targetOid VARCHAR(36), wfRequesterRef_type INTEGER, - wfStartTimestamp DATETIME(6), + wfStartTimestamp TIMESTAMP, wfTargetRef_relation VARCHAR(157), wfTargetRef_targetOid VARCHAR(36), wfTargetRef_type INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_task_dependent ( task_oid VARCHAR(36) NOT NULL, dependent VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_user_employee_type ( user_oid VARCHAR(36) NOT NULL, employeeType VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_user_organization ( user_oid VARCHAR(36) NOT NULL, norm VARCHAR(255), orig VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_user_organizational_unit ( user_oid VARCHAR(36) NOT NULL, norm VARCHAR(255), orig VARCHAR(255) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_abstract_role ( approvalProcess VARCHAR(255), - autoassign_enabled BIT, + autoassign_enabled BOOLEAN, displayName_norm VARCHAR(255), displayName_orig VARCHAR(255), identifier VARCHAR(255), ownerRef_relation VARCHAR(157), ownerRef_targetOid VARCHAR(36), ownerRef_type INTEGER, - requestable BIT, + requestable BOOLEAN, riskLevel VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_case ( name_norm VARCHAR(255), name_orig VARCHAR(255), @@ -671,10 +529,7 @@ CREATE TABLE m_case ( state VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_connector ( connectorBundle VARCHAR(255), connectorHostRef_relation VARCHAR(157), @@ -687,10 +542,7 @@ CREATE TABLE m_connector ( name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_connector_host ( hostname VARCHAR(255), name_norm VARCHAR(255), @@ -698,130 +550,103 @@ CREATE TABLE m_connector_host ( port VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_focus ( administrativeStatus INTEGER, - archiveTimestamp DATETIME(6), + archiveTimestamp TIMESTAMP, disableReason VARCHAR(255), - disableTimestamp DATETIME(6), + disableTimestamp TIMESTAMP, effectiveStatus INTEGER, - enableTimestamp DATETIME(6), - validFrom DATETIME(6), - validTo DATETIME(6), - validityChangeTimestamp DATETIME(6), + enableTimestamp TIMESTAMP, + validFrom TIMESTAMP, + validTo TIMESTAMP, + validityChangeTimestamp TIMESTAMP, validityStatus INTEGER, costCenter VARCHAR(255), emailAddress VARCHAR(255), - hasPhoto BIT DEFAULT FALSE NOT NULL, + hasPhoto BOOLEAN DEFAULT FALSE NOT NULL, locale VARCHAR(255), locality_norm VARCHAR(255), locality_orig VARCHAR(255), preferredLanguage VARCHAR(255), telephoneNumber VARCHAR(255), timezone VARCHAR(255), - oid VARCHAR(36) NOT NULL, + oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_form ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_function_library ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_generic_object ( name_norm VARCHAR(255), name_orig VARCHAR(255), objectType VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_lookup_table ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_lookup_table_row ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, row_key VARCHAR(255), label_norm VARCHAR(255), label_orig VARCHAR(255), - lastChangeTimestamp DATETIME(6), + lastChangeTimestamp TIMESTAMP, row_value VARCHAR(255), PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_node ( name_norm VARCHAR(255), name_orig VARCHAR(255), nodeIdentifier VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +); CREATE TABLE m_object_template ( name_norm VARCHAR(255), name_orig VARCHAR(255), type INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_org ( displayOrder INTEGER, name_norm VARCHAR(255), name_orig VARCHAR(255), - tenant BIT, + tenant BOOLEAN, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_report ( export INTEGER, name_norm VARCHAR(255), name_orig VARCHAR(255), orientation INTEGER, - parent BIT, - useHibernateSession BIT, + parent BOOLEAN, + useHibernateSession BOOLEAN, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_report_output ( name_norm VARCHAR(255), name_orig VARCHAR(255), @@ -830,10 +655,7 @@ CREATE TABLE m_report_output ( reportRef_type INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_resource ( administrativeState INTEGER, connectorRef_relation VARCHAR(157), @@ -844,67 +666,46 @@ CREATE TABLE m_resource ( o16_lastAvailabilityStatus INTEGER, oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_role ( name_norm VARCHAR(255), name_orig VARCHAR(255), roleType VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_security_policy ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_sequence ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_service ( displayOrder INTEGER, name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_system_configuration ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_trigger ( id INTEGER NOT NULL, owner_oid VARCHAR(36) NOT NULL, handlerUri VARCHAR(255), - timestampValue DATETIME(6), + timestampValue TIMESTAMP, PRIMARY KEY (owner_oid, id) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_user ( additionalName_norm VARCHAR(255), additionalName_orig VARCHAR(255), @@ -927,19 +728,13 @@ CREATE TABLE m_user ( title_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE TABLE m_value_policy ( name_norm VARCHAR(255), name_orig VARCHAR(255), oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) -) - DEFAULT CHARACTER SET utf8 - COLLATE utf8_bin - ENGINE = InnoDB; +); CREATE INDEX iCertCampaignNameOrig ON m_acc_cert_campaign (name_orig); ALTER TABLE m_acc_cert_campaign @@ -990,13 +785,22 @@ CREATE INDEX iAssignmentReferenceTargetOid ON m_assignment_reference (targetOid); CREATE INDEX iAuditDeltaRecordId ON m_audit_delta (record_id); +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue); +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath); CREATE INDEX iAuditItemRecordId ON m_audit_item (record_id); +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id); +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id); CREATE INDEX iCaseWorkItemRefTargetOid ON m_case_wi_reference (targetOid); ALTER TABLE m_ext_item ADD CONSTRAINT iExtItemDefinition UNIQUE (itemName, itemType, kind); + CREATE INDEX iObjectNameOrig ON m_object (name_orig); CREATE INDEX iObjectNameNorm @@ -1027,8 +831,10 @@ CREATE INDEX iOpExecStatus ON m_operation_execution (status); CREATE INDEX iOpExecOwnerOid ON m_operation_execution (owner_oid); --- create index iAncestor on m_org_closure (ancestor_oid); --- create index iDescendant on m_org_closure (descendant_oid); +CREATE INDEX iAncestor + ON m_org_closure (ancestor_oid); +CREATE INDEX iDescendant + ON m_org_closure (descendant_oid); CREATE INDEX iDescendantAncestor ON m_org_closure (descendant_oid, ancestor_oid); CREATE INDEX iReferenceTargetTypeRelation @@ -1121,6 +927,10 @@ CREATE INDEX iNodeNameOrig ON m_node (name_orig); ALTER TABLE m_node ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); CREATE INDEX iObjectTemplateNameOrig ON m_object_template (name_orig); ALTER TABLE m_object_template @@ -1184,154 +994,164 @@ CREATE INDEX iValuePolicyNameOrig ALTER TABLE m_value_policy ADD CONSTRAINT uc_value_policy_name UNIQUE (name_norm); ALTER TABLE m_acc_cert_campaign - ADD CONSTRAINT fk_acc_cert_campaign FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_acc_cert_campaign FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_acc_cert_case - ADD CONSTRAINT fk_acc_cert_case_owner FOREIGN KEY (owner_oid) REFERENCES m_acc_cert_campaign (oid); + ADD CONSTRAINT fk_acc_cert_case_owner FOREIGN KEY (owner_oid) REFERENCES m_acc_cert_campaign; ALTER TABLE m_acc_cert_definition - ADD CONSTRAINT fk_acc_cert_definition FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_acc_cert_definition FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_acc_cert_wi - ADD CONSTRAINT fk_acc_cert_wi_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_acc_cert_case (owner_oid, id); + ADD CONSTRAINT fk_acc_cert_wi_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_acc_cert_case; ALTER TABLE m_acc_cert_wi_reference - ADD CONSTRAINT fk_acc_cert_wi_ref_owner FOREIGN KEY (owner_owner_owner_oid, owner_owner_id, owner_id) REFERENCES m_acc_cert_wi (owner_owner_oid, owner_id, id); + ADD CONSTRAINT fk_acc_cert_wi_ref_owner FOREIGN KEY (owner_owner_owner_oid, owner_owner_id, owner_id) REFERENCES m_acc_cert_wi; ALTER TABLE m_assignment - ADD CONSTRAINT fk_assignment_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_assignment_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_assignment_ext_boolean - ADD CONSTRAINT fk_a_ext_boolean_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_boolean_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_boolean - ADD CONSTRAINT fk_a_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_ext_date - ADD CONSTRAINT fk_a_ext_date_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_date_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_date - ADD CONSTRAINT fk_a_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_ext_long - ADD CONSTRAINT fk_a_ext_long_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_long_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_long - ADD CONSTRAINT fk_a_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_ext_poly - ADD CONSTRAINT fk_a_ext_poly_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_poly_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_poly - ADD CONSTRAINT fk_a_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_ext_reference - ADD CONSTRAINT fk_a_ext_reference_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_reference_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_reference - ADD CONSTRAINT fk_a_ext_boolean_reference FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_boolean_reference FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_ext_string - ADD CONSTRAINT fk_a_ext_string_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); + ADD CONSTRAINT fk_a_ext_string_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension; ALTER TABLE m_assignment_ext_string - ADD CONSTRAINT fk_a_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_a_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_assignment_policy_situation - ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment (owner_oid, id); + ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment; ALTER TABLE m_assignment_reference - ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment (owner_oid, id); + ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment; +ALTER TABLE m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; ALTER TABLE m_case_wi - ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case (oid); + ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case; ALTER TABLE m_case_wi_reference - ADD CONSTRAINT fk_case_wi_reference_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_case_wi (owner_oid, id); + ADD CONSTRAINT fk_case_wi_reference_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_case_wi; ALTER TABLE m_connector_target_system - ADD CONSTRAINT fk_connector_target_system FOREIGN KEY (connector_oid) REFERENCES m_connector (oid); + ADD CONSTRAINT fk_connector_target_system FOREIGN KEY (connector_oid) REFERENCES m_connector; ALTER TABLE m_focus_photo - ADD CONSTRAINT fk_focus_photo FOREIGN KEY (owner_oid) REFERENCES m_focus (oid); + ADD CONSTRAINT fk_focus_photo FOREIGN KEY (owner_oid) REFERENCES m_focus; ALTER TABLE m_focus_policy_situation - ADD CONSTRAINT fk_focus_policy_situation FOREIGN KEY (focus_oid) REFERENCES m_focus (oid); + ADD CONSTRAINT fk_focus_policy_situation FOREIGN KEY (focus_oid) REFERENCES m_focus; ALTER TABLE m_object_ext_boolean - ADD CONSTRAINT fk_o_ext_boolean_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_o_ext_boolean_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_boolean - ADD CONSTRAINT fk_o_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_ext_date - ADD CONSTRAINT fk_o_ext_date_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_o_ext_date_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_date - ADD CONSTRAINT fk_o_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_ext_long - ADD CONSTRAINT fk_object_ext_long FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_object_ext_long FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_long - ADD CONSTRAINT fk_o_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_ext_poly - ADD CONSTRAINT fk_o_ext_poly_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_o_ext_poly_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_poly - ADD CONSTRAINT fk_o_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_ext_reference - ADD CONSTRAINT fk_o_ext_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_o_ext_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_reference - ADD CONSTRAINT fk_o_ext_reference_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_reference_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_ext_string - ADD CONSTRAINT fk_object_ext_string FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_object_ext_string FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_object_ext_string - ADD CONSTRAINT fk_o_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); + ADD CONSTRAINT fk_o_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item; ALTER TABLE m_object_subtype - ADD CONSTRAINT fk_object_subtype FOREIGN KEY (object_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_object_subtype FOREIGN KEY (object_oid) REFERENCES m_object; ALTER TABLE m_object_text_info - ADD CONSTRAINT fk_object_text_info_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_object_text_info_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_operation_execution - ADD CONSTRAINT fk_op_exec_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_op_exec_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_org_closure - ADD CONSTRAINT fk_ancestor FOREIGN KEY (ancestor_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_ancestor FOREIGN KEY (ancestor_oid) REFERENCES m_object; ALTER TABLE m_org_closure - ADD CONSTRAINT fk_descendant FOREIGN KEY (descendant_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_descendant FOREIGN KEY (descendant_oid) REFERENCES m_object; ALTER TABLE m_org_org_type - ADD CONSTRAINT fk_org_org_type FOREIGN KEY (org_oid) REFERENCES m_org (oid); + ADD CONSTRAINT fk_org_org_type FOREIGN KEY (org_oid) REFERENCES m_org; ALTER TABLE m_reference - ADD CONSTRAINT fk_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_service_type - ADD CONSTRAINT fk_service_type FOREIGN KEY (service_oid) REFERENCES m_service (oid); + ADD CONSTRAINT fk_service_type FOREIGN KEY (service_oid) REFERENCES m_service; ALTER TABLE m_shadow - ADD CONSTRAINT fk_shadow FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_shadow FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_task - ADD CONSTRAINT fk_task FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_task FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_task_dependent - ADD CONSTRAINT fk_task_dependent FOREIGN KEY (task_oid) REFERENCES m_task (oid); + ADD CONSTRAINT fk_task_dependent FOREIGN KEY (task_oid) REFERENCES m_task; ALTER TABLE m_user_employee_type - ADD CONSTRAINT fk_user_employee_type FOREIGN KEY (user_oid) REFERENCES m_user (oid); + ADD CONSTRAINT fk_user_employee_type FOREIGN KEY (user_oid) REFERENCES m_user; ALTER TABLE m_user_organization - ADD CONSTRAINT fk_user_organization FOREIGN KEY (user_oid) REFERENCES m_user (oid); + ADD CONSTRAINT fk_user_organization FOREIGN KEY (user_oid) REFERENCES m_user; ALTER TABLE m_user_organizational_unit - ADD CONSTRAINT fk_user_org_unit FOREIGN KEY (user_oid) REFERENCES m_user (oid); + ADD CONSTRAINT fk_user_org_unit FOREIGN KEY (user_oid) REFERENCES m_user; ALTER TABLE m_abstract_role - ADD CONSTRAINT fk_abstract_role FOREIGN KEY (oid) REFERENCES m_focus (oid); + ADD CONSTRAINT fk_abstract_role FOREIGN KEY (oid) REFERENCES m_focus; ALTER TABLE m_case - ADD CONSTRAINT fk_case FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_case FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_connector - ADD CONSTRAINT fk_connector FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_connector FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_connector_host - ADD CONSTRAINT fk_connector_host FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_connector_host FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_focus - ADD CONSTRAINT fk_focus FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_focus FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_form - ADD CONSTRAINT fk_form FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_form FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_function_library - ADD CONSTRAINT fk_function_library FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_function_library FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_generic_object - ADD CONSTRAINT fk_generic_object FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_generic_object FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_lookup_table - ADD CONSTRAINT fk_lookup_table FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_lookup_table FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_lookup_table_row - ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table (oid); + ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table; ALTER TABLE m_node - ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object; +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_object_template - ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_org - ADD CONSTRAINT fk_org FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); + ADD CONSTRAINT fk_org FOREIGN KEY (oid) REFERENCES m_abstract_role; ALTER TABLE m_report - ADD CONSTRAINT fk_report FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_report FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_report_output - ADD CONSTRAINT fk_report_output FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_report_output FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_resource - ADD CONSTRAINT fk_resource FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_resource FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_role - ADD CONSTRAINT fk_role FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); + ADD CONSTRAINT fk_role FOREIGN KEY (oid) REFERENCES m_abstract_role; ALTER TABLE m_security_policy - ADD CONSTRAINT fk_security_policy FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_security_policy FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_sequence - ADD CONSTRAINT fk_sequence FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_sequence FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_service - ADD CONSTRAINT fk_service FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); + ADD CONSTRAINT fk_service FOREIGN KEY (oid) REFERENCES m_abstract_role; ALTER TABLE m_system_configuration - ADD CONSTRAINT fk_system_configuration FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_system_configuration FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_trigger - ADD CONSTRAINT fk_trigger_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_trigger_owner FOREIGN KEY (owner_oid) REFERENCES m_object; ALTER TABLE m_user - ADD CONSTRAINT fk_user FOREIGN KEY (oid) REFERENCES m_focus (oid); + ADD CONSTRAINT fk_user FOREIGN KEY (oid) REFERENCES m_focus; ALTER TABLE m_value_policy - ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object (oid); + ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object; -commit; \ No newline at end of file +COMMIT; diff --git a/config/sql/_all/h2-upgrade-3.7-3.8.sql b/config/sql/_all/h2-upgrade-3.7-3.8.sql deleted file mode 100644 index 1cdde2c3b66..00000000000 --- a/config/sql/_all/h2-upgrade-3.7-3.8.sql +++ /dev/null @@ -1,8 +0,0 @@ -ALTER TABLE m_audit_event - ALTER COLUMN id BIGINT AUTO_INCREMENT; -ALTER TABLE m_audit_prop_value - ALTER COLUMN id BIGINT AUTO_INCREMENT; -ALTER TABLE m_audit_ref_value - ALTER COLUMN id BIGINT AUTO_INCREMENT; - -DROP TABLE m_exclusion; \ No newline at end of file diff --git a/config/sql/_all/h2-upgrade-3.8-3.9.sql b/config/sql/_all/h2-upgrade-3.8-3.9.sql new file mode 100644 index 00000000000..9206a030de1 --- /dev/null +++ b/config/sql/_all/h2-upgrade-3.8-3.9.sql @@ -0,0 +1,14 @@ +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +); + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; diff --git a/config/sql/_all/mysql-upgrade-3.7-3.8-utf8mb4.sql b/config/sql/_all/mysql-3.9-all-utf8mb4.sql similarity index 63% rename from config/sql/_all/mysql-upgrade-3.7-3.8-utf8mb4.sql rename to config/sql/_all/mysql-3.9-all-utf8mb4.sql index 876d35027dd..47043ca019e 100644 --- a/config/sql/_all/mysql-upgrade-3.7-3.8-utf8mb4.sql +++ b/config/sql/_all/mysql-3.9-all-utf8mb4.sql @@ -1,89 +1,4 @@ -DROP TABLE m_acc_cert_definition; -DROP TABLE m_acc_cert_wi_reference; -DROP TABLE m_acc_cert_wi; -DROP TABLE m_acc_cert_case; -DROP TABLE m_acc_cert_campaign; -DROP TABLE m_assignment_ext_boolean; -DROP TABLE m_assignment_ext_date; -DROP TABLE m_assignment_ext_long; -DROP TABLE m_assignment_ext_poly; -DROP TABLE m_assignment_ext_reference; -DROP TABLE m_assignment_ext_string; -DROP TABLE m_assignment_extension; -DROP TABLE m_assignment_policy_situation; -DROP TABLE m_assignment_reference; -DROP TABLE m_assignment; --- Don't touch audit tables --- DROP TABLE m_audit_delta; --- DROP TABLE m_audit_item; --- DROP TABLE m_audit_prop_value; --- DROP TABLE m_audit_ref_value; --- DROP TABLE m_audit_event; -DROP TABLE m_case; -DROP TABLE m_connector_host; -DROP TABLE m_connector_target_system; -DROP TABLE m_connector; -DROP TABLE m_exclusion; -DROP TABLE m_focus_photo; -DROP TABLE m_focus_policy_situation; -DROP TABLE m_form; -DROP TABLE m_function_library; -DROP TABLE m_generic_object; -DROP TABLE m_lookup_table_row; -DROP TABLE m_lookup_table; -DROP TABLE m_node; -DROP TABLE m_object_ext_boolean; -DROP TABLE m_object_ext_date; -DROP TABLE m_object_ext_long; -DROP TABLE m_object_ext_poly; -DROP TABLE m_object_ext_reference; -DROP TABLE m_object_ext_string; -DROP TABLE m_object_template; -DROP TABLE m_object_text_info; -DROP TABLE m_operation_execution; -DROP TABLE m_org_closure; -DROP TABLE m_org_org_type; -DROP TABLE m_org; -DROP TABLE m_reference; -DROP TABLE m_report; -DROP TABLE m_report_output; -DROP TABLE m_resource; -DROP TABLE m_role; -DROP TABLE m_security_policy; -DROP TABLE m_sequence; -DROP TABLE m_service_type; -DROP TABLE m_service; -DROP TABLE m_abstract_role; -DROP TABLE m_shadow; -DROP TABLE m_system_configuration; -DROP TABLE m_task_dependent; -DROP TABLE m_task; -DROP TABLE m_trigger; -DROP TABLE m_user_employee_type; -DROP TABLE m_user_organization; -DROP TABLE m_user_organizational_unit; -DROP TABLE m_value_policy; -DROP TABLE m_user; -DROP TABLE m_focus; -DROP TABLE m_object; - -SET FOREIGN_KEY_CHECKS = 0; - -ALTER TABLE m_audit_event - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; -ALTER TABLE m_audit_prop_value - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; -ALTER TABLE m_audit_ref_value - MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT; - -SET FOREIGN_KEY_CHECKS = 1; - -ALTER TABLE m_audit_delta - MODIFY COLUMN delta LONGBLOB, - MODIFY COLUMN fullResult LONGBLOB; - -ALTER TABLE m_audit_event - ADD COLUMN targetOwnerType INTEGER; +-- remove iAncestor and iDescendant index, they are the same as FK for that fields CREATE TABLE m_acc_cert_campaign ( definitionRef_relation VARCHAR(157), @@ -327,6 +242,88 @@ CREATE TABLE m_assignment_reference ( DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin ENGINE = InnoDB; +CREATE TABLE m_audit_delta ( + checksum VARCHAR(32) NOT NULL, + record_id BIGINT NOT NULL, + delta LONGBLOB, + deltaOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + deltaType INTEGER, + fullResult LONGBLOB, + objectName_norm VARCHAR(255), + objectName_orig VARCHAR(255), + resourceName_norm VARCHAR(255), + resourceName_orig VARCHAR(255), + resourceOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + status INTEGER, + PRIMARY KEY (record_id, checksum) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_event ( + id BIGINT NOT NULL AUTO_INCREMENT, + attorneyName VARCHAR(255), + attorneyOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + channel VARCHAR(255), + eventIdentifier VARCHAR(255), + eventStage INTEGER, + eventType INTEGER, + hostIdentifier VARCHAR(255), + initiatorName VARCHAR(255), + initiatorOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + initiatorType INTEGER, + message VARCHAR(1024), + nodeIdentifier VARCHAR(255), + outcome INTEGER, + parameter VARCHAR(255), + remoteHostAddress VARCHAR(255), + result VARCHAR(255), + sessionIdentifier VARCHAR(255), + targetName VARCHAR(255), + targetOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + targetOwnerName VARCHAR(255), + targetOwnerOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + targetOwnerType INTEGER, + targetType INTEGER, + taskIdentifier VARCHAR(255), + taskOID VARCHAR(255) CHARSET utf8 COLLATE utf8_bin , + timestampValue DATETIME(6), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_item ( + changedItemPath VARCHAR(255) CHARSET utf8 COLLATE utf8_bin NOT NULL, + record_id BIGINT NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_prop_value ( + id BIGINT NOT NULL AUTO_INCREMENT, + name VARCHAR(255), + record_id BIGINT, + value VARCHAR(1024), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_ref_value ( + id BIGINT NOT NULL AUTO_INCREMENT, + name VARCHAR(255), + oid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + record_id BIGINT, + targetName_norm VARCHAR(255), + targetName_orig VARCHAR(255), + type VARCHAR(255), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; CREATE TABLE m_case_wi ( id INTEGER NOT NULL, owner_oid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin NOT NULL, @@ -788,6 +785,15 @@ CREATE TABLE m_node ( DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin ENGINE = InnoDB; +CREATE TABLE m_object_collection ( + name_norm VARCHAR(191), + name_orig VARCHAR(191), + oid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; CREATE TABLE m_object_template ( name_norm VARCHAR(191), name_orig VARCHAR(191), @@ -990,8 +996,16 @@ CREATE INDEX iAssignmentReferenceTargetOid ON m_assignment_reference (targetOid); CREATE INDEX iAuditDeltaRecordId ON m_audit_delta (record_id); +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue); +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath); CREATE INDEX iAuditItemRecordId ON m_audit_item (record_id); +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id); +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id); CREATE INDEX iCaseWorkItemRefTargetOid ON m_case_wi_reference (targetOid); @@ -1121,6 +1135,10 @@ CREATE INDEX iNodeNameOrig ON m_node (name_orig); ALTER TABLE m_node ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); CREATE INDEX iObjectTemplateNameOrig ON m_object_template (name_orig); ALTER TABLE m_object_template @@ -1223,6 +1241,14 @@ ALTER TABLE m_assignment_policy_situation ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment (owner_oid, id); ALTER TABLE m_assignment_reference ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment (owner_oid, id); +ALTER TABLE m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event (id); ALTER TABLE m_case_wi ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case (oid); ALTER TABLE m_case_wi_reference @@ -1307,6 +1333,8 @@ ALTER TABLE m_lookup_table_row ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table (oid); ALTER TABLE m_node ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object (oid); ALTER TABLE m_object_template ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object (oid); ALTER TABLE m_org @@ -1334,4 +1362,778 @@ ALTER TABLE m_user ALTER TABLE m_value_policy ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object (oid); +# By: Ron Cordell - roncordell +# I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM. + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +CREATE TABLE QRTZ_JOB_DETAILS( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(191) NOT NULL, + JOB_GROUP VARCHAR(191) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + JOB_NAME VARCHAR(191) NOT NULL, + JOB_GROUP VARCHAR(191) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT(13) NULL, + PREV_FIRE_TIME BIGINT(13) NULL, + PRIORITY INTEGER NULL, + EXECUTION_GROUP VARCHAR(200) NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT(13) NOT NULL, + END_TIME BIGINT(13) NULL, + CALENDAR_NAME VARCHAR(191) NULL, + MISFIRE_INSTR SMALLINT(2) NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + REPEAT_COUNT BIGINT(7) NOT NULL, + REPEAT_INTERVAL BIGINT(12) NOT NULL, + TIMES_TRIGGERED BIGINT(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_CRON_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_BLOB_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_CALENDARS ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(191) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_FIRED_TRIGGERS ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(191) NOT NULL, + TRIGGER_GROUP VARCHAR(191) NOT NULL, + INSTANCE_NAME VARCHAR(191) NOT NULL, + FIRED_TIME BIGINT(13) NOT NULL, + SCHED_TIME BIGINT(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + EXECUTION_GROUP VARCHAR(200) NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(191) NULL, + JOB_GROUP VARCHAR(191) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_SCHEDULER_STATE ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(191) NOT NULL, + LAST_CHECKIN_TIME BIGINT(13) NOT NULL, + CHECKIN_INTERVAL BIGINT(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE TABLE QRTZ_LOCKS ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME)) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); + +create table ACT_GE_PROPERTY ( + NAME_ varchar(64), + VALUE_ varchar(300), + REV_ integer, + primary key (NAME_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +insert into ACT_GE_PROPERTY +values ('schema.version', '5.22.0.0', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(5.22.0.0)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + DEPLOYMENT_ID_ varchar(64), + BYTES_ LONGBLOB, + GENERATED_ TINYINT, + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RE_DEPLOYMENT ( + ID_ varchar(64), + NAME_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + DEPLOY_TIME_ timestamp(3) NULL, + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RE_MODEL ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + KEY_ varchar(255), + CATEGORY_ varchar(255), + CREATE_TIME_ timestamp(3) null, + LAST_UPDATE_TIME_ timestamp(3) null, + VERSION_ integer, + META_INFO_ varchar(4000), + DEPLOYMENT_ID_ varchar(64), + EDITOR_SOURCE_VALUE_ID_ varchar(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RU_EXECUTION ( + ID_ varchar(64), + REV_ integer, + PROC_INST_ID_ varchar(64), + BUSINESS_KEY_ varchar(191), + PARENT_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + SUPER_EXEC_ varchar(64), + ACT_ID_ varchar(255), + IS_ACTIVE_ TINYINT, + IS_CONCURRENT_ TINYINT, + IS_SCOPE_ TINYINT, + IS_EVENT_SCOPE_ TINYINT, + SUSPENSION_STATE_ integer, + CACHED_ENT_STATE_ integer, + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + LOCK_TIME_ timestamp(3) NULL, + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RU_JOB ( + ID_ varchar(64) NOT NULL, + REV_ integer, + TYPE_ varchar(255) NOT NULL, + LOCK_EXP_TIME_ timestamp(3) NULL, + LOCK_OWNER_ varchar(255), + EXCLUSIVE_ boolean, + EXECUTION_ID_ varchar(64), + PROCESS_INSTANCE_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + RETRIES_ integer, + EXCEPTION_STACK_ID_ varchar(64), + EXCEPTION_MSG_ varchar(4000), + DUEDATE_ timestamp(3) NULL, + REPEAT_ varchar(255), + HANDLER_TYPE_ varchar(255), + HANDLER_CFG_ varchar(4000), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RE_PROCDEF ( + ID_ varchar(64) not null, + REV_ integer, + CATEGORY_ varchar(255), + NAME_ varchar(255), + KEY_ varchar(191) not null, + VERSION_ integer not null, + DEPLOYMENT_ID_ varchar(64), + RESOURCE_NAME_ varchar(4000), + DGRM_RESOURCE_NAME_ varchar(4000), + DESCRIPTION_ varchar(4000), + HAS_START_FORM_KEY_ TINYINT, + HAS_GRAPHICAL_NOTATION_ TINYINT, + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(191) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RU_TASK ( + ID_ varchar(64), + REV_ integer, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_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(3) NULL, + DUE_DATE_ datetime(3), + CATEGORY_ varchar(255), + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(255) default '', + FORM_KEY_ varchar(255), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_RU_IDENTITYLINK ( + ID_ varchar(64), + REV_ integer, + GROUP_ID_ varchar(191), + TYPE_ varchar(255), + USER_ID_ varchar(191), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +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), + TASK_ID_ varchar(64), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +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(64), + CONFIGURATION_ varchar(191), + CREATED_ timestamp(3) not null DEFAULT CURRENT_TIMESTAMP(3), + PROC_DEF_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_EVT_LOG ( + LOG_NR_ bigint auto_increment, + TYPE_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + TIME_STAMP_ timestamp(3) not null, + USER_ID_ varchar(255), + DATA_ LONGBLOB, + LOCK_OWNER_ varchar(255), + LOCK_TIME_ timestamp(3) null, + IS_PROCESSED_ tinyint default 0, + primary key (LOG_NR_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_PROCDEF_INFO ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + REV_ integer, + INFO_JSON_ID_ varchar(64), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +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_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_ID_); + +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL +foreign key (DEPLOYMENT_ID_) +references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF +unique (KEY_,VERSION_, TENANT_ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST +foreign key (PROC_INST_ID_) +references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade; + +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_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST +foreign key (PROC_INST_ID_) +references ACT_RU_EXECUTION (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_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE +foreign key (EDITOR_SOURCE_VALUE_ID_) +references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA +foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) +references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT +foreign key (DEPLOYMENT_ID_) +references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA +foreign key (INFO_JSON_ID_) +references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF +foreign key (PROC_DEF_ID_) +references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF +unique (PROC_DEF_ID_); + +create table ACT_HI_PROCINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64) not null, + BUSINESS_KEY_ varchar(191), + PROC_DEF_ID_ varchar(64) not null, + START_TIME_ datetime(3) not null, + END_TIME_ datetime(3), + DURATION_ bigint, + START_USER_ID_ varchar(255), + START_ACT_ID_ varchar(255), + END_ACT_ID_ varchar(255), + SUPER_PROCESS_INSTANCE_ID_ varchar(64), + DELETE_REASON_ varchar(4000), + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + primary key (ID_), + unique (PROC_INST_ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_ACTINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64) not null, + EXECUTION_ID_ varchar(64) not null, + ACT_ID_ varchar(191) not null, + TASK_ID_ varchar(64), + CALL_PROC_INST_ID_ varchar(64), + ACT_NAME_ varchar(255), + ACT_TYPE_ varchar(255) not null, + ASSIGNEE_ varchar(255), + START_TIME_ datetime(3) not null, + END_TIME_ datetime(3), + DURATION_ bigint, + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_TASKINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64), + TASK_DEF_KEY_ varchar(255), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + NAME_ varchar(255), + PARENT_TASK_ID_ varchar(64), + DESCRIPTION_ varchar(4000), + OWNER_ varchar(255), + ASSIGNEE_ varchar(255), + START_TIME_ datetime(3) not null, + CLAIM_TIME_ datetime(3), + END_TIME_ datetime(3), + DURATION_ bigint, + DELETE_REASON_ varchar(4000), + PRIORITY_ integer, + DUE_DATE_ datetime(3), + FORM_KEY_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_VARINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + NAME_ varchar(191) not null, + VAR_TYPE_ varchar(100), + REV_ integer, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + CREATE_TIME_ datetime(3), + LAST_UPDATED_TIME_ datetime(3), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_DETAIL ( + ID_ varchar(64) not null, + TYPE_ varchar(255) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + NAME_ varchar(191) not null, + VAR_TYPE_ varchar(255), + REV_ integer, + TIME_ datetime(3) not null, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_COMMENT ( + ID_ varchar(64) not null, + TYPE_ varchar(255), + TIME_ datetime(3) not null, + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + ACTION_ varchar(255), + MESSAGE_ varchar(4000), + FULL_MSG_ LONGBLOB, + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +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), + PROC_INST_ID_ varchar(64), + URL_ varchar(4000), + CONTENT_ID_ varchar(64), + TIME_ datetime(3), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_HI_IDENTITYLINK ( + ID_ varchar(64), + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(191), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + + +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_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +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_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_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_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); + +create table ACT_ID_GROUP ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + TYPE_ varchar(255), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ varchar(64), + GROUP_ID_ varchar(64), + primary key (USER_ID_, GROUP_ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_ID_USER ( + ID_ varchar(64), + REV_ integer, + FIRST_ varchar(255), + LAST_ varchar(255), + EMAIL_ varchar(255), + PWD_ varchar(255), + PICTURE_ID_ varchar(64), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +create table ACT_ID_INFO ( + ID_ varchar(64), + REV_ integer, + USER_ID_ varchar(64), + TYPE_ varchar(64), + KEY_ varchar(255), + VALUE_ varchar(255), + PASSWORD_ LONGBLOB, + PARENT_ID_ varchar(255), + primary key (ID_) +) DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +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_); + commit; diff --git a/config/sql/_all/mysql-3.9-all.sql b/config/sql/_all/mysql-3.9-all.sql new file mode 100644 index 00000000000..c1c35d9376d --- /dev/null +++ b/config/sql/_all/mysql-3.9-all.sql @@ -0,0 +1,2067 @@ +-- remove iAncestor and iDescendant index, they are the same as FK for that fields + +CREATE TABLE m_acc_cert_campaign ( + definitionRef_relation VARCHAR(157), + definitionRef_targetOid VARCHAR(36), + definitionRef_type INTEGER, + endTimestamp DATETIME(6), + handlerUri VARCHAR(255), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + ownerRef_relation VARCHAR(157), + ownerRef_targetOid VARCHAR(36), + ownerRef_type INTEGER, + stageNumber INTEGER, + startTimestamp DATETIME(6), + state INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_acc_cert_case ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + administrativeStatus INTEGER, + archiveTimestamp DATETIME(6), + disableReason VARCHAR(255), + disableTimestamp DATETIME(6), + effectiveStatus INTEGER, + enableTimestamp DATETIME(6), + validFrom DATETIME(6), + validTo DATETIME(6), + validityChangeTimestamp DATETIME(6), + validityStatus INTEGER, + currentStageOutcome VARCHAR(255), + fullObject LONGBLOB, + objectRef_relation VARCHAR(157), + objectRef_targetOid VARCHAR(36), + objectRef_type INTEGER, + orgRef_relation VARCHAR(157), + orgRef_targetOid VARCHAR(36), + orgRef_type INTEGER, + outcome VARCHAR(255), + remediedTimestamp DATETIME(6), + reviewDeadline DATETIME(6), + reviewRequestedTimestamp DATETIME(6), + stageNumber INTEGER, + targetRef_relation VARCHAR(157), + targetRef_targetOid VARCHAR(36), + targetRef_type INTEGER, + tenantRef_relation VARCHAR(157), + tenantRef_targetOid VARCHAR(36), + tenantRef_type INTEGER, + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_acc_cert_definition ( + handlerUri VARCHAR(255), + lastCampaignClosedTimestamp DATETIME(6), + lastCampaignStartedTimestamp DATETIME(6), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + ownerRef_relation VARCHAR(157), + ownerRef_targetOid VARCHAR(36), + ownerRef_type INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_acc_cert_wi ( + id INTEGER NOT NULL, + owner_id INTEGER NOT NULL, + owner_owner_oid VARCHAR(36) NOT NULL, + closeTimestamp DATETIME(6), + outcome VARCHAR(255), + outputChangeTimestamp DATETIME(6), + performerRef_relation VARCHAR(157), + performerRef_targetOid VARCHAR(36), + performerRef_type INTEGER, + stageNumber INTEGER, + PRIMARY KEY (owner_owner_oid, owner_id, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_acc_cert_wi_reference ( + owner_id INTEGER NOT NULL, + owner_owner_id INTEGER NOT NULL, + owner_owner_owner_oid VARCHAR(36) NOT NULL, + relation VARCHAR(157) NOT NULL, + targetOid VARCHAR(36) NOT NULL, + targetType INTEGER, + PRIMARY KEY (owner_owner_owner_oid, owner_owner_id, owner_id, relation, targetOid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + administrativeStatus INTEGER, + archiveTimestamp DATETIME(6), + disableReason VARCHAR(255), + disableTimestamp DATETIME(6), + effectiveStatus INTEGER, + enableTimestamp DATETIME(6), + validFrom DATETIME(6), + validTo DATETIME(6), + validityChangeTimestamp DATETIME(6), + validityStatus INTEGER, + assignmentOwner INTEGER, + createChannel VARCHAR(255), + createTimestamp DATETIME(6), + creatorRef_relation VARCHAR(157), + creatorRef_targetOid VARCHAR(36), + creatorRef_type INTEGER, + lifecycleState VARCHAR(255), + modifierRef_relation VARCHAR(157), + modifierRef_targetOid VARCHAR(36), + modifierRef_type INTEGER, + modifyChannel VARCHAR(255), + modifyTimestamp DATETIME(6), + orderValue INTEGER, + orgRef_relation VARCHAR(157), + orgRef_targetOid VARCHAR(36), + orgRef_type INTEGER, + resourceRef_relation VARCHAR(157), + resourceRef_targetOid VARCHAR(36), + resourceRef_type INTEGER, + targetRef_relation VARCHAR(157), + targetRef_targetOid VARCHAR(36), + targetRef_type INTEGER, + tenantRef_relation VARCHAR(157), + tenantRef_targetOid VARCHAR(36), + tenantRef_type INTEGER, + extId INTEGER, + extOid VARCHAR(36), + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_boolean ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + booleanValue BIT NOT NULL, + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, booleanValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_date ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + dateValue DATETIME(6) NOT NULL, + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, dateValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_long ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + longValue BIGINT NOT NULL, + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, longValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_poly ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + orig VARCHAR(255) NOT NULL, + norm VARCHAR(255), + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, orig) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_reference ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + targetoid VARCHAR(36) NOT NULL, + relation VARCHAR(157), + targetType INTEGER, + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, targetoid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_ext_string ( + item_id INTEGER NOT NULL, + anyContainer_owner_id INTEGER NOT NULL, + anyContainer_owner_owner_oid VARCHAR(36) NOT NULL, + stringValue VARCHAR(255) NOT NULL, + PRIMARY KEY (anyContainer_owner_owner_oid, anyContainer_owner_id, item_id, stringValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_extension ( + owner_id INTEGER NOT NULL, + owner_owner_oid VARCHAR(36) NOT NULL, + booleansCount SMALLINT, + datesCount SMALLINT, + longsCount SMALLINT, + polysCount SMALLINT, + referencesCount SMALLINT, + stringsCount SMALLINT, + PRIMARY KEY (owner_owner_oid, owner_id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_policy_situation ( + assignment_id INTEGER NOT NULL, + assignment_oid VARCHAR(36) NOT NULL, + policySituation VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_assignment_reference ( + owner_id INTEGER NOT NULL, + owner_owner_oid VARCHAR(36) NOT NULL, + reference_type INTEGER NOT NULL, + relation VARCHAR(157) NOT NULL, + targetOid VARCHAR(36) NOT NULL, + targetType INTEGER, + PRIMARY KEY (owner_owner_oid, owner_id, reference_type, relation, targetOid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_delta ( + checksum VARCHAR(32) NOT NULL, + record_id BIGINT NOT NULL, + delta LONGBLOB, + deltaOid VARCHAR(36), + deltaType INTEGER, + fullResult LONGBLOB, + objectName_norm VARCHAR(255), + objectName_orig VARCHAR(255), + resourceName_norm VARCHAR(255), + resourceName_orig VARCHAR(255), + resourceOid VARCHAR(36), + status INTEGER, + PRIMARY KEY (record_id, checksum) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_event ( + id BIGINT NOT NULL AUTO_INCREMENT, + attorneyName VARCHAR(255), + attorneyOid VARCHAR(36), + channel VARCHAR(255), + eventIdentifier VARCHAR(255), + eventStage INTEGER, + eventType INTEGER, + hostIdentifier VARCHAR(255), + initiatorName VARCHAR(255), + initiatorOid VARCHAR(36), + initiatorType INTEGER, + message VARCHAR(1024), + nodeIdentifier VARCHAR(255), + outcome INTEGER, + parameter VARCHAR(255), + remoteHostAddress VARCHAR(255), + result VARCHAR(255), + sessionIdentifier VARCHAR(255), + targetName VARCHAR(255), + targetOid VARCHAR(36), + targetOwnerName VARCHAR(255), + targetOwnerOid VARCHAR(36), + targetOwnerType INTEGER, + targetType INTEGER, + taskIdentifier VARCHAR(255), + taskOID VARCHAR(255), + timestampValue DATETIME(6), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_item ( + changedItemPath VARCHAR(255) NOT NULL, + record_id BIGINT NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_prop_value ( + id BIGINT NOT NULL AUTO_INCREMENT, + name VARCHAR(255), + record_id BIGINT, + value VARCHAR(1024), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_audit_ref_value ( + id BIGINT NOT NULL AUTO_INCREMENT, + name VARCHAR(255), + oid VARCHAR(36), + record_id BIGINT, + targetName_norm VARCHAR(255), + targetName_orig VARCHAR(255), + type VARCHAR(255), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_case_wi ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + closeTimestamp DATETIME(6), + deadline DATETIME(6), + originalAssigneeRef_relation VARCHAR(157), + originalAssigneeRef_targetOid VARCHAR(36), + originalAssigneeRef_type INTEGER, + outcome VARCHAR(255), + performerRef_relation VARCHAR(157), + performerRef_targetOid VARCHAR(36), + performerRef_type INTEGER, + stageNumber INTEGER, + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_case_wi_reference ( + owner_id INTEGER NOT NULL, + owner_owner_oid VARCHAR(36) NOT NULL, + relation VARCHAR(157) NOT NULL, + targetOid VARCHAR(36) NOT NULL, + targetType INTEGER, + PRIMARY KEY (owner_owner_oid, owner_id, targetOid, relation) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_connector_target_system ( + connector_oid VARCHAR(36) NOT NULL, + targetSystemType VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_ext_item ( + id INTEGER NOT NULL AUTO_INCREMENT, + kind INTEGER, + itemName VARCHAR(157), + itemType VARCHAR(157), + PRIMARY KEY (id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_focus_photo ( + owner_oid VARCHAR(36) NOT NULL, + photo LONGBLOB, + PRIMARY KEY (owner_oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_focus_policy_situation ( + focus_oid VARCHAR(36) NOT NULL, + policySituation VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object ( + oid VARCHAR(36) NOT NULL, + booleansCount SMALLINT, + createChannel VARCHAR(255), + createTimestamp DATETIME(6), + creatorRef_relation VARCHAR(157), + creatorRef_targetOid VARCHAR(36), + creatorRef_type INTEGER, + datesCount SMALLINT, + fullObject LONGBLOB, + lifecycleState VARCHAR(255), + longsCount SMALLINT, + modifierRef_relation VARCHAR(157), + modifierRef_targetOid VARCHAR(36), + modifierRef_type INTEGER, + modifyChannel VARCHAR(255), + modifyTimestamp DATETIME(6), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + objectTypeClass INTEGER, + polysCount SMALLINT, + referencesCount SMALLINT, + stringsCount SMALLINT, + tenantRef_relation VARCHAR(157), + tenantRef_targetOid VARCHAR(36), + tenantRef_type INTEGER, + version INTEGER NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_boolean ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + booleanValue BIT NOT NULL, + PRIMARY KEY (owner_oid, ownerType, item_id, booleanValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_date ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + dateValue DATETIME(6) NOT NULL, + PRIMARY KEY (owner_oid, ownerType, item_id, dateValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_long ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + longValue BIGINT NOT NULL, + PRIMARY KEY (owner_oid, ownerType, item_id, longValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_poly ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + orig VARCHAR(255) NOT NULL, + norm VARCHAR(255), + PRIMARY KEY (owner_oid, ownerType, item_id, orig) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_reference ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + targetoid VARCHAR(36) NOT NULL, + relation VARCHAR(157), + targetType INTEGER, + PRIMARY KEY (owner_oid, ownerType, item_id, targetoid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_ext_string ( + item_id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + ownerType INTEGER NOT NULL, + stringValue VARCHAR(255) NOT NULL, + PRIMARY KEY (owner_oid, ownerType, item_id, stringValue) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_subtype ( + object_oid VARCHAR(36) NOT NULL, + subtype VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_text_info ( + owner_oid VARCHAR(36) NOT NULL, + text VARCHAR(255) NOT NULL, + PRIMARY KEY (owner_oid, text) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_operation_execution ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + initiatorRef_relation VARCHAR(157), + initiatorRef_targetOid VARCHAR(36), + initiatorRef_type INTEGER, + status INTEGER, + taskRef_relation VARCHAR(157), + taskRef_targetOid VARCHAR(36), + taskRef_type INTEGER, + timestampValue DATETIME(6), + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_org_closure ( + ancestor_oid VARCHAR(36) NOT NULL, + descendant_oid VARCHAR(36) NOT NULL, + val INTEGER, + PRIMARY KEY (ancestor_oid, descendant_oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_org_org_type ( + org_oid VARCHAR(36) NOT NULL, + orgType VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_reference ( + owner_oid VARCHAR(36) NOT NULL, + reference_type INTEGER NOT NULL, + relation VARCHAR(157) NOT NULL, + targetOid VARCHAR(36) NOT NULL, + targetType INTEGER, + PRIMARY KEY (owner_oid, reference_type, relation, targetOid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_service_type ( + service_oid VARCHAR(36) NOT NULL, + serviceType VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_shadow ( + attemptNumber INTEGER, + dead BIT, + exist BIT, + failedOperationType INTEGER, + fullSynchronizationTimestamp DATETIME(6), + intent VARCHAR(255), + kind INTEGER, + name_norm VARCHAR(255), + name_orig VARCHAR(255), + objectClass VARCHAR(157), + pendingOperationCount INTEGER, + resourceRef_relation VARCHAR(157), + resourceRef_targetOid VARCHAR(36), + resourceRef_type INTEGER, + status INTEGER, + synchronizationSituation INTEGER, + synchronizationTimestamp DATETIME(6), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_task ( + binding INTEGER, + canRunOnNode VARCHAR(255), + category VARCHAR(255), + completionTimestamp DATETIME(6), + executionStatus INTEGER, + fullResult LONGBLOB, + handlerUri VARCHAR(255), + lastRunFinishTimestamp DATETIME(6), + lastRunStartTimestamp DATETIME(6), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + node VARCHAR(255), + objectRef_relation VARCHAR(157), + objectRef_targetOid VARCHAR(36), + objectRef_type INTEGER, + ownerRef_relation VARCHAR(157), + ownerRef_targetOid VARCHAR(36), + ownerRef_type INTEGER, + parent VARCHAR(255), + recurrence INTEGER, + status INTEGER, + taskIdentifier VARCHAR(255), + threadStopAction INTEGER, + waitingReason INTEGER, + wfEndTimestamp DATETIME(6), + wfObjectRef_relation VARCHAR(157), + wfObjectRef_targetOid VARCHAR(36), + wfObjectRef_type INTEGER, + wfProcessInstanceId VARCHAR(255), + wfRequesterRef_relation VARCHAR(157), + wfRequesterRef_targetOid VARCHAR(36), + wfRequesterRef_type INTEGER, + wfStartTimestamp DATETIME(6), + wfTargetRef_relation VARCHAR(157), + wfTargetRef_targetOid VARCHAR(36), + wfTargetRef_type INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_task_dependent ( + task_oid VARCHAR(36) NOT NULL, + dependent VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_user_employee_type ( + user_oid VARCHAR(36) NOT NULL, + employeeType VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_user_organization ( + user_oid VARCHAR(36) NOT NULL, + norm VARCHAR(255), + orig VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_user_organizational_unit ( + user_oid VARCHAR(36) NOT NULL, + norm VARCHAR(255), + orig VARCHAR(255) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_abstract_role ( + approvalProcess VARCHAR(255), + autoassign_enabled BIT, + displayName_norm VARCHAR(255), + displayName_orig VARCHAR(255), + identifier VARCHAR(255), + ownerRef_relation VARCHAR(157), + ownerRef_targetOid VARCHAR(36), + ownerRef_type INTEGER, + requestable BIT, + riskLevel VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_case ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + objectRef_relation VARCHAR(157), + objectRef_targetOid VARCHAR(36), + objectRef_type INTEGER, + state VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_connector ( + connectorBundle VARCHAR(255), + connectorHostRef_relation VARCHAR(157), + connectorHostRef_targetOid VARCHAR(36), + connectorHostRef_type INTEGER, + connectorType VARCHAR(255), + connectorVersion VARCHAR(255), + framework VARCHAR(255), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_connector_host ( + hostname VARCHAR(255), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + port VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_focus ( + administrativeStatus INTEGER, + archiveTimestamp DATETIME(6), + disableReason VARCHAR(255), + disableTimestamp DATETIME(6), + effectiveStatus INTEGER, + enableTimestamp DATETIME(6), + validFrom DATETIME(6), + validTo DATETIME(6), + validityChangeTimestamp DATETIME(6), + validityStatus INTEGER, + costCenter VARCHAR(255), + emailAddress VARCHAR(255), + hasPhoto BIT DEFAULT FALSE NOT NULL, + locale VARCHAR(255), + locality_norm VARCHAR(255), + locality_orig VARCHAR(255), + preferredLanguage VARCHAR(255), + telephoneNumber VARCHAR(255), + timezone VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_form ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_function_library ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_generic_object ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + objectType VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_lookup_table ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_lookup_table_row ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + row_key VARCHAR(255), + label_norm VARCHAR(255), + label_orig VARCHAR(255), + lastChangeTimestamp DATETIME(6), + row_value VARCHAR(255), + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_node ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + nodeIdentifier VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_object_template ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + type INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_org ( + displayOrder INTEGER, + name_norm VARCHAR(255), + name_orig VARCHAR(255), + tenant BIT, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_report ( + export INTEGER, + name_norm VARCHAR(255), + name_orig VARCHAR(255), + orientation INTEGER, + parent BIT, + useHibernateSession BIT, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_report_output ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + reportRef_relation VARCHAR(157), + reportRef_targetOid VARCHAR(36), + reportRef_type INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_resource ( + administrativeState INTEGER, + connectorRef_relation VARCHAR(157), + connectorRef_targetOid VARCHAR(36), + connectorRef_type INTEGER, + name_norm VARCHAR(255), + name_orig VARCHAR(255), + o16_lastAvailabilityStatus INTEGER, + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_role ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + roleType VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_security_policy ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_sequence ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_service ( + displayOrder INTEGER, + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_system_configuration ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_trigger ( + id INTEGER NOT NULL, + owner_oid VARCHAR(36) NOT NULL, + handlerUri VARCHAR(255), + timestampValue DATETIME(6), + PRIMARY KEY (owner_oid, id) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_user ( + additionalName_norm VARCHAR(255), + additionalName_orig VARCHAR(255), + employeeNumber VARCHAR(255), + familyName_norm VARCHAR(255), + familyName_orig VARCHAR(255), + fullName_norm VARCHAR(255), + fullName_orig VARCHAR(255), + givenName_norm VARCHAR(255), + givenName_orig VARCHAR(255), + honorificPrefix_norm VARCHAR(255), + honorificPrefix_orig VARCHAR(255), + honorificSuffix_norm VARCHAR(255), + honorificSuffix_orig VARCHAR(255), + name_norm VARCHAR(255), + name_orig VARCHAR(255), + nickName_norm VARCHAR(255), + nickName_orig VARCHAR(255), + title_norm VARCHAR(255), + title_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE TABLE m_value_policy ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; +CREATE INDEX iCertCampaignNameOrig + ON m_acc_cert_campaign (name_orig); +ALTER TABLE m_acc_cert_campaign + ADD CONSTRAINT uc_acc_cert_campaign_name UNIQUE (name_norm); +CREATE INDEX iCaseObjectRefTargetOid + ON m_acc_cert_case (objectRef_targetOid); +CREATE INDEX iCaseTargetRefTargetOid + ON m_acc_cert_case (targetRef_targetOid); +CREATE INDEX iCaseTenantRefTargetOid + ON m_acc_cert_case (tenantRef_targetOid); +CREATE INDEX iCaseOrgRefTargetOid + ON m_acc_cert_case (orgRef_targetOid); +CREATE INDEX iCertDefinitionNameOrig + ON m_acc_cert_definition (name_orig); +ALTER TABLE m_acc_cert_definition + ADD CONSTRAINT uc_acc_cert_definition_name UNIQUE (name_norm); +CREATE INDEX iCertWorkItemRefTargetOid + ON m_acc_cert_wi_reference (targetOid); +CREATE INDEX iAssignmentAdministrative + ON m_assignment (administrativeStatus); +CREATE INDEX iAssignmentEffective + ON m_assignment (effectiveStatus); +CREATE INDEX iAssignmentValidFrom + ON m_assignment (validFrom); +CREATE INDEX iAssignmentValidTo + ON m_assignment (validTo); +CREATE INDEX iTargetRefTargetOid + ON m_assignment (targetRef_targetOid); +CREATE INDEX iTenantRefTargetOid + ON m_assignment (tenantRef_targetOid); +CREATE INDEX iOrgRefTargetOid + ON m_assignment (orgRef_targetOid); +CREATE INDEX iResourceRefTargetOid + ON m_assignment (resourceRef_targetOid); +CREATE INDEX iAExtensionBoolean + ON m_assignment_ext_boolean (booleanValue); +CREATE INDEX iAExtensionDate + ON m_assignment_ext_date (dateValue); +CREATE INDEX iAExtensionLong + ON m_assignment_ext_long (longValue); +CREATE INDEX iAExtensionPolyString + ON m_assignment_ext_poly (orig); +CREATE INDEX iAExtensionReference + ON m_assignment_ext_reference (targetoid); +CREATE INDEX iAExtensionString + ON m_assignment_ext_string (stringValue); +CREATE INDEX iAssignmentReferenceTargetOid + ON m_assignment_reference (targetOid); +CREATE INDEX iAuditDeltaRecordId + ON m_audit_delta (record_id); +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue); +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath); +CREATE INDEX iAuditItemRecordId + ON m_audit_item (record_id); +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id); +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id); +CREATE INDEX iCaseWorkItemRefTargetOid + ON m_case_wi_reference (targetOid); + +ALTER TABLE m_ext_item + ADD CONSTRAINT iExtItemDefinition UNIQUE (itemName, itemType, kind); +CREATE INDEX iObjectNameOrig + ON m_object (name_orig); +CREATE INDEX iObjectNameNorm + ON m_object (name_norm); +CREATE INDEX iObjectTypeClass + ON m_object (objectTypeClass); +CREATE INDEX iObjectCreateTimestamp + ON m_object (createTimestamp); +CREATE INDEX iObjectLifecycleState + ON m_object (lifecycleState); +CREATE INDEX iExtensionBoolean + ON m_object_ext_boolean (booleanValue); +CREATE INDEX iExtensionDate + ON m_object_ext_date (dateValue); +CREATE INDEX iExtensionLong + ON m_object_ext_long (longValue); +CREATE INDEX iExtensionPolyString + ON m_object_ext_poly (orig); +CREATE INDEX iExtensionReference + ON m_object_ext_reference (targetoid); +CREATE INDEX iExtensionString + ON m_object_ext_string (stringValue); +CREATE INDEX iOpExecTaskOid + ON m_operation_execution (taskRef_targetOid); +CREATE INDEX iOpExecInitiatorOid + ON m_operation_execution (initiatorRef_targetOid); +CREATE INDEX iOpExecStatus + ON m_operation_execution (status); +CREATE INDEX iOpExecOwnerOid + ON m_operation_execution (owner_oid); +-- create index iAncestor on m_org_closure (ancestor_oid); +-- create index iDescendant on m_org_closure (descendant_oid); +CREATE INDEX iDescendantAncestor + ON m_org_closure (descendant_oid, ancestor_oid); +CREATE INDEX iReferenceTargetTypeRelation + ON m_reference (targetOid, reference_type, relation); +CREATE INDEX iShadowResourceRef + ON m_shadow (resourceRef_targetOid); +CREATE INDEX iShadowDead + ON m_shadow (dead); +CREATE INDEX iShadowKind + ON m_shadow (kind); +CREATE INDEX iShadowIntent + ON m_shadow (intent); +CREATE INDEX iShadowObjectClass + ON m_shadow (objectClass); +CREATE INDEX iShadowFailedOperationType + ON m_shadow (failedOperationType); +CREATE INDEX iShadowSyncSituation + ON m_shadow (synchronizationSituation); +CREATE INDEX iShadowPendingOperationCount + ON m_shadow (pendingOperationCount); +CREATE INDEX iShadowNameOrig + ON m_shadow (name_orig); +CREATE INDEX iShadowNameNorm + ON m_shadow (name_norm); +CREATE INDEX iParent + ON m_task (parent); +CREATE INDEX iTaskWfProcessInstanceId + ON m_task (wfProcessInstanceId); +CREATE INDEX iTaskWfStartTimestamp + ON m_task (wfStartTimestamp); +CREATE INDEX iTaskWfEndTimestamp + ON m_task (wfEndTimestamp); +CREATE INDEX iTaskWfRequesterOid + ON m_task (wfRequesterRef_targetOid); +CREATE INDEX iTaskWfObjectOid + ON m_task (wfObjectRef_targetOid); +CREATE INDEX iTaskWfTargetOid + ON m_task (wfTargetRef_targetOid); +CREATE INDEX iTaskNameOrig + ON m_task (name_orig); +ALTER TABLE m_task + ADD CONSTRAINT uc_task_identifier UNIQUE (taskIdentifier); +CREATE INDEX iAbstractRoleIdentifier + ON m_abstract_role (identifier); +CREATE INDEX iRequestable + ON m_abstract_role (requestable); +CREATE INDEX iAutoassignEnabled + ON m_abstract_role (autoassign_enabled); +CREATE INDEX iCaseNameOrig + ON m_case (name_orig); +ALTER TABLE m_case + ADD CONSTRAINT uc_case_name UNIQUE (name_norm); +CREATE INDEX iConnectorNameOrig + ON m_connector (name_orig); +CREATE INDEX iConnectorNameNorm + ON m_connector (name_norm); +CREATE INDEX iConnectorHostNameOrig + ON m_connector_host (name_orig); +ALTER TABLE m_connector_host + ADD CONSTRAINT uc_connector_host_name UNIQUE (name_norm); +CREATE INDEX iFocusAdministrative + ON m_focus (administrativeStatus); +CREATE INDEX iFocusEffective + ON m_focus (effectiveStatus); +CREATE INDEX iLocality + ON m_focus (locality_orig); +CREATE INDEX iFocusValidFrom + ON m_focus (validFrom); +CREATE INDEX iFocusValidTo + ON m_focus (validTo); +CREATE INDEX iFormNameOrig + ON m_form (name_orig); +ALTER TABLE m_form + ADD CONSTRAINT uc_form_name UNIQUE (name_norm); +CREATE INDEX iFunctionLibraryNameOrig + ON m_function_library (name_orig); +ALTER TABLE m_function_library + ADD CONSTRAINT uc_function_library_name UNIQUE (name_norm); +CREATE INDEX iGenericObjectNameOrig + ON m_generic_object (name_orig); +ALTER TABLE m_generic_object + ADD CONSTRAINT uc_generic_object_name UNIQUE (name_norm); +CREATE INDEX iLookupTableNameOrig + ON m_lookup_table (name_orig); +ALTER TABLE m_lookup_table + ADD CONSTRAINT uc_lookup_name UNIQUE (name_norm); +ALTER TABLE m_lookup_table_row + ADD CONSTRAINT uc_row_key UNIQUE (owner_oid, row_key); +CREATE INDEX iNodeNameOrig + ON m_node (name_orig); +ALTER TABLE m_node + ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); +CREATE INDEX iObjectTemplateNameOrig + ON m_object_template (name_orig); +ALTER TABLE m_object_template + ADD CONSTRAINT uc_object_template_name UNIQUE (name_norm); +CREATE INDEX iDisplayOrder + ON m_org (displayOrder); +CREATE INDEX iOrgNameOrig + ON m_org (name_orig); +ALTER TABLE m_org + ADD CONSTRAINT uc_org_name UNIQUE (name_norm); +CREATE INDEX iReportParent + ON m_report (parent); +CREATE INDEX iReportNameOrig + ON m_report (name_orig); +ALTER TABLE m_report + ADD CONSTRAINT uc_report_name UNIQUE (name_norm); +CREATE INDEX iReportOutputNameOrig + ON m_report_output (name_orig); +CREATE INDEX iReportOutputNameNorm + ON m_report_output (name_norm); +CREATE INDEX iResourceNameOrig + ON m_resource (name_orig); +ALTER TABLE m_resource + ADD CONSTRAINT uc_resource_name UNIQUE (name_norm); +CREATE INDEX iRoleNameOrig + ON m_role (name_orig); +ALTER TABLE m_role + ADD CONSTRAINT uc_role_name UNIQUE (name_norm); +CREATE INDEX iSecurityPolicyNameOrig + ON m_security_policy (name_orig); +ALTER TABLE m_security_policy + ADD CONSTRAINT uc_security_policy_name UNIQUE (name_norm); +CREATE INDEX iSequenceNameOrig + ON m_sequence (name_orig); +ALTER TABLE m_sequence + ADD CONSTRAINT uc_sequence_name UNIQUE (name_norm); +CREATE INDEX iServiceNameOrig + ON m_service (name_orig); +CREATE INDEX iServiceNameNorm + ON m_service (name_norm); +CREATE INDEX iSystemConfigurationNameOrig + ON m_system_configuration (name_orig); +ALTER TABLE m_system_configuration + ADD CONSTRAINT uc_system_configuration_name UNIQUE (name_norm); +CREATE INDEX iTriggerTimestamp + ON m_trigger (timestampValue); +CREATE INDEX iFullName + ON m_user (fullName_orig); +CREATE INDEX iFamilyName + ON m_user (familyName_orig); +CREATE INDEX iGivenName + ON m_user (givenName_orig); +CREATE INDEX iEmployeeNumber + ON m_user (employeeNumber); +CREATE INDEX iUserNameOrig + ON m_user (name_orig); +ALTER TABLE m_user + ADD CONSTRAINT uc_user_name UNIQUE (name_norm); +CREATE INDEX iValuePolicyNameOrig + ON m_value_policy (name_orig); +ALTER TABLE m_value_policy + ADD CONSTRAINT uc_value_policy_name UNIQUE (name_norm); +ALTER TABLE m_acc_cert_campaign + ADD CONSTRAINT fk_acc_cert_campaign FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_acc_cert_case + ADD CONSTRAINT fk_acc_cert_case_owner FOREIGN KEY (owner_oid) REFERENCES m_acc_cert_campaign (oid); +ALTER TABLE m_acc_cert_definition + ADD CONSTRAINT fk_acc_cert_definition FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_acc_cert_wi + ADD CONSTRAINT fk_acc_cert_wi_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_acc_cert_case (owner_oid, id); +ALTER TABLE m_acc_cert_wi_reference + ADD CONSTRAINT fk_acc_cert_wi_ref_owner FOREIGN KEY (owner_owner_owner_oid, owner_owner_id, owner_id) REFERENCES m_acc_cert_wi (owner_owner_oid, owner_id, id); +ALTER TABLE m_assignment + ADD CONSTRAINT fk_assignment_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_assignment_ext_boolean + ADD CONSTRAINT fk_a_ext_boolean_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_boolean + ADD CONSTRAINT fk_a_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_ext_date + ADD CONSTRAINT fk_a_ext_date_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_date + ADD CONSTRAINT fk_a_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_ext_long + ADD CONSTRAINT fk_a_ext_long_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_long + ADD CONSTRAINT fk_a_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_ext_poly + ADD CONSTRAINT fk_a_ext_poly_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_poly + ADD CONSTRAINT fk_a_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_ext_reference + ADD CONSTRAINT fk_a_ext_reference_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_reference + ADD CONSTRAINT fk_a_ext_boolean_reference FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_ext_string + ADD CONSTRAINT fk_a_ext_string_owner FOREIGN KEY (anyContainer_owner_owner_oid, anyContainer_owner_id) REFERENCES m_assignment_extension (owner_owner_oid, owner_id); +ALTER TABLE m_assignment_ext_string + ADD CONSTRAINT fk_a_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_assignment_policy_situation + ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment (owner_oid, id); +ALTER TABLE m_assignment_reference + ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment (owner_oid, id); +ALTER TABLE m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event (id); +ALTER TABLE m_case_wi + ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case (oid); +ALTER TABLE m_case_wi_reference + ADD CONSTRAINT fk_case_wi_reference_owner FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_case_wi (owner_oid, id); +ALTER TABLE m_connector_target_system + ADD CONSTRAINT fk_connector_target_system FOREIGN KEY (connector_oid) REFERENCES m_connector (oid); +ALTER TABLE m_focus_photo + ADD CONSTRAINT fk_focus_photo FOREIGN KEY (owner_oid) REFERENCES m_focus (oid); +ALTER TABLE m_focus_policy_situation + ADD CONSTRAINT fk_focus_policy_situation FOREIGN KEY (focus_oid) REFERENCES m_focus (oid); +ALTER TABLE m_object_ext_boolean + ADD CONSTRAINT fk_o_ext_boolean_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_boolean + ADD CONSTRAINT fk_o_ext_boolean_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_ext_date + ADD CONSTRAINT fk_o_ext_date_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_date + ADD CONSTRAINT fk_o_ext_date_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_ext_long + ADD CONSTRAINT fk_object_ext_long FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_long + ADD CONSTRAINT fk_o_ext_long_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_ext_poly + ADD CONSTRAINT fk_o_ext_poly_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_poly + ADD CONSTRAINT fk_o_ext_poly_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_ext_reference + ADD CONSTRAINT fk_o_ext_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_reference + ADD CONSTRAINT fk_o_ext_reference_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_ext_string + ADD CONSTRAINT fk_object_ext_string FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_ext_string + ADD CONSTRAINT fk_o_ext_string_item FOREIGN KEY (item_id) REFERENCES m_ext_item (id); +ALTER TABLE m_object_subtype + ADD CONSTRAINT fk_object_subtype FOREIGN KEY (object_oid) REFERENCES m_object (oid); +ALTER TABLE m_object_text_info + ADD CONSTRAINT fk_object_text_info_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_operation_execution + ADD CONSTRAINT fk_op_exec_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_org_closure + ADD CONSTRAINT fk_ancestor FOREIGN KEY (ancestor_oid) REFERENCES m_object (oid); +ALTER TABLE m_org_closure + ADD CONSTRAINT fk_descendant FOREIGN KEY (descendant_oid) REFERENCES m_object (oid); +ALTER TABLE m_org_org_type + ADD CONSTRAINT fk_org_org_type FOREIGN KEY (org_oid) REFERENCES m_org (oid); +ALTER TABLE m_reference + ADD CONSTRAINT fk_reference_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_service_type + ADD CONSTRAINT fk_service_type FOREIGN KEY (service_oid) REFERENCES m_service (oid); +ALTER TABLE m_shadow + ADD CONSTRAINT fk_shadow FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_task + ADD CONSTRAINT fk_task FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_task_dependent + ADD CONSTRAINT fk_task_dependent FOREIGN KEY (task_oid) REFERENCES m_task (oid); +ALTER TABLE m_user_employee_type + ADD CONSTRAINT fk_user_employee_type FOREIGN KEY (user_oid) REFERENCES m_user (oid); +ALTER TABLE m_user_organization + ADD CONSTRAINT fk_user_organization FOREIGN KEY (user_oid) REFERENCES m_user (oid); +ALTER TABLE m_user_organizational_unit + ADD CONSTRAINT fk_user_org_unit FOREIGN KEY (user_oid) REFERENCES m_user (oid); +ALTER TABLE m_abstract_role + ADD CONSTRAINT fk_abstract_role FOREIGN KEY (oid) REFERENCES m_focus (oid); +ALTER TABLE m_case + ADD CONSTRAINT fk_case FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_connector + ADD CONSTRAINT fk_connector FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_connector_host + ADD CONSTRAINT fk_connector_host FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_focus + ADD CONSTRAINT fk_focus FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_form + ADD CONSTRAINT fk_form FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_function_library + ADD CONSTRAINT fk_function_library FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_generic_object + ADD CONSTRAINT fk_generic_object FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_lookup_table + ADD CONSTRAINT fk_lookup_table FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_lookup_table_row + ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table (oid); +ALTER TABLE m_node + ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_object_template + ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_org + ADD CONSTRAINT fk_org FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); +ALTER TABLE m_report + ADD CONSTRAINT fk_report FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_report_output + ADD CONSTRAINT fk_report_output FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_resource + ADD CONSTRAINT fk_resource FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_role + ADD CONSTRAINT fk_role FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); +ALTER TABLE m_security_policy + ADD CONSTRAINT fk_security_policy FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_sequence + ADD CONSTRAINT fk_sequence FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_service + ADD CONSTRAINT fk_service FOREIGN KEY (oid) REFERENCES m_abstract_role (oid); +ALTER TABLE m_system_configuration + ADD CONSTRAINT fk_system_configuration FOREIGN KEY (oid) REFERENCES m_object (oid); +ALTER TABLE m_trigger + ADD CONSTRAINT fk_trigger_owner FOREIGN KEY (owner_oid) REFERENCES m_object (oid); +ALTER TABLE m_user + ADD CONSTRAINT fk_user FOREIGN KEY (oid) REFERENCES m_focus (oid); +ALTER TABLE m_value_policy + ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object (oid); + +# By: Ron Cordell - roncordell +# I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM. + +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +CREATE TABLE QRTZ_JOB_DETAILS( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +JOB_CLASS_NAME VARCHAR(250) NOT NULL, +IS_DURABLE VARCHAR(1) NOT NULL, +IS_NONCONCURRENT VARCHAR(1) NOT NULL, +IS_UPDATE_DATA VARCHAR(1) NOT NULL, +REQUESTS_RECOVERY VARCHAR(1) NOT NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +NEXT_FIRE_TIME BIGINT(13) NULL, +PREV_FIRE_TIME BIGINT(13) NULL, +PRIORITY INTEGER NULL, +EXECUTION_GROUP VARCHAR(200) NULL, +TRIGGER_STATE VARCHAR(16) NOT NULL, +TRIGGER_TYPE VARCHAR(8) NOT NULL, +START_TIME BIGINT(13) NOT NULL, +END_TIME BIGINT(13) NULL, +CALENDAR_NAME VARCHAR(200) NULL, +MISFIRE_INSTR SMALLINT(2) NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +REPEAT_COUNT BIGINT(7) NOT NULL, +REPEAT_INTERVAL BIGINT(12) NOT NULL, +TIMES_TRIGGERED BIGINT(10) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_CRON_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +CRON_EXPRESSION VARCHAR(120) NOT NULL, +TIME_ZONE_ID VARCHAR(80), +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_BLOB_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +BLOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_CALENDARS ( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME VARCHAR(200) NOT NULL, +CALENDAR BLOB NOT NULL, +PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_FIRED_TRIGGERS ( +SCHED_NAME VARCHAR(120) NOT NULL, +ENTRY_ID VARCHAR(95) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +FIRED_TIME BIGINT(13) NOT NULL, +SCHED_TIME BIGINT(13) NOT NULL, +PRIORITY INTEGER NOT NULL, +EXECUTION_GROUP VARCHAR(200) NULL, +STATE VARCHAR(16) NOT NULL, +JOB_NAME VARCHAR(200) NULL, +JOB_GROUP VARCHAR(200) NULL, +IS_NONCONCURRENT VARCHAR(1) NULL, +REQUESTS_RECOVERY VARCHAR(1) NULL, +PRIMARY KEY (SCHED_NAME,ENTRY_ID)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_SCHEDULER_STATE ( +SCHED_NAME VARCHAR(120) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +LAST_CHECKIN_TIME BIGINT(13) NOT NULL, +CHECKIN_INTERVAL BIGINT(13) NOT NULL, +PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)) +ENGINE=InnoDB; + +CREATE TABLE QRTZ_LOCKS ( +SCHED_NAME VARCHAR(120) NOT NULL, +LOCK_NAME VARCHAR(40) NOT NULL, +PRIMARY KEY (SCHED_NAME,LOCK_NAME)) +ENGINE=InnoDB; + +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP); + +create table ACT_GE_PROPERTY ( + NAME_ varchar(64), + VALUE_ varchar(300), + REV_ integer, + primary key (NAME_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +insert into ACT_GE_PROPERTY +values ('schema.version', '5.22.0.0', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(5.22.0.0)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + DEPLOYMENT_ID_ varchar(64), + BYTES_ LONGBLOB, + GENERATED_ TINYINT, + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RE_DEPLOYMENT ( + ID_ varchar(64), + NAME_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + DEPLOY_TIME_ timestamp(3) NULL, + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RE_MODEL ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + KEY_ varchar(255), + CATEGORY_ varchar(255), + CREATE_TIME_ timestamp(3) null, + LAST_UPDATE_TIME_ timestamp(3) null, + VERSION_ integer, + META_INFO_ varchar(4000), + DEPLOYMENT_ID_ varchar(64), + EDITOR_SOURCE_VALUE_ID_ varchar(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RU_EXECUTION ( + ID_ varchar(64), + REV_ integer, + PROC_INST_ID_ varchar(64), + BUSINESS_KEY_ varchar(255), + PARENT_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + SUPER_EXEC_ varchar(64), + ACT_ID_ varchar(255), + IS_ACTIVE_ TINYINT, + IS_CONCURRENT_ TINYINT, + IS_SCOPE_ TINYINT, + IS_EVENT_SCOPE_ TINYINT, + SUSPENSION_STATE_ integer, + CACHED_ENT_STATE_ integer, + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + LOCK_TIME_ timestamp(3) NULL, + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RU_JOB ( + ID_ varchar(64) NOT NULL, + REV_ integer, + TYPE_ varchar(255) NOT NULL, + LOCK_EXP_TIME_ timestamp(3) NULL, + LOCK_OWNER_ varchar(255), + EXCLUSIVE_ boolean, + EXECUTION_ID_ varchar(64), + PROCESS_INSTANCE_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + RETRIES_ integer, + EXCEPTION_STACK_ID_ varchar(64), + EXCEPTION_MSG_ varchar(4000), + DUEDATE_ timestamp(3) NULL, + REPEAT_ varchar(255), + HANDLER_TYPE_ varchar(255), + HANDLER_CFG_ varchar(4000), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +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), + DESCRIPTION_ varchar(4000), + HAS_START_FORM_KEY_ TINYINT, + HAS_GRAPHICAL_NOTATION_ TINYINT, + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RU_TASK ( + ID_ varchar(64), + REV_ integer, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_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(3) NULL, + DUE_DATE_ datetime(3), + CATEGORY_ varchar(255), + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(255) default '', + FORM_KEY_ varchar(255), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_RU_IDENTITYLINK ( + ID_ varchar(64), + REV_ integer, + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +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), + TASK_ID_ varchar(64), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +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(64), + CONFIGURATION_ varchar(255), + CREATED_ timestamp(3) not null DEFAULT CURRENT_TIMESTAMP(3), + PROC_DEF_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_EVT_LOG ( + LOG_NR_ bigint auto_increment, + TYPE_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + TIME_STAMP_ timestamp(3) not null, + USER_ID_ varchar(255), + DATA_ LONGBLOB, + LOCK_OWNER_ varchar(255), + LOCK_TIME_ timestamp(3) null, + IS_PROCESSED_ tinyint default 0, + primary key (LOG_NR_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_PROCDEF_INFO ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + REV_ integer, + INFO_JSON_ID_ varchar(64), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +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_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_ID_); + +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF + unique (KEY_,VERSION_, TENANT_ID_); + +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade; + +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_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (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_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE + foreign key (EDITOR_SOURCE_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA + foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA + foreign key (INFO_JSON_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF + unique (PROC_DEF_ID_); + +create table ACT_HI_PROCINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64) not null, + BUSINESS_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64) not null, + START_TIME_ datetime(3) not null, + END_TIME_ datetime(3), + DURATION_ bigint, + START_USER_ID_ varchar(255), + START_ACT_ID_ varchar(255), + END_ACT_ID_ varchar(255), + SUPER_PROCESS_INSTANCE_ID_ varchar(64), + DELETE_REASON_ varchar(4000), + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + primary key (ID_), + unique (PROC_INST_ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_ACTINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + 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), + ACT_NAME_ varchar(255), + ACT_TYPE_ varchar(255) not null, + ASSIGNEE_ varchar(255), + START_TIME_ datetime(3) not null, + END_TIME_ datetime(3), + DURATION_ bigint, + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_TASKINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64), + TASK_DEF_KEY_ varchar(255), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + NAME_ varchar(255), + PARENT_TASK_ID_ varchar(64), + DESCRIPTION_ varchar(4000), + OWNER_ varchar(255), + ASSIGNEE_ varchar(255), + START_TIME_ datetime(3) not null, + CLAIM_TIME_ datetime(3), + END_TIME_ datetime(3), + DURATION_ bigint, + DELETE_REASON_ varchar(4000), + PRIORITY_ integer, + DUE_DATE_ datetime(3), + FORM_KEY_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_VARINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(100), + REV_ integer, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + CREATE_TIME_ datetime(3), + LAST_UPDATED_TIME_ datetime(3), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_DETAIL ( + ID_ varchar(64) not null, + TYPE_ varchar(255) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(255), + REV_ integer, + TIME_ datetime(3) not null, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_COMMENT ( + ID_ varchar(64) not null, + TYPE_ varchar(255), + TIME_ datetime(3) not null, + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + ACTION_ varchar(255), + MESSAGE_ varchar(4000), + FULL_MSG_ LONGBLOB, + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +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), + PROC_INST_ID_ varchar(64), + URL_ varchar(4000), + CONTENT_ID_ varchar(64), + TIME_ datetime(3), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_HI_IDENTITYLINK ( + ID_ varchar(64), + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + + +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_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +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_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_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_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); + +create table ACT_ID_GROUP ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + TYPE_ varchar(255), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ varchar(64), + GROUP_ID_ varchar(64), + primary key (USER_ID_, GROUP_ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_ID_USER ( + ID_ varchar(64), + REV_ integer, + FIRST_ varchar(255), + LAST_ varchar(255), + EMAIL_ varchar(255), + PWD_ varchar(255), + PICTURE_ID_ varchar(64), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +create table ACT_ID_INFO ( + ID_ varchar(64), + REV_ integer, + USER_ID_ varchar(64), + TYPE_ varchar(64), + KEY_ varchar(255), + VALUE_ varchar(255), + PASSWORD_ LONGBLOB, + PARENT_ID_ varchar(255), + primary key (ID_) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; + +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_); + +commit; diff --git a/config/sql/_all/mysql-upgrade-3.8-3.9-utf8mb4.sql b/config/sql/_all/mysql-upgrade-3.8-3.9-utf8mb4.sql new file mode 100644 index 00000000000..1b4ed2d0a31 --- /dev/null +++ b/config/sql/_all/mysql-upgrade-3.8-3.9-utf8mb4.sql @@ -0,0 +1,17 @@ +CREATE TABLE m_object_collection ( + name_norm VARCHAR(191), + name_orig VARCHAR(191), + oid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_bin + ENGINE = InnoDB; + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object (oid); diff --git a/config/sql/_all/mysql-upgrade-3.8-3.9.sql b/config/sql/_all/mysql-upgrade-3.8-3.9.sql new file mode 100644 index 00000000000..08aa0acae99 --- /dev/null +++ b/config/sql/_all/mysql-upgrade-3.8-3.9.sql @@ -0,0 +1,17 @@ +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +) + DEFAULT CHARACTER SET utf8 + COLLATE utf8_bin + ENGINE = InnoDB; + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object (oid); diff --git a/config/sql/_all/oracle-upgrade-3.7-3.8.sql b/config/sql/_all/oracle-3.9-all.sql similarity index 61% rename from config/sql/_all/oracle-upgrade-3.7-3.8.sql rename to config/sql/_all/oracle-3.9-all.sql index d6d5bc061bb..70746859b55 100644 --- a/config/sql/_all/oracle-upgrade-3.7-3.8.sql +++ b/config/sql/_all/oracle-3.9-all.sql @@ -1,204 +1,3 @@ -DROP TABLE m_acc_cert_definition; -DROP TABLE m_acc_cert_wi_reference; -DROP TABLE m_acc_cert_wi; -DROP TABLE m_acc_cert_case; -DROP TABLE m_acc_cert_campaign; -DROP TABLE m_assignment_ext_boolean; -DROP TABLE m_assignment_ext_date; -DROP TABLE m_assignment_ext_long; -DROP TABLE m_assignment_ext_poly; -DROP TABLE m_assignment_ext_reference; -DROP TABLE m_assignment_ext_string; -DROP TABLE m_assignment_extension; -DROP TABLE m_assignment_policy_situation; -DROP TABLE m_assignment_reference; -DROP TABLE m_assignment; --- Don't touch audit tables --- DROP TABLE m_audit_delta; --- DROP TABLE m_audit_item; --- DROP TABLE m_audit_prop_value; --- DROP TABLE m_audit_ref_value; --- DROP TABLE m_audit_event; -DROP TABLE m_case; -DROP TABLE m_connector_host; -DROP TABLE m_connector_target_system; -DROP TABLE m_connector; -DROP TABLE m_exclusion; -DROP TABLE m_focus_photo; -DROP TABLE m_focus_policy_situation; -DROP TABLE m_form; -DROP TABLE m_function_library; -DROP TABLE m_generic_object; -DROP TABLE m_lookup_table_row; -DROP TABLE m_lookup_table; -DROP TABLE m_node; -DROP TABLE m_object_ext_boolean; -DROP TABLE m_object_ext_date; -DROP TABLE m_object_ext_long; -DROP TABLE m_object_ext_poly; -DROP TABLE m_object_ext_reference; -DROP TABLE m_object_ext_string; -DROP TABLE m_object_template; -DROP TABLE m_object_text_info; -DROP TABLE m_operation_execution; -DROP TABLE m_org_closure; -DROP TABLE m_org_org_type; -DROP TABLE m_org; -DROP TABLE m_reference; -DROP TABLE m_report; -DROP TABLE m_report_output; -DROP TABLE m_resource; -DROP TABLE m_role; -DROP TABLE m_security_policy; -DROP TABLE m_sequence; -DROP TABLE m_service_type; -DROP TABLE m_service; -DROP TABLE m_abstract_role; -DROP TABLE m_shadow; -DROP TABLE m_system_configuration; -DROP TABLE m_task_dependent; -DROP TABLE m_task; -DROP TABLE m_trigger; -DROP TABLE m_user_employee_type; -DROP TABLE m_user_organization; -DROP TABLE m_user_organizational_unit; -DROP TABLE m_value_policy; -DROP TABLE m_user; -DROP TABLE m_focus; -DROP TABLE m_object; - -DROP SEQUENCE hibernate_sequence; - -CREATE TABLE m_audit_event_new ( - id NUMBER(19, 0) GENERATED BY DEFAULT ON NULL AS IDENTITY, - attorneyName VARCHAR2(255 CHAR), - attorneyOid VARCHAR2(36 CHAR), - channel VARCHAR2(255 CHAR), - eventIdentifier VARCHAR2(255 CHAR), - eventStage NUMBER(10, 0), - eventType NUMBER(10, 0), - hostIdentifier VARCHAR2(255 CHAR), - initiatorName VARCHAR2(255 CHAR), - initiatorOid VARCHAR2(36 CHAR), - initiatorType NUMBER(10, 0), - message VARCHAR2(1024 CHAR), - nodeIdentifier VARCHAR2(255 CHAR), - outcome NUMBER(10, 0), - parameter VARCHAR2(255 CHAR), - remoteHostAddress VARCHAR2(255 CHAR), - result VARCHAR2(255 CHAR), - sessionIdentifier VARCHAR2(255 CHAR), - targetName VARCHAR2(255 CHAR), - targetOid VARCHAR2(36 CHAR), - targetOwnerName VARCHAR2(255 CHAR), - targetOwnerOid VARCHAR2(36 CHAR), - targetOwnerType NUMBER(10, 0), - targetType NUMBER(10, 0), - taskIdentifier VARCHAR2(255 CHAR), - taskOID VARCHAR2(255 CHAR), - timestampValue TIMESTAMP, - PRIMARY KEY (id) -) INITRANS 30; - -CREATE TABLE m_audit_prop_value_new ( - id NUMBER(19, 0) GENERATED BY DEFAULT ON NULL AS IDENTITY, - name VARCHAR2(255 CHAR), - record_id NUMBER(19, 0), - value VARCHAR2(1024 CHAR), - PRIMARY KEY (id) -) INITRANS 30; - -CREATE TABLE m_audit_ref_value_new ( - id NUMBER(19, 0) GENERATED BY DEFAULT ON NULL AS IDENTITY, - name VARCHAR2(255 CHAR), - oid VARCHAR2(255 CHAR), - record_id NUMBER(19, 0), - targetName_norm VARCHAR2(255 CHAR), - targetName_orig VARCHAR2(255 CHAR), - type VARCHAR2(255 CHAR), - PRIMARY KEY (id) -) INITRANS 30; - -INSERT INTO m_audit_event_new (id, attorneyName, attorneyOid, channel, eventIdentifier, eventStage, eventType, hostIdentifier, - initiatorName, initiatorOid, initiatorType, message, nodeIdentifier, outcome, parameter, remoteHostAddress, - result, sessionIdentifier, targetName, targetOid, targetOwnerName, targetOwnerOid, targetType, - taskIdentifier, taskOID, timestampValue) - SELECT id, attorneyName, attorneyOid, channel, eventIdentifier, eventStage, eventType, hostIdentifier, initiatorName, initiatorOid, - initiatorType, message, nodeIdentifier, outcome, parameter, remoteHostAddress, result, sessionIdentifier, targetName, targetOid, - targetOwnerName, targetOwnerOid, targetType, taskIdentifier, taskOID, timestampValue - FROM M_AUDIT_EVENT; - -INSERT INTO m_audit_prop_value_NEW (id, name, record_id, value) - SELECT id, name, record_id, value FROM m_audit_prop_value; - -INSERT INTO m_audit_ref_value_NEW (id, name, oid, record_id, targetName_norm, targetName_orig, type) - SELECT id, name, oid, record_id, targetName_norm, targetName_orig, type FROM m_audit_ref_value; - -ALTER TABLE m_audit_event_new MODIFY id GENERATED AS IDENTITY START WITH LIMIT VALUE; -ALTER TABLE m_audit_prop_value_new MODIFY id GENERATED AS IDENTITY START WITH LIMIT VALUE; -ALTER TABLE m_audit_ref_value_new MODIFY id GENERATED AS IDENTITY START WITH LIMIT VALUE; - -ALTER TABLE m_audit_delta DROP CONSTRAINT fk_audit_delta; -ALTER TABLE m_audit_item DROP CONSTRAINT fk_audit_item; -ALTER TABLE m_audit_prop_value DROP CONSTRAINT fk_audit_prop_value; -ALTER TABLE m_audit_ref_value DROP CONSTRAINT fk_audit_ref_value; - -DROP TABLE m_audit_prop_value; -DROP TABLE m_audit_ref_value; -DROP TABLE m_audit_event; - -ALTER TABLE m_audit_prop_value_new RENAME TO m_audit_prop_value; -ALTER TABLE m_audit_ref_value_new RENAME TO m_audit_ref_value; -ALTER TABLE m_audit_event_new RENAME TO m_audit_event; - -CREATE INDEX iTimestampValue ON m_audit_event (timestampValue) INITRANS 30; -CREATE INDEX iAuditPropValRecordId ON m_audit_prop_value (record_id) INITRANS 30; -CREATE INDEX iAuditRefValRecordId ON m_audit_ref_value (record_id) INITRANS 30; - -ALTER TABLE m_audit_delta ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_item ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_prop_value ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_ref_value ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; - -ALTER TABLE m_audit_item MODIFY changedItemPath VARCHAR2(255 CHAR); - -CREATE OR REPLACE FUNCTION clob_to_blob (p_data IN CLOB) - RETURN BLOB -AS - l_blob BLOB; - l_dest_offset PLS_INTEGER := 1; - l_src_offset PLS_INTEGER := 1; - l_lang_context PLS_INTEGER := DBMS_LOB.default_lang_ctx; - l_warning PLS_INTEGER := DBMS_LOB.warn_inconvertible_char; - BEGIN - - DBMS_LOB.createtemporary( - lob_loc => l_blob, - cache => TRUE); - - DBMS_LOB.converttoblob( - dest_lob => l_blob, - src_clob => p_data, - amount => DBMS_LOB.lobmaxsize, - dest_offset => l_dest_offset, - src_offset => l_src_offset, - blob_csid => DBMS_LOB.default_csid, - lang_context => l_lang_context, - warning => l_warning); - - RETURN l_blob; - END; - -ALTER TABLE m_audit_delta ADD (deltaBlob BLOB, fullResultBlob BLOB); - -UPDATE m_audit_delta SET deltaBlob = clob_to_blob(delta) where delta is not null; -UPDATE m_audit_delta SET fullResultBlob = clob_to_blob(fullResult) where fullResult is not null; - -ALTER TABLE m_audit_delta DROP (delta, fullResult); - -ALTER TABLE m_audit_delta RENAME COLUMN deltaBlob TO delta; -ALTER TABLE m_audit_delta RENAME COLUMN fullResultBlob TO fullResult; - CREATE TABLE m_acc_cert_campaign ( definitionRef_relation VARCHAR2(157 CHAR), definitionRef_targetOid VARCHAR2(36 CHAR), @@ -396,6 +195,73 @@ CREATE TABLE m_assignment_reference ( targetType NUMBER(10, 0), PRIMARY KEY (owner_owner_oid, owner_id, reference_type, relation, targetOid) ) INITRANS 30; +CREATE TABLE m_audit_delta ( + checksum VARCHAR2(32 CHAR) NOT NULL, + record_id NUMBER(19, 0) NOT NULL, + delta BLOB, + deltaOid VARCHAR2(36 CHAR), + deltaType NUMBER(10, 0), + fullResult BLOB, + objectName_norm VARCHAR2(255 CHAR), + objectName_orig VARCHAR2(255 CHAR), + resourceName_norm VARCHAR2(255 CHAR), + resourceName_orig VARCHAR2(255 CHAR), + resourceOid VARCHAR2(36 CHAR), + status NUMBER(10, 0), + PRIMARY KEY (record_id, checksum) +) INITRANS 30; +CREATE TABLE m_audit_event ( + id NUMBER(19, 0) GENERATED AS IDENTITY, + attorneyName VARCHAR2(255 CHAR), + attorneyOid VARCHAR2(36 CHAR), + channel VARCHAR2(255 CHAR), + eventIdentifier VARCHAR2(255 CHAR), + eventStage NUMBER(10, 0), + eventType NUMBER(10, 0), + hostIdentifier VARCHAR2(255 CHAR), + initiatorName VARCHAR2(255 CHAR), + initiatorOid VARCHAR2(36 CHAR), + initiatorType NUMBER(10, 0), + message VARCHAR2(1024 CHAR), + nodeIdentifier VARCHAR2(255 CHAR), + outcome NUMBER(10, 0), + parameter VARCHAR2(255 CHAR), + remoteHostAddress VARCHAR2(255 CHAR), + result VARCHAR2(255 CHAR), + sessionIdentifier VARCHAR2(255 CHAR), + targetName VARCHAR2(255 CHAR), + targetOid VARCHAR2(36 CHAR), + targetOwnerName VARCHAR2(255 CHAR), + targetOwnerOid VARCHAR2(36 CHAR), + targetOwnerType NUMBER(10, 0), + targetType NUMBER(10, 0), + taskIdentifier VARCHAR2(255 CHAR), + taskOID VARCHAR2(255 CHAR), + timestampValue TIMESTAMP, + PRIMARY KEY (id) +) INITRANS 30; +CREATE TABLE m_audit_item ( + changedItemPath VARCHAR2(255 CHAR) NOT NULL, + record_id NUMBER(19, 0) NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +) INITRANS 30; +CREATE TABLE m_audit_prop_value ( + id NUMBER(19, 0) GENERATED AS IDENTITY, + name VARCHAR2(255 CHAR), + record_id NUMBER(19, 0), + value VARCHAR2(1024 CHAR), + PRIMARY KEY (id) +) INITRANS 30; +CREATE TABLE m_audit_ref_value ( + id NUMBER(19, 0) GENERATED AS IDENTITY, + name VARCHAR2(255 CHAR), + oid VARCHAR2(36 CHAR), + record_id NUMBER(19, 0), + targetName_norm VARCHAR2(255 CHAR), + targetName_orig VARCHAR2(255 CHAR), + type VARCHAR2(255 CHAR), + PRIMARY KEY (id) +) INITRANS 30; CREATE TABLE m_case_wi ( id NUMBER(10, 0) NOT NULL, owner_oid VARCHAR2(36 CHAR) NOT NULL, @@ -746,6 +612,12 @@ CREATE TABLE m_node ( oid VARCHAR2(36 CHAR) NOT NULL, PRIMARY KEY (oid) ) INITRANS 30; +CREATE TABLE m_object_collection ( + name_norm VARCHAR2(255 CHAR), + name_orig VARCHAR2(255 CHAR), + oid VARCHAR2(36 CHAR) NOT NULL, + PRIMARY KEY (oid) +) INITRANS 30; CREATE TABLE m_object_template ( name_norm VARCHAR2(255 CHAR), name_orig VARCHAR2(255 CHAR), @@ -909,8 +781,16 @@ CREATE INDEX iAssignmentReferenceTargetOid ON m_assignment_reference (targetOid) INITRANS 30; CREATE INDEX iAuditDeltaRecordId ON m_audit_delta (record_id) INITRANS 30; +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue) INITRANS 30; +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath) INITRANS 30; CREATE INDEX iAuditItemRecordId ON m_audit_item (record_id) INITRANS 30; +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id) INITRANS 30; +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id) INITRANS 30; CREATE INDEX iCaseWorkItemRefTargetOid ON m_case_wi_reference (targetOid) INITRANS 30; @@ -1042,6 +922,10 @@ CREATE INDEX iNodeNameOrig ON m_node (name_orig) INITRANS 30; ALTER TABLE m_node ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig) INITRANS 30; +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); CREATE INDEX iObjectTemplateNameOrig ON m_object_template (name_orig) INITRANS 30; ALTER TABLE m_object_template @@ -1144,6 +1028,14 @@ ALTER TABLE m_assignment_policy_situation ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment; ALTER TABLE m_assignment_reference ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment; +ALTER TABLE m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; ALTER TABLE m_case_wi ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case; ALTER TABLE m_case_wi_reference @@ -1228,6 +1120,8 @@ ALTER TABLE m_lookup_table_row ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table; ALTER TABLE m_node ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object; +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_object_template ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_org @@ -1255,4 +1149,740 @@ ALTER TABLE m_user ALTER TABLE m_value_policy ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object; +-- +-- A hint submitted by a user: Oracle DB MUST be created as "shared" and the +-- job_queue_processes parameter must be greater than 2 +-- However, these settings are pretty much standard after any +-- Oracle install, so most users need not worry about this. +-- +-- Many other users (including the primary author of Quartz) have had success +-- running in dedicated mode, so only consider the above as a hint +-- + + +-- there are two semicolons at the end of each of the following lines to work around a bug/feature of ScriptRunner we use +BEGIN +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_calendars'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_fired_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_blob_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_cron_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_simple_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_simprop_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_triggers'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_job_details'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_paused_trigger_grps'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_locks'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +BEGIN EXECUTE IMMEDIATE 'DROP TABLE qrtz_scheduler_state'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; +END; +/ + +CREATE TABLE qrtz_job_details + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + JOB_CLASS_NAME VARCHAR2(250) NOT NULL, + IS_DURABLE VARCHAR2(1) NOT NULL, + IS_NONCONCURRENT VARCHAR2(1) NOT NULL, + IS_UPDATE_DATA VARCHAR2(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR2(1) NOT NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + NEXT_FIRE_TIME NUMBER(13) NULL, + PREV_FIRE_TIME NUMBER(13) NULL, + PRIORITY NUMBER(13) NULL, + EXECUTION_GROUP VARCHAR2(200) NULL, + TRIGGER_STATE VARCHAR2(16) NOT NULL, + TRIGGER_TYPE VARCHAR2(8) NOT NULL, + START_TIME NUMBER(13) NOT NULL, + END_TIME NUMBER(13) NULL, + CALENDAR_NAME VARCHAR2(200) NULL, + MISFIRE_INSTR NUMBER(2) NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_simple_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + REPEAT_COUNT NUMBER(7) NOT NULL, + REPEAT_INTERVAL NUMBER(12) NOT NULL, + TIMES_TRIGGERED NUMBER(10) NOT NULL, + CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_cron_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CRON_EXPRESSION VARCHAR2(120) NOT NULL, + TIME_ZONE_ID VARCHAR2(80), + CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + STR_PROP_1 VARCHAR2(512) NULL, + STR_PROP_2 VARCHAR2(512) NULL, + STR_PROP_3 VARCHAR2(512) NULL, + INT_PROP_1 NUMBER(10) NULL, + INT_PROP_2 NUMBER(10) NULL, + LONG_PROP_1 NUMBER(13) NULL, + LONG_PROP_2 NUMBER(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR2(1) NULL, + BOOL_PROP_2 VARCHAR2(1) NULL, + CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_blob_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + BLOB_DATA BLOB NULL, + CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_calendars + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + CALENDAR_NAME VARCHAR2(200) NOT NULL, + CALENDAR BLOB NOT NULL, + CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + ENTRY_ID VARCHAR2(95) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + FIRED_TIME NUMBER(13) NOT NULL, + SCHED_TIME NUMBER(13) NOT NULL, + PRIORITY NUMBER(13) NOT NULL, + EXECUTION_GROUP VARCHAR2(200) NULL, + STATE VARCHAR2(16) NOT NULL, + JOB_NAME VARCHAR2(200) NULL, + JOB_GROUP VARCHAR2(200) NULL, + IS_NONCONCURRENT VARCHAR2(1) NULL, + REQUESTS_RECOVERY VARCHAR2(1) NULL, + CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + LAST_CHECKIN_TIME NUMBER(13) NOT NULL, + CHECKIN_INTERVAL NUMBER(13) NOT NULL, + CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + LOCK_NAME VARCHAR2(40) NOT NULL, + CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP); + +create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME); +create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP); +create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE); +create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME); +create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP); + +create table ACT_GE_PROPERTY ( + NAME_ NVARCHAR2(64), + VALUE_ NVARCHAR2(300), + REV_ INTEGER, + primary key (NAME_) +); + +insert into ACT_GE_PROPERTY +values ('schema.version', '5.22.0.0', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(5.22.0.0)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + NAME_ NVARCHAR2(255), + DEPLOYMENT_ID_ NVARCHAR2(64), + BYTES_ BLOB, + GENERATED_ NUMBER(1,0) CHECK (GENERATED_ IN (1,0)), + primary key (ID_) +); + +create table ACT_RE_DEPLOYMENT ( + ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + DEPLOY_TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_RE_MODEL ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + NAME_ NVARCHAR2(255), + KEY_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + CREATE_TIME_ TIMESTAMP(6), + LAST_UPDATE_TIME_ TIMESTAMP(6), + VERSION_ INTEGER, + META_INFO_ NVARCHAR2(2000), + DEPLOYMENT_ID_ NVARCHAR2(64), + EDITOR_SOURCE_VALUE_ID_ NVARCHAR2(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ NVARCHAR2(64), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_EXECUTION ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + PROC_INST_ID_ NVARCHAR2(64), + BUSINESS_KEY_ NVARCHAR2(255), + PARENT_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + SUPER_EXEC_ NVARCHAR2(64), + ACT_ID_ NVARCHAR2(255), + IS_ACTIVE_ NUMBER(1,0) CHECK (IS_ACTIVE_ IN (1,0)), + IS_CONCURRENT_ NUMBER(1,0) CHECK (IS_CONCURRENT_ IN (1,0)), + IS_SCOPE_ NUMBER(1,0) CHECK (IS_SCOPE_ IN (1,0)), + IS_EVENT_SCOPE_ NUMBER(1,0) CHECK (IS_EVENT_SCOPE_ IN (1,0)), + SUSPENSION_STATE_ INTEGER, + CACHED_ENT_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + NAME_ NVARCHAR2(255), + LOCK_TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_RU_JOB ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) NOT NULL, + LOCK_EXP_TIME_ TIMESTAMP(6), + LOCK_OWNER_ NVARCHAR2(255), + EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)), + EXECUTION_ID_ NVARCHAR2(64), + PROCESS_INSTANCE_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + RETRIES_ INTEGER, + EXCEPTION_STACK_ID_ NVARCHAR2(64), + EXCEPTION_MSG_ NVARCHAR2(2000), + DUEDATE_ TIMESTAMP(6), + REPEAT_ NVARCHAR2(255), + HANDLER_TYPE_ NVARCHAR2(255), + HANDLER_CFG_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RE_PROCDEF ( + ID_ NVARCHAR2(64) NOT NULL, + REV_ INTEGER, + CATEGORY_ NVARCHAR2(255), + NAME_ NVARCHAR2(255), + KEY_ NVARCHAR2(255) NOT NULL, + VERSION_ INTEGER NOT NULL, + DEPLOYMENT_ID_ NVARCHAR2(64), + RESOURCE_NAME_ NVARCHAR2(2000), + DGRM_RESOURCE_NAME_ varchar(4000), + DESCRIPTION_ NVARCHAR2(2000), + HAS_START_FORM_KEY_ NUMBER(1,0) CHECK (HAS_START_FORM_KEY_ IN (1,0)), + HAS_GRAPHICAL_NOTATION_ NUMBER(1,0) CHECK (HAS_GRAPHICAL_NOTATION_ IN (1,0)), + SUSPENSION_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_RU_TASK ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + PARENT_TASK_ID_ NVARCHAR2(64), + DESCRIPTION_ NVARCHAR2(2000), + TASK_DEF_KEY_ NVARCHAR2(255), + OWNER_ NVARCHAR2(255), + ASSIGNEE_ NVARCHAR2(255), + DELEGATION_ NVARCHAR2(64), + PRIORITY_ INTEGER, + CREATE_TIME_ TIMESTAMP(6), + DUE_DATE_ TIMESTAMP(6), + CATEGORY_ NVARCHAR2(255), + SUSPENSION_STATE_ INTEGER, + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + FORM_KEY_ NVARCHAR2(255), + primary key (ID_) +); + +create table ACT_RU_IDENTITYLINK ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + GROUP_ID_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create table ACT_RU_VARIABLE ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + TYPE_ NVARCHAR2(255) not null, + NAME_ NVARCHAR2(255) not null, + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + primary key (ID_) +); + +create table ACT_RU_EVENT_SUBSCR ( + ID_ NVARCHAR2(64) not null, + REV_ integer, + EVENT_TYPE_ NVARCHAR2(255) not null, + EVENT_NAME_ NVARCHAR2(255), + EXECUTION_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + ACTIVITY_ID_ NVARCHAR2(64), + CONFIGURATION_ NVARCHAR2(255), + CREATED_ TIMESTAMP(6) not null, + PROC_DEF_ID_ NVARCHAR2(64), + TENANT_ID_ NVARCHAR2(255) DEFAULT '', + primary key (ID_) +); + +create table ACT_EVT_LOG ( + LOG_NR_ NUMBER(19), + TYPE_ NVARCHAR2(64), + PROC_DEF_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + TIME_STAMP_ TIMESTAMP(6) not null, + USER_ID_ NVARCHAR2(255), + DATA_ BLOB, + LOCK_OWNER_ NVARCHAR2(255), + LOCK_TIME_ TIMESTAMP(6) null, + IS_PROCESSED_ NUMBER(3) default 0, + primary key (LOG_NR_) +); + +create sequence act_evt_log_seq; + +create table ACT_PROCDEF_INFO ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64) not null, + REV_ integer, + INFO_JSON_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +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_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); + +create index ACT_IDX_BYTEAR_DEPL on ACT_GE_BYTEARRAY(DEPLOYMENT_ID_); +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF + unique (KEY_,VERSION_, TENANT_ID_); + +create index ACT_IDX_EXE_PROCINST on ACT_RU_EXECUTION(PROC_INST_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PARENT on ACT_RU_EXECUTION(PARENT_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PARENT + foreign key (PARENT_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_SUPER + foreign key (SUPER_EXEC_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PROCDEF on ACT_RU_EXECUTION(PROC_DEF_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_TSKASS_TASK on ACT_RU_IDENTITYLINK(TASK_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_TSKASS_TASK + foreign key (TASK_ID_) + references ACT_RU_TASK (ID_); + +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_ATHRZ_PROCEDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_IDL_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCDEF on ACT_RU_TASK(PROC_DEF_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_VAR_EXE on ACT_RU_VARIABLE(EXECUTION_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_VAR_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_VAR_BYTEARRAY on ACT_RU_VARIABLE(BYTEARRAY_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_BYTEARRAY + foreign key (BYTEARRAY_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_JOB_EXCEPTION on ACT_RU_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_EVENT_SUBSCR on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_); +alter table ACT_RU_EVENT_SUBSCR + add constraint ACT_FK_EVENT_EXEC + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_MODEL_SOURCE on ACT_RE_MODEL(EDITOR_SOURCE_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE + foreign key (EDITOR_SOURCE_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_SOURCE_EXTRA on ACT_RE_MODEL(EDITOR_SOURCE_EXTRA_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA + foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_DEPLOYMENT on ACT_RE_MODEL(DEPLOYMENT_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +create index ACT_IDX_PROCDEF_INFO_JSON on ACT_PROCDEF_INFO(INFO_JSON_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA + foreign key (INFO_JSON_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF + unique (PROC_DEF_ID_); + +create table ACT_HI_PROCINST ( + ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64) not null, + BUSINESS_KEY_ NVARCHAR2(255), + PROC_DEF_ID_ NVARCHAR2(64) not null, + START_TIME_ TIMESTAMP(6) not null, + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + START_USER_ID_ NVARCHAR2(255), + START_ACT_ID_ NVARCHAR2(255), + END_ACT_ID_ NVARCHAR2(255), + SUPER_PROCESS_INSTANCE_ID_ NVARCHAR2(64), + DELETE_REASON_ NVARCHAR2(2000), + TENANT_ID_ NVARCHAR2(255) default '', + NAME_ NVARCHAR2(255), + primary key (ID_), + unique (PROC_INST_ID_) +); + +create table ACT_HI_ACTINST ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64) not null, + EXECUTION_ID_ NVARCHAR2(64) not null, + ACT_ID_ NVARCHAR2(255) not null, + TASK_ID_ NVARCHAR2(64), + CALL_PROC_INST_ID_ NVARCHAR2(64), + ACT_NAME_ NVARCHAR2(255), + ACT_TYPE_ NVARCHAR2(255) not null, + ASSIGNEE_ NVARCHAR2(255), + START_TIME_ TIMESTAMP(6) not null, + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + TENANT_ID_ NVARCHAR2(255) default '', + primary key (ID_) +); + +create table ACT_HI_TASKINST ( + ID_ NVARCHAR2(64) not null, + PROC_DEF_ID_ NVARCHAR2(64), + TASK_DEF_KEY_ NVARCHAR2(255), + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + PARENT_TASK_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255), + DESCRIPTION_ NVARCHAR2(2000), + OWNER_ NVARCHAR2(255), + ASSIGNEE_ NVARCHAR2(255), + START_TIME_ TIMESTAMP(6) not null, + CLAIM_TIME_ TIMESTAMP(6), + END_TIME_ TIMESTAMP(6), + DURATION_ NUMBER(19,0), + DELETE_REASON_ NVARCHAR2(2000), + PRIORITY_ INTEGER, + DUE_DATE_ TIMESTAMP(6), + FORM_KEY_ NVARCHAR2(255), + CATEGORY_ NVARCHAR2(255), + TENANT_ID_ NVARCHAR2(255) default '', + primary key (ID_) +); + +create table ACT_HI_VARINST ( + ID_ NVARCHAR2(64) not null, + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255) not null, + VAR_TYPE_ NVARCHAR2(100), + REV_ INTEGER, + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + CREATE_TIME_ TIMESTAMP(6), + LAST_UPDATED_TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_HI_DETAIL ( + ID_ NVARCHAR2(64) not null, + TYPE_ NVARCHAR2(255) not null, + PROC_INST_ID_ NVARCHAR2(64), + EXECUTION_ID_ NVARCHAR2(64), + TASK_ID_ NVARCHAR2(64), + ACT_INST_ID_ NVARCHAR2(64), + NAME_ NVARCHAR2(255) not null, + VAR_TYPE_ NVARCHAR2(64), + REV_ INTEGER, + TIME_ TIMESTAMP(6) not null, + BYTEARRAY_ID_ NVARCHAR2(64), + DOUBLE_ NUMBER(*,10), + LONG_ NUMBER(19,0), + TEXT_ NVARCHAR2(2000), + TEXT2_ NVARCHAR2(2000), + primary key (ID_) +); + +create table ACT_HI_COMMENT ( + ID_ NVARCHAR2(64) not null, + TYPE_ NVARCHAR2(255), + TIME_ TIMESTAMP(6) not null, + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + ACTION_ NVARCHAR2(255), + MESSAGE_ NVARCHAR2(2000), + FULL_MSG_ BLOB, + primary key (ID_) +); + +create table ACT_HI_ATTACHMENT ( + ID_ NVARCHAR2(64) not null, + REV_ INTEGER, + USER_ID_ NVARCHAR2(255), + NAME_ NVARCHAR2(255), + DESCRIPTION_ NVARCHAR2(2000), + TYPE_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + URL_ NVARCHAR2(2000), + CONTENT_ID_ NVARCHAR2(64), + TIME_ TIMESTAMP(6), + primary key (ID_) +); + +create table ACT_HI_IDENTITYLINK ( + ID_ NVARCHAR2(64), + GROUP_ID_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + USER_ID_ NVARCHAR2(255), + TASK_ID_ NVARCHAR2(64), + PROC_INST_ID_ NVARCHAR2(64), + 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_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +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_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_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_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); + +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); + +create table ACT_ID_GROUP ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + NAME_ NVARCHAR2(255), + TYPE_ NVARCHAR2(255), + primary key (ID_) +); + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ NVARCHAR2(64), + GROUP_ID_ NVARCHAR2(64), + primary key (USER_ID_, GROUP_ID_) +); + +create table ACT_ID_USER ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + FIRST_ NVARCHAR2(255), + LAST_ NVARCHAR2(255), + EMAIL_ NVARCHAR2(255), + PWD_ NVARCHAR2(255), + PICTURE_ID_ NVARCHAR2(64), + primary key (ID_) +); + +create table ACT_ID_INFO ( + ID_ NVARCHAR2(64), + REV_ INTEGER, + USER_ID_ NVARCHAR2(64), + TYPE_ NVARCHAR2(64), + KEY_ NVARCHAR2(255), + VALUE_ NVARCHAR2(255), + PASSWORD_ BLOB, + PARENT_ID_ NVARCHAR2(255), + primary key (ID_) +); + +create index ACT_IDX_MEMB_GROUP on ACT_ID_MEMBERSHIP(GROUP_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_GROUP + foreign key (GROUP_ID_) + references ACT_ID_GROUP (ID_); + +create index ACT_IDX_MEMB_USER on ACT_ID_MEMBERSHIP(USER_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_USER + foreign key (USER_ID_) + references ACT_ID_USER (ID_); + commit; diff --git a/config/sql/_all/oracle-upgrade-3.8-3.9.sql b/config/sql/_all/oracle-upgrade-3.8-3.9.sql new file mode 100644 index 00000000000..dba2d5eeaaa --- /dev/null +++ b/config/sql/_all/oracle-upgrade-3.8-3.9.sql @@ -0,0 +1,14 @@ +CREATE TABLE m_object_collection ( + name_norm VARCHAR2(255 CHAR), + name_orig VARCHAR2(255 CHAR), + oid VARCHAR2(36 CHAR) NOT NULL, + PRIMARY KEY (oid) +) INITRANS 30; + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig) INITRANS 30; +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; diff --git a/config/sql/_all/postgresql-upgrade-3.7-3.8.sql b/config/sql/_all/postgresql-3.9-all.sql similarity index 60% rename from config/sql/_all/postgresql-upgrade-3.7-3.8.sql rename to config/sql/_all/postgresql-3.9-all.sql index b97caa3df4a..04a045158bd 100644 --- a/config/sql/_all/postgresql-upgrade-3.7-3.8.sql +++ b/config/sql/_all/postgresql-3.9-all.sql @@ -1,103 +1,3 @@ -DROP TABLE m_acc_cert_definition; -DROP TABLE m_acc_cert_wi_reference; -DROP TABLE m_acc_cert_wi; -DROP TABLE m_acc_cert_case; -DROP TABLE m_acc_cert_campaign; -DROP TABLE m_assignment_ext_boolean; -DROP TABLE m_assignment_ext_date; -DROP TABLE m_assignment_ext_long; -DROP TABLE m_assignment_ext_poly; -DROP TABLE m_assignment_ext_reference; -DROP TABLE m_assignment_ext_string; -DROP TABLE m_assignment_extension; -DROP TABLE m_assignment_policy_situation; -DROP TABLE m_assignment_reference; -DROP TABLE m_assignment; --- Don't touch audit tables --- DROP TABLE m_audit_delta; --- DROP TABLE m_audit_item; --- DROP TABLE m_audit_prop_value; --- DROP TABLE m_audit_ref_value; --- DROP TABLE m_audit_event; -DROP TABLE m_case; -DROP TABLE m_connector_host; -DROP TABLE m_connector_target_system; -DROP TABLE m_connector; -DROP TABLE m_exclusion; -DROP TABLE m_focus_photo; -DROP TABLE m_focus_policy_situation; -DROP TABLE m_form; -DROP TABLE m_function_library; -DROP TABLE m_generic_object; -DROP TABLE m_lookup_table_row; -DROP TABLE m_lookup_table; -DROP TABLE m_node; -DROP TABLE m_object_ext_boolean; -DROP TABLE m_object_ext_date; -DROP TABLE m_object_ext_long; -DROP TABLE m_object_ext_poly; -DROP TABLE m_object_ext_reference; -DROP TABLE m_object_ext_string; -DROP TABLE m_object_template; -DROP TABLE m_object_text_info; -DROP TABLE m_operation_execution; -DROP TABLE m_org_closure; -DROP TABLE m_org_org_type; -DROP TABLE m_org; -DROP TABLE m_reference; -DROP TABLE m_report; -DROP TABLE m_report_output; -DROP TABLE m_resource; -DROP TABLE m_role; -DROP TABLE m_security_policy; -DROP TABLE m_sequence; -DROP TABLE m_service_type; -DROP TABLE m_service; -DROP TABLE m_abstract_role; -DROP TABLE m_shadow; -DROP TABLE m_system_configuration; -DROP TABLE m_task_dependent; -DROP TABLE m_task; -DROP TABLE m_trigger; -DROP TABLE m_user_employee_type; -DROP TABLE m_user_organization; -DROP TABLE m_user_organizational_unit; -DROP TABLE m_value_policy; -DROP TABLE m_user; -DROP TABLE m_focus; -DROP TABLE m_object; - -DROP SEQUENCE hibernate_sequence; - -CREATE SEQUENCE m_audit_event_id_seq; -ALTER TABLE m_audit_event ALTER COLUMN id SET NOT NULL; -ALTER TABLE m_audit_event ALTER COLUMN id SET DEFAULT nextval('m_audit_event_id_seq'); -ALTER SEQUENCE m_audit_event_id_seq OWNED BY m_audit_event.id; - -CREATE SEQUENCE m_audit_prop_value_id_seq; -ALTER TABLE m_audit_prop_value ALTER COLUMN id SET NOT NULL; -ALTER TABLE m_audit_prop_value ALTER COLUMN id SET DEFAULT nextval('m_audit_prop_value_id_seq'); -ALTER SEQUENCE m_audit_prop_value_id_seq OWNED BY m_audit_prop_value.id; - -CREATE SEQUENCE m_audit_ref_value_id_seq; -ALTER TABLE m_audit_ref_value ALTER COLUMN id SET NOT NULL; -ALTER TABLE m_audit_ref_value ALTER COLUMN id SET DEFAULT nextval('m_audit_ref_value_id_seq'); -ALTER SEQUENCE m_audit_ref_value_id_seq OWNED BY m_audit_ref_value.id; - -SELECT setval('m_audit_event_id_seq', (SELECT max(id) + 1 FROM m_audit_event), FALSE); -SELECT setval('m_audit_prop_value_id_seq', (SELECT max(id) + 1 FROM m_audit_prop_value), FALSE); -SELECT setval('m_audit_ref_value_id_seq', (SELECT max(id) + 1 FROM m_audit_ref_value), FALSE); - -ALTER TABLE m_audit_delta - ALTER COLUMN delta TYPE BYTEA USING decode(replace(replace(delta, '\', E'\\134'), '''', E'\\047'), 'escape'), - ALTER COLUMN fullResult TYPE BYTEA USING decode(replace(replace(fullResult, '\', E'\\134'), '''', E'\\047'),'escape'); - -ALTER TABLE m_audit_event - ADD COLUMN targetOwnerType INT4; - -ALTER TABLE m_audit_item - ALTER COLUMN changedItemPath TYPE VARCHAR(255); - CREATE TABLE m_acc_cert_campaign ( definitionRef_relation VARCHAR(157), definitionRef_targetOid VARCHAR(36), @@ -295,6 +195,73 @@ CREATE TABLE m_assignment_reference ( targetType INT4, PRIMARY KEY (owner_owner_oid, owner_id, reference_type, relation, targetOid) ); +CREATE TABLE m_audit_delta ( + checksum VARCHAR(32) NOT NULL, + record_id INT8 NOT NULL, + delta BYTEA, + deltaOid VARCHAR(36), + deltaType INT4, + fullResult BYTEA, + objectName_norm VARCHAR(255), + objectName_orig VARCHAR(255), + resourceName_norm VARCHAR(255), + resourceName_orig VARCHAR(255), + resourceOid VARCHAR(36), + status INT4, + PRIMARY KEY (record_id, checksum) +); +CREATE TABLE m_audit_event ( + id BIGSERIAL NOT NULL, + attorneyName VARCHAR(255), + attorneyOid VARCHAR(36), + channel VARCHAR(255), + eventIdentifier VARCHAR(255), + eventStage INT4, + eventType INT4, + hostIdentifier VARCHAR(255), + initiatorName VARCHAR(255), + initiatorOid VARCHAR(36), + initiatorType INT4, + message VARCHAR(1024), + nodeIdentifier VARCHAR(255), + outcome INT4, + parameter VARCHAR(255), + remoteHostAddress VARCHAR(255), + result VARCHAR(255), + sessionIdentifier VARCHAR(255), + targetName VARCHAR(255), + targetOid VARCHAR(36), + targetOwnerName VARCHAR(255), + targetOwnerOid VARCHAR(36), + targetOwnerType INT4, + targetType INT4, + taskIdentifier VARCHAR(255), + taskOID VARCHAR(255), + timestampValue TIMESTAMP, + PRIMARY KEY (id) +); +CREATE TABLE m_audit_item ( + changedItemPath VARCHAR(255) NOT NULL, + record_id INT8 NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +); +CREATE TABLE m_audit_prop_value ( + id BIGSERIAL NOT NULL, + name VARCHAR(255), + record_id INT8, + value VARCHAR(1024), + PRIMARY KEY (id) +); +CREATE TABLE m_audit_ref_value ( + id BIGSERIAL NOT NULL, + name VARCHAR(255), + oid VARCHAR(36), + record_id INT8, + targetName_norm VARCHAR(255), + targetName_orig VARCHAR(255), + type VARCHAR(255), + PRIMARY KEY (id) +); CREATE TABLE m_case_wi ( id INT4 NOT NULL, owner_oid VARCHAR(36) NOT NULL, @@ -645,6 +612,12 @@ CREATE TABLE m_node ( oid VARCHAR(36) NOT NULL, PRIMARY KEY (oid) ); +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +); CREATE TABLE m_object_template ( name_norm VARCHAR(255), name_orig VARCHAR(255), @@ -808,8 +781,16 @@ CREATE INDEX iAssignmentReferenceTargetOid ON m_assignment_reference (targetOid); CREATE INDEX iAuditDeltaRecordId ON m_audit_delta (record_id); +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue); +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath); CREATE INDEX iAuditItemRecordId ON m_audit_item (record_id); +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id); +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id); CREATE INDEX iCaseWorkItemRefTargetOid ON m_case_wi_reference (targetOid); @@ -941,6 +922,10 @@ CREATE INDEX iNodeNameOrig ON m_node (name_orig); ALTER TABLE IF EXISTS m_node ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE IF EXISTS m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); CREATE INDEX iObjectTemplateNameOrig ON m_object_template (name_orig); ALTER TABLE IF EXISTS m_object_template @@ -1043,6 +1028,14 @@ ALTER TABLE IF EXISTS m_assignment_policy_situation ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment; ALTER TABLE IF EXISTS m_assignment_reference ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment; +ALTER TABLE IF EXISTS m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE IF EXISTS m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE IF EXISTS m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE IF EXISTS m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; ALTER TABLE IF EXISTS m_case_wi ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case; ALTER TABLE IF EXISTS m_case_wi_reference @@ -1127,6 +1120,8 @@ ALTER TABLE IF EXISTS m_lookup_table_row ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table; ALTER TABLE IF EXISTS m_node ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object; +ALTER TABLE IF EXISTS m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE IF EXISTS m_object_template ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE IF EXISTS m_org @@ -1153,3 +1148,739 @@ ALTER TABLE IF EXISTS m_user ADD CONSTRAINT fk_user FOREIGN KEY (oid) REFERENCES m_focus; ALTER TABLE IF EXISTS m_value_policy ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object; + +-- Thanks to Patrick Lightbody for submitting this... +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate + +drop table if exists qrtz_fired_triggers; +DROP TABLE if exists QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE if exists QRTZ_SCHEDULER_STATE; +DROP TABLE if exists QRTZ_LOCKS; +drop table if exists qrtz_simple_triggers; +drop table if exists qrtz_cron_triggers; +drop table if exists qrtz_simprop_triggers; +DROP TABLE if exists QRTZ_BLOB_TRIGGERS; +drop table if exists qrtz_triggers; +drop table if exists qrtz_job_details; +drop table if exists qrtz_calendars; + +CREATE TABLE qrtz_job_details + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE BOOL NOT NULL, + IS_NONCONCURRENT BOOL NOT NULL, + IS_UPDATE_DATA BOOL NOT NULL, + REQUESTS_RECOVERY BOOL NOT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + EXECUTION_GROUP VARCHAR(200) NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE qrtz_simple_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_cron_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 BOOL NULL, + BOOL_PROP_2 BOOL NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_blob_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_calendars + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BYTEA NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + + +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + EXECUTION_GROUP VARCHAR(200) NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BOOL NULL, + REQUESTS_RECOVERY BOOL NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP); + +create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME); +create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP); +create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE); +create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME); +create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP); + +create table ACT_GE_PROPERTY ( + NAME_ varchar(64), + VALUE_ varchar(300), + REV_ integer, + primary key (NAME_) +); + +insert into ACT_GE_PROPERTY +values ('schema.version', '5.22.0.0', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(5.22.0.0)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + DEPLOYMENT_ID_ varchar(64), + BYTES_ bytea, + GENERATED_ boolean, + primary key (ID_) +); + +create table ACT_RE_DEPLOYMENT ( + ID_ varchar(64), + NAME_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + DEPLOY_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_RE_MODEL ( + ID_ varchar(64) not null, + REV_ integer, + NAME_ varchar(255), + KEY_ varchar(255), + CATEGORY_ varchar(255), + CREATE_TIME_ timestamp, + LAST_UPDATE_TIME_ timestamp, + VERSION_ integer, + META_INFO_ varchar(4000), + DEPLOYMENT_ID_ varchar(64), + EDITOR_SOURCE_VALUE_ID_ varchar(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +); + +create table ACT_RU_EXECUTION ( + ID_ varchar(64), + REV_ integer, + PROC_INST_ID_ varchar(64), + BUSINESS_KEY_ varchar(255), + PARENT_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + SUPER_EXEC_ varchar(64), + ACT_ID_ varchar(255), + IS_ACTIVE_ boolean, + IS_CONCURRENT_ boolean, + IS_SCOPE_ boolean, + IS_EVENT_SCOPE_ boolean, + SUSPENSION_STATE_ integer, + CACHED_ENT_STATE_ integer, + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + LOCK_TIME_ timestamp, + 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_ boolean, + EXECUTION_ID_ varchar(64), + PROCESS_INSTANCE_ID_ varchar(64), + PROC_DEF_ID_ varchar(64), + RETRIES_ integer, + EXCEPTION_STACK_ID_ varchar(64), + EXCEPTION_MSG_ varchar(4000), + DUEDATE_ timestamp, + REPEAT_ varchar(255), + HANDLER_TYPE_ varchar(255), + HANDLER_CFG_ varchar(4000), + TENANT_ID_ varchar(255) default '', + 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), + DESCRIPTION_ varchar(4000), + HAS_START_FORM_KEY_ boolean, + HAS_GRAPHICAL_NOTATION_ boolean, + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(255) default '', + primary key (ID_) +); + +create table ACT_RU_TASK ( + ID_ varchar(64), + REV_ integer, + EXECUTION_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_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, + DUE_DATE_ timestamp, + CATEGORY_ varchar(255), + SUSPENSION_STATE_ integer, + TENANT_ID_ varchar(255) default '', + FORM_KEY_ varchar(255), + primary key (ID_) +); + +create table ACT_RU_IDENTITYLINK ( + ID_ varchar(64), + REV_ integer, + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + PROC_DEF_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), + TASK_ID_ varchar(64), + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + 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(64), + CONFIGURATION_ varchar(255), + CREATED_ timestamp not null, + PROC_DEF_ID_ varchar(64), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +); + +create table ACT_EVT_LOG ( + LOG_NR_ SERIAL PRIMARY KEY, + TYPE_ varchar(64), + PROC_DEF_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + TIME_STAMP_ timestamp not null, + USER_ID_ varchar(255), + DATA_ bytea, + LOCK_OWNER_ varchar(255), + LOCK_TIME_ timestamp null, + IS_PROCESSED_ smallint default 0 +); + +create table ACT_PROCDEF_INFO ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + REV_ integer, + INFO_JSON_ID_ varchar(64), + primary key (ID_) +); + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +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_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); + +create index ACT_IDX_BYTEAR_DEPL on ACT_GE_BYTEARRAY(DEPLOYMENT_ID_); +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF + unique (KEY_,VERSION_, TENANT_ID_); + +create index ACT_IDX_EXE_PROCINST on ACT_RU_EXECUTION(PROC_INST_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PARENT on ACT_RU_EXECUTION(PARENT_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PARENT + foreign key (PARENT_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_SUPER + foreign key (SUPER_EXEC_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_EXE_PROCDEF on ACT_RU_EXECUTION(PROC_DEF_ID_); +alter table ACT_RU_EXECUTION + add constraint ACT_FK_EXE_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_TSKASS_TASK on ACT_RU_IDENTITYLINK(TASK_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_TSKASS_TASK + foreign key (TASK_ID_) + references ACT_RU_TASK (ID_); + +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_ATHRZ_PROCEDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_IDL_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_); +alter table ACT_RU_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_TASK_PROCDEF on ACT_RU_TASK(PROC_DEF_ID_); +alter table ACT_RU_TASK + add constraint ACT_FK_TASK_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +create index ACT_IDX_VAR_EXE on ACT_RU_VARIABLE(EXECUTION_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_EXE + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_); + +create index ACT_IDX_VAR_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_VAR_BYTEARRAY on ACT_RU_VARIABLE(BYTEARRAY_ID_); +alter table ACT_RU_VARIABLE + add constraint ACT_FK_VAR_BYTEARRAY + foreign key (BYTEARRAY_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_JOB_EXCEPTION on ACT_RU_JOB(EXCEPTION_STACK_ID_); +alter table ACT_RU_JOB + add constraint ACT_FK_JOB_EXCEPTION + foreign key (EXCEPTION_STACK_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_EVENT_SUBSCR on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_); +alter table ACT_RU_EVENT_SUBSCR + add constraint ACT_FK_EVENT_EXEC + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION(ID_); + +create index ACT_IDX_MODEL_SOURCE on ACT_RE_MODEL(EDITOR_SOURCE_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE + foreign key (EDITOR_SOURCE_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_SOURCE_EXTRA on ACT_RE_MODEL(EDITOR_SOURCE_EXTRA_VALUE_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA + foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_MODEL_DEPLOYMENT on ACT_RE_MODEL(DEPLOYMENT_ID_); +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +create index ACT_IDX_PROCDEF_INFO_JSON on ACT_PROCDEF_INFO(INFO_JSON_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA + foreign key (INFO_JSON_ID_) + references ACT_GE_BYTEARRAY (ID_); + +create index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_); +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF + unique (PROC_DEF_ID_); + +create table ACT_HI_PROCINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64) not null, + BUSINESS_KEY_ varchar(255), + PROC_DEF_ID_ varchar(64) not null, + START_TIME_ timestamp not null, + END_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), + DELETE_REASON_ varchar(4000), + TENANT_ID_ varchar(255) default '', + NAME_ varchar(255), + primary key (ID_), + unique (PROC_INST_ID_) +); + +create table ACT_HI_ACTINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64) not null, + 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), + ACT_NAME_ varchar(255), + ACT_TYPE_ varchar(255) not null, + ASSIGNEE_ varchar(255), + START_TIME_ timestamp not null, + END_TIME_ timestamp, + DURATION_ bigint, + TENANT_ID_ varchar(255) default '', + primary key (ID_) +); + +create table ACT_HI_TASKINST ( + ID_ varchar(64) not null, + PROC_DEF_ID_ varchar(64), + TASK_DEF_KEY_ varchar(255), + PROC_INST_ID_ varchar(64), + EXECUTION_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, + CLAIM_TIME_ timestamp, + END_TIME_ timestamp, + DURATION_ bigint, + DELETE_REASON_ varchar(4000), + PRIORITY_ integer, + DUE_DATE_ timestamp, + FORM_KEY_ varchar(255), + CATEGORY_ varchar(255), + TENANT_ID_ varchar(255) default '', + primary key (ID_) +); + +create table ACT_HI_VARINST ( + ID_ varchar(64) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(100), + REV_ integer, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + CREATE_TIME_ timestamp, + LAST_UPDATED_TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_DETAIL ( + ID_ varchar(64) not null, + TYPE_ varchar(255) not null, + PROC_INST_ID_ varchar(64), + EXECUTION_ID_ varchar(64), + TASK_ID_ varchar(64), + ACT_INST_ID_ varchar(64), + NAME_ varchar(255) not null, + VAR_TYPE_ varchar(64), + REV_ integer, + TIME_ timestamp not null, + BYTEARRAY_ID_ varchar(64), + DOUBLE_ double precision, + LONG_ bigint, + TEXT_ varchar(4000), + TEXT2_ varchar(4000), + 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), + PROC_INST_ID_ varchar(64), + ACTION_ varchar(255), + MESSAGE_ varchar(4000), + FULL_MSG_ bytea, + 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), + PROC_INST_ID_ varchar(64), + URL_ varchar(4000), + CONTENT_ID_ varchar(64), + TIME_ timestamp, + primary key (ID_) +); + +create table ACT_HI_IDENTITYLINK ( + ID_ varchar(64), + GROUP_ID_ varchar(255), + TYPE_ varchar(255), + USER_ID_ varchar(255), + TASK_ID_ varchar(64), + PROC_INST_ID_ varchar(64), + 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_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +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_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_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_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); + +create table ACT_ID_GROUP ( + ID_ varchar(64), + REV_ integer, + NAME_ varchar(255), + TYPE_ varchar(255), + primary key (ID_) +); + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ varchar(64), + GROUP_ID_ varchar(64), + primary key (USER_ID_, GROUP_ID_) +); + +create table ACT_ID_USER ( + ID_ varchar(64), + REV_ integer, + FIRST_ varchar(255), + LAST_ varchar(255), + EMAIL_ varchar(255), + PWD_ varchar(255), + PICTURE_ID_ varchar(64), + primary key (ID_) +); + +create table ACT_ID_INFO ( + ID_ varchar(64), + REV_ integer, + USER_ID_ varchar(64), + TYPE_ varchar(64), + KEY_ varchar(255), + VALUE_ varchar(255), + PASSWORD_ bytea, + PARENT_ID_ varchar(255), + primary key (ID_) +); + +create index ACT_IDX_MEMB_GROUP on ACT_ID_MEMBERSHIP(GROUP_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_GROUP + foreign key (GROUP_ID_) + references ACT_ID_GROUP (ID_); + +create index ACT_IDX_MEMB_USER on ACT_ID_MEMBERSHIP(USER_ID_); +alter table ACT_ID_MEMBERSHIP + add constraint ACT_FK_MEMB_USER + foreign key (USER_ID_) + references ACT_ID_USER (ID_); + +commit; diff --git a/config/sql/_all/postgresql-upgrade-3.8-3.9.sql b/config/sql/_all/postgresql-upgrade-3.8-3.9.sql new file mode 100644 index 00000000000..90f0cc6c15d --- /dev/null +++ b/config/sql/_all/postgresql-upgrade-3.8-3.9.sql @@ -0,0 +1,14 @@ +CREATE TABLE m_object_collection ( + name_norm VARCHAR(255), + name_orig VARCHAR(255), + oid VARCHAR(36) NOT NULL, + PRIMARY KEY (oid) +); + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE IF EXISTS m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE IF EXISTS m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; diff --git a/config/sql/_all/sqlserver-upgrade-3.7-3.8.sql b/config/sql/_all/sqlserver-3.9-all.sql similarity index 62% rename from config/sql/_all/sqlserver-upgrade-3.7-3.8.sql rename to config/sql/_all/sqlserver-3.9-all.sql index 640b07ac643..518f9d53070 100644 --- a/config/sql/_all/sqlserver-upgrade-3.7-3.8.sql +++ b/config/sql/_all/sqlserver-3.9-all.sql @@ -1,202 +1,3 @@ -DROP TABLE m_acc_cert_definition; -DROP TABLE m_acc_cert_wi_reference; -DROP TABLE m_acc_cert_wi; -DROP TABLE m_acc_cert_case; -DROP TABLE m_acc_cert_campaign; -DROP TABLE m_assignment_ext_boolean; -DROP TABLE m_assignment_ext_date; -DROP TABLE m_assignment_ext_long; -DROP TABLE m_assignment_ext_poly; -DROP TABLE m_assignment_ext_reference; -DROP TABLE m_assignment_ext_string; -DROP TABLE m_assignment_extension; -DROP TABLE m_assignment_policy_situation; -DROP TABLE m_assignment_reference; -DROP TABLE m_assignment; --- Don't touch audit tables --- DROP TABLE m_audit_delta; --- DROP TABLE m_audit_item; --- DROP TABLE m_audit_prop_value; --- DROP TABLE m_audit_ref_value; --- DROP TABLE m_audit_event; -DROP TABLE m_case; -DROP TABLE m_connector_host; -DROP TABLE m_connector_target_system; -DROP TABLE m_connector; -DROP TABLE m_exclusion; -DROP TABLE m_focus_photo; -DROP TABLE m_focus_policy_situation; -DROP TABLE m_form; -DROP TABLE m_function_library; -DROP TABLE m_generic_object; -DROP TABLE m_lookup_table_row; -DROP TABLE m_lookup_table; -DROP TABLE m_node; -DROP TABLE m_object_ext_boolean; -DROP TABLE m_object_ext_date; -DROP TABLE m_object_ext_long; -DROP TABLE m_object_ext_poly; -DROP TABLE m_object_ext_reference; -DROP TABLE m_object_ext_string; -DROP TABLE m_object_template; -DROP TABLE m_object_text_info; -DROP TABLE m_operation_execution; -DROP TABLE m_org_closure; -DROP TABLE m_org_org_type; -DROP TABLE m_org; -DROP TABLE m_reference; -DROP TABLE m_report; -DROP TABLE m_report_output; -DROP TABLE m_resource; -DROP TABLE m_role; -DROP TABLE m_security_policy; -DROP TABLE m_sequence; -DROP TABLE m_service_type; -DROP TABLE m_service; -DROP TABLE m_abstract_role; -DROP TABLE m_shadow; -DROP TABLE m_system_configuration; -DROP TABLE m_task_dependent; -DROP TABLE m_task; -DROP TABLE m_trigger; -DROP TABLE m_user_employee_type; -DROP TABLE m_user_organization; -DROP TABLE m_user_organizational_unit; -DROP TABLE m_value_policy; -DROP TABLE m_user; -DROP TABLE m_focus; -DROP TABLE m_object; - -DROP TABLE hibernate_sequence; - -GO - -CREATE TABLE m_audit_event_NEW ( - id BIGINT IDENTITY NOT NULL, - attorneyName NVARCHAR(255) COLLATE database_default, - attorneyOid NVARCHAR(36) COLLATE database_default, - channel NVARCHAR(255) COLLATE database_default, - eventIdentifier NVARCHAR(255) COLLATE database_default, - eventStage INT, - eventType INT, - hostIdentifier NVARCHAR(255) COLLATE database_default, - initiatorName NVARCHAR(255) COLLATE database_default, - initiatorOid NVARCHAR(36) COLLATE database_default, - initiatorType INT, - message NVARCHAR(1024) COLLATE database_default, - nodeIdentifier NVARCHAR(255) COLLATE database_default, - outcome INT, - parameter NVARCHAR(255) COLLATE database_default, - remoteHostAddress NVARCHAR(255) COLLATE database_default, - result NVARCHAR(255) COLLATE database_default, - sessionIdentifier NVARCHAR(255) COLLATE database_default, - targetName NVARCHAR(255) COLLATE database_default, - targetOid NVARCHAR(36) COLLATE database_default, - targetOwnerName NVARCHAR(255) COLLATE database_default, - targetOwnerOid NVARCHAR(36) COLLATE database_default, - targetOwnerType INT, - targetType INT, - taskIdentifier NVARCHAR(255) COLLATE database_default, - taskOID NVARCHAR(255) COLLATE database_default, - timestampValue DATETIME2 - -- no primary key for now -); - -CREATE TABLE m_audit_prop_value_NEW ( - id BIGINT IDENTITY NOT NULL, - name NVARCHAR(255) COLLATE database_default, - record_id BIGINT, - value NVARCHAR(1024) COLLATE database_default - -- no primary key for now -); - -CREATE TABLE m_audit_ref_value_NEW ( - id BIGINT IDENTITY NOT NULL, - name NVARCHAR(255) COLLATE database_default, - oid NVARCHAR(255) COLLATE database_default, - record_id BIGINT, - targetName_norm NVARCHAR(255) COLLATE database_default, - targetName_orig NVARCHAR(255) COLLATE database_default, - type NVARCHAR(255) COLLATE database_default - -- no primary key for now -); - --- copying tables (can take a long time) -SET IDENTITY_INSERT m_audit_event_NEW ON; -INSERT INTO m_audit_event_NEW (id, attorneyName, attorneyOid, channel, eventIdentifier, eventStage, eventType, hostIdentifier, - initiatorName, initiatorOid, initiatorType, message, nodeIdentifier, outcome, parameter, remoteHostAddress, - result, sessionIdentifier, targetName, targetOid, targetOwnerName, targetOwnerOid, targetType, - taskIdentifier, taskOID, timestampValue) - SELECT - id, attorneyName, attorneyOid, channel, eventIdentifier, eventStage, eventType, hostIdentifier, initiatorName, initiatorOid, - initiatorType, message, nodeIdentifier, outcome, parameter, remoteHostAddress, result, sessionIdentifier, targetName, targetOid, - targetOwnerName, targetOwnerOid, targetType, taskIdentifier, taskOID, timestampValue - FROM m_audit_event; -SET IDENTITY_INSERT m_audit_event_NEW OFF; - -SET IDENTITY_INSERT m_audit_prop_value_NEW ON; -INSERT INTO m_audit_prop_value_NEW (id, name, record_id, [value]) - SELECT id, [name], record_id, [value] FROM m_audit_prop_value; -SET IDENTITY_INSERT m_audit_prop_value_NEW OFF; - -SET IDENTITY_INSERT m_audit_ref_value_NEW ON; -INSERT INTO m_audit_ref_value_NEW (id, name, oid, record_id, targetName_norm, targetName_orig, type) - SELECT id, [name], oid, record_id, targetName_norm, targetName_orig, type FROM m_audit_ref_value; -SET IDENTITY_INSERT m_audit_ref_value_NEW OFF; - -ALTER TABLE m_audit_delta DROP CONSTRAINT fk_audit_delta; -ALTER TABLE m_audit_item DROP CONSTRAINT fk_audit_item; - --- renaming new tables to old ones -DROP TABLE m_audit_prop_value; -EXEC sp_rename 'm_audit_prop_value_NEW', 'm_audit_prop_value' -DROP TABLE m_audit_ref_value; -EXEC sp_rename 'm_audit_ref_value_NEW', 'm_audit_ref_value' -DROP TABLE m_audit_event; -EXEC sp_rename 'm_audit_event_NEW', 'm_audit_event' - --- restoring indices and foreign key constraints -ALTER TABLE m_audit_event ADD PRIMARY KEY (id); -ALTER TABLE m_audit_prop_value ADD PRIMARY KEY (id); -ALTER TABLE m_audit_ref_value ADD PRIMARY KEY (id); - -CREATE INDEX iTimestampValue ON m_audit_event (timestampValue); -CREATE INDEX iAuditPropValRecordId ON m_audit_prop_value (record_id); -CREATE INDEX iAuditRefValRecordId ON m_audit_ref_value (record_id); - -ALTER TABLE m_audit_delta ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_item ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_prop_value ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; -ALTER TABLE m_audit_ref_value ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; - -ALTER TABLE m_audit_delta ADD deltaBlob VARBINARY(MAX); -ALTER TABLE m_audit_delta ADD fullResultBlob VARBINARY(MAX); - -GO - -UPDATE m_audit_delta SET deltaBlob = convert(VARBINARY(MAX), delta) where delta is not null; -UPDATE m_audit_delta SET fullResultBlob = convert(VARBINARY(MAX), fullResult) where fullResult is not null; --- This one should be used for SQL Server 2016 and later --- UPDATE m_audit_delta SET checksum = lower(convert(NVARCHAR(32), hashbytes('MD5', concat(delta, fullResult)), 2)); - --- The following is for SQL Server 2014 and earlier (but should work also for newer versions) -UPDATE m_audit_delta SET checksum = lower(convert(NVARCHAR(32), master.sys.fn_repl_hash_binary(cast(concat(delta, fullResult) as varbinary(MAX))), 2)); - -GO - -ALTER TABLE m_audit_delta DROP COLUMN delta; -ALTER TABLE m_audit_delta DROP COLUMN fullResult; - -GO - -EXEC sp_rename 'm_audit_delta.deltaBlob', delta, 'COLUMN' - -GO - -EXEC sp_rename 'm_audit_delta.fullResultBlob', fullResult, 'COLUMN' - -GO - CREATE TABLE m_acc_cert_campaign ( definitionRef_relation NVARCHAR(157) COLLATE database_default, definitionRef_targetOid NVARCHAR(36) COLLATE database_default, @@ -394,6 +195,73 @@ CREATE TABLE m_assignment_reference ( targetType INT, PRIMARY KEY (owner_owner_oid, owner_id, reference_type, relation, targetOid) ); +CREATE TABLE m_audit_delta ( + checksum NVARCHAR(32) COLLATE database_default NOT NULL, + record_id BIGINT NOT NULL, + delta VARBINARY(MAX), + deltaOid NVARCHAR(36) COLLATE database_default, + deltaType INT, + fullResult VARBINARY(MAX), + objectName_norm NVARCHAR(255) COLLATE database_default, + objectName_orig NVARCHAR(255) COLLATE database_default, + resourceName_norm NVARCHAR(255) COLLATE database_default, + resourceName_orig NVARCHAR(255) COLLATE database_default, + resourceOid NVARCHAR(36) COLLATE database_default, + status INT, + PRIMARY KEY (record_id, checksum) +); +CREATE TABLE m_audit_event ( + id BIGINT IDENTITY NOT NULL, + attorneyName NVARCHAR(255) COLLATE database_default, + attorneyOid NVARCHAR(36) COLLATE database_default, + channel NVARCHAR(255) COLLATE database_default, + eventIdentifier NVARCHAR(255) COLLATE database_default, + eventStage INT, + eventType INT, + hostIdentifier NVARCHAR(255) COLLATE database_default, + initiatorName NVARCHAR(255) COLLATE database_default, + initiatorOid NVARCHAR(36) COLLATE database_default, + initiatorType INT, + message NVARCHAR(1024) COLLATE database_default, + nodeIdentifier NVARCHAR(255) COLLATE database_default, + outcome INT, + parameter NVARCHAR(255) COLLATE database_default, + remoteHostAddress NVARCHAR(255) COLLATE database_default, + result NVARCHAR(255) COLLATE database_default, + sessionIdentifier NVARCHAR(255) COLLATE database_default, + targetName NVARCHAR(255) COLLATE database_default, + targetOid NVARCHAR(36) COLLATE database_default, + targetOwnerName NVARCHAR(255) COLLATE database_default, + targetOwnerOid NVARCHAR(36) COLLATE database_default, + targetOwnerType INT, + targetType INT, + taskIdentifier NVARCHAR(255) COLLATE database_default, + taskOID NVARCHAR(255) COLLATE database_default, + timestampValue DATETIME2, + PRIMARY KEY (id) +); +CREATE TABLE m_audit_item ( + changedItemPath NVARCHAR(255) COLLATE database_default NOT NULL, + record_id BIGINT NOT NULL, + PRIMARY KEY (record_id, changedItemPath) +); +CREATE TABLE m_audit_prop_value ( + id BIGINT IDENTITY NOT NULL, + name NVARCHAR(255) COLLATE database_default, + record_id BIGINT, + value NVARCHAR(1024) COLLATE database_default, + PRIMARY KEY (id) +); +CREATE TABLE m_audit_ref_value ( + id BIGINT IDENTITY NOT NULL, + name NVARCHAR(255) COLLATE database_default, + oid NVARCHAR(36) COLLATE database_default, + record_id BIGINT, + targetName_norm NVARCHAR(255) COLLATE database_default, + targetName_orig NVARCHAR(255) COLLATE database_default, + type NVARCHAR(255) COLLATE database_default, + PRIMARY KEY (id) +); CREATE TABLE m_case_wi ( id INT NOT NULL, owner_oid NVARCHAR(36) COLLATE database_default NOT NULL, @@ -744,6 +612,12 @@ CREATE TABLE m_node ( oid NVARCHAR(36) COLLATE database_default NOT NULL, PRIMARY KEY (oid) ); +CREATE TABLE m_object_collection ( + name_norm NVARCHAR(255) COLLATE database_default, + name_orig NVARCHAR(255) COLLATE database_default, + oid NVARCHAR(36) COLLATE database_default NOT NULL, + PRIMARY KEY (oid) +); CREATE TABLE m_object_template ( name_norm NVARCHAR(255) COLLATE database_default, name_orig NVARCHAR(255) COLLATE database_default, @@ -907,8 +781,16 @@ CREATE INDEX iAssignmentReferenceTargetOid ON m_assignment_reference (targetOid); CREATE INDEX iAuditDeltaRecordId ON m_audit_delta (record_id); +CREATE INDEX iTimestampValue + ON m_audit_event (timestampValue); +CREATE INDEX iChangedItemPath + ON m_audit_item (changedItemPath); CREATE INDEX iAuditItemRecordId ON m_audit_item (record_id); +CREATE INDEX iAuditPropValRecordId + ON m_audit_prop_value (record_id); +CREATE INDEX iAuditRefValRecordId + ON m_audit_ref_value (record_id); CREATE INDEX iCaseWorkItemRefTargetOid ON m_case_wi_reference (targetOid); @@ -1040,6 +922,10 @@ CREATE INDEX iNodeNameOrig ON m_node (name_orig); ALTER TABLE m_node ADD CONSTRAINT uc_node_name UNIQUE (name_norm); +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); CREATE INDEX iObjectTemplateNameOrig ON m_object_template (name_orig); ALTER TABLE m_object_template @@ -1142,6 +1028,14 @@ ALTER TABLE m_assignment_policy_situation ADD CONSTRAINT fk_assignment_policy_situation FOREIGN KEY (assignment_oid, assignment_id) REFERENCES m_assignment; ALTER TABLE m_assignment_reference ADD CONSTRAINT fk_assignment_reference FOREIGN KEY (owner_owner_oid, owner_id) REFERENCES m_assignment; +ALTER TABLE m_audit_delta + ADD CONSTRAINT fk_audit_delta FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_item + ADD CONSTRAINT fk_audit_item FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_prop_value + ADD CONSTRAINT fk_audit_prop_value FOREIGN KEY (record_id) REFERENCES m_audit_event; +ALTER TABLE m_audit_ref_value + ADD CONSTRAINT fk_audit_ref_value FOREIGN KEY (record_id) REFERENCES m_audit_event; ALTER TABLE m_case_wi ADD CONSTRAINT fk_case_wi_owner FOREIGN KEY (owner_oid) REFERENCES m_case; ALTER TABLE m_case_wi_reference @@ -1226,6 +1120,8 @@ ALTER TABLE m_lookup_table_row ADD CONSTRAINT fk_lookup_table_owner FOREIGN KEY (owner_oid) REFERENCES m_lookup_table; ALTER TABLE m_node ADD CONSTRAINT fk_node FOREIGN KEY (oid) REFERENCES m_object; +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_object_template ADD CONSTRAINT fk_object_template FOREIGN KEY (oid) REFERENCES m_object; ALTER TABLE m_org @@ -1253,4 +1149,890 @@ ALTER TABLE m_user ALTER TABLE m_value_policy ADD CONSTRAINT fk_value_policy FOREIGN KEY (oid) REFERENCES m_object; -GO +--# thanks to George Papastamatopoulos for submitting this ... and Marko Lahma for +--# updating it. +--# +--# In your Quartz properties file, you'll need to set +--# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate +--# +--# you shouse enter your DB instance's name on the next line in place of "enter_db_name_here" +--# +--# +--# From a helpful (but anonymous) Quartz user: +--# +--# Regarding this error message: +--# +--# [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. +--# +--# +--# I added "SelectMethod=cursor;" to my Connection URL in the config file. +--# It Seems to work, hopefully no side effects. +--# +--# example: +--# "jdbc:microsoft:sqlserver://dbmachine:1433;SelectMethod=cursor"; +--# +--# Another user has pointed out that you will probably need to use the +--# JTDS driver +--# +--# +--# USE [enter_db_name_here] +--# GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_TRIGGERS] DROP CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] DROP CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1) +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_CALENDARS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CRON_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_CRON_TRIGGERS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_BLOB_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_BLOB_TRIGGERS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_FIRED_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_FIRED_TRIGGERS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_PAUSED_TRIGGER_GRPS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SCHEDULER_STATE]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SCHEDULER_STATE]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_LOCKS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_LOCKS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_JOB_DETAILS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPLE_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPROP_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS]; +-- GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1) +DROP TABLE [dbo].[QRTZ_TRIGGERS]; +-- GO + +CREATE TABLE [dbo].[QRTZ_CALENDARS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [CALENDAR_NAME] [VARCHAR] (200) NOT NULL , + [CALENDAR] [IMAGE] NOT NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_CRON_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [CRON_EXPRESSION] [VARCHAR] (120) NOT NULL , + [TIME_ZONE_ID] [VARCHAR] (80) +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_FIRED_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [ENTRY_ID] [VARCHAR] (95) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [INSTANCE_NAME] [VARCHAR] (200) NOT NULL , + [FIRED_TIME] [BIGINT] NOT NULL , + [SCHED_TIME] [BIGINT] NOT NULL , + [PRIORITY] [INTEGER] NOT NULL , + [EXECUTION_GROUP] [VARCHAR] (200) NULL , + [STATE] [VARCHAR] (16) NOT NULL, + [JOB_NAME] [VARCHAR] (200) NULL , + [JOB_GROUP] [VARCHAR] (200) NULL , + [IS_NONCONCURRENT] [VARCHAR] (1) NULL , + [REQUESTS_RECOVERY] [VARCHAR] (1) NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_SCHEDULER_STATE] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [INSTANCE_NAME] [VARCHAR] (200) NOT NULL , + [LAST_CHECKIN_TIME] [BIGINT] NOT NULL , + [CHECKIN_INTERVAL] [BIGINT] NOT NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_LOCKS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [LOCK_NAME] [VARCHAR] (40) NOT NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_JOB_DETAILS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [JOB_NAME] [VARCHAR] (200) NOT NULL , + [JOB_GROUP] [VARCHAR] (200) NOT NULL , + [DESCRIPTION] [VARCHAR] (250) NULL , + [JOB_CLASS_NAME] [VARCHAR] (250) NOT NULL , + [IS_DURABLE] [VARCHAR] (1) NOT NULL , + [IS_NONCONCURRENT] [VARCHAR] (1) NOT NULL , + [IS_UPDATE_DATA] [VARCHAR] (1) NOT NULL , + [REQUESTS_RECOVERY] [VARCHAR] (1) NOT NULL , + [JOB_DATA] [IMAGE] NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [REPEAT_COUNT] [BIGINT] NOT NULL , + [REPEAT_INTERVAL] [BIGINT] NOT NULL , + [TIMES_TRIGGERED] [BIGINT] NOT NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [STR_PROP_1] [VARCHAR] (512) NULL, + [STR_PROP_2] [VARCHAR] (512) NULL, + [STR_PROP_3] [VARCHAR] (512) NULL, + [INT_PROP_1] [INT] NULL, + [INT_PROP_2] [INT] NULL, + [LONG_PROP_1] [BIGINT] NULL, + [LONG_PROP_2] [BIGINT] NULL, + [DEC_PROP_1] [NUMERIC] (13,4) NULL, + [DEC_PROP_2] [NUMERIC] (13,4) NULL, + [BOOL_PROP_1] [VARCHAR] (1) NULL, + [BOOL_PROP_2] [VARCHAR] (1) NULL, +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_BLOB_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [BLOB_DATA] [IMAGE] NULL +) ON [PRIMARY]; +-- GO + +CREATE TABLE [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME] [VARCHAR] (120) NOT NULL , + [TRIGGER_NAME] [VARCHAR] (200) NOT NULL , + [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL , + [JOB_NAME] [VARCHAR] (200) NOT NULL , + [JOB_GROUP] [VARCHAR] (200) NOT NULL , + [DESCRIPTION] [VARCHAR] (250) NULL , + [NEXT_FIRE_TIME] [BIGINT] NULL , + [PREV_FIRE_TIME] [BIGINT] NULL , + [PRIORITY] [INTEGER] NULL , + [EXECUTION_GROUP] [VARCHAR] (200) NULL , + [TRIGGER_STATE] [VARCHAR] (16) NOT NULL , + [TRIGGER_TYPE] [VARCHAR] (8) NOT NULL , + [START_TIME] [BIGINT] NOT NULL , + [END_TIME] [BIGINT] NULL , + [CALENDAR_NAME] [VARCHAR] (200) NULL , + [MISFIRE_INSTR] [SMALLINT] NULL , + [JOB_DATA] [IMAGE] NULL +) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_CALENDARS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_CALENDARS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [CALENDAR_NAME] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_CRON_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_FIRED_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_FIRED_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [ENTRY_ID] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_PAUSED_TRIGGER_GRPS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_SCHEDULER_STATE] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SCHEDULER_STATE] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [INSTANCE_NAME] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_LOCKS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_LOCKS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [LOCK_NAME] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_JOB_DETAILS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_JOB_DETAILS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SIMPLE_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_SIMPROP_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_TRIGGERS] WITH NOCHECK ADD + CONSTRAINT [PK_QRTZ_TRIGGERS] PRIMARY KEY CLUSTERED + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON [PRIMARY]; +-- GO + +ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE; +-- GO + +ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE; +-- GO + +ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY + ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) REFERENCES [dbo].[QRTZ_TRIGGERS] ( + [SCHED_NAME], + [TRIGGER_NAME], + [TRIGGER_GROUP] + ) ON DELETE CASCADE; +-- GO + +ALTER TABLE [dbo].[QRTZ_TRIGGERS] ADD + CONSTRAINT [FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS] FOREIGN KEY + ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ) REFERENCES [dbo].[QRTZ_JOB_DETAILS] ( + [SCHED_NAME], + [JOB_NAME], + [JOB_GROUP] + ); +-- GO; + +create table ACT_GE_PROPERTY ( + NAME_ nvarchar(64), + VALUE_ nvarchar(300), + REV_ int, + primary key (NAME_) +); + +insert into ACT_GE_PROPERTY +values ('schema.version', '5.22.0.0', 1); + +insert into ACT_GE_PROPERTY +values ('schema.history', 'create(5.22.0.0)', 1); + +insert into ACT_GE_PROPERTY +values ('next.dbid', '1', 1); + +create table ACT_GE_BYTEARRAY ( + ID_ nvarchar(64), + REV_ int, + NAME_ nvarchar(255), + DEPLOYMENT_ID_ nvarchar(64), + BYTES_ varbinary(max), + GENERATED_ tinyint, + primary key (ID_) +); + +create table ACT_RE_DEPLOYMENT ( + ID_ nvarchar(64), + NAME_ nvarchar(255), + CATEGORY_ nvarchar(255), + TENANT_ID_ nvarchar(255) default '', + DEPLOY_TIME_ datetime, + primary key (ID_) +); + +create table ACT_RE_MODEL ( + ID_ nvarchar(64) not null, + REV_ int, + NAME_ nvarchar(255), + KEY_ nvarchar(255), + CATEGORY_ nvarchar(255), + CREATE_TIME_ datetime, + LAST_UPDATE_TIME_ datetime, + VERSION_ int, + META_INFO_ nvarchar(4000), + DEPLOYMENT_ID_ nvarchar(64), + EDITOR_SOURCE_VALUE_ID_ nvarchar(64), + EDITOR_SOURCE_EXTRA_VALUE_ID_ nvarchar(64), + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_RU_EXECUTION ( + ID_ nvarchar(64), + REV_ int, + PROC_INST_ID_ nvarchar(64), + BUSINESS_KEY_ nvarchar(255), + PARENT_ID_ nvarchar(64), + PROC_DEF_ID_ nvarchar(64), + SUPER_EXEC_ nvarchar(64), + ACT_ID_ nvarchar(255), + IS_ACTIVE_ tinyint, + IS_CONCURRENT_ tinyint, + IS_SCOPE_ tinyint, + IS_EVENT_SCOPE_ tinyint, + SUSPENSION_STATE_ tinyint, + CACHED_ENT_STATE_ int, + TENANT_ID_ nvarchar(255) default '', + NAME_ nvarchar(255), + LOCK_TIME_ datetime, + primary key (ID_) +); + +create table ACT_RU_JOB ( + ID_ nvarchar(64) NOT NULL, + REV_ int, + TYPE_ nvarchar(255) NOT NULL, + LOCK_EXP_TIME_ datetime, + LOCK_OWNER_ nvarchar(255), + EXCLUSIVE_ bit, + EXECUTION_ID_ nvarchar(64), + PROCESS_INSTANCE_ID_ nvarchar(64), + PROC_DEF_ID_ nvarchar(64), + RETRIES_ int, + EXCEPTION_STACK_ID_ nvarchar(64), + EXCEPTION_MSG_ nvarchar(4000), + DUEDATE_ datetime NULL, + REPEAT_ nvarchar(255), + HANDLER_TYPE_ nvarchar(255), + HANDLER_CFG_ nvarchar(4000), + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_RE_PROCDEF ( + ID_ nvarchar(64) not null, + REV_ int, + CATEGORY_ nvarchar(255), + NAME_ nvarchar(255), + KEY_ nvarchar(255) not null, + VERSION_ int not null, + DEPLOYMENT_ID_ nvarchar(64), + RESOURCE_NAME_ nvarchar(4000), + DGRM_RESOURCE_NAME_ nvarchar(4000), + DESCRIPTION_ nvarchar(4000), + HAS_START_FORM_KEY_ tinyint, + HAS_GRAPHICAL_NOTATION_ tinyint, + SUSPENSION_STATE_ tinyint, + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_RU_TASK ( + ID_ nvarchar(64), + REV_ int, + EXECUTION_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + PROC_DEF_ID_ nvarchar(64), + NAME_ nvarchar(255), + PARENT_TASK_ID_ nvarchar(64), + DESCRIPTION_ nvarchar(4000), + TASK_DEF_KEY_ nvarchar(255), + OWNER_ nvarchar(255), + ASSIGNEE_ nvarchar(255), + DELEGATION_ nvarchar(64), + PRIORITY_ int, + CREATE_TIME_ datetime, + DUE_DATE_ datetime, + CATEGORY_ nvarchar(255), + SUSPENSION_STATE_ int, + TENANT_ID_ nvarchar(255) default '', + FORM_KEY_ nvarchar(255), + primary key (ID_) +); + +create table ACT_RU_IDENTITYLINK ( + ID_ nvarchar(64), + REV_ int, + GROUP_ID_ nvarchar(255), + TYPE_ nvarchar(255), + USER_ID_ nvarchar(255), + TASK_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + PROC_DEF_ID_ nvarchar(64), + primary key (ID_) +); + +create table ACT_RU_VARIABLE ( + ID_ nvarchar(64) not null, + REV_ int, + TYPE_ nvarchar(255) not null, + NAME_ nvarchar(255) not null, + EXECUTION_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + TASK_ID_ nvarchar(64), + BYTEARRAY_ID_ nvarchar(64), + DOUBLE_ double precision, + LONG_ numeric(19,0), + TEXT_ nvarchar(4000), + TEXT2_ nvarchar(4000), + primary key (ID_) +); + +create table ACT_RU_EVENT_SUBSCR ( + ID_ nvarchar(64) not null, + REV_ int, + EVENT_TYPE_ nvarchar(255) not null, + EVENT_NAME_ nvarchar(255), + EXECUTION_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + ACTIVITY_ID_ nvarchar(64), + CONFIGURATION_ nvarchar(255), + CREATED_ datetime not null, + PROC_DEF_ID_ nvarchar(64), + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_EVT_LOG ( + LOG_NR_ numeric(19,0) IDENTITY(1,1), + TYPE_ nvarchar(64), + PROC_DEF_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + EXECUTION_ID_ nvarchar(64), + TASK_ID_ nvarchar(64), + TIME_STAMP_ datetime not null, + USER_ID_ nvarchar(255), + DATA_ varbinary(max), + LOCK_OWNER_ nvarchar(255), + LOCK_TIME_ datetime null, + IS_PROCESSED_ tinyint default 0, + primary key (LOG_NR_) +); + +create table ACT_PROCDEF_INFO ( + ID_ nvarchar(64) not null, + PROC_DEF_ID_ nvarchar(64) not null, + REV_ int, + INFO_JSON_ID_ nvarchar(64), + primary key (ID_) +); + +create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); +create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); +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_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); +create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); +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_IDANDREV on ACT_RU_EXECUTION(ID_, REV_); +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_IDENT_LNK_TASK on ACT_RU_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_IDENT_LNK_PROCINST on ACT_RU_IDENTITYLINK(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_EXEC_PROC_INST_ID on ACT_RU_EXECUTION(PROC_INST_ID_); +create index ACT_IDX_TASK_PROC_DEF_ID on ACT_RU_TASK(PROC_DEF_ID_); +create index ACT_IDX_EVENT_SUBSCR_EXEC_ID on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_); +create index ACT_IDX_JOB_EXCEPTION_STACK_ID on ACT_RU_JOB(EXCEPTION_STACK_ID_); +create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_ID_); + +alter table ACT_GE_BYTEARRAY + add constraint ACT_FK_BYTEARR_DEPL + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_RE_PROCDEF + add constraint ACT_UNIQ_PROCDEF + unique (KEY_,VERSION_, TENANT_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_IDENTITYLINK + add constraint ACT_FK_IDL_PROCINST + foreign key (PROC_INST_ID_) + references ACT_RU_EXECUTION (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_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE + foreign key (EDITOR_SOURCE_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_SOURCE_EXTRA + foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_RE_MODEL + add constraint ACT_FK_MODEL_DEPLOYMENT + foreign key (DEPLOYMENT_ID_) + references ACT_RE_DEPLOYMENT (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_JSON_BA + foreign key (INFO_JSON_ID_) + references ACT_GE_BYTEARRAY (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_FK_INFO_PROCDEF + foreign key (PROC_DEF_ID_) + references ACT_RE_PROCDEF (ID_); + +alter table ACT_PROCDEF_INFO + add constraint ACT_UNIQ_INFO_PROCDEF + unique (PROC_DEF_ID_); + +create table ACT_HI_PROCINST ( + ID_ nvarchar(64) not null, + PROC_INST_ID_ nvarchar(64) not null, + BUSINESS_KEY_ nvarchar(255), + PROC_DEF_ID_ nvarchar(64) not null, + START_TIME_ datetime not null, + END_TIME_ datetime, + DURATION_ numeric(19,0), + START_USER_ID_ nvarchar(255), + START_ACT_ID_ nvarchar(255), + END_ACT_ID_ nvarchar(255), + SUPER_PROCESS_INSTANCE_ID_ nvarchar(64), + DELETE_REASON_ nvarchar(4000), + TENANT_ID_ nvarchar(255) default '', + NAME_ nvarchar(255), + primary key (ID_), + unique (PROC_INST_ID_) +); + +create table ACT_HI_ACTINST ( + ID_ nvarchar(64) not null, + PROC_DEF_ID_ nvarchar(64) not null, + PROC_INST_ID_ nvarchar(64) not null, + EXECUTION_ID_ nvarchar(64) not null, + ACT_ID_ nvarchar(255) not null, + TASK_ID_ nvarchar(64), + CALL_PROC_INST_ID_ nvarchar(64), + ACT_NAME_ nvarchar(255), + ACT_TYPE_ nvarchar(255) not null, + ASSIGNEE_ nvarchar(255), + START_TIME_ datetime not null, + END_TIME_ datetime, + DURATION_ numeric(19,0), + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_HI_TASKINST ( + ID_ nvarchar(64) not null, + PROC_DEF_ID_ nvarchar(64), + TASK_DEF_KEY_ nvarchar(255), + PROC_INST_ID_ nvarchar(64), + EXECUTION_ID_ nvarchar(64), + NAME_ nvarchar(255), + PARENT_TASK_ID_ nvarchar(64), + DESCRIPTION_ nvarchar(4000), + OWNER_ nvarchar(255), + ASSIGNEE_ nvarchar(255), + START_TIME_ datetime not null, + CLAIM_TIME_ datetime, + END_TIME_ datetime, + DURATION_ numeric(19,0), + DELETE_REASON_ nvarchar(4000), + PRIORITY_ int, + DUE_DATE_ datetime, + FORM_KEY_ nvarchar(255), + CATEGORY_ nvarchar(255), + TENANT_ID_ nvarchar(255) default '', + primary key (ID_) +); + +create table ACT_HI_VARINST ( + ID_ nvarchar(64) not null, + PROC_INST_ID_ nvarchar(64), + EXECUTION_ID_ nvarchar(64), + TASK_ID_ nvarchar(64), + NAME_ nvarchar(255) not null, + VAR_TYPE_ nvarchar(100), + REV_ int, + BYTEARRAY_ID_ nvarchar(64), + DOUBLE_ double precision, + LONG_ numeric(19,0), + TEXT_ nvarchar(4000), + TEXT2_ nvarchar(4000), + CREATE_TIME_ datetime, + LAST_UPDATED_TIME_ datetime, + primary key (ID_) +); + +create table ACT_HI_DETAIL ( + ID_ nvarchar(64) not null, + TYPE_ nvarchar(255) not null, + PROC_INST_ID_ nvarchar(64), + EXECUTION_ID_ nvarchar(64), + TASK_ID_ nvarchar(64), + ACT_INST_ID_ nvarchar(64), + NAME_ nvarchar(255) not null, + VAR_TYPE_ nvarchar(255), + REV_ int, + TIME_ datetime not null, + BYTEARRAY_ID_ nvarchar(64), + DOUBLE_ double precision, + LONG_ numeric(19,0), + TEXT_ nvarchar(4000), + TEXT2_ nvarchar(4000), + primary key (ID_) +); + +create table ACT_HI_COMMENT ( + ID_ nvarchar(64) not null, + TYPE_ nvarchar(255), + TIME_ datetime not null, + USER_ID_ nvarchar(255), + TASK_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + ACTION_ nvarchar(255), + MESSAGE_ nvarchar(4000), + FULL_MSG_ varbinary(max), + primary key (ID_) +); + +create table ACT_HI_ATTACHMENT ( + ID_ nvarchar(64) not null, + REV_ integer, + USER_ID_ nvarchar(255), + NAME_ nvarchar(255), + DESCRIPTION_ nvarchar(4000), + TYPE_ nvarchar(255), + TASK_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + URL_ nvarchar(4000), + CONTENT_ID_ nvarchar(64), + TIME_ datetime, + primary key (ID_) +); + +create table ACT_HI_IDENTITYLINK ( + ID_ nvarchar(64), + GROUP_ID_ nvarchar(255), + TYPE_ nvarchar(255), + USER_ID_ nvarchar(255), + TASK_ID_ nvarchar(64), + PROC_INST_ID_ nvarchar(64), + 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_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); +create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); +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_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_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_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_); +create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); +create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_); +create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_); +create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_); +create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_); + +create table ACT_ID_GROUP ( + ID_ nvarchar(64), + REV_ int, + NAME_ nvarchar(255), + TYPE_ nvarchar(255), + primary key (ID_) +); + +create table ACT_ID_MEMBERSHIP ( + USER_ID_ nvarchar(64), + GROUP_ID_ nvarchar(64), + primary key (USER_ID_, GROUP_ID_) +); + +create table ACT_ID_USER ( + ID_ nvarchar(64), + REV_ int, + FIRST_ nvarchar(255), + LAST_ nvarchar(255), + EMAIL_ nvarchar(255), + PWD_ nvarchar(255), + PICTURE_ID_ nvarchar(64), + primary key (ID_) +); + +create table ACT_ID_INFO ( + ID_ nvarchar(64), + REV_ int, + USER_ID_ nvarchar(64), + TYPE_ nvarchar(64), + KEY_ nvarchar(255), + VALUE_ nvarchar(255), + PASSWORD_ varbinary(max), + PARENT_ID_ nvarchar(255), + primary key (ID_) +); + +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_); diff --git a/config/sql/_all/sqlserver-upgrade-3.8-3.9.sql b/config/sql/_all/sqlserver-upgrade-3.8-3.9.sql new file mode 100644 index 00000000000..56fb83dfce0 --- /dev/null +++ b/config/sql/_all/sqlserver-upgrade-3.8-3.9.sql @@ -0,0 +1,14 @@ +CREATE TABLE m_object_collection ( + name_norm NVARCHAR(255) COLLATE database_default, + name_orig NVARCHAR(255) COLLATE database_default, + oid NVARCHAR(36) COLLATE database_default NOT NULL, + PRIMARY KEY (oid) +); + +CREATE INDEX iObjectCollectionNameOrig + ON m_object_collection (name_orig); +ALTER TABLE m_object_collection + ADD CONSTRAINT uc_object_collection_name UNIQUE (name_norm); + +ALTER TABLE m_object_collection + ADD CONSTRAINT fk_object_collection FOREIGN KEY (oid) REFERENCES m_object; diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml index 538a22d7749..aed104bbfd0 100644 --- a/gui/admin-gui/pom.xml +++ b/gui/admin-gui/pom.xml @@ -122,6 +122,7 @@ + org.springframework.boot @@ -210,7 +211,7 @@ org.webjars webjars-locator-core - 0.32 + 0.35 ro.isdc.wro4j @@ -404,11 +405,6 @@ spring-aspects runtime - - org.springframework - spring-aop - runtime - org.codehaus.groovy groovy-all @@ -544,6 +540,10 @@ org.springframework spring-context + + org.springframework + spring-aop + @@ -721,6 +721,7 @@ + com.evolveum.midpoint.infra test-util @@ -756,6 +757,11 @@ spring-test test + + javax.annotation + javax.annotation-api + test + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index e3305092ae8..00c2bf94fa4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -621,7 +621,7 @@ private List getGuiObjectColumnTypeList(){ AdminGuiConfigurationType adminGuiConfig = parentPage.getPrincipal().getAdminGuiConfiguration(); if (adminGuiConfig != null && adminGuiConfig.getObjectLists() != null && adminGuiConfig.getObjectLists().getObjectList() != null){ - for (GuiObjectListType object : adminGuiConfig.getObjectLists().getObjectList()){ + for (GuiObjectListViewType object : adminGuiConfig.getObjectLists().getObjectList()){ if (object.getType() != null && !type.getClassDefinition().getSimpleName().equals(object.getType().getLocalPart())){ continue; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html index a7363134e5c..b6f4fab8051 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html @@ -18,6 +18,7 @@ + <span wicket:id="title"/> diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 3bddc91e1c0..f268a7221e5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -416,12 +416,12 @@ public static void safeResultCleanup(OperationResult result, Trace logger) { } } - public static GuiObjectListType getDefaultGuiObjectListType(PageBase pageBase) { + public static GuiObjectListViewType getDefaultGuiObjectListType(PageBase pageBase) { AdminGuiConfigurationType config = pageBase.getPrincipal().getAdminGuiConfiguration(); if (config == null) { return null; } - GuiObjectListsType lists = config.getObjectLists(); + GuiObjectListViewsType lists = config.getObjectLists(); if (lists == null) { return null; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/EmbeddedTomcatAutoConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/EmbeddedTomcatAutoConfiguration.java index 4de6e079631..41b7b327d30 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/EmbeddedTomcatAutoConfiguration.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/EmbeddedTomcatAutoConfiguration.java @@ -23,9 +23,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.SearchStrategy; -import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration.BeanPostProcessorsRegistrar; -import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; -import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; +import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -37,7 +36,7 @@ /** * Custom configuration (factory) for embedded tomcat factory. * This is necessary, as the tomcat factory is hacking tomcat setup. - * @see MidPointTomcatEmbeddedServletContainerFactory + * @see MidPointTomcatServletWebServerFactory * * @author semancik */ @@ -51,14 +50,14 @@ public class EmbeddedTomcatAutoConfiguration { @Configuration @ConditionalOnClass({ Servlet.class, Tomcat.class }) - @ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT) + @ConditionalOnMissingBean(value = TomcatServletWebServerFactory.class, search = SearchStrategy.CURRENT) public static class EmbeddedTomcat { @Bean - public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() { - return new MidPointTomcatEmbeddedServletContainerFactory(); + public TomcatServletWebServerFactory tomcatEmbeddedServletContainerFactory() { + return new MidPointTomcatServletWebServerFactory(); } } -} +} \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java index 4b05cc6334a..eb59cb7df49 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointSpringApplication.java @@ -37,21 +37,29 @@ import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; -import org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration; -import org.springframework.boot.autoconfigure.web.*; +import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer; +import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; -import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; -import org.springframework.boot.web.servlet.ErrorPage; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.server.ErrorPage; +import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; +import org.springframework.boot.web.servlet.server.Session; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ImportResource; import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextListener; import org.springframework.web.filter.DelegatingFilterProxy; import ro.isdc.wro.http.WroFilter; @@ -60,10 +68,11 @@ import java.io.File; import java.lang.management.ManagementFactory; -import java.util.concurrent.TimeUnit; +import java.time.Duration; /** * Created by Viliam Repan (lazyman). + * Modified by Lukas Skublik. */ @ImportResource(locations = { "classpath:ctx-common.xml", @@ -91,18 +100,16 @@ }) @ImportAutoConfiguration(classes = { EmbeddedTomcatAutoConfiguration.class, - DispatcherServletAutoConfiguration.class, - WebMvcAutoConfiguration.class, - HttpMessageConvertersAutoConfiguration.class, - PropertyPlaceholderAutoConfiguration.class, - SecurityAutoConfiguration.class, - SecurityFilterAutoConfiguration.class, - ServerPropertiesAutoConfiguration.class, - MultipartAutoConfiguration.class + DispatcherServletAutoConfiguration.class, + WebMvcAutoConfiguration.class, + HttpMessageConvertersAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class, + SecurityFilterAutoConfiguration.class, + MultipartAutoConfiguration.class }) @SpringBootConfiguration public class MidPointSpringApplication extends SpringBootServletInitializer { - + private static final Trace LOGGER = TraceManager.getTrace(MidPointSpringApplication.class); private static final String MIDPOINT_HOME_PROPERTY = "midpoint.home"; @@ -111,7 +118,7 @@ public class MidPointSpringApplication extends SpringBootServletInitializer { @Autowired StartupConfiguration startupConfiguration; @Autowired NodeAuthenticationEvaluator nodeAuthenticator; - + public static void main(String[] args) { System.setProperty("xml.catalog.className", CatalogImpl.class.getName()); String mode = args != null && args.length > 0 ? args[0] : null; @@ -162,13 +169,14 @@ private static SpringApplicationBuilder configureApplication(SpringApplicationBu System.setProperty(MIDPOINT_HOME_PROPERTY, mpHome); } - System.setProperty("spring.config.location", "${midpoint.home}/"); + //TODO Could not resolve placeholder +// System.setProperty("spring.config.location", "${midpoint.home}/"); application.bannerMode(Banner.Mode.LOG); return application.sources(MidPointSpringApplication.class); } - + @Bean public ServletListenerRegistrationBean requestContextListener() { return new ServletListenerRegistrationBean(new RequestContextListener()); @@ -195,7 +203,7 @@ public FilterRegistrationBean wicket() { return registration; } - + @Bean public FilterRegistrationBean springSecurityFilterChain() { FilterRegistrationBean registration = new FilterRegistrationBean(); @@ -241,44 +249,48 @@ public ServletRegistrationBean staticWebServlet() { registration.addUrlMappings("/static-web/*"); return registration; } + + @Component + public class ServerCustomization implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> { + + @Value("${server.servlet.session.timeout}") + private int sessionTimeout; + + @Autowired + ServerProperties serverProperties; + + @Override + public void customize(ConfigurableServletWebServerFactory server) { + + ServletWebServerFactoryCustomizer servletWebServerFactoryCustomizer = new ServletWebServerFactoryCustomizer(this.serverProperties); + servletWebServerFactoryCustomizer.customize(server); + + server.addErrorPages(new ErrorPage(HttpStatus.UNAUTHORIZED, + "/error/401")); + server.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN, + "/error/403")); + server.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, + "/error/404")); + server.addErrorPages(new ErrorPage(HttpStatus.GONE, + "/error/410")); + server.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, + "/error")); + + Session session = new Session(); + session.setTimeout(Duration.ofMinutes(sessionTimeout)); + server.setSession(session); + + if (server instanceof TomcatServletWebServerFactory) { + customizeTomcat((TomcatServletWebServerFactory) server); + } + } + + private void customizeTomcat(TomcatServletWebServerFactory tomcatFactory) { + // Tomcat valve used to redirect root URL (/) to real application URL (/midpoint/). + // See comments in TomcatRootValve + Valve rootValve = new TomcatRootValve(); + tomcatFactory.addEngineValves(rootValve); + } - @Bean - public ServerProperties serverProperties() { - return new ServerCustomization(); - } - - private static class ServerCustomization extends ServerProperties { - - @Value("${server.session.timeout}") - private int sessionTimeout; - - @Override - public void customize(ConfigurableEmbeddedServletContainer container) { - super.customize(container); - - container.addErrorPages(new ErrorPage(HttpStatus.UNAUTHORIZED, - "/error/401")); - container.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN, - "/error/403")); - container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, - "/error/404")); - container.addErrorPages(new ErrorPage(HttpStatus.GONE, - "/error/410")); - container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, - "/error")); - - container.setSessionTimeout(sessionTimeout, TimeUnit.MINUTES); - - if (container instanceof TomcatEmbeddedServletContainerFactory) { - customizeTomcat((TomcatEmbeddedServletContainerFactory) container); - } - } - - private void customizeTomcat(TomcatEmbeddedServletContainerFactory tomcatFactory) { - // Tomcat valve used to redirect root URL (/) to real application URL (/midpoint/). - // See comments in TomcatRootValve - Valve rootValve = new TomcatRootValve(); - tomcatFactory.addEngineValves(rootValve); - } } -} +} \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatEmbeddedServletContainerFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatServletWebServerFactory.java similarity index 75% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatEmbeddedServletContainerFactory.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatServletWebServerFactory.java index 237d97b49aa..ea0d3ba3d98 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatEmbeddedServletContainerFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/MidPointTomcatServletWebServerFactory.java @@ -16,8 +16,8 @@ package com.evolveum.midpoint.web.boot; import org.apache.catalina.startup.Tomcat; -import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer; -import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; @@ -28,12 +28,13 @@ * * @author semancik */ -public class MidPointTomcatEmbeddedServletContainerFactory extends TomcatEmbeddedServletContainerFactory { +public class MidPointTomcatServletWebServerFactory extends TomcatServletWebServerFactory { - private static final Trace LOGGER = TraceManager.getTrace(MidPointTomcatEmbeddedServletContainerFactory.class); + private static final Trace LOGGER = TraceManager.getTrace(MidPointTomcatServletWebServerFactory.class); @Override - protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) { + + protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) { // We are setting up fake context here. This context does not really do anything. // But it is "mapped" to the root URL (/ ... or rather "" in Tomcat parlance). @@ -44,9 +45,9 @@ protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomca RootRootContext rootRootContext = new RootRootContext(); tomcat.getHost().addChild(rootRootContext); - return super.getTomcatEmbeddedServletContainer(tomcat); + return super.getTomcatWebServer(tomcat); } -} +} \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/WebSecurityConfig.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/WebSecurityConfig.java index bee92c1b366..250c685c00f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/WebSecurityConfig.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/boot/WebSecurityConfig.java @@ -30,7 +30,6 @@ import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -43,7 +42,8 @@ */ @Order(SecurityProperties.BASIC_AUTH_ORDER - 1) @Configuration -@EnableGlobalMethodSecurity(securedEnabled = true) +//TODO +//@EnableGlobalMethodSecurity(securedEnabled = true) @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @@ -56,7 +56,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private boolean csrfEnabled; @Value("${auth.logout.url:/}") private String authLogoutUrl; - + @Bean public WicketLoginUrlAuthenticationEntryPoint wicketAuthenticationEntryPoint() { return new WicketLoginUrlAuthenticationEntryPoint("/login"); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BaseSortableDataProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BaseSortableDataProvider.java index c9c02d2640e..8962aefa2e2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BaseSortableDataProvider.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BaseSortableDataProvider.java @@ -38,7 +38,7 @@ import com.evolveum.midpoint.wf.api.WorkflowManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.AdminGuiConfigurationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.DistinctSearchOptionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.GuiObjectListType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.GuiObjectListViewType; import org.apache.commons.lang.Validate; import org.apache.wicket.Component; import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; @@ -198,7 +198,7 @@ protected boolean checkOrderingSettings() { } public boolean isDistinct() { - GuiObjectListType def = WebComponentUtil.getDefaultGuiObjectListType((PageBase) component.getPage()); + GuiObjectListViewType def = WebComponentUtil.getDefaultGuiObjectListType((PageBase) component.getPage()); return def == null || def.getDistinct() != DistinctSearchOptionType.NEVER; // change after other options are added } @@ -219,7 +219,7 @@ public boolean isOrderingDisabled() { if (!checkOrderingSettings()) { return false; } - GuiObjectListType def = WebComponentUtil.getDefaultGuiObjectListType((PageBase) component.getPage()); + GuiObjectListViewType def = WebComponentUtil.getDefaultGuiObjectListType((PageBase) component.getPage()); return def != null && def.isDisableSorting(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java index 1342f138d82..91c054e45ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java @@ -19,52 +19,51 @@ import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto; import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import org.apache.wicket.model.IModel; import java.io.Serializable; import java.util.List; /** - * Created by honchar - * <p> - * todo rewrite + * @author honchar + * @author Viliam Repan (lazyman) */ public class MenuMultiButtonPanel<T extends Serializable> extends MultiButtonPanel<T> { - private static final long serialVersionUID = 1L; - private static final String ID_INLINE_MENU_PANEL = "inlineMenuPanel"; - private static final String ID_MENU_ITEM_BODY = "menuItemBody"; - private static final String ID_MENU_BUTTON_CONTAINER = "menuButtonContainer"; + private static final long serialVersionUID = 1L; - public MenuMultiButtonPanel(String id, int buttonsCount, IModel<T> model, IModel<List<InlineMenuItem>> menuItemsModel) { - super(id, buttonsCount, model, menuItemsModel); + private static final String ID_INLINE_MENU_PANEL = "inlineMenuPanel"; + + private IModel<List<InlineMenuItem>> menuItems; + + public MenuMultiButtonPanel(String id, IModel<T> model, int numberOfButtons, IModel<List<InlineMenuItem>> menuItems) { + super(id, model, numberOfButtons); + + this.menuItems = menuItems; } @Override - protected void initLayout() { - super.initLayout(); - + protected void onInitialize() { + super.onInitialize(); + + initLayout(); + } + + private void initLayout() { DropdownButtonPanel inlineMenu = new DropdownButtonPanel(ID_INLINE_MENU_PANEL, - new DropdownButtonDto(null, null, null, menuItemsModel.getObject())) { - private static final long serialVersionUID = 1L; - - @Override - protected String getSpecialButtonClass() { - return "btn-xs btn-default"; - } - - }; + new DropdownButtonDto(null, null, null, menuItems.getObject())) { - inlineMenu.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !(numberOfButtons <= 2) || menuItemsModel.getObject().size() > 2; + @Override + protected String getSpecialButtonClass() { + return "btn-xs btn-default"; } - }); + + }; add(inlineMenu); + inlineMenu.add(new VisibleBehaviour(() -> !(getNumberOfButtons() <= 2) || menuItems.getObject().size() > 2)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java index 9890fa52fca..9ec557cbc8f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 Evolveum + * Copyright (c) 2010-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,160 +17,73 @@ package com.evolveum.midpoint.web.component.data; import com.evolveum.midpoint.gui.api.component.BasePanel; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.AjaxIconButton; -import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import java.util.List; /** - * @author shood - * @author mederly - * <p> - * todo rewrite, Overcomplicated code. + * Created by Viliam Repan (lazyman). */ -@Deprecated public class MultiButtonPanel<T> extends BasePanel<T> { - private static final long serialVersionUID = 1L; - protected static final Trace LOGGER = TraceManager.getTrace(MultiButtonPanel.class); - - private static final String ID_BUTTONS = "buttons"; + private static final long serialVersionUID = 1L; + + private static final String ID_BUTTONS = "buttons"; - protected IModel<List<InlineMenuItem>> menuItemsModel = null; - protected int numberOfButtons; + private int numberOfButtons; - public MultiButtonPanel(String id, int numberOfButtons, IModel<T> model, IModel<List<InlineMenuItem>> menuItemsModel) { + public MultiButtonPanel(String id, IModel<T> model, int numberOfButtons) { super(id, model); + this.numberOfButtons = numberOfButtons; - this.menuItemsModel = menuItemsModel; - initLayout(); } - public MultiButtonPanel(String id, int numberOfButtons, IModel<T> model) { - super(id, model); - this.numberOfButtons = numberOfButtons; + @Override + protected void onInitialize() { + super.onInitialize(); + initLayout(); } - protected void initLayout() { + public int getNumberOfButtons() { + return numberOfButtons; + } + + private void initLayout() { RepeatingView buttons = new RepeatingView(ID_BUTTONS); add(buttons); - for (int id = 0; id < numberOfButtons; id++) { - final int finalId = getButtonId(id); - AjaxIconButton button = new AjaxIconButton(String.valueOf(finalId), - createIconModel(finalId), - Model.of(getButtonTitle(finalId))) { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - clickPerformed(finalId, target, MultiButtonPanel.this.getModel()); - } - - @Override - protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { - super.updateAjaxAttributes(attributes); - attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE); - } - - }; - - button.add(new VisibleEnableBehaviour() { - - private static final long serialVersionUID = 1L; - @Override - public boolean isEnabled() { - return MultiButtonPanel.this.isButtonEnabled(finalId, MultiButtonPanel.this.getModel()); - } - - @Override - public boolean isVisible() { - return MultiButtonPanel.this.isButtonVisible(finalId, MultiButtonPanel.this.getModel()); - } - }); - - button.add(AttributeAppender.append("class", getButtonCssClass(finalId))); - if (!isButtonEnabled(finalId, getModel())) { - button.add(AttributeAppender.append("class", "disabled")); + for (int id = 0; id < numberOfButtons; id++) { + AjaxIconButton button = createButton(id, buttons.newChildId(), getModel()); + if (button != null) { + buttons.add(button); } - - buttons.add(button); } } - private IModel<String> createIconModel(int id) { - return new AbstractReadOnlyModel<String>() { - private static final long serialVersionUID = 1L; - - @Override - public String getObject() { - return getButtonIconCss(id); - } - }; - } - - public String getButtonIconCss(int id) { - return ""; - } - - // looks like this one is not really used - public String getCaption(int id) { - return String.valueOf(id); + protected AjaxIconButton createButton(int index, String componentId, IModel<T> model) { + return null; } - public boolean isButtonEnabled(int id, IModel<T> model) { - return true; - } + protected AjaxIconButton buildDefaultButton(String componentId, IModel<String> icon, IModel<String> title, + IModel<String> cssClass, final AjaxEventProcessor onClickProcessor) { + AjaxIconButton btn = new AjaxIconButton(componentId, icon, title) { - public boolean isButtonVisible(int id, IModel<T> model) { - return true; - } + @Override + public void onClick(AjaxRequestTarget target) { + if (onClickProcessor != null) { + onClickProcessor.onEventPerformed(target); + } + } + }; - protected String getButtonCssClass(int id) { - StringBuilder sb = new StringBuilder(); - sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" "); - sb.append(getButtonColorCssClass(id)).append(" ").append(getButtonSizeCssClass(id)); - if (!isButtonEnabled(id, getModel())) { - sb.append(" disabled"); + btn.showTitleAsLabel(true); + if (cssClass != null) { + btn.add(AttributeAppender.append("class", cssClass)); } - return sb.toString(); - } - - public String getButtonSizeCssClass(int id) { - return DoubleButtonColumn.BUTTON_SIZE_CLASS.DEFAULT.toString(); - } - - protected int getButtonId(int id) { - return id; - } - - public String getButtonTitle(int id) { - return ""; - } - - public String getButtonColorCssClass(int id) { - return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); - } - public void clickPerformed(int id, AjaxRequestTarget target, IModel<T> model) { + return btn; } - - public AjaxButton getButton(int id) { - return (AjaxButton) get(ID_BUTTONS).get(String.valueOf(id)); - } - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html deleted file mode 100644 index 53fc652760c..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html +++ /dev/null @@ -1,21 +0,0 @@ -<!-- - ~ Copyright (c) 2010-2015 Evolveum - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ 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. - --> -<!DOCTYPE html> -<html xmlns:wicket="http://wicket.apache.org"> - <wicket:panel> - <a wicket:id="buttons" style="margin-right: 3px;"/> - </wicket:panel> -</html> \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java deleted file mode 100644 index d1850eb9ee2..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2010-2018 Evolveum - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * 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. - */ - -package com.evolveum.midpoint.web.component.data; - -import com.evolveum.midpoint.gui.api.component.BasePanel; -import com.evolveum.midpoint.web.component.AjaxIconButton; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.IModel; - -/** - * Created by Viliam Repan (lazyman). - */ -public class MultiButtonPanel2<T> extends BasePanel<T> { - - private static final long serialVersionUID = 1L; - - private static final String ID_BUTTONS = "buttons"; - - private int numberOfButtons; - - public MultiButtonPanel2(String id, IModel<T> model, int numberOfButtons) { - super(id, model); - - this.numberOfButtons = numberOfButtons; - } - - @Override - protected void onInitialize() { - super.onInitialize(); - - initLayout(); - } - - public int getNumberOfButtons() { - return numberOfButtons; - } - - private void initLayout() { - RepeatingView buttons = new RepeatingView(ID_BUTTONS); - add(buttons); - - for (int id = 0; id < numberOfButtons; id++) { - AjaxIconButton button = createButton(id, buttons.newChildId(), getModel()); - if (button != null) { - buttons.add(button); - } - } - } - - protected AjaxIconButton createButton(int index, String componentId, IModel<T> model) { - return null; - } - - protected AjaxIconButton buildDefaultButton(String componentId, IModel<String> icon, IModel<String> title, - IModel<String> cssClass, final AjaxEventProcessor onClickProcessor) { - AjaxIconButton btn = new AjaxIconButton(componentId, icon, title) { - - @Override - public void onClick(AjaxRequestTarget target) { - if (onClickProcessor != null) { - onClickProcessor.onEventPerformed(target); - } - } - }; - - btn.showTitleAsLabel(true); - if (cssClass != null) { - btn.add(AttributeAppender.append("class", cssClass)); - } - - return btn; - } -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java index 43f61d76ac6..5c9b4230c15 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java @@ -18,20 +18,22 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.data.MenuMultiButtonPanel; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.util.SelectableBean; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import java.io.Serializable; @@ -41,20 +43,23 @@ import static com.evolveum.midpoint.web.component.data.column.ColumnUtils.createStringResource; /** - * Created by honchar. - * - * todo rewrite + * @author honchar + * @author Viliam Repan (lazyman) + * <p> + * TODO Still needs more cleanup. Why button column has to understand activation, focus objects or handle modal windows? That should not be here definitely. */ -public class InlineMenuButtonColumn<T extends Serializable> extends MultiButtonColumn<T>{ - private static final long serialVersionUID = 1L; - - protected static final Trace LOGGER = TraceManager.getTrace(InlineMenuButtonColumn.class); +public class InlineMenuButtonColumn<T extends Serializable> extends AbstractColumn<T, String> { + + private static final long serialVersionUID = 1L; + + private int buttonsNumber; + protected List<InlineMenuItem> menuItems; - protected List<InlineMenuItem> menuItems; private PageBase pageBase; - public InlineMenuButtonColumn(List<InlineMenuItem> menuItems, int buttonsNumber, PageBase pageBase){ - super(null, menuItems.size() < 2 ? menuItems.size() : buttonsNumber); + public InlineMenuButtonColumn(List<InlineMenuItem> menuItems, int buttonsNumber, PageBase pageBase) { + super(null); + this.buttonsNumber = menuItems.size() < 2 ? menuItems.size() : buttonsNumber; this.menuItems = menuItems; this.pageBase = pageBase; } @@ -62,8 +67,7 @@ public InlineMenuButtonColumn(List<InlineMenuItem> menuItems, int buttonsNumber, @Override public void populateItem(final Item<ICellPopulator<T>> cellItem, String componentId, final IModel<T> rowModel) { - this.rowModel = rowModel; - cellItem.add(getPanel(componentId, rowModel, this.numberOfButtons, this.menuItems)); + cellItem.add(getPanel(componentId, rowModel, this.buttonsNumber, this.menuItems)); } @Override @@ -73,61 +77,31 @@ public Component getHeader(String componentId) { } private Component getPanel(String componentId, IModel<T> rowModel, - int numberOfButtons, List<InlineMenuItem> menuItems){ - panel = new MenuMultiButtonPanel<T>(componentId, numberOfButtons, rowModel, createMenuModel(rowModel, menuItems)) { - private static final long serialVersionUID = 1L; - - @Override - public String getCaption(int id) { - return ""; - } - - @Override - public String getButtonTitle(int id) { - return InlineMenuButtonColumn.this.getButtonTitle(id, menuItems); - } - - @Override - protected String getButtonCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonCssClass(id, menuItems); - } - - @Override - public String getButtonIconCss(int id) { - return InlineMenuButtonColumn.this.getButtonIconCss(id, menuItems); - } - - @Override - protected int getButtonId(int id){ - return id; - } + int numberOfButtons, List<InlineMenuItem> menuItems) { + return new MenuMultiButtonPanel<T>(componentId, rowModel, numberOfButtons, createMenuModel(rowModel, menuItems)) { - @Override - public boolean isButtonVisible(int id, IModel<T> model) { - return InlineMenuButtonColumn.this.isButtonVisible(id, model); - } - - @Override - public String getButtonSizeCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonSizeCssClass(id); - } - - @Override - public String getButtonColorCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonColorCssClass(id, menuItems); - } + private static final long serialVersionUID = 1L; @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel<T> model) { - setRowModelToAction(rowModel, menuItems); - InlineMenuButtonColumn.this.menuItemClickPerformed(id, target, model, menuItems); + protected AjaxIconButton createButton(int index, String componentId, IModel<T> model) { + AjaxIconButton btn = buildDefaultButton(componentId, + new Model<>(getButtonIconCss(index, menuItems)), + new Model<>(getButtonTitle(index, menuItems)), + new Model<>(getButtonCssClass(index, menuItems) + getButtonColorCssClass(index, menuItems)), + target -> { + setRowModelToAction(rowModel, menuItems); + menuItemClickPerformed(index, target, model, menuItems); + }); + btn.showTitleAsLabel(false); + btn.add(new VisibleBehaviour(() -> isButtonVisible(index, model))); + + return btn; } }; - return panel; } - private void setRowModelToAction(IModel<T> rowModel, List<InlineMenuItem> menuItems){ - for (InlineMenuItem menuItem : menuItems){ + private void setRowModelToAction(IModel<T> rowModel, List<InlineMenuItem> menuItems) { + for (InlineMenuItem menuItem : menuItems) { if (menuItem.getAction() != null) { ((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel); } @@ -139,14 +113,14 @@ private IModel<List<InlineMenuItem>> createMenuModel(final IModel<T> rowModel, L @Override public List<InlineMenuItem> load() { - if (rowModel == null){ + if (rowModel == null) { return menuItems; } if (rowModel.getObject() == null || !(rowModel.getObject() instanceof InlineMenuable)) { return new ArrayList<>(); } - for (InlineMenuItem item : ((InlineMenuable)rowModel.getObject()).getMenuItems()) { + for (InlineMenuItem item : ((InlineMenuable) rowModel.getObject()).getMenuItems()) { if (!(item.getAction() instanceof ColumnMenuAction)) { continue; } @@ -154,7 +128,7 @@ public List<InlineMenuItem> load() { ColumnMenuAction action = (ColumnMenuAction) item.getAction(); action.setRowModel(rowModel); } - return ((InlineMenuable)rowModel.getObject()).getMenuItems(); + return ((InlineMenuable) rowModel.getObject()).getMenuItems(); } }; } @@ -195,24 +169,23 @@ public void yesPerformed(AjaxRequestTarget target) { pageBase.showMainPopup(dialog, target); } - @Override public boolean isButtonVisible(int id, IModel<T> model) { - if (model == null || model.getObject() == null){ + if (model == null || model.getObject() == null) { return true; } if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.ENABLE.getMenuItemId() && model.getObject() instanceof SelectableBean && - ((SelectableBean) model.getObject()).getValue() instanceof FocusType){ - FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue(); - if (focus.getActivation() == null){ + ((SelectableBean) model.getObject()).getValue() instanceof FocusType) { + FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue(); + if (focus.getActivation() == null) { return false; } return ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus()); } else if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId() && model.getObject() instanceof SelectableBean && - ((SelectableBean) model.getObject()).getValue() instanceof FocusType){ - FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue(); - if (focus.getActivation() == null){ + ((SelectableBean) model.getObject()).getValue() instanceof FocusType) { + FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue(); + if (focus.getActivation() == null) { return true; } return !ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus()); @@ -221,15 +194,14 @@ public boolean isButtonVisible(int id, IModel<T> model) { } public String getButtonColorCssClass(int id, List<InlineMenuItem> menuItems) { - for (InlineMenuItem menuItem : menuItems){ - if (menuItem.getId() == id){ + for (InlineMenuItem menuItem : menuItems) { + if (menuItem.getId() == id) { return menuItem.getButtonColorCssClass(); } } return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); } - @Override public String getButtonSizeCssClass(int id) { return DoubleButtonColumn.BUTTON_SIZE_CLASS.EXTRA_SMALL.toString(); } @@ -246,8 +218,8 @@ protected String getButtonCssClass(int id, List<InlineMenuItem> menuItems) { } protected String getButtonIconCss(int id, List<InlineMenuItem> menuItems) { - for (InlineMenuItem menuItem : menuItems){ - if (menuItem.getId() == id){ + for (InlineMenuItem menuItem : menuItems) { + if (menuItem.getId() == id) { return menuItem.getButtonIconCssClass() + " fa-fw"; //temporary size fix, should be moved somewhere... } } @@ -265,11 +237,11 @@ public String getButtonTitle(int id, List<InlineMenuItem> menuItems) { return ""; } - protected int getHeaderNumberOfButtons(){ - return this.numberOfButtons; + protected int getHeaderNumberOfButtons() { + return this.buttonsNumber; } - protected List<InlineMenuItem> getHeaderMenuItems(){ + protected List<InlineMenuItem> getHeaderMenuItems() { return menuItems; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java deleted file mode 100644 index d51c49af536..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2010-2015 Evolveum - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * 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. - */ -package com.evolveum.midpoint.web.component.data.column; - -import com.evolveum.midpoint.web.component.data.MultiButtonPanel; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; -import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.model.IModel; - -import java.io.Serializable; -import java.util.List; - -/** - * @author shood - * @author mederly - */ -@Deprecated -public class MultiButtonColumn<T extends Serializable> extends AbstractColumn<T, String> { - - protected MultiButtonPanel panel; - - private List<String> captions; - protected IModel<T> rowModel; - protected int numberOfButtons; - - public MultiButtonColumn(int numberOfButtons) { - super(null); - this.numberOfButtons = numberOfButtons; - } - - public MultiButtonColumn(IModel<String> displayModel, int numberOfButtons) { - super(displayModel); - this.numberOfButtons = numberOfButtons; - } - - @Override - public void populateItem(final Item<ICellPopulator<T>> cellItem, String componentId, - final IModel<T> rowModel) { - this.rowModel = rowModel; - - panel = new MultiButtonPanel<T>(componentId, numberOfButtons, rowModel) { - - @Override - public String getCaption(int id) { - return MultiButtonColumn.this.getCaption(id); - } - - @Override - public String getButtonTitle(int id) { - return MultiButtonColumn.this.getButtonTitle(id); - } - - @Override - public boolean isButtonEnabled(int id, IModel<T> model) { - return MultiButtonColumn.this.isButtonEnabled(id, model); - } - - @Override - public boolean isButtonVisible(int id, IModel<T> model) { - return MultiButtonColumn.this.isButtonVisible(id, model); - } - - @Override - protected String getButtonCssClass(int id) { - return MultiButtonColumn.this.getButtonCssClass(id); - } - - @Override - public String getButtonSizeCssClass(int id) { - return MultiButtonColumn.this.getButtonSizeCssClass(id); - } - - @Override - public String getButtonColorCssClass(int id) { - return MultiButtonColumn.this.getButtonColorCssClass(id); - } - - @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel<T> model) { - MultiButtonColumn.this.clickPerformed(id, target, model); - } - - - }; - cellItem.add(panel); - } - - public boolean isButtonEnabled(int id, IModel<T> model) { - return true; - } - - protected String getButtonCssClass(int id) { - StringBuilder sb = new StringBuilder(); - sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" "); - sb.append(getButtonColorCssClass(id)).append(" ").append(getButtonSizeCssClass(id)); - if (!isButtonEnabled(id, getRowModel())) { - sb.append(" disabled"); - } - return sb.toString(); - } - - public boolean isButtonVisible(int id, IModel<T> model) { - return true; - } - - public String getCaption(int id) { - return String.valueOf(id); - } - - public void clickPerformed(int id, AjaxRequestTarget target, IModel<T> model) { - } - - public String getButtonColorCssClass(int id) { - return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); - } - - public String getButtonSizeCssClass(int id) { - return DoubleButtonColumn.BUTTON_SIZE_CLASS.SMALL.toString(); - } - - public MultiButtonPanel getButtonPanel(){ - return panel; - } - - public IModel<T> getRowModel(){ - return rowModel; - } - - public String getButtonTitle(int id) { - return ""; - } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java index 6355bde2597..6c88fe0b0d5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java @@ -21,14 +21,11 @@ import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.web.component.AjaxIconButton; -import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -46,7 +43,6 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.DateLabelComponent; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; -import com.evolveum.midpoint.web.component.data.column.MultiButtonColumn; import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.prism.ObjectWrapper; import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; @@ -98,7 +94,7 @@ protected List<IColumn<AuditEventRecordType, String>> initColumns() { public void populateItem(Item<ICellPopulator<AuditEventRecordType>> cellItem, String componentId, IModel<AuditEventRecordType> rowModel) { - cellItem.add(new MultiButtonPanel2<AuditEventRecordType>(componentId, rowModel, 2) { + cellItem.add(new MultiButtonPanel<AuditEventRecordType>(componentId, rowModel, 2) { private static final long serialVersionUID = 1L; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java index 38eec1de779..a8f72f74c64 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java @@ -226,9 +226,9 @@ private static <T extends ObjectType> SearchBoxModeType getDefaultSearchType(Mod OperationResult result = new OperationResult(LOAD_ADMIN_GUI_CONFIGURATION); try { AdminGuiConfigurationType guiConfig = modelServiceLocator.getModelInteractionService().getAdminGuiConfiguration(null, result); - GuiObjectListsType objectLists = guiConfig.getObjectLists(); + GuiObjectListViewsType objectLists = guiConfig.getObjectLists(); if (objectLists != null && objectLists.getObjectList() != null){ - for (GuiObjectListType objectList : objectLists.getObjectList()){ + for (GuiObjectListViewType objectList : objectLists.getObjectList()){ if (objectList.getType() != null && type.getSimpleName().equals(objectList.getType().getLocalPart()) && objectList.getSearchBoxConfiguration() != null) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html index 5ef5912d24c..bb88a14d697 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html @@ -18,7 +18,7 @@ <html xmlns:wicket="http://wicket.apache.org" lang="en" class="no-js"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> - + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="css/fonts.css" type="text/css" rel="stylesheet"/> <wicket:link> @@ -66,4 +66,4 @@ <script type="text/javascript" src="wro/midpoint-theme.js"></script> </body> -</html> \ No newline at end of file +</html> diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java index d7214b11d31..ab6762a094c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java @@ -32,11 +32,12 @@ import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.AjaxButton; +import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.AjaxSubmitButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel; import com.evolveum.midpoint.web.component.data.Table; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn.BUTTON_COLOR_CLASS; -import com.evolveum.midpoint.web.component.data.column.MultiButtonColumn; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignDto; @@ -48,12 +49,15 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -314,34 +318,36 @@ private List<IColumn<CertCaseDto, String>> initColumns() { final AvailableResponses availableResponses = new AvailableResponses(this); final int responses = availableResponses.getCount(); - column = new MultiButtonColumn<CertCaseDto>(new Model(), responses+1) { + column = new AbstractColumn<CertCaseDto, String>(new Model<>()) { - @Override - public String getButtonTitle(int id) { - return availableResponses.getTitle(id); - } - - @Override - public boolean isButtonEnabled(int id, IModel<CertCaseDto> model) { - return false; - } - - @Override - public boolean isButtonVisible(int id, IModel<CertCaseDto> model) { - if (id < responses) { - return true; - } else { - return !availableResponses.isAvailable(model.getObject().getOverallOutcome()); - } - } + private static final long serialVersionUID = 1L; @Override - public String getButtonColorCssClass(int id) { - if (id < responses) { - return getDecisionButtonColor(getRowModel(), availableResponses.getResponseValues().get(id)); - } else { - return BUTTON_COLOR_CLASS.DANGER.toString(); - } + public void populateItem(Item<ICellPopulator<CertCaseDto>> cellItem, String componentId, + IModel<CertCaseDto> rowModel) { + + cellItem.add(new MultiButtonPanel<CertCaseDto>(componentId, rowModel, responses + 1) { + + private static final long serialVersionUID = 1L; + + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel<CertCaseDto> model) { + AjaxIconButton btn = null; + if (index < responses) { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + getDecisionButtonColor(model, availableResponses.getResponseValues().get(index))), + null); + } else { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + BUTTON_COLOR_CLASS.DANGER), + null); + btn.add(new VisibleBehaviour(() -> !availableResponses.isAvailable(model.getObject().getOverallOutcome()))); + } + btn.setEnabled(false); + + return btn; + } + }); } }; columns.add(column); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java index 4e1957148dd..323fccd59df 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java @@ -27,12 +27,16 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; +import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.DateLabelComponent; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel; import com.evolveum.midpoint.web.component.data.Table; import com.evolveum.midpoint.web.component.data.column.*; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn.BUTTON_COLOR_CLASS; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.util.EnableBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.page.admin.certification.dto.CertWorkItemDto; import com.evolveum.midpoint.web.page.admin.certification.dto.CertWorkItemDtoProvider; import com.evolveum.midpoint.web.page.admin.certification.dto.SearchingUtils; @@ -310,48 +314,38 @@ public void populateItem(Item<ICellPopulator<CertWorkItemDto>> item, String comp final AvailableResponses availableResponses = new AvailableResponses(this); final int responses = availableResponses.getResponseKeys().size(); - column = new MultiButtonColumn<CertWorkItemDto>(new Model<>(), responses+1) { + column = new AbstractColumn<CertWorkItemDto, String>(new Model<>()) { - @Override - public String getButtonTitle(int id) { - return availableResponses.getTitle(id); - } + private static final long serialVersionUID = 1L; @Override - public boolean isButtonEnabled(int id, IModel<CertWorkItemDto> model) { - if (id < responses) { - return !decisionEquals(model, availableResponses.getResponseValues().get(id)); - } else { - return false; - } - } + public void populateItem(Item<ICellPopulator<CertWorkItemDto>> cellItem, String componentId, + IModel<CertWorkItemDto> rowModel) { - @Override - public boolean isButtonVisible(int id, IModel<CertWorkItemDto> model) { - if (id < responses) { - return true; - } else { - return !availableResponses.isAvailable(model.getObject().getResponse()); - } - } + cellItem.add(new MultiButtonPanel<CertWorkItemDto>(componentId, rowModel, responses + 1) { - @Override - public String getButtonColorCssClass(int id) { - if (id < responses) { - return getDecisionButtonColor(getRowModel(), availableResponses.getResponseValues().get(id)); - } else { - return BUTTON_COLOR_CLASS.DANGER.toString(); - } - } + private static final long serialVersionUID = 1L; - @Override - public void clickPerformed(int id, AjaxRequestTarget target, - IModel<CertWorkItemDto> model) { - if (id < responses) { // should be always the case - recordActionPerformed(target, model.getObject(), availableResponses.getResponseValues().get(id)); - } + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel<CertWorkItemDto> model) { + AjaxIconButton btn; + if (index < responses) { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + getDecisionButtonColor(model, availableResponses.getResponseValues().get(index))), + target -> + recordActionPerformed(target, model.getObject(), availableResponses.getResponseValues().get(index))); + btn.add(new EnableBehaviour(() -> !decisionEquals(model, availableResponses.getResponseValues().get(index)))); + } else { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + BUTTON_COLOR_CLASS.DANGER), null); + btn.setEnabled(false); + btn.add(new VisibleBehaviour(() -> !availableResponses.isAvailable(model.getObject().getResponse()))); + } + + return btn; + } + }); } - }; columns.add(column); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java index 5d9914bec83..a98ef1020d5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java @@ -30,7 +30,7 @@ import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.AjaxIconButton; -import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel; import com.evolveum.midpoint.web.component.data.column.*; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.dialog.Popupable; @@ -164,7 +164,7 @@ private List<IColumn<SelectableBean<AccessCertificationDefinitionType>, String>> public void populateItem(Item<ICellPopulator<SelectableBean<AccessCertificationDefinitionType>>> cellItem, String componentId, IModel<SelectableBean<AccessCertificationDefinitionType>> rowModel) { - cellItem.add(new MultiButtonPanel2<SelectableBean<AccessCertificationDefinitionType>>(componentId, rowModel, 3) { + cellItem.add(new MultiButtonPanel<SelectableBean<AccessCertificationDefinitionType>>(componentId, rowModel, 3) { private static final long serialVersionUID = 1L; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java index 8a18a3ec005..ea62e9c3649 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java @@ -81,7 +81,9 @@ public enum ObjectTypeGuiDescriptor { CASE(ObjectTypes.CASE, "ObjectTypeGuiDescriptor.case", "", ""), // TODO icons - FUNCTION_LIBRARY(ObjectTypes.FUNCTION_LIBRARY, "ObjectTypeGuiDescriptor.functionLibrary", "", ""); // TODO icons + FUNCTION_LIBRARY(ObjectTypes.FUNCTION_LIBRARY, "ObjectTypeGuiDescriptor.functionLibrary", "", ""), // TODO icons + + OBJECT_COLLECTION(ObjectTypes.OBJECT_COLLECTION, "ObjectTypeGuiDescriptor.objectCollection", "", ""); // TODO icons public static final String ERROR_ICON = "silk-error"; public static final String ERROR_LOCALIZATION_KEY = "ObjectTypeGuiDescriptor.unknown"; diff --git a/gui/admin-gui/src/main/resources/application.yml b/gui/admin-gui/src/main/resources/application.yml index 630b6ea2384..d398a995880 100644 --- a/gui/admin-gui/src/main/resources/application.yml +++ b/gui/admin-gui/src/main/resources/application.yml @@ -1,29 +1,27 @@ spring: application: name: MidPoint - - http: + servlet: multipart: max-file-size: 100Mb max-request-size: 100Mb server: - display-name: MidPoint - contextPath: /midpoint # Spring Boot 1.x - session: - timeout: 15 # in minutes. By default spring uses seconds, but tomcat/container (not embedded) uses this value - # as minutes - so we end up with never expiring session. tomcat: basedir: ${midpoint.home} max-http-post-size: 104857600 # in bytes - servlet: - path: /midpoint # Spring Boot 2.0 + context-path: /midpoint + application-display-name: MidPoint + session: + timeout: 15 # in minutes. By default spring uses seconds, but tomcat/container (not embedded) uses this value + # as minutes - so we end up with never expiring session. auth: logout: url: / # NOTE: This URL is relative to application root + #security: # enable-csrf: false # default for midpoint is true diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 012d2bea6bb..2fb55770945 100755 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -669,6 +669,7 @@ ObjectTypeGuiDescriptor.service=Service ObjectTypeGuiDescriptor.case=Case ObjectTypeGuiDescriptor.valuePolicy=Value policy ObjectTypeGuiDescriptor.functionLibrary=Function library +ObjectTypeGuiDescriptor.objectCollection=Object collection ObjectTypeGuiDescriptor.unknown=Not defined operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test operation.com.evolveum.midpoint.common.operation.import.object=Import object diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java index 7b2ef316078..1077e1ba7ca 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java @@ -317,6 +317,7 @@ private XNode parseValue(JsonParsingContext ctx, IterativeParsingContext ipc) th case VALUE_FALSE: case VALUE_NUMBER_FLOAT: case VALUE_NUMBER_INT: + case VALUE_EMBEDDED_OBJECT: // assuming it's a scalar value e.g. !!binary (TODO) return parseToPrimitive(ctx); case VALUE_NULL: return parseToEmptyPrimitive(); diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java index 1e47d909d3a..4bb42f3af84 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java @@ -51,6 +51,7 @@ public class YamlLexicalProcessor extends AbstractJsonLexicalProcessor { private static final String TAG_INT = YAML + "int"; private static final String TAG_BOOL = YAML + "bool"; private static final String TAG_FLOAT = YAML + "float"; + private static final String TAG_BINARY = YAML + "binary"; // base64-encoded string private static final String TAG_NULL = YAML + "null"; public YamlLexicalProcessor(@NotNull SchemaRegistry schemaRegistry) { @@ -126,6 +127,8 @@ protected MidpointYAMLParser createJacksonParser(InputStream stream) throws Sche protected QName tagToTypeName(Object tag, AbstractJsonLexicalProcessor.JsonParsingContext ctx) throws IOException, SchemaException { if (tag == null) { return null; + } if (TAG_BINARY.equals(tag)) { + return DOMUtil.XSD_STRING; // base64-encoded string: we store it as string, leaving interpretation to upper layers } if (TAG_STRING.equals(tag)) { return DOMUtil.XSD_STRING; } else if (TAG_BOOL.equals(tag)) { diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java index 45721121cdb..968fcd967db 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2014 Evolveum + * Copyright (c) 2010-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -104,6 +104,9 @@ public enum ObjectTypes { FUNCTION_LIBRARY(FunctionLibraryType.COMPLEX_TYPE, SchemaConstantsGenerated.C_FUNCTION_LIBRARY, FunctionLibraryType.class, ObjectManager.MODEL, "functionLibraries"), + + OBJECT_COLLECTION(ObjectCollectionType.COMPLEX_TYPE, SchemaConstantsGenerated.C_OBJECT_COLLECTION, ObjectCollectionType.class, ObjectManager.MODEL, + "objectCollections"), // this should be at end, because otherwise it presents itself as entry for all subtypes of ObjectType OBJECT(SchemaConstants.C_OBJECT_TYPE, SchemaConstants.C_OBJECT, ObjectType.class, ObjectManager.MODEL, "objects"); diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java index fc3571c0142..e8fbd9f2250 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java @@ -75,7 +75,7 @@ private static void applyAdminGuiConfiguration(AdminGuiConfigurationType composi if (composite.getObjectLists() == null) { composite.setObjectLists(adminGuiConfiguration.getObjectLists().clone()); } else { - for (GuiObjectListType objectList: adminGuiConfiguration.getObjectLists().getObjectList()) { + for (GuiObjectListViewType objectList: adminGuiConfiguration.getObjectLists().getObjectList()) { mergeList(composite.getObjectLists(), objectList); } } @@ -111,7 +111,7 @@ private static void applyAdminGuiConfiguration(AdminGuiConfigurationType composi mergeFeature(composite.getFeature(), feature); } if (composite.getObjectLists() != null && composite.getObjectLists().getObjectList() != null){ - for (GuiObjectListType objectListType : composite.getObjectLists().getObjectList()){ + for (GuiObjectListViewType objectListType : composite.getObjectLists().getObjectList()){ if (objectListType.getColumn() != null) { // objectListType.getColumn().clear(); // objectListType.getColumn().addAll(orderCustomColumns(objectListType.getColumn())); @@ -185,7 +185,7 @@ private static boolean isTheSameObjectForm(ObjectFormType oldForm, ObjectFormTyp return false; } - private static void mergeList(GuiObjectListsType objectLists, GuiObjectListType newList) { + private static void mergeList(GuiObjectListViewsType objectLists, GuiObjectListViewType newList) { // We support only the default object lists now, so simply replace the existing definition with the // latest definition. We will need a more sophisticated merging later. objectLists.getObjectList().removeIf(currentList -> currentList.getType().equals(newList.getType())); diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd index cd5c23c145b..e6db5b651d7 100644 --- a/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd +++ b/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - ~ Copyright (c) 2010-2017 Evolveum + ~ Copyright (c) 2010-2018 Evolveum ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. @@ -46,7 +46,7 @@ <a href="https://wiki.evolveum.com/display/midPoint/Data+Model">https://wiki.evolveum.com/display/midPoint/Data+Model</a> for more details. - <p>Version: 3.8</p> + <p>Version: 3.9-SNAPSHOT</p> <p>Recommended namespace prefix: (default), c</p> </xsd:documentation> diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd index 603cc070098..b76e60bf48a 100755 --- a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd +++ b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd @@ -13880,7 +13880,8 @@ </xsd:appinfo> </xsd:annotation> </xsd:element> - + + <!-- TODO(maybe): objectCollectionRef --> </xsd:sequence> </xsd:extension> </xsd:complexContent> @@ -13957,7 +13958,40 @@ </xsd:complexType> <xsd:element name="functionLibrary" type="tns:FunctionLibraryType" substitutionGroup="c:object"/> - + <xsd:complexType name="ObjectCollectionType"> + <xsd:annotation> + <xsd:documentation> + Object collection specification. + </xsd:documentation> + <xsd:appinfo> + <a:since>3.9</a:since> + </xsd:appinfo> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="c:ObjectType"> + <xsd:sequence> + <xsd:element name="type" type="xsd:QName" minOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Type of objects that belong to this collection. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="filter" type="q:SearchFilterType" minOccurs="0" maxOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Filter that is used to select objects which belong to this collection. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <!-- TODO: domain (filter or reference to another collection) --> + <!-- TODO: tresholds (actions should be performed by policy rules) --> + <!-- TODO(maybe): default view specification, e.g. default set of columns, search, etc. --> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:element name="objectCollection" type="tns:ObjectCollectionType" substitutionGroup="c:object"/> <xsd:complexType name="InternalsConfigurationType"> <xsd:annotation> @@ -14029,13 +14063,16 @@ </xsd:documentation> </xsd:annotation> </xsd:element> - <xsd:element name="objectLists" type="tns:GuiObjectListsType" minOccurs="0" maxOccurs="1"> + <xsd:element name="objectLists" type="tns:GuiObjectListViewsType" minOccurs="0" maxOccurs="1"> <xsd:annotation> <xsd:documentation> <p> Specifies the set of pages that are used for displaying lists of objects such as Users, Roles, Orgs, ... </p> + <p> + Note: name of this element is wrong. It should be objectViews or objectListViews. + </p> </xsd:documentation> <xsd:appinfo> <a:since>3.4</a:since> @@ -18445,7 +18482,7 @@ </xsd:complexType> <xsd:element name="sequence" type="tns:SequenceType" /> - <xsd:complexType name="GuiObjectListsType"> + <xsd:complexType name="GuiObjectListViewsType"> <xsd:annotation> <xsd:documentation> Specifies the set of pages that are used for displaying lists of objects @@ -18457,20 +18494,31 @@ </xsd:appinfo> </xsd:annotation> <xsd:sequence> - <xsd:element name="default" type="tns:GuiObjectListType" minOccurs="0"/> - <xsd:element name="objectList" type="tns:GuiObjectListType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="default" type="tns:GuiObjectListViewType" minOccurs="0"/> + <xsd:element name="objectList" type="tns:GuiObjectListViewType" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation> + Note: in fact name of this element is wrong. It should be objectView or objectListView. + </xsd:documentation> + </xsd:annotation> + </xsd:element> <xsd:element name="includeDefaultLists" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="true"> <xsd:annotation> <xsd:documentation> If set to true then all the default lists will be displayed (all users, all roles, ...) + Note: NOT YET IMPLEMENTED. Probably will never get implemented. + Note: in fact name of this element is wrong. It should be includeDefaultViews or includeDefaultListViews. </xsd:documentation> + <xsd:appinfo> + <a:deprecated>true</a:deprecated> + </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <!-- Note: ObjectListType already defined in API types --> - <xsd:complexType name="GuiObjectListType"> + <xsd:complexType name="GuiObjectListViewType"> <xsd:annotation> <xsd:documentation> Specifies the page used to list specific object type or object collection. @@ -18485,8 +18533,55 @@ add name, label (display name) and menu label for this list. We will also need a reference to which menu section we want to display it. E.g. We would like to display role catalog under "roles", even though it is in fact org tree. --> - <xsd:element name="type" type="xsd:QName" minOccurs="1" maxOccurs="1"/> - <!-- TODO: reference to object collection (MID-3517) --> + <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Symbolic name for this view. It is not really used by the GUI code. It is mostly used for + diagnostics, logging and so on. It may be later used to detect whether a particular view is overriden, + e.g. if view defined in system configuraiton is overridden in the role. + </xsd:documentation> + <xsd:appinfo> + <a:since>3.9</a:since> + </xsd:appinfo> + </xsd:annotation> + </xsd:element> + <xsd:element name="type" type="xsd:QName" minOccurs="0" maxOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Type of displayed objects. It may not be present in case that the type is defined in a referenced object colleciton. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="collectionRef" type="tns:ObjectReferenceType" minOccurs="0" maxOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Reference to object collection that will be used to select objects in this view. + If no collection is specified then it is assumed that all objects of a particular + type has to be displayed (type element above is mandatory in that case). + </xsd:documentation> + <xsd:appinfo> + <a:since>3.9</a:since> + <!-- Reference target type defeinition is NOT here by purpose. Later on we might want + archetypes (meta-roles), services and orgs to work as implicit collections. Therefore + this reference may point to various object types. By NOT specifying default ObjectCollectionType + here we will force everybody to specify it explicitly. So their configuraiton will work in + future versions when we add support for implicit collections. --> + </xsd:appinfo> + </xsd:annotation> + </xsd:element> + <xsd:element name="display" type="tns:DisplayType" minOccurs="0" maxOccurs="1"> + <xsd:annotation> + <xsd:documentation> + Display properties of the view. It is used to display the link in the menu and so on. + Only label is used now. E.g. the CSS properties are ignored. + </xsd:documentation> + <!-- This might be determined from the collection in future midPoint versions. + In fact the entire definition of a view may be just a reference to collection. --> + <xsd:appinfo> + <a:since>3.9</a:since> + </xsd:appinfo> + </xsd:annotation> + </xsd:element> <xsd:element name="searchBoxConfiguration" type="tns:SearchBoxConfigurationType" minOccurs="0" maxOccurs="1"/> <xsd:element name="distinct" type="tns:DistinctSearchOptionType" minOccurs="0" maxOccurs="1" default="auto"/> <xsd:element name="column" type="tns:GuiObjectColumnType" minOccurs="0" maxOccurs="unbounded"/> diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java index 46cd0d687d6..0a912e1e99a 100644 --- a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java +++ b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java @@ -31,14 +31,8 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Result; -import javax.xml.transform.Source; +import javax.xml.transform.*; import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -163,16 +157,37 @@ public class DOMUtil { // To generate random namespace prefixes private static Random rnd = new Random(); - private static final DocumentBuilder loader; + private static final ThreadLocal<DocumentBuilder> documentBuilderThreadLocal; + private static final ThreadLocal<Transformer> transformerThreadLocal; static { - try { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - loader = factory.newDocumentBuilder(); - } catch (ParserConfigurationException ex) { - throw new IllegalStateException("Error creating XML document " + ex.getMessage()); - } + documentBuilderThreadLocal = ThreadLocal.withInitial(() -> { + try { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + documentBuilderFactory.setNamespaceAware(true); + documentBuilderFactory.setFeature("http://xml.org/sax/features/namespaces", true); + // voodoo to turn off reading of DTDs during parsing. This is needed e.g. to pre-parse schemas + documentBuilderFactory.setValidating(false); + documentBuilderFactory.setFeature("http://xml.org/sax/features/validation", false); + documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); + documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + return documentBuilderFactory.newDocumentBuilder(); + } catch (ParserConfigurationException e) { + throw new RuntimeException(e); + } + }); + + transformerThreadLocal = ThreadLocal.withInitial(() -> { + try { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer trans = transformerFactory.newTransformer(); + trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // XALAN-specific + trans.setParameter(OutputKeys.ENCODING, "utf-8"); + return trans; + } catch (TransformerConfigurationException e) { + throw new RuntimeException(e); + } + }); } public static String serializeDOMToString(org.w3c.dom.Node node) { @@ -180,11 +195,9 @@ public static String serializeDOMToString(org.w3c.dom.Node node) { } public static void serializeDOMToFile(org.w3c.dom.Node node, File file) throws TransformerFactoryConfigurationError, TransformerException { - - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + Transformer transformer = transformerThreadLocal.get(); Result output = new StreamResult(file); Source input = new DOMSource(node); - transformer.transform(input, output); } @@ -196,23 +209,17 @@ public static Document getDocument(Node node) { } public static Document getDocument() { - return loader.newDocument(); + return documentBuilderThreadLocal.get().newDocument(); } public static Document getDocument(QName rootElementName) { - Document document = loader.newDocument(); + Document document = documentBuilderThreadLocal.get().newDocument(); document.appendChild(createElement(document, rootElementName)); return document; } public static DocumentBuilder createDocumentBuilder() { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - try { - return factory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new IllegalStateException("Error creating document builder " + e.getMessage(), e); - } + return documentBuilderThreadLocal.get(); } public static Document parseDocument(String doc) { @@ -230,28 +237,16 @@ public static Document parseFile(String filePath) { public static Document parseFile(File file) { try { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder loader = factory.newDocumentBuilder(); - return loader.parse(file); - } catch (SAXException | IOException | ParserConfigurationException ex) { + return documentBuilderThreadLocal.get().parse(file); + } catch (SAXException | IOException ex) { throw new IllegalStateException("Error parsing XML document " + ex.getMessage(),ex); } } public static Document parse(InputStream inputStream) throws IOException { try { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setFeature("http://xml.org/sax/features/namespaces", true); - // voodoo to turn off reading of DTDs during parsing. This is needed e.g. to pre-parse schemas - factory.setValidating(false); - factory.setFeature("http://xml.org/sax/features/validation", false); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - DocumentBuilder loader = factory.newDocumentBuilder(); - return loader.parse(inputStream); - } catch (SAXException | ParserConfigurationException ex) { + return documentBuilderThreadLocal.get().parse(inputStream); + } catch (SAXException ex) { throw new IllegalStateException("Error parsing XML document " + ex.getMessage(),ex); } } @@ -271,21 +266,12 @@ public static StringBuffer printDom(Node node) { public static StringBuffer printDom(Node node, boolean indent, boolean omitXmlDeclaration) { StringWriter writer = new StringWriter(); - TransformerFactory transfac = TransformerFactory.newInstance(); - Transformer trans; - try { - trans = transfac.newTransformer(); - } catch (TransformerConfigurationException e) { - throw new SystemException("Error in XML configuration: "+e.getMessage(),e); - } - trans.setOutputProperty(OutputKeys.INDENT, (indent ? "yes" : "no")); - trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // XALAN-specific - trans.setParameter(OutputKeys.ENCODING, "utf-8"); - // Note: serialized XML does not contain xml declaration - trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, (omitXmlDeclaration ? "yes" : "no")); - DOMSource source = new DOMSource(node); try { + Transformer trans = transformerThreadLocal.get(); + trans.setOutputProperty(OutputKeys.INDENT, (indent ? "yes" : "no")); + // Note: serialized XML does not contain xml declaration + trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, (omitXmlDeclaration ? "yes" : "no")); trans.transform(source, new StreamResult(writer)); } catch (TransformerException e) { throw new SystemException("Error in XML transformation: "+e.getMessage(),e); diff --git a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java index eaaaab488a7..561b55285ba 100644 --- a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java +++ b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java @@ -3856,7 +3856,7 @@ protected <O extends ObjectType> void assertLdapPassword(ProtectedStringType pro String decryptedUserPassword = protector.decryptString(protectedStringType); assertNotNull("Null password in " + source, decryptedUserPassword); if (decryptedUserPassword.startsWith("{") || decryptedUserPassword.contains("}")) { - assertTrue("Wrong password hash in "+source+": "+decryptedUserPassword+", expected "+expectedPassword, ldapShaPasswordEncoder.isPasswordValid(decryptedUserPassword, expectedPassword, null)); + assertTrue("Wrong password hash in "+source+": "+decryptedUserPassword+", expected "+expectedPassword, ldapShaPasswordEncoder.matches(decryptedUserPassword, expectedPassword)); } else { assertEquals("Wrong password in "+source, expectedPassword, decryptedUserPassword); } diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java index e13f93564a2..bafec754514 100644 --- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java +++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java @@ -549,8 +549,14 @@ public void shutdown() { for (Entry<ConfiguredConnectorCacheKey, ConfiguredConnectorInstanceEntry> connectorInstanceCacheEntry: connectorInstanceCache.entrySet()) { connectorInstanceCacheEntry.getValue().connectorInstance.dispose(); } - for (ConnectorFactory connectorFactory: getConnectorFactories()) { - connectorFactory.shutdown(); + if (connectorFactories != null) { + // Skip this in the very rare case that we are shutting down before we were fully + // initialized. This should not happen under normal circumstances. + // Generally, do not call getConnectorFactories() from here. This is + // spring "destroy" method. We should not work with spring context here. + for (ConnectorFactory connectorFactory: connectorFactories) { + connectorFactory.shutdown(); + } } } diff --git a/repo/repo-sql-impl-test/pom.xml b/repo/repo-sql-impl-test/pom.xml index b4339be2415..b79aec36732 100644 --- a/repo/repo-sql-impl-test/pom.xml +++ b/repo/repo-sql-impl-test/pom.xml @@ -102,6 +102,12 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> + <exclusions> + <exclusion> + <groupId>org.javassist</groupId> + <artifactId>javassist</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.jetbrains</groupId> diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java index 94c68c5c46b..ddb074fd3e3 100644 --- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java @@ -24,7 +24,10 @@ import com.evolveum.midpoint.prism.delta.ReferenceDelta; import com.evolveum.midpoint.prism.delta.builder.DeltaBuilder; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.polystring.PolyString; +import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.QueryJaxbConvertor; import com.evolveum.midpoint.prism.util.PrismAsserts; import com.evolveum.midpoint.prism.query.builder.QueryBuilder; import com.evolveum.midpoint.prism.util.PrismTestUtil; @@ -52,6 +55,7 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.api_types_3.ObjectModificationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType; import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.hibernate.Session; @@ -930,4 +934,57 @@ private <T> void assertAttribute(PrismObject<ShadowType> shadow, QName attrQName PrismAsserts.assertPropertyValue(attr, expectedValues); } } + + @Test + public void test210ModifyObjectCollection() throws Exception { + final String TEST_NAME = "test210ModifyObjectCollection"; + TestUtil.displayTestTitle(TEST_NAME); + + OperationResult result = new OperationResult("test210ModifyObjectCollection"); + + ObjectCollectionType collection = prismContext.createObjectable(ObjectCollectionType.class) + .name("collection") + .type(UserType.COMPLEX_TYPE); + repositoryService.addObject(collection.asPrismObject(), null, result); + + List<ItemDelta<?, ?>> deltas1 = DeltaBuilder.deltaFor(ObjectCollectionType.class, prismContext) + .item(ObjectCollectionType.F_NAME).replace(PolyString.fromOrig("collection2")) + .asItemDeltas(); + repositoryService.modifyObject(ObjectCollectionType.class, collection.getOid(), deltas1, result); + + ItemDelta.applyTo(deltas1, collection.asPrismObject()); + PrismObject<ObjectCollectionType> afterChange1 = repositoryService + .getObject(ObjectCollectionType.class, collection.getOid(), null, result); + assertEquals("Objects differ after change 1", collection.asPrismObject(), afterChange1); + + ObjectFilter filter = QueryBuilder.queryFor(UserType.class, prismContext) + .item(UserType.F_COST_CENTER).eq("100") + .buildFilter(); + SearchFilterType filterBean = QueryJaxbConvertor.createSearchFilterType(filter, prismContext); + + List<ItemDelta<?, ?>> deltas2 = DeltaBuilder.deltaFor(ObjectCollectionType.class, prismContext) + .item(ObjectCollectionType.F_DESCRIPTION).replace("description") + .item(ObjectCollectionType.F_FILTER).replace(filterBean) + .asItemDeltas(); + repositoryService.modifyObject(ObjectCollectionType.class, collection.getOid(), deltas2, result); + + ItemDelta.applyTo(deltas2, collection.asPrismObject()); + PrismObject<ObjectCollectionType> afterChange2 = repositoryService + .getObject(ObjectCollectionType.class, collection.getOid(), null, result); + + // it's hard to compare filters, so we have to do the test in a special way + PrismObject<ObjectCollectionType> fromRepoWithoutFilter = afterChange2.clone(); + fromRepoWithoutFilter.asObjectable().setFilter(null); + PrismObject<ObjectCollectionType> expectedWithoutFilter = collection.asPrismObject().clone(); + expectedWithoutFilter.asObjectable().setFilter(null); + assertEquals("Objects (without filter) differ after change 2", expectedWithoutFilter, fromRepoWithoutFilter); + + SearchFilterType filterFromRepo = afterChange2.asObjectable().getFilter(); + SearchFilterType filterExpected = collection.getFilter(); + ObjectFilter filterFromRepoParsed = QueryJaxbConvertor.createObjectFilter(UserType.class, filterFromRepo, prismContext); + ObjectFilter filterExpectedParsed = QueryJaxbConvertor.createObjectFilter(UserType.class, filterExpected, prismContext); + //noinspection ConstantConditions + assertTrue("Filters differ", filterExpectedParsed.equals(filterFromRepoParsed, false)); + } + } diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java index 4c750cb33dc..019a1df5f1a 100644 --- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java @@ -911,4 +911,36 @@ public void testExtensionReferenceNonNull() throws SchemaException { assertEquals("Should find 1 object", 1, cases.size()); } + @Test + public void testObjectCollection() throws SchemaException { + ObjectQuery query = QueryBuilder.queryFor(ObjectCollectionType.class, prismContext) + .item(ObjectType.F_NAME).eqPoly("collection1", "collection1").matchingOrig() + .build(); + OperationResult result = new OperationResult("search"); + List<PrismObject<ObjectCollectionType>> collections = repositoryService.searchObjects(ObjectCollectionType.class, query, null, result); + result.recomputeStatus(); + assertTrue(result.isSuccess()); + assertEquals("Should find 1 object", 1, collections.size()); + } + + @Test + public void testAllObjectCollections() throws SchemaException { + OperationResult result = new OperationResult("search"); + List<PrismObject<ObjectCollectionType>> collections = repositoryService.searchObjects(ObjectCollectionType.class, null, null, result); + result.recomputeStatus(); + assertTrue(result.isSuccess()); + assertEquals("Should find 1 object", 1, collections.size()); + } + + @Test + public void testFunctionLibrary() throws SchemaException { + ObjectQuery query = QueryBuilder.queryFor(FunctionLibraryType.class, prismContext) + .item(ObjectType.F_NAME).eqPoly("fl1", "fl1").matchingOrig() + .build(); + OperationResult result = new OperationResult("search"); + List<PrismObject<FunctionLibraryType>> collections = repositoryService.searchObjects(FunctionLibraryType.class, query, null, result); + result.recomputeStatus(); + assertTrue(result.isSuccess()); + assertEquals("Should find 1 object", 1, collections.size()); + } } diff --git a/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml b/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml index 68369d8b5d9..1fbbd7a962c 100644 --- a/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml +++ b/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml @@ -1696,4 +1696,19 @@ </operationExecution> </case> + <objectCollection> + <name>collection1</name> + <type>UserType</type> + <filter> + <q:equal> + <q:path>subtype</q:path> + <q:value>EMP</q:value> + </q:equal> + </filter> + </objectCollection> + + <functionLibrary> + <name>fl1</name> + </functionLibrary> + </objects> diff --git a/repo/repo-sql-impl/pom.xml b/repo/repo-sql-impl/pom.xml index f03e208686e..60ccfa737fa 100644 --- a/repo/repo-sql-impl/pom.xml +++ b/repo/repo-sql-impl/pom.xml @@ -147,6 +147,12 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> + <exclusions> + <exclusion> + <groupId>org.javassist</groupId> + <artifactId>javassist</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java index 147ed1520f7..21311bd5667 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java @@ -79,5 +79,6 @@ public int hashCode() { public static void copyFromJAXB(FunctionLibraryType jaxb, RFunctionLibrary repo, RepositoryContext repositoryContext, IdGeneratorResult generatorResult) throws DtoTranslationException { RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult); + repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName())); } } diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java new file mode 100644 index 00000000000..5013159e834 --- /dev/null +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * 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. + */ + +package com.evolveum.midpoint.repo.sql.data.common; + +import com.evolveum.midpoint.repo.sql.data.RepositoryContext; +import com.evolveum.midpoint.repo.sql.data.common.embedded.RPolyString; +import com.evolveum.midpoint.repo.sql.query.definition.JaxbName; +import com.evolveum.midpoint.repo.sql.util.DtoTranslationException; +import com.evolveum.midpoint.repo.sql.util.IdGeneratorResult; +import com.evolveum.midpoint.repo.sql.util.MidPointJoinedPersister; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectCollectionType; +import org.hibernate.annotations.ForeignKey; +import org.hibernate.annotations.Persister; + +import javax.persistence.*; +import java.util.Objects; + +/** + * + * @author mederly + */ +@Entity +@ForeignKey(name = "fk_object_collection") +@Table(uniqueConstraints = @UniqueConstraint(name = "uc_object_collection_name", columnNames = {"name_norm"}), + indexes = { + @Index(name = "iObjectCollectionNameOrig", columnList = "name_orig"), + } +) +@Persister(impl = MidPointJoinedPersister.class) +public class RObjectCollection extends RObject<ObjectCollectionType> { + + private RPolyString nameCopy; + + @JaxbName(localPart = "name") + @AttributeOverrides({ + @AttributeOverride(name = "orig", column = @Column(name = "name_orig")), + @AttributeOverride(name = "norm", column = @Column(name = "name_norm")) + }) + @Embedded + public RPolyString getNameCopy() { + return nameCopy; + } + + public void setNameCopy(RPolyString nameCopy) { + this.nameCopy = nameCopy; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof RObjectCollection)) + return false; + if (!super.equals(o)) + return false; + RObjectCollection that = (RObjectCollection) o; + return Objects.equals(nameCopy, that.nameCopy); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), nameCopy); + } + + public static void copyFromJAXB(ObjectCollectionType jaxb, RObjectCollection repo, RepositoryContext repositoryContext, + IdGeneratorResult generatorResult) throws DtoTranslationException { + RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult); + repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName())); + } +} diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java index acfecb3c97e..e70b9fe8b48 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java @@ -34,7 +34,8 @@ public enum RObjectType { SERVICE(RService.class, ServiceType.class), FORM(RForm.class, FormType.class), CASE(RCase.class, CaseType.class), - FUNCTION_LIBRARY(RFunctionLibrary.class, FunctionLibraryType.class); + FUNCTION_LIBRARY(RFunctionLibrary.class, FunctionLibraryType.class), + OBJECT_COLLECTION(RObjectCollection.class, ObjectCollectionType.class); private Class<? extends RObject> clazz; private Class<? extends ObjectType> jaxbClass; diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java index 0e916ff21da..6c21353777f 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java @@ -69,6 +69,7 @@ private ClassMapper() { types.put(ObjectTypes.FORM, RObjectType.FORM); types.put(ObjectTypes.CASE, RObjectType.CASE); types.put(ObjectTypes.FUNCTION_LIBRARY, RObjectType.FUNCTION_LIBRARY); + types.put(ObjectTypes.OBJECT_COLLECTION, RObjectType.OBJECT_COLLECTION); for (ObjectTypes type : ObjectTypes.values()) { if (!types.containsKey(type)) { diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java index 8d764812b36..36d961479b1 100644 --- a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java +++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java @@ -106,7 +106,7 @@ import org.opends.server.types.SearchResultEntry; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.security.authentication.encoding.LdapShaPasswordEncoder; +import org.springframework.security.crypto.password.LdapShaPasswordEncoder; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.testng.Assert; import org.testng.AssertJUnit; diff --git a/repo/task-quartz-impl/pom.xml b/repo/task-quartz-impl/pom.xml index 6431c7d20b5..40096826fc4 100644 --- a/repo/task-quartz-impl/pom.xml +++ b/repo/task-quartz-impl/pom.xml @@ -96,6 +96,10 @@ <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jcl</artifactId> + </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> @@ -116,6 +120,12 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> + <exclusions> + <exclusion> + <groupId>org.javassist</groupId> + <artifactId>javassist</artifactId> + </exclusion> + </exclusions> </dependency> <!-- this one is needed to get SQL configuration from the repository --> <dependency>