From 23b738df5b3734f4c0715ebc748e8a4457ec672a Mon Sep 17 00:00:00 2001 From: matheus-marcelinux Date: Fri, 3 Nov 2023 18:53:05 -0300 Subject: [PATCH] IDEMPIERE-5835 - disallow multiple executions by any user (#1977) * IDEMPIERE-5835 - disallow multiple executions by any user * IDEMPIERE-5835 - renaming flags * IDEMPIERE-5835 - applying terminology patch --- .../oracle/202308241336_IDEMPIERE-5835.sql | 126 ++++++++++++++++++ .../202308241336_IDEMPIERE-5835.sql | 123 +++++++++++++++++ .../src/org/compiere/model/I_AD_Process.java | 8 +- .../src/org/compiere/model/X_AD_Process.java | 32 +++-- .../src/org/compiere/process/ProcessInfo.java | 34 +++-- 5 files changed, 299 insertions(+), 24 deletions(-) create mode 100644 migration/iD11/oracle/202308241336_IDEMPIERE-5835.sql create mode 100644 migration/iD11/postgresql/202308241336_IDEMPIERE-5835.sql diff --git a/migration/iD11/oracle/202308241336_IDEMPIERE-5835.sql b/migration/iD11/oracle/202308241336_IDEMPIERE-5835.sql new file mode 100644 index 0000000000..bfb1458463 --- /dev/null +++ b/migration/iD11/oracle/202308241336_IDEMPIERE-5835.sql @@ -0,0 +1,126 @@ +-- IDEMPIERE-5835 +SELECT register_migration_script('202308241336_IDEMPIERE-5835.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Aug 24, 2023, 1:36:54 PM BRT +UPDATE AD_Ref_List SET Name='Disallow multiple executions with the same parameters & user', Description='Allow to execute a process multiple times with different parameters and same user',Updated=TO_TIMESTAMP('2023-08-24 13:36:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Aug 24, 2023, 1:37:12 PM BRT +UPDATE AD_Ref_List SET Name='Disallow multiple executions by same user',Updated=TO_TIMESTAMP('2023-08-24 13:37:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Aug 24, 2023, 1:37:20 PM BRT +UPDATE AD_Ref_List SET Description='Never allow to execute a process that is already running by the same user',Updated=TO_TIMESTAMP('2023-08-24 13:37:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Aug 24, 2023, 1:38:20 PM BRT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200646,'Disallow multiple executions any user','Never allow to execute a process that is already running by any user',200158,'NA',0,0,'Y',TO_TIMESTAMP('2023-08-24 13:38:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-08-24 13:38:19','YYYY-MM-DD HH24:MI:SS'),100,'D','8911db76-92ef-4c9b-9482-442cf31a2fc4') +; + +-- Aug 24, 2023, 1:39:40 PM BRT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200647,'Disallow multiple execution with the same parameter any user','Allow to execute a process multiple times with different parameters by any user',200158,'PA',0,0,'Y',TO_TIMESTAMP('2023-08-24 13:39:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-08-24 13:39:40','YYYY-MM-DD HH24:MI:SS'),100,'D','d13ecbd0-370f-4935-826b-2ae7313add8a') +; + +-- Aug 24, 2023, 2:13:12 PM BRT +UPDATE AD_Column SET FieldLength=2,Updated=TO_TIMESTAMP('2023-08-24 14:13:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213699 +; + +-- Aug 24, 2023, 2:13:16 PM BRT +ALTER TABLE AD_Process MODIFY AllowMultipleExecution VARCHAR2(2 CHAR) DEFAULT 'P' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Element SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', PrintName='Allow Concurrent Execution',Updated=TO_TIMESTAMP('2023-09-11 12:26:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Column SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', AD_Element_ID=203269 WHERE UPPER(ColumnName)='ALLOWMULTIPLEEXECUTION' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_InfoColumn SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Field SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=203269) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_PrintFormatItem SET PrintName='Allow Concurrent Execution', Name='Allow Concurrent Execution' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=203269) +; + +-- Sep 11, 2023, 12:27:29 PM CEST +UPDATE AD_Ref_List SET Name='Not from same user', Description='Do not allow to execute a process that is already running by the same user',Updated=TO_TIMESTAMP('2023-09-11 12:27:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Sep 11, 2023, 12:27:48 PM CEST +UPDATE AD_Ref_List SET Name='Not from any user', Description='Do not allow to execute a process that is already running by any user',Updated=TO_TIMESTAMP('2023-09-11 12:27:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200646 +; + +-- Sep 11, 2023, 12:28:44 PM CEST +UPDATE AD_Ref_List SET Name='Not same user and parameters', Description='Do not allow to execute a process concurrently with same parameters and same user',Updated=TO_TIMESTAMP('2023-09-11 12:28:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Sep 11, 2023, 12:28:48 PM CEST +UPDATE AD_Ref_List SET Name='Not from same user and parameters',Updated=TO_TIMESTAMP('2023-09-11 12:28:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Sep 11, 2023, 12:29:17 PM CEST +UPDATE AD_Ref_List SET Name='Not from any user and same parameters', Description='Do not allow to execute a process concurrently with same parameters from any user',Updated=TO_TIMESTAMP('2023-09-11 12:29:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200647 +; + +-- Sep 11, 2023, 12:31:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200648,'Yes','Allow concurrent execution',200158,'Y',0,0,'Y',TO_TIMESTAMP('2023-09-11 12:31:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-09-11 12:31:35','YYYY-MM-DD HH24:MI:SS'),100,'D','832cb3cb-d520-4c5d-98e5-a302f0fa0f39') +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Element SET Help=NULL,Updated=TO_TIMESTAMP('2023-09-11 12:32:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Column SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, AD_Element_ID=203269 WHERE UPPER(ColumnName)='ALLOWMULTIPLEEXECUTION' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_InfoColumn SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Field SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=203269) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:33:33 PM CEST +UPDATE AD_Column SET IsMandatory='Y',Updated=TO_TIMESTAMP('2023-09-11 12:33:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213699 +; + +-- Sep 11, 2023, 12:33:37 PM CEST +ALTER TABLE AD_Process MODIFY AllowMultipleExecution VARCHAR2(2 CHAR) DEFAULT 'P' +; + +-- Sep 11, 2023, 12:33:37 PM CEST +UPDATE AD_Process SET AllowMultipleExecution='Y' WHERE AllowMultipleExecution IS NULL +; + +-- Sep 11, 2023, 12:33:37 PM CEST +ALTER TABLE AD_Process MODIFY AllowMultipleExecution NOT NULL +; + diff --git a/migration/iD11/postgresql/202308241336_IDEMPIERE-5835.sql b/migration/iD11/postgresql/202308241336_IDEMPIERE-5835.sql new file mode 100644 index 0000000000..9bcb5af1ea --- /dev/null +++ b/migration/iD11/postgresql/202308241336_IDEMPIERE-5835.sql @@ -0,0 +1,123 @@ +-- IDEMPIERE-5835 +SELECT register_migration_script('202308241336_IDEMPIERE-5835.sql') FROM dual; + +-- Aug 24, 2023, 1:36:54 PM BRT +UPDATE AD_Ref_List SET Name='Disallow multiple executions with the same parameters & user', Description='Allow to execute a process multiple times with different parameters and same user',Updated=TO_TIMESTAMP('2023-08-24 13:36:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Aug 24, 2023, 1:37:12 PM BRT +UPDATE AD_Ref_List SET Name='Disallow multiple executions by same user',Updated=TO_TIMESTAMP('2023-08-24 13:37:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Aug 24, 2023, 1:37:20 PM BRT +UPDATE AD_Ref_List SET Description='Never allow to execute a process that is already running by the same user',Updated=TO_TIMESTAMP('2023-08-24 13:37:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Aug 24, 2023, 1:38:20 PM BRT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200646,'Disallow multiple executions any user','Never allow to execute a process that is already running by any user',200158,'NA',0,0,'Y',TO_TIMESTAMP('2023-08-24 13:38:19','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-08-24 13:38:19','YYYY-MM-DD HH24:MI:SS'),100,'D','8911db76-92ef-4c9b-9482-442cf31a2fc4') +; + +-- Aug 24, 2023, 1:39:40 PM BRT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200647,'Disallow multiple execution with the same parameter any user','Allow to execute a process multiple times with different parameters by any user',200158,'PA',0,0,'Y',TO_TIMESTAMP('2023-08-24 13:39:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-08-24 13:39:40','YYYY-MM-DD HH24:MI:SS'),100,'D','d13ecbd0-370f-4935-826b-2ae7313add8a') +; + +-- Aug 24, 2023, 2:13:12 PM BRT +UPDATE AD_Column SET FieldLength=2,Updated=TO_TIMESTAMP('2023-08-24 14:13:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213699 +; + +-- Aug 24, 2023, 2:13:16 PM BRT +INSERT INTO t_alter_column values('ad_process','AllowMultipleExecution','VARCHAR(2)',null,'P') +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Element SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', PrintName='Allow Concurrent Execution',Updated=TO_TIMESTAMP('2023-09-11 12:26:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Column SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', AD_Element_ID=203269 WHERE UPPER(ColumnName)='ALLOWMULTIPLEEXECUTION' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_InfoColumn SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_Field SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help='When blank: Allows to execute a process concurrently.', Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=203269) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:26:16 PM CEST +UPDATE AD_PrintFormatItem SET PrintName='Allow Concurrent Execution', Name='Allow Concurrent Execution' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=203269) +; + +-- Sep 11, 2023, 12:27:29 PM CEST +UPDATE AD_Ref_List SET Name='Not from same user', Description='Do not allow to execute a process that is already running by the same user',Updated=TO_TIMESTAMP('2023-09-11 12:27:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200440 +; + +-- Sep 11, 2023, 12:27:48 PM CEST +UPDATE AD_Ref_List SET Name='Not from any user', Description='Do not allow to execute a process that is already running by any user',Updated=TO_TIMESTAMP('2023-09-11 12:27:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200646 +; + +-- Sep 11, 2023, 12:28:44 PM CEST +UPDATE AD_Ref_List SET Name='Not same user and parameters', Description='Do not allow to execute a process concurrently with same parameters and same user',Updated=TO_TIMESTAMP('2023-09-11 12:28:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Sep 11, 2023, 12:28:48 PM CEST +UPDATE AD_Ref_List SET Name='Not from same user and parameters',Updated=TO_TIMESTAMP('2023-09-11 12:28:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200441 +; + +-- Sep 11, 2023, 12:29:17 PM CEST +UPDATE AD_Ref_List SET Name='Not from any user and same parameters', Description='Do not allow to execute a process concurrently with same parameters from any user',Updated=TO_TIMESTAMP('2023-09-11 12:29:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200647 +; + +-- Sep 11, 2023, 12:31:35 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,Description,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200648,'Yes','Allow concurrent execution',200158,'Y',0,0,'Y',TO_TIMESTAMP('2023-09-11 12:31:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-09-11 12:31:35','YYYY-MM-DD HH24:MI:SS'),100,'D','832cb3cb-d520-4c5d-98e5-a302f0fa0f39') +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Element SET Help=NULL,Updated=TO_TIMESTAMP('2023-09-11 12:32:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Column SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, AD_Element_ID=203269 WHERE UPPER(ColumnName)='ALLOWMULTIPLEEXECUTION' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Process_Para SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_InfoColumn SET ColumnName='AllowMultipleExecution', Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Element_ID=203269 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:32:49 PM CEST +UPDATE AD_Field SET Name='Allow Concurrent Execution', Description='Allow or disallow executing a process/report multiple times concurrently', Help=NULL, Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=203269) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2023, 12:33:33 PM CEST +UPDATE AD_Column SET IsMandatory='Y',Updated=TO_TIMESTAMP('2023-09-11 12:33:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213699 +; + +-- Sep 11, 2023, 12:33:37 PM CEST +INSERT INTO t_alter_column values('ad_process','AllowMultipleExecution','VARCHAR(2)',null,'P') +; + +-- Sep 11, 2023, 12:33:37 PM CEST +UPDATE AD_Process SET AllowMultipleExecution='Y' WHERE AllowMultipleExecution IS NULL +; + +-- Sep 11, 2023, 12:33:37 PM CEST +INSERT INTO t_alter_column values('ad_process','AllowMultipleExecution',null,'NOT NULL',null) +; + diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Process.java b/org.adempiere.base/src/org/compiere/model/I_AD_Process.java index 59c8a90259..811d807f3b 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Process.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Process.java @@ -171,13 +171,13 @@ public interface I_AD_Process /** Column name AllowMultipleExecution */ public static final String COLUMNNAME_AllowMultipleExecution = "AllowMultipleExecution"; - /** Set Multiple Execution. - * Allow or disallow executing a process/report multiple times. + /** Set Allow Concurrent Execution. + * Allow or disallow executing a process/report multiple times concurrently */ public void setAllowMultipleExecution (String AllowMultipleExecution); - /** Get Multiple Execution. - * Allow or disallow executing a process/report multiple times. + /** Get Allow Concurrent Execution. + * Allow or disallow executing a process/report multiple times concurrently */ public String getAllowMultipleExecution(); diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Process.java b/org.adempiere.base/src/org/compiere/model/X_AD_Process.java index c2021647d5..c4d96371b5 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Process.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Process.java @@ -31,7 +31,7 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent /** * */ - private static final long serialVersionUID = 20230409L; + private static final long serialVersionUID = 20230911L; /** Standard Constructor */ public X_AD_Process (Properties ctx, int AD_Process_ID, String trxName) @@ -41,6 +41,8 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent { setAccessLevel (null); setAD_Process_ID (0); + setAllowMultipleExecution (null); +// P setEntityType (null); // @SQL=SELECT CASE WHEN '@P|AdempiereSys:N@'='Y' THEN 'D' ELSE get_sysconfig('DEFAULT_ENTITYTYPE','U',0,0) END FROM Dual setIsBetaFunctionality (false); @@ -58,6 +60,8 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent { setAccessLevel (null); setAD_Process_ID (0); + setAllowMultipleExecution (null); +// P setEntityType (null); // @SQL=SELECT CASE WHEN '@P|AdempiereSys:N@'='Y' THEN 'D' ELSE get_sysconfig('DEFAULT_ENTITYTYPE','U',0,0) END FROM Dual setIsBetaFunctionality (false); @@ -75,6 +79,8 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent { setAccessLevel (null); setAD_Process_ID (0); + setAllowMultipleExecution (null); +// P setEntityType (null); // @SQL=SELECT CASE WHEN '@P|AdempiereSys:N@'='Y' THEN 'D' ELSE get_sysconfig('DEFAULT_ENTITYTYPE','U',0,0) END FROM Dual setIsBetaFunctionality (false); @@ -92,6 +98,8 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent { setAccessLevel (null); setAD_Process_ID (0); + setAllowMultipleExecution (null); +// P setEntityType (null); // @SQL=SELECT CASE WHEN '@P|AdempiereSys:N@'='Y' THEN 'D' ELSE get_sysconfig('DEFAULT_ENTITYTYPE','U',0,0) END FROM Dual setIsBetaFunctionality (false); @@ -338,12 +346,18 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent /** AllowMultipleExecution AD_Reference_ID=200158 */ public static final int ALLOWMULTIPLEEXECUTION_AD_Reference_ID=200158; - /** Disallow multiple executions = N */ - public static final String ALLOWMULTIPLEEXECUTION_DisallowMultipleExecutions = "N"; - /** Disallow multiple executions with the same parameters = P */ - public static final String ALLOWMULTIPLEEXECUTION_DisallowMultipleExecutionsWithTheSameParameters = "P"; - /** Set Multiple Execution. - @param AllowMultipleExecution Allow or disallow executing a process/report multiple times. + /** Not from same user = N */ + public static final String ALLOWMULTIPLEEXECUTION_NotFromSameUser = "N"; + /** Not from any user = NA */ + public static final String ALLOWMULTIPLEEXECUTION_NotFromAnyUser = "NA"; + /** Not from same user and parameters = P */ + public static final String ALLOWMULTIPLEEXECUTION_NotFromSameUserAndParameters = "P"; + /** Not from any user and same parameters = PA */ + public static final String ALLOWMULTIPLEEXECUTION_NotFromAnyUserAndSameParameters = "PA"; + /** Yes = Y */ + public static final String ALLOWMULTIPLEEXECUTION_Yes = "Y"; + /** Set Allow Concurrent Execution. + @param AllowMultipleExecution Allow or disallow executing a process/report multiple times concurrently */ public void setAllowMultipleExecution (String AllowMultipleExecution) { @@ -351,8 +365,8 @@ public class X_AD_Process extends PO implements I_AD_Process, I_Persistent set_Value (COLUMNNAME_AllowMultipleExecution, AllowMultipleExecution); } - /** Get Multiple Execution. - @return Allow or disallow executing a process/report multiple times. + /** Get Allow Concurrent Execution. + @return Allow or disallow executing a process/report multiple times concurrently */ public String getAllowMultipleExecution() { diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java index a39747a423..e8ed29e9ba 100644 --- a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java +++ b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java @@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.adempiere.util.IProcessUI; @@ -1048,21 +1049,32 @@ public class ProcessInfo implements Serializable if (lastRebootDate == null) return false; - List processInstanceList = new Query(Env.getCtx(), MPInstance.Table_Name, " AD_Process_ID=? AND AD_User_ID=? AND IsProcessing='Y' AND record_ID = ? AND Created > ? ", null) - .setParameters(getAD_Process_ID(), getAD_User_ID(), getRecord_ID(), lastRebootDate) + StringBuilder whereClause = new StringBuilder( + "AD_Process_ID=? AND IsProcessing='Y' AND Record_ID = ? AND Created > ?"); + List queryParams = new ArrayList<>(Arrays.asList(getAD_Process_ID(), getRecord_ID(), lastRebootDate)); + + if ( MProcess.ALLOWMULTIPLEEXECUTION_NotFromSameUser.equals(multipleExecutions) + || MProcess.ALLOWMULTIPLEEXECUTION_NotFromSameUserAndParameters.equals(multipleExecutions)) { + whereClause.append(" AND AD_User_ID = ? "); + queryParams.add(getAD_User_ID()); + } + + List processInstanceList = new Query(Env.getCtx(), MPInstance.Table_Name, whereClause.toString(), null) + .setParameters(queryParams) .setClient_ID() - .setOnlyActiveRecords(true) - .list(); - + .setOnlyActiveRecords(true).list(); + if (processInstanceList == null || processInstanceList.isEmpty()) return false; - - //Never allow multiple executions - if (multipleExecutions.equals(MProcess.ALLOWMULTIPLEEXECUTION_DisallowMultipleExecutions)) + + // Do not allow concurrent executions + if ( MProcess.ALLOWMULTIPLEEXECUTION_NotFromSameUser.equals(multipleExecutions) + || MProcess.ALLOWMULTIPLEEXECUTION_NotFromAnyUser.equals(multipleExecutions)) return true; - - //Disallow multiple executions with the same params - if (multipleExecutions.equals(MProcess.ALLOWMULTIPLEEXECUTION_DisallowMultipleExecutionsWithTheSameParameters)) { + + // Do not allow concurrent executions with the same params + if ( MProcess.ALLOWMULTIPLEEXECUTION_NotFromAnyUserAndSameParameters.equals(multipleExecutions) + || MProcess.ALLOWMULTIPLEEXECUTION_NotFromSameUserAndParameters.equals(multipleExecutions)) { for (MPInstance instance : processInstanceList) { if (instance.equalParameters(params)) return true;