diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.db2.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.db2.create.app.sql index f54aa4e0723..1623d6456e9 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.db2.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.db2.create.app.sql @@ -15,4 +15,4 @@ CREATE INDEX ACT_IDX_APP_DEF_DPLY ON ACT_APP_APPDEF(DEPLOYMENT_ID_); CREATE UNIQUE INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.h2.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.h2.create.app.sql index f434a1822d9..594d7279a93 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.h2.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.h2.create.app.sql @@ -15,4 +15,4 @@ CREATE INDEX ACT_IDX_APP_DEF_DPLY ON ACT_APP_APPDEF(DEPLOYMENT_ID_); CREATE UNIQUE INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mssql.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mssql.create.app.sql index 7e149d2ccea..e07acf7a1b5 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mssql.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mssql.create.app.sql @@ -15,4 +15,4 @@ CREATE NONCLUSTERED INDEX ACT_IDX_APP_DEF_DPLY ON ACT_APP_APPDEF(DEPLOYMENT_ID_) CREATE UNIQUE NONCLUSTERED INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mysql.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mysql.create.app.sql index f30bf8879f8..7d3eee8e73b 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mysql.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.mysql.create.app.sql @@ -17,4 +17,4 @@ ALTER TABLE ACT_APP_DEPLOYMENT MODIFY DEPLOY_TIME_ datetime(3); CREATE UNIQUE INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.oracle.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.oracle.create.app.sql index f75cadd0dfb..7a23c9b58bb 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.oracle.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.oracle.create.app.sql @@ -15,4 +15,4 @@ CREATE INDEX ACT_IDX_APP_DEF_DPLY ON ACT_APP_APPDEF(DEPLOYMENT_ID_); CREATE UNIQUE INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.postgres.create.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.postgres.create.app.sql index c57d8ab015b..c0bb107c4e1 100644 --- a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.postgres.create.app.sql +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/create/flowable.postgres.create.app.sql @@ -15,4 +15,4 @@ CREATE INDEX ACT_IDX_APP_DEF_DPLY ON ACT_APP_APPDEF(DEPLOYMENT_ID_); CREATE UNIQUE INDEX ACT_IDX_APP_DEF_UNIQ ON ACT_APP_APPDEF(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('app.schema.version', '8.1.0.2', 1); +values ('app.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/upgrade/flowable.all.upgradestep.8102.to.8103.app.sql b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/upgrade/flowable.all.upgradestep.8102.to.8103.app.sql new file mode 100644 index 00000000000..3c1c5c02723 --- /dev/null +++ b/modules/flowable-app-engine/src/main/resources/org/flowable/app/db/upgrade/flowable.all.upgradestep.8102.to.8103.app.sql @@ -0,0 +1 @@ +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'app.schema.version'; diff --git a/modules/flowable-app-rest/src/test/java/org/flowable/test/persistence/SqlUpgradeValidationTest.java b/modules/flowable-app-rest/src/test/java/org/flowable/test/persistence/SqlUpgradeValidationTest.java index cb29a6ecdb0..2e12bdebc79 100644 --- a/modules/flowable-app-rest/src/test/java/org/flowable/test/persistence/SqlUpgradeValidationTest.java +++ b/modules/flowable-app-rest/src/test/java/org/flowable/test/persistence/SqlUpgradeValidationTest.java @@ -35,7 +35,8 @@ class SqlUpgradeValidationTest { "7.1.0.2", "7.2.0.1", "7.2.0.2", - "8.1.0.2" + "8.1.0.2", + "8.1.0.3" ); @ParameterizedTest diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.db2.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.db2.create.cmmn.sql index b34f6e99ad6..62e88e88208 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.db2.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.db2.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.h2.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.h2.create.cmmn.sql index 840620d6ea8..fa0fd2a57b9 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.h2.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.h2.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.hsql.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.hsql.create.cmmn.sql index 840620d6ea8..fa0fd2a57b9 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.hsql.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.hsql.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mssql.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mssql.create.cmmn.sql index 12f427bd3c9..9900bee294b 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mssql.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mssql.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE NONCLUSTERED INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST(CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mysql.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mysql.create.cmmn.sql index c74b15e194a..9fe85875027 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mysql.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.mysql.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.oracle.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.oracle.create.cmmn.sql index da331c17d2d..eb096d81cf1 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.oracle.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.oracle.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.postgres.create.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.postgres.create.cmmn.sql index 10e6e9f0f3d..162ebcb875a 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.postgres.create.cmmn.sql +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/create/flowable.postgres.create.cmmn.sql @@ -268,4 +268,4 @@ CREATE TABLE ACT_CMMN_HI_PLAN_ITEM_INST CREATE INDEX ACT_IDX_HI_PLAN_ITEM_INST_CASE ON ACT_CMMN_HI_PLAN_ITEM_INST (CASE_INST_ID_); insert into ACT_GE_PROPERTY -values ('cmmn.schema.version', '8.1.0.2', 1); +values ('cmmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseDefinition.xml b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseDefinition.xml index 1fe7896b091..8c631ad9c3f 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseDefinition.xml +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseDefinition.xml @@ -276,29 +276,27 @@ and (RES.TENANT_ID_ = '' or RES.TENANT_ID_ is null) - AND + + AND exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_DEFINITION_ID_ = RES.ID_ and IDN.SCOPE_TYPE_ = 'cmmn' and - - exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_DEFINITION_ID_ = RES.ID_ and IDN.SCOPE_TYPE_ = 'cmmn' and IDN.USER_ID_ = #{authorizationUserId, jdbcType=NVARCHAR}) - - - OR exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_DEFINITION_ID_ = RES.ID_ and IDN.SCOPE_TYPE_ = 'cmmn' and - ( - - - or - - IDN.GROUP_ID_ IN - - #{authorizationGroup, jdbcType=NVARCHAR} - - - ) - ) + + IDN.USER_ID_ = #{authorizationUserId, jdbcType=NVARCHAR} + + + OR + + + or + + IDN.GROUP_ID_ IN + + #{authorizationGroup, jdbcType=NVARCHAR} + + - + ) diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseInstance.xml b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseInstance.xml index dcead35b4cf..e9c8eccab72 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseInstance.xml +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/CaseInstance.xml @@ -909,35 +909,32 @@ and P.STATE_ = 'active') - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.SCOPE_ID_ = RES.ID_ and I.SCOPE_TYPE_ = 'cmmn' and I.USER_ID_ = - #{orQueryObject.involvedUser, jdbcType=NVARCHAR}) - - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.SCOPE_ID_ = RES.ID_ and I.SCOPE_TYPE_ = 'cmmn' and - I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) - - + + or EXISTS( select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.SCOPE_ID_ = RES.ID_ and I.SCOPE_TYPE_ = 'cmmn' and - ( - - - or + + + or I.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - I.GROUP_ID_ IN - - #{involvedGroup, jdbcType=NVARCHAR} - - - ) + + or (I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) + + + + or I.GROUP_ID_ IN + + #{involvedGroup, jdbcType=NVARCHAR} + + + + + or (I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) + + ) - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.SCOPE_ID_ = RES.ID_ and I.SCOPE_TYPE_ = 'cmmn' and - I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) - or EXISTS(select 1 from ${prefix}ACT_RU_ENTITYLINK LINK where LINK.SCOPE_ID_ = #{orQueryObject.parentScopeId, jdbcType=NVARCHAR} diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/HistoricCaseInstance.xml b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/HistoricCaseInstance.xml index 7e2109e9b88..14d221ee3db 100644 --- a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/HistoricCaseInstance.xml +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/mapping/entity/HistoricCaseInstance.xml @@ -1056,35 +1056,32 @@ and P.STATE_ = 'active') - - or EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.SCOPE_ID_ = ${queryTablePrefix}ID_ and I.SCOPE_TYPE_ = 'cmmn' and I.USER_ID_ = - #{orQueryObject.involvedUser, jdbcType=NVARCHAR}) - - - or EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.SCOPE_ID_ = ${queryTablePrefix}ID_ and I.SCOPE_TYPE_ = 'cmmn' and - I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) - - + + or EXISTS( - select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.SCOPE_ID_ = ${queryTablePrefix}ID_ and I.SCOPE_TYPE_ = 'cmmn' and - ( - - - or + select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.SCOPE_ID_ = ${queryTablePrefix}ID_ and I.SCOPE_TYPE_ = 'cmmn' and + + + or I.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - I.GROUP_ID_ IN - - #{involvedGroup, jdbcType=NVARCHAR} - - - ) + + or (I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) + + + + or I.GROUP_ID_ IN + + #{involvedGroup, jdbcType=NVARCHAR} + + + + + or (I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) + + ) - - or EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.SCOPE_ID_ = ${queryTablePrefix}ID_ and I.SCOPE_TYPE_ = 'cmmn' and - I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) - or EXISTS(select 1 from ${prefix}ACT_HI_ENTITYLINK LINK where LINK.SCOPE_ID_ = #{orQueryObject.parentScopeId, jdbcType=NVARCHAR} diff --git a/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.cmmn.sql b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.cmmn.sql new file mode 100644 index 00000000000..d924cf33fe5 --- /dev/null +++ b/modules/flowable-cmmn-engine/src/main/resources/org/flowable/cmmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.cmmn.sql @@ -0,0 +1 @@ +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'cmmn.schema.version'; diff --git a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/history/HistoricCaseInstanceQueryImplTest.java b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/history/HistoricCaseInstanceQueryImplTest.java index 43bf49ad152..47c139d7dec 100644 --- a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/history/HistoricCaseInstanceQueryImplTest.java +++ b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/history/HistoricCaseInstanceQueryImplTest.java @@ -1738,6 +1738,61 @@ public void getCaseInstanceByInvolvedGroupIdentityLink() { } } + @Test + public void getCaseInstanceByOrInvolvedUsersAndGroupsWithIdentityLinkTypes() { + CaseInstance userTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addUserIdentityLink(userTypeInstance.getId(), "kermit", "specialLink"); + CaseInstance userOtherTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addUserIdentityLink(userOtherTypeInstance.getId(), "kermit", "otherLink"); + CaseInstance groupTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupTypeInstance.getId(), "sales", "specialLink"); + CaseInstance groupOtherTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupOtherTypeInstance.getId(), "sales", "otherLink"); + CaseInstance groupsInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupsInstance.getId(), "testGroup", "otherLink"); + + if (CmmnHistoryTestHelper.isHistoryLevelAtLeast(HistoryLevel.ACTIVITY, cmmnEngineConfiguration)) { + assertThat(cmmnHistoryService.createHistoricCaseInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroup("sales", "specialLink").endOr() + .list()) + .extracting(HistoricCaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupTypeInstance.getId()); + + assertThat(cmmnHistoryService.createHistoricCaseInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(HistoricCaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupsInstance.getId()); + + assertThat(cmmnHistoryService.createHistoricCaseInstanceQuery() + .or().involvedUser("kermit").involvedGroup("sales", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(HistoricCaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), userOtherTypeInstance.getId(), groupTypeInstance.getId(), groupsInstance.getId()); + + assertThat(cmmnHistoryService.createHistoricCaseInstanceQuery() + .or() + .involvedUser("kermit", "specialLink") + .involvedGroup("sales", "specialLink") + .involvedGroups(Set.of("testGroup")) + .caseInstanceId(groupOtherTypeInstance.getId()) + .endOr() + .count()) + .isEqualTo(4); + + assertThat(cmmnHistoryService.createHistoricCaseInstanceQuery() + .or().involvedUser("kermit", "wrongType").involvedGroup("sales", "wrongType").endOr() + .count()) + .isZero(); + } + } + + protected CaseInstance startOneTaskCase() { + return cmmnRuntimeService.createCaseInstanceBuilder() + .caseDefinitionKey("oneTaskCase") + .start(); + } + @Test public void getCaseInstanceByInvolvedGroupOrUser() { CaseInstance caseInstance = cmmnRuntimeService.createCaseInstanceBuilder() diff --git a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/CaseInstanceQueryImplTest.java b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/CaseInstanceQueryImplTest.java index 7fe4a27a470..45fa4e14baa 100644 --- a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/CaseInstanceQueryImplTest.java +++ b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/CaseInstanceQueryImplTest.java @@ -1396,6 +1396,59 @@ public void getCaseInstanceByInvolvedGroupIdentityLink() { .isZero(); } + @Test + public void getCaseInstanceByOrInvolvedUsersAndGroupsWithIdentityLinkTypes() { + CaseInstance userTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addUserIdentityLink(userTypeInstance.getId(), "kermit", "specialLink"); + CaseInstance userOtherTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addUserIdentityLink(userOtherTypeInstance.getId(), "kermit", "otherLink"); + CaseInstance groupTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupTypeInstance.getId(), "sales", "specialLink"); + CaseInstance groupOtherTypeInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupOtherTypeInstance.getId(), "sales", "otherLink"); + CaseInstance groupsInstance = startOneTaskCase(); + cmmnRuntimeService.addGroupIdentityLink(groupsInstance.getId(), "testGroup", "otherLink"); + + assertThat(cmmnRuntimeService.createCaseInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroup("sales", "specialLink").endOr() + .list()) + .extracting(CaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupTypeInstance.getId()); + + assertThat(cmmnRuntimeService.createCaseInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(CaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupsInstance.getId()); + + assertThat(cmmnRuntimeService.createCaseInstanceQuery() + .or().involvedUser("kermit").involvedGroup("sales", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(CaseInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), userOtherTypeInstance.getId(), groupTypeInstance.getId(), groupsInstance.getId()); + + assertThat(cmmnRuntimeService.createCaseInstanceQuery() + .or() + .involvedUser("kermit", "specialLink") + .involvedGroup("sales", "specialLink") + .involvedGroups(Set.of("testGroup")) + .caseInstanceId(groupOtherTypeInstance.getId()) + .endOr() + .count()) + .isEqualTo(4); + + assertThat(cmmnRuntimeService.createCaseInstanceQuery() + .or().involvedUser("kermit", "wrongType").involvedGroup("sales", "wrongType").endOr() + .count()) + .isZero(); + } + + protected CaseInstance startOneTaskCase() { + return cmmnRuntimeService.createCaseInstanceBuilder() + .caseDefinitionKey("oneTaskCase") + .start(); + } + @Test public void getCaseInstanceByInvolvedGroupOrUser() { CaseInstance caseInstance = cmmnRuntimeService.createCaseInstanceBuilder() diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.db2.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.db2.create.dmn.sql index ebf78d27cf1..d71beafe6da 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.db2.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.db2.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, VERSION_, TEN CREATE INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.h2.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.h2.create.dmn.sql index 5ef25020ecf..f7c4bff9a5a 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.h2.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.h2.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, VERSION_, TEN CREATE INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mssql.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mssql.create.dmn.sql index 66d930f625b..f95dfb4f3a4 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mssql.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mssql.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE NONCLUSTERED INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, CREATE NONCLUSTERED INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mysql.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mysql.create.dmn.sql index 2a48ea91c28..5b09d6a8449 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mysql.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.mysql.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, VERSION_, TEN CREATE INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.oracle.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.oracle.create.dmn.sql index 8c8d42a9d59..1bdcd2b34c8 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.oracle.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.oracle.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, VERSION_, TEN CREATE INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.postgres.create.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.postgres.create.dmn.sql index f1b989bf29b..f9ef5a9727a 100644 --- a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.postgres.create.dmn.sql +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/create/flowable.postgres.create.dmn.sql @@ -16,4 +16,4 @@ CREATE UNIQUE INDEX ACT_IDX_DMN_DEC_UNIQ ON ACT_DMN_DECISION(KEY_, VERSION_, TEN CREATE INDEX ACT_IDX_DMN_INSTANCE_ID ON ACT_DMN_HI_DECISION_EXECUTION(INSTANCE_ID_); insert into ACT_GE_PROPERTY -values ('dmn.schema.version', '8.1.0.2', 1); +values ('dmn.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.dmn.sql b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.dmn.sql new file mode 100644 index 00000000000..d5baaf85e83 --- /dev/null +++ b/modules/flowable-dmn-engine/src/main/resources/org/flowable/dmn/db/upgrade/flowable.all.upgradestep.8102.to.8103.dmn.sql @@ -0,0 +1 @@ +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'dmn.schema.version'; diff --git a/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/FlowableVersions.java b/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/FlowableVersions.java index 07cd9e7b69b..402d28e638f 100644 --- a/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/FlowableVersions.java +++ b/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/FlowableVersions.java @@ -23,7 +23,7 @@ */ public class FlowableVersions { - public static final String CURRENT_VERSION = "8.1.0.2"; // Note the extra .x at the end. To cater for snapshot releases with different database changes + public static final String CURRENT_VERSION = "8.1.0.3"; // Note the extra .x at the end. To cater for snapshot releases with different database changes public static final List FLOWABLE_VERSIONS = new ArrayList<>(); @@ -152,6 +152,7 @@ public class FlowableVersions { FLOWABLE_VERSIONS.add(new FlowableVersion("8.0.0.0")); FLOWABLE_VERSIONS.add(new FlowableVersion("8.1.0.0")); FLOWABLE_VERSIONS.add(new FlowableVersion("8.1.0.1")); + FLOWABLE_VERSIONS.add(new FlowableVersion("8.1.0.2")); /* Current */ FLOWABLE_VERSIONS.add(new FlowableVersion(CURRENT_VERSION)); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.cockroachdb.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.cockroachdb.create.common.sql index 191d3d7242a..942eb9270bc 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.cockroachdb.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.cockroachdb.create.common.sql @@ -16,7 +16,7 @@ CREATE TABLE if not exists ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.db2.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.db2.create.common.sql index 41b1e39884f..78e2af59395 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.db2.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.db2.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -108,6 +108,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.h2.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.h2.create.common.sql index dbb2abdeff4..4230cb40cbb 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.h2.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.h2.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -172,6 +172,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.hsql.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.hsql.create.common.sql index dbb2abdeff4..4230cb40cbb 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.hsql.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.hsql.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -172,6 +172,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mssql.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mssql.create.common.sql index 7c8b2d1ed5c..292a18aba8a 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mssql.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mssql.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -108,6 +108,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mysql.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mysql.create.common.sql index 1fd1ca8a61d..a19171f3329 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mysql.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.mysql.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -108,6 +108,7 @@ create table ACT_HI_IDENTITYLINK ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.oracle.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.oracle.create.common.sql index 9514a9c0170..712def1a757 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.oracle.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.oracle.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -108,6 +108,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.postgres.create.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.postgres.create.common.sql index 64a08b56776..76a569be70c 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.postgres.create.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/create/flowable.postgres.create.common.sql @@ -16,7 +16,7 @@ create table ACT_GE_BYTEARRAY ( ); insert into ACT_GE_PROPERTY -values ('common.schema.version', '8.1.0.2', 1); +values ('common.schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('next.dbid', '1', 1); @@ -108,6 +108,7 @@ create table ACT_HI_IDENTITYLINK ( ); create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); create index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK(SUB_SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK(SCOPE_DEFINITION_ID_, SCOPE_TYPE_); diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.db2.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.db2.drop.common.sql index 53ee0c19775..a15e3f4130e 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.db2.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.db2.drop.common.sql @@ -36,6 +36,7 @@ drop index ACT_IDX_IDENT_LNK_SCOPE_DEF; drop table ACT_RU_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_USER; +drop index ACT_IDX_HI_IDENT_LNK_GROUP; drop index ACT_IDX_HI_IDENT_LNK_SCOPE; drop index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE; drop index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.h2.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.h2.drop.common.sql index ded6c3530e4..c2b3734b67f 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.h2.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.h2.drop.common.sql @@ -35,6 +35,7 @@ drop index if exists ACT_IDX_IDENT_LNK_SCOPE_DEF; drop table if exists ACT_HI_IDENTITYLINK cascade constraints; drop index if exists ACT_IDX_HI_IDENT_LNK_USER; +drop index if exists ACT_IDX_HI_IDENT_LNK_GROUP; drop index if exists ACT_IDX_HI_IDENT_LNK_SCOPE; drop index if exists ACT_IDX_HI_IDENT_LNK_SUB_SCOPE; drop index if exists ACT_IDX_HI_IDENT_LNK_SCOPE_DEF; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.hsql.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.hsql.drop.common.sql index ded6c3530e4..c2b3734b67f 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.hsql.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.hsql.drop.common.sql @@ -35,6 +35,7 @@ drop index if exists ACT_IDX_IDENT_LNK_SCOPE_DEF; drop table if exists ACT_HI_IDENTITYLINK cascade constraints; drop index if exists ACT_IDX_HI_IDENT_LNK_USER; +drop index if exists ACT_IDX_HI_IDENT_LNK_GROUP; drop index if exists ACT_IDX_HI_IDENT_LNK_SCOPE; drop index if exists ACT_IDX_HI_IDENT_LNK_SUB_SCOPE; drop index if exists ACT_IDX_HI_IDENT_LNK_SCOPE_DEF; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mssql.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mssql.drop.common.sql index b615d8aa698..0db086f2a70 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mssql.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mssql.drop.common.sql @@ -34,6 +34,7 @@ IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_IDENT_LNK_SCOPE_DEF if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_IDENTITYLINK') drop table ACT_RU_IDENTITYLINK; IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_USER') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_USER; +IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_GROUP') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_GROUP; IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_SCOPE') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_SCOPE; IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_SUB_SCOPE') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_SUB_SCOPE; IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_SCOPE_DEF') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_SCOPE_DEF; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mysql.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mysql.drop.common.sql index 5cb9c1fb01c..a3cb86272bd 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mysql.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.mysql.drop.common.sql @@ -36,6 +36,7 @@ drop index ACT_IDX_IDENT_LNK_SCOPE_DEF on ACT_RU_IDENTITYLINK; drop table if exists ACT_RU_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK; +drop index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_SCOPE on ACT_HI_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE on ACT_HI_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_SCOPE_DEF on ACT_HI_IDENTITYLINK; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.oracle.drop.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.oracle.drop.common.sql index d4641eea246..609f5763d2d 100644 --- a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.oracle.drop.common.sql +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/drop/flowable.oracle.drop.common.sql @@ -36,6 +36,7 @@ drop index ACT_IDX_IDENT_LNK_SCOPE_DEF; drop table ACT_RU_IDENTITYLINK; drop index ACT_IDX_HI_IDENT_LNK_USER; +drop index ACT_IDX_HI_IDENT_LNK_GROUP; drop index ACT_IDX_HI_IDENT_LNK_SCOPE; drop index ACT_IDX_HI_IDENT_LNK_SUB_SCOPE; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.db2.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.db2.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.db2.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.h2.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.h2.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.h2.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.hsql.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.hsql.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.hsql.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mssql.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mssql.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mssql.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mysql.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mysql.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.mysql.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.oracle.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.oracle.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.oracle.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.postgres.upgradestep.8102.to.8103.common.sql b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.postgres.upgradestep.8102.to.8103.common.sql new file mode 100644 index 00000000000..b6e4cb89068 --- /dev/null +++ b/modules/flowable-engine-common/src/main/resources/org/flowable/common/db/upgrade/flowable.postgres.upgradestep.8102.to.8103.common.sql @@ -0,0 +1,3 @@ +create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); + +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'common.schema.version'; diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.cockroachdb.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.cockroachdb.create.engine.sql index d8dbb626822..0a465a87997 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.cockroachdb.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.cockroachdb.create.engine.sql @@ -352,7 +352,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.db2.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.db2.create.engine.sql index d072d4b1666..e2ded506e49 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.db2.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.db2.create.engine.sql @@ -347,7 +347,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.h2.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.h2.create.engine.sql index 53b734f42c9..88da6be4bdb 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.h2.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.h2.create.engine.sql @@ -323,7 +323,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.hsql.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.hsql.create.engine.sql index a7149709417..aab31a80b49 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.hsql.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.hsql.create.engine.sql @@ -323,7 +323,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mssql.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mssql.create.engine.sql index c96de161961..b2e1cac850f 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mssql.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mssql.create.engine.sql @@ -343,7 +343,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mysql.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mysql.create.engine.sql index 7fd45810d25..4443de4cc22 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mysql.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.mysql.create.engine.sql @@ -324,7 +324,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.oracle.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.oracle.create.engine.sql index 83d536eb475..0d6afc0cbb0 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.oracle.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.oracle.create.engine.sql @@ -352,7 +352,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.postgres.create.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.postgres.create.engine.sql index 0c2c3c8f915..68e36d97865 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.postgres.create.engine.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/create/flowable.postgres.create.engine.sql @@ -352,7 +352,7 @@ alter table ACT_PROCDEF_INFO unique (PROC_DEF_ID_); insert into ACT_GE_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); insert into ACT_GE_PROPERTY values ('schema.history', 'create(8.1.0.2)', 1); diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/Execution.xml b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/Execution.xml index 291d52fdd4e..b65ad7dbe27 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/Execution.xml +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/Execution.xml @@ -1362,33 +1362,31 @@ and A.END_TIME_ is null) - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and I.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR}) - - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and - I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) - - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and - ( - - - or + + + or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and + + + or I.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - I.GROUP_ID_ IN - - #{groupId, jdbcType=NVARCHAR} - - - ) + + or (I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) + + + + or I.GROUP_ID_ IN + + #{groupId, jdbcType=NVARCHAR} + + + + + or (I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) + + ) - - or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and - I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) - or diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/HistoricProcessInstance.xml b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/HistoricProcessInstance.xml index d259d25f1e9..93d60585f1a 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/HistoricProcessInstance.xml +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/HistoricProcessInstance.xml @@ -1142,34 +1142,32 @@ and A.END_TIME_ is null) - - or (exists(select LINK.USER_ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} and LINK.PROC_INST_ID_ = ${queryTablePrefix}ID_)) - - - or EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.PROC_INST_ID_ = ${queryTablePrefix}ID_ and - I.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) - - + + or EXISTS( - select ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where LINK.PROC_INST_ID_ = ${queryTablePrefix}ID_ and - ( - - - or + select ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where LINK.PROC_INST_ID_ = ${queryTablePrefix}ID_ and + + + or LINK.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - LINK.GROUP_ID_ IN - - #{group, jdbcType=NVARCHAR} - - - ) + + or (LINK.USER_ID_ = #{orQueryObject.involvedUserIdentityLink.userId, jdbcType=NVARCHAR} and LINK.TYPE_ = #{orQueryObject.involvedUserIdentityLink.type, jdbcType=NVARCHAR}) + + + + or LINK.GROUP_ID_ IN + + #{group, jdbcType=NVARCHAR} + + + + + or (LINK.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and LINK.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) + + ) - - or EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK I where I.PROC_INST_ID_ = ${queryTablePrefix}ID_ and - I.GROUP_ID_ = #{orQueryObject.involvedGroupIdentityLink.groupId, jdbcType=NVARCHAR} and I.TYPE_ = #{orQueryObject.involvedGroupIdentityLink.type, jdbcType=NVARCHAR}) - or ${queryTablePrefix}START_USER_ID_ = #{orQueryObject.startedBy, jdbcType=NVARCHAR} diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/ProcessDefinition.xml b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/ProcessDefinition.xml index 33eda936fa0..71d5b475e9c 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/ProcessDefinition.xml +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/ProcessDefinition.xml @@ -268,28 +268,27 @@ and exists(select 1 from ${prefix}ACT_RU_EVENT_SUBSCR EVT where RES.ID_ = EVT.CONFIGURATION_ and EVT.EVENT_TYPE_ = #{eventSubscriptionType, jdbcType=NVARCHAR} and EVT.EVENT_NAME_ = #{eventSubscriptionName, jdbcType=NVARCHAR}) - AND + + AND exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.PROC_DEF_ID_ = RES.ID_ and - exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.PROC_DEF_ID_ = RES.ID_ and IDN.USER_ID_ = #{authorizationUserId, jdbcType=NVARCHAR}) + IDN.USER_ID_ = #{authorizationUserId, jdbcType=NVARCHAR} - - OR exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.PROC_DEF_ID_ = RES.ID_ and - ( - - - or - - IDN.GROUP_ID_ IN - - #{groupId, jdbcType=NVARCHAR} - - - ) - ) + + OR + + + or + + IDN.GROUP_ID_ IN + + #{groupId, jdbcType=NVARCHAR} + + + ) diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.all.upgradestep.8102.to.8103.engine.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.all.upgradestep.8102.to.8103.engine.sql new file mode 100644 index 00000000000..81ff4add4dc --- /dev/null +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.all.upgradestep.8102.to.8103.engine.sql @@ -0,0 +1 @@ +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'schema.version'; diff --git a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.java b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.java index a08ab858d40..e6b6ccb48eb 100755 --- a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.java +++ b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.java @@ -564,7 +564,76 @@ public void testAcquireForUserOrGroups() { .extracting(ExternalWorkerJob::getId) .containsExactlyInAnyOrder(userAndGroupJob.getId()); } - + + @Test + @Deployment(resources = "org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.bpmn20.xml") + public void testOrQueryForUserOrGroups() { + runtimeService.createProcessInstanceBuilder() + .processDefinitionKey("externalWorkerJobQueryTest") + .start(); + + runtimeService.createProcessInstanceBuilder() + .processDefinitionKey("externalWorkerJobQueryTest") + .start(); + + List jobs = managementService.createExternalWorkerJobQuery().list(); + assertThat(jobs).hasSize(4); + + ExternalWorkerJob onlyUserJob = jobs.get(0); + ExternalWorkerJob onlyGroupJob = jobs.get(1); + ExternalWorkerJob userAndGroupJob = jobs.get(2); + ExternalWorkerJob noLinkJob = jobs.get(3); + + addUserIdentityLinkToJob(onlyUserJob, "gonzo"); + addGroupIdentityLinkToJob(onlyGroupJob, "bears"); + addGroupIdentityLinkToJob(userAndGroupJob, "frogs"); + addUserIdentityLinkToJob(userAndGroupJob, "fozzie"); + + assertThat(managementService.createExternalWorkerJobQuery() + .or() + .forUserOrGroups("kermit", Collections.singleton("muppets")) + .jobId("invalid") + .endOr() + .list()) + .isEmpty(); + + assertThat(managementService.createExternalWorkerJobQuery() + .or() + .forUserOrGroups("gonzo", Collections.singleton("bears")) + .jobId("invalid") + .endOr() + .list()) + .extracting(ExternalWorkerJob::getId) + .containsExactlyInAnyOrder(onlyUserJob.getId(), onlyGroupJob.getId()); + + assertThat(managementService.createExternalWorkerJobQuery() + .or() + .forUserOrGroups("fozzie", Collections.singleton("bears")) + .jobId(noLinkJob.getId()) + .endOr() + .list()) + .extracting(ExternalWorkerJob::getId) + .containsExactlyInAnyOrder(onlyGroupJob.getId(), userAndGroupJob.getId(), noLinkJob.getId()); + + assertThat(managementService.createExternalWorkerJobQuery() + .or() + .forUserOrGroups(null, Collections.singleton("frogs")) + .jobId("invalid") + .endOr() + .list()) + .extracting(ExternalWorkerJob::getId) + .containsExactlyInAnyOrder(userAndGroupJob.getId()); + + assertThat(managementService.createExternalWorkerJobQuery() + .or() + .forUserOrGroups("gonzo", Collections.emptyList()) + .jobId("invalid") + .endOr() + .list()) + .extracting(ExternalWorkerJob::getId) + .containsExactlyInAnyOrder(onlyUserJob.getId()); + } + @Test @Deployment(resources = "org/flowable/engine/test/api/mgmt/ExternalWorkerJobQueryTest.bpmn20.xml") public void testUnaquireWithJobId() { diff --git a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/runtime/InstanceInvolvementTest.java b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/runtime/InstanceInvolvementTest.java index 143798fb90e..1e772719681 100644 --- a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/runtime/InstanceInvolvementTest.java +++ b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/runtime/InstanceInvolvementTest.java @@ -24,6 +24,7 @@ import org.flowable.common.engine.impl.AbstractEngineConfiguration; import org.flowable.common.engine.impl.history.HistoryLevel; +import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.engine.impl.test.HistoryTestHelper; import org.flowable.engine.impl.test.PluggableFlowableTestCase; @@ -401,6 +402,162 @@ public void testOrOneInvolvedUserTogetherWithGroup() { involvedUser("kermit").involvedGroups(Collections.singleton("testGroup")).endOr().count()).isEqualTo(1); } + @Test + @Deployment(resources = { "org/flowable/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" }) + public void testOrInvolvedUserOrGroupsInMultiple() { + ProcessInstance userInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(userInstance.getId(), "kermit", IdentityLinkType.PARTICIPANT); + ProcessInstance groupInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addGroupIdentityLink(groupInstance.getId(), "testGroup2", IdentityLinkType.CANDIDATE); + ProcessInstance otherInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(otherInstance.getId(), "gonzo", IdentityLinkType.PARTICIPANT); + runtimeService.addGroupIdentityLink(otherInstance.getId(), "otherGroup", IdentityLinkType.PARTICIPANT); + + Set groups = Set.of("testGroup", "testGroup2"); + assertThat(runtimeService.createProcessInstanceQuery().or().involvedUser("kermit").involvedGroups(groups).endOr().list()) + .extracting(ProcessInstance::getId) + .containsExactlyInAnyOrder(userInstance.getId(), groupInstance.getId()); + assertThat(runtimeService.createProcessInstanceQuery().or().involvedUser("kermit").involvedGroups(groups).endOr().count()) + .isEqualTo(2); + + assertThat(runtimeService.createProcessInstanceQuery() + .or().involvedUser("kermit").involvedGroups(groups).processInstanceId(otherInstance.getId()).endOr() + .list()) + .extracting(ProcessInstance::getId) + .containsExactlyInAnyOrder(userInstance.getId(), groupInstance.getId(), otherInstance.getId()); + + assertThat(runtimeService.createProcessInstanceQuery() + .processInstanceId(groupInstance.getId()) + .or().involvedUser("kermit").involvedGroups(groups).endOr() + .list()) + .extracting(ProcessInstance::getId) + .containsExactly(groupInstance.getId()); + + assertThat(runtimeService.createProcessInstanceQuery().or().involvedUser("fozzie").involvedGroups(Set.of("unknownGroup")).endOr().count()) + .isZero(); + } + + @Test + @Deployment(resources = { "org/flowable/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" }) + public void testHistoryOrInvolvedUserOrGroupsInMultiple() { + ProcessInstance userInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(userInstance.getId(), "kermit", IdentityLinkType.PARTICIPANT); + ProcessInstance groupInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addGroupIdentityLink(groupInstance.getId(), "testGroup2", IdentityLinkType.CANDIDATE); + ProcessInstance otherInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(otherInstance.getId(), "gonzo", IdentityLinkType.PARTICIPANT); + runtimeService.addGroupIdentityLink(otherInstance.getId(), "otherGroup", IdentityLinkType.PARTICIPANT); + taskService.complete(taskService.createTaskQuery().processInstanceId(groupInstance.getId()).singleResult().getId()); + + if (HistoryTestHelper.isHistoryLevelAtLeast(HistoryLevel.AUDIT, processEngineConfiguration)) { + Set groups = Set.of("testGroup", "testGroup2"); + assertThat(historyService.createHistoricProcessInstanceQuery().or().involvedUser("kermit").involvedGroups(groups).endOr().list()) + .extracting(HistoricProcessInstance::getId) + .containsExactlyInAnyOrder(userInstance.getId(), groupInstance.getId()); + assertThat(historyService.createHistoricProcessInstanceQuery().or().involvedUser("kermit").involvedGroups(groups).endOr().count()) + .isEqualTo(2); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .or().involvedUser("kermit").involvedGroups(groups).processInstanceId(otherInstance.getId()).endOr() + .list()) + .extracting(HistoricProcessInstance::getId) + .containsExactlyInAnyOrder(userInstance.getId(), groupInstance.getId(), otherInstance.getId()); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .finished() + .or().involvedUser("kermit").involvedGroups(groups).endOr() + .list()) + .extracting(HistoricProcessInstance::getId) + .containsExactly(groupInstance.getId()); + + assertThat(historyService.createHistoricProcessInstanceQuery().or().involvedUser("fozzie").involvedGroups(Set.of("unknownGroup")).endOr().count()) + .isZero(); + } + } + + @Test + @Deployment(resources = { "org/flowable/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" }) + public void testOrInvolvedUsersAndGroupsWithIdentityLinkTypes() { + ProcessInstance userTypeInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(userTypeInstance.getId(), "kermit", "specialLink"); + ProcessInstance userOtherTypeInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addUserIdentityLink(userOtherTypeInstance.getId(), "kermit", "otherLink"); + ProcessInstance groupTypeInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addGroupIdentityLink(groupTypeInstance.getId(), "sales", "specialLink"); + ProcessInstance groupOtherTypeInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addGroupIdentityLink(groupOtherTypeInstance.getId(), "sales", "otherLink"); + ProcessInstance groupsInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); + runtimeService.addGroupIdentityLink(groupsInstance.getId(), "testGroup", "otherLink"); + + assertThat(runtimeService.createProcessInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroup("sales", "specialLink").endOr() + .list()) + .extracting(ProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupTypeInstance.getId()); + + assertThat(runtimeService.createProcessInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(ProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupsInstance.getId()); + + assertThat(runtimeService.createProcessInstanceQuery() + .or().involvedUser("kermit").involvedGroup("sales", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(ProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), userOtherTypeInstance.getId(), groupTypeInstance.getId(), groupsInstance.getId()); + + assertThat(runtimeService.createProcessInstanceQuery() + .or() + .involvedUser("kermit", "specialLink") + .involvedGroup("sales", "specialLink") + .involvedGroups(Set.of("testGroup")) + .processInstanceId(groupOtherTypeInstance.getId()) + .endOr() + .count()) + .isEqualTo(4); + + assertThat(runtimeService.createProcessInstanceQuery() + .or().involvedUser("kermit", "wrongType").involvedGroup("sales", "wrongType").endOr() + .count()) + .isZero(); + + if (HistoryTestHelper.isHistoryLevelAtLeast(HistoryLevel.AUDIT, processEngineConfiguration)) { + assertThat(historyService.createHistoricProcessInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroup("sales", "specialLink").endOr() + .list()) + .extracting(HistoricProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupTypeInstance.getId()); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .or().involvedUser("kermit", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(HistoricProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), groupsInstance.getId()); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .or().involvedUser("kermit").involvedGroup("sales", "specialLink").involvedGroups(Set.of("testGroup")).endOr() + .list()) + .extracting(HistoricProcessInstance::getId) + .containsExactlyInAnyOrder(userTypeInstance.getId(), userOtherTypeInstance.getId(), groupTypeInstance.getId(), groupsInstance.getId()); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .or() + .involvedUser("kermit", "specialLink") + .involvedGroup("sales", "specialLink") + .involvedGroups(Set.of("testGroup")) + .processInstanceId(groupOtherTypeInstance.getId()) + .endOr() + .count()) + .isEqualTo(4); + + assertThat(historyService.createHistoricProcessInstanceQuery() + .or().involvedUser("kermit", "wrongType").involvedGroup("sales", "wrongType").endOr() + .count()) + .isZero(); + } + } + @Test @Deployment(resources = { "org/flowable/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" }) public void testInvolvedGroupsWithHistoricProcessInstance() { diff --git a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/task/TaskQueryTest.java b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/task/TaskQueryTest.java index ba0ea516879..5afbb81bd67 100644 --- a/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/task/TaskQueryTest.java +++ b/modules/flowable-engine/src/test/java/org/flowable/engine/test/api/task/TaskQueryTest.java @@ -27,6 +27,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import org.flowable.common.engine.api.FlowableException; import org.flowable.common.engine.api.FlowableIllegalArgumentException; @@ -904,6 +905,52 @@ public void testQueryByInvolvedGroupOrOwner() { } } + @Test + public void testQueryByOrInvolvedUserOrInvolvedGroups() { + try { + Task userLinkTask = taskService.newTask(); + taskService.saveTask(userLinkTask); + taskService.addUserIdentityLink(userLinkTask.getId(), "involvedUser", IdentityLinkType.PARTICIPANT); + Task groupLinkTask = taskService.newTask(); + taskService.saveTask(groupLinkTask); + taskService.addGroupIdentityLink(groupLinkTask.getId(), "involvedGroup2", IdentityLinkType.CANDIDATE); + Task assigneeTask = taskService.newTask(); + assigneeTask.setAssignee("involvedUser"); + taskService.saveTask(assigneeTask); + Task ownerTask = taskService.newTask(); + ownerTask.setOwner("involvedUser"); + taskService.saveTask(ownerTask); + Task otherTask = taskService.newTask(); + taskService.saveTask(otherTask); + taskService.addUserIdentityLink(otherTask.getId(), "otherUser", IdentityLinkType.PARTICIPANT); + taskService.addGroupIdentityLink(otherTask.getId(), "otherGroup", IdentityLinkType.CANDIDATE); + + Set groups = Set.of("involvedGroup1", "involvedGroup2"); + assertThat(taskService.createTaskQuery().or().taskInvolvedUser("involvedUser").taskInvolvedGroups(groups).endOr().list()) + .extracting(Task::getId) + .containsExactlyInAnyOrder(userLinkTask.getId(), groupLinkTask.getId(), assigneeTask.getId(), ownerTask.getId()); + assertThat(taskService.createTaskQuery().or().taskInvolvedUser("involvedUser").taskInvolvedGroups(groups).endOr().count()) + .isEqualTo(4); + assertThat(taskService.createTaskQuery().or().taskInvolvedUser("involvedUser").taskInvolvedGroups(groups).taskId(otherTask.getId()).endOr().list()) + .extracting(Task::getId) + .containsExactlyInAnyOrder(userLinkTask.getId(), groupLinkTask.getId(), assigneeTask.getId(), ownerTask.getId(), otherTask.getId()); + assertThat(taskService.createTaskQuery().or().taskInvolvedUser("unknownUser").taskInvolvedGroups(Set.of("unknownGroup")).endOr().count()) + .isZero(); + + if (isHistoryLevelAtLeast(HistoryLevel.AUDIT)) { + assertThat(historyService.createHistoricTaskInstanceQuery().or().taskInvolvedUser("involvedUser").taskInvolvedGroups(groups).endOr().list()) + .extracting(HistoricTaskInstance::getId) + .containsExactlyInAnyOrder(userLinkTask.getId(), groupLinkTask.getId(), assigneeTask.getId(), ownerTask.getId()); + assertThat(historyService.createHistoricTaskInstanceQuery().or().taskInvolvedUser("unknownUser").taskInvolvedGroups(Set.of("unknownGroup")) + .endOr().count()) + .isZero(); + } + + } finally { + deleteAllTasks(); + } + } + @Test public void testQueryByInvolvedGroupAndAssignee() { try { diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.db2.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.db2.create.eventregistry.sql index 5a21132870b..8488da5a471 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.db2.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.db2.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ VARCHAR(255) NOT NULL, NAME_ VARCHAR(25 CREATE UNIQUE INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.h2.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.h2.create.eventregistry.sql index a51e426895c..aca7bb907c1 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.h2.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.h2.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ VARCHAR(255) NOT NULL, NAME_ VARCHAR(25 CREATE UNIQUE INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mssql.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mssql.create.eventregistry.sql index 06654243387..8ef4239f1b3 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mssql.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mssql.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ varchar(255) NOT NULL, NAME_ nvarchar(2 CREATE UNIQUE NONCLUSTERED INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mysql.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mysql.create.eventregistry.sql index f48d0d329c7..3dedab8fda7 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mysql.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.mysql.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ VARCHAR(255) NOT NULL, NAME_ VARCHAR(25 CREATE UNIQUE INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.oracle.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.oracle.create.eventregistry.sql index 7ced0b858ad..9f22332713a 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.oracle.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.oracle.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ VARCHAR2(255) NOT NULL, NAME_ VARCHAR2( CREATE UNIQUE INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.postgres.create.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.postgres.create.eventregistry.sql index 70b521fd133..8928a670e13 100644 --- a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.postgres.create.eventregistry.sql +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/create/flowable.postgres.create.eventregistry.sql @@ -16,4 +16,4 @@ CREATE TABLE FLW_CHANNEL_DEFINITION (ID_ VARCHAR(255) NOT NULL, NAME_ VARCHAR(25 CREATE UNIQUE INDEX ACT_IDX_CHANNEL_DEF_UNIQ ON FLW_CHANNEL_DEFINITION(KEY_, VERSION_, TENANT_ID_); insert into ACT_GE_PROPERTY -values ('eventregistry.schema.version', '8.1.0.2', 1); +values ('eventregistry.schema.version', '8.1.0.3', 1); diff --git a/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/upgrade/flowable.all.upgradestep.8102.to.8103.eventregistry.sql b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/upgrade/flowable.all.upgradestep.8102.to.8103.eventregistry.sql new file mode 100644 index 00000000000..dfa0db338c8 --- /dev/null +++ b/modules/flowable-event-registry/src/main/resources/org/flowable/eventregistry/db/upgrade/flowable.all.upgradestep.8102.to.8103.eventregistry.sql @@ -0,0 +1 @@ +update ACT_GE_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'eventregistry.schema.version'; diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.cockroachdb.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.cockroachdb.create.identity.sql index a5b4c4bab7d..6a39872630e 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.cockroachdb.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.cockroachdb.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.db2.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.db2.create.identity.sql index ecec3f94bac..40ab5742c42 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.db2.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.db2.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64) not null, diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.h2.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.h2.create.identity.sql index f323f3fd21d..7fd1eb60f10 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.h2.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.h2.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.hsql.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.hsql.create.identity.sql index 8d2d203b3a1..60a111bd0fe 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.hsql.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.hsql.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mssql.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mssql.create.identity.sql index feef8c730c8..33a32c054fd 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mssql.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mssql.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ nvarchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mysql.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mysql.create.identity.sql index cdc92dc05fa..bce026ae956 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mysql.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.mysql.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.oracle.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.oracle.create.identity.sql index 8541d92857f..fd49f0a5e40 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.oracle.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.oracle.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ NVARCHAR2(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.postgres.create.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.postgres.create.identity.sql index 58b6f23cf75..936514d7d86 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.postgres.create.identity.sql +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/create/flowable.postgres.create.identity.sql @@ -6,7 +6,7 @@ create table ACT_ID_PROPERTY ( ); insert into ACT_ID_PROPERTY -values ('schema.version', '8.1.0.2', 1); +values ('schema.version', '8.1.0.3', 1); create table ACT_ID_BYTEARRAY ( ID_ varchar(64), diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/upgrade/flowable.all.upgradestep.8102.to.8103.identity.sql b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/upgrade/flowable.all.upgradestep.8102.to.8103.identity.sql new file mode 100644 index 00000000000..cea487ebf51 --- /dev/null +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/upgrade/flowable.all.upgradestep.8102.to.8103.identity.sql @@ -0,0 +1 @@ +update ACT_ID_PROPERTY set VALUE_ = '8.1.0.3' where NAME_ = 'schema.version'; diff --git a/modules/flowable-job-service/src/main/resources/org/flowable/job/service/db/mapping/entity/ExternalWorkerJob.xml b/modules/flowable-job-service/src/main/resources/org/flowable/job/service/db/mapping/entity/ExternalWorkerJob.xml index 1f65b54fda1..13f72d30c22 100755 --- a/modules/flowable-job-service/src/main/resources/org/flowable/job/service/db/mapping/entity/ExternalWorkerJob.xml +++ b/modules/flowable-job-service/src/main/resources/org/flowable/job/service/db/mapping/entity/ExternalWorkerJob.xml @@ -86,19 +86,23 @@ - - - exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.USER_ID_ = #{parameter.authorizedUser, jdbcType=NVARCHAR}) - - - OR exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.GROUP_ID_ IN - - #{groupId, jdbcType=NVARCHAR} - - ) - - + + + and exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and + + + IDN.USER_ID_ = #{parameter.authorizedUser, jdbcType=NVARCHAR} + + + OR IDN.GROUP_ID_ IN + + #{groupId, jdbcType=NVARCHAR} + + + + ) + and LOCK_EXP_TIME_ is null ${orderBy} @@ -292,19 +296,23 @@ and (RES.SCOPE_TYPE_ = '' or RES.SCOPE_TYPE_ is null) - - - exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.USER_ID_ = #{authorizedUser, jdbcType=NVARCHAR}) - - - OR exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.GROUP_ID_ IN - - #{groupId, jdbcType=NVARCHAR} - - ) - - + + + and exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and + + + IDN.USER_ID_ = #{authorizedUser, jdbcType=NVARCHAR} + + + OR IDN.GROUP_ID_ IN + + #{groupId, jdbcType=NVARCHAR} + + + + ) + and @@ -427,20 +435,20 @@ or (RES.SCOPE_TYPE_ = '' or RES.SCOPE_TYPE_ is null) - or + or exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and - exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.USER_ID_ = #{orQueryObject.authorizedUser, jdbcType=NVARCHAR}) + IDN.USER_ID_ = #{orQueryObject.authorizedUser, jdbcType=NVARCHAR} - OR exists (select ID_ from ${prefix}ACT_RU_IDENTITYLINK IDN where IDN.SCOPE_ID_ = RES.CORRELATION_ID_ and IDN.SCOPE_TYPE_ = 'externalWorker' and IDN.GROUP_ID_ IN + OR IDN.GROUP_ID_ IN #{groupId, jdbcType=NVARCHAR} - ) + ) diff --git a/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/HistoricTaskInstance.xml b/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/HistoricTaskInstance.xml index 0bfd6acdaa6..31f726aba4b 100644 --- a/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/HistoricTaskInstance.xml +++ b/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/HistoricTaskInstance.xml @@ -1862,30 +1862,36 @@ ) - - or ( - EXISTS(select LINK.ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where LINK.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} and LINK.TASK_ID_ = ${queryTablePrefix}ID_) - or ${queryTablePrefix}ASSIGNEE_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - or ${queryTablePrefix}OWNER_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - ) - - + + or - EXISTS(select ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where LINK.TASK_ID_ = ${queryTablePrefix}ID_ and + EXISTS(select LINK.ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where LINK.TASK_ID_ = ${queryTablePrefix}ID_ and ( - - - or - - LINK.GROUP_ID_ IN - - #{group, jdbcType=NVARCHAR} + + LINK.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + + + or + + + + + or + + LINK.GROUP_ID_ IN + + #{group, jdbcType=NVARCHAR} + - + ) ) + + or ${queryTablePrefix}ASSIGNEE_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + or ${queryTablePrefix}OWNER_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + or EXISTS(select 1 from ${prefix}ACT_HI_ENTITYLINK LINK where LINK.SCOPE_ID_ = #{orQueryObject.parentScopeId, jdbcType=NVARCHAR} diff --git a/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/Task.xml b/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/Task.xml index 673a26fb924..3a8e1942f27 100644 --- a/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/Task.xml +++ b/modules/flowable-task-service/src/main/resources/org/flowable/task/service/db/mapping/entity/Task.xml @@ -1484,31 +1484,35 @@ ) ) - - or ( - exists(select LINK.ID_ from ${prefix}ACT_RU_IDENTITYLINK LINK where LINK.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} and LINK.TASK_ID_ = RES.ID_) - or RES.ASSIGNEE_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - or RES.OWNER_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} - ) - - - or ( - EXISTS(select LINK.ID_ from ${prefix}ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = RES.ID_ and + + + or EXISTS(select LINK.ID_ from ${prefix}ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = RES.ID_ and ( - - + + LINK.USER_ID_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + + or - - LINK.GROUP_ID_ IN - - #{groupId, jdbcType=NVARCHAR} + + + + + or + + LINK.GROUP_ID_ IN + + #{groupId, jdbcType=NVARCHAR} + - + ) - ) ) + + or RES.ASSIGNEE_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + or RES.OWNER_ = #{orQueryObject.involvedUser, jdbcType=NVARCHAR} + or EXISTS(select 1 from ${prefix}ACT_RU_ENTITYLINK LINK where LINK.SCOPE_ID_ = #{orQueryObject.parentScopeId, jdbcType=NVARCHAR}