From 60a66d67237e0209916435d671105b6672168ac9 Mon Sep 17 00:00:00 2001 From: Yavor16 Date: Fri, 26 Sep 2025 09:23:39 +0300 Subject: [PATCH] Maybe fix for flowable --- .../configuration/CustomLongStringType.java | 24 +++++++++++++++++++ .../configuration/FlowableConfiguration.java | 9 ++++--- 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/CustomLongStringType.java diff --git a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/CustomLongStringType.java b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/CustomLongStringType.java new file mode 100644 index 0000000000..2994c7e629 --- /dev/null +++ b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/CustomLongStringType.java @@ -0,0 +1,24 @@ +package org.cloudfoundry.multiapps.controller.web.configuration; + +import org.flowable.variable.api.types.ValueFields; +import org.flowable.variable.service.impl.types.LongStringType; + +public class CustomLongStringType extends LongStringType { + + private static final String CUSTOM_TYPE_NAME = "deployServiceLongString"; + + public CustomLongStringType() { + super(4000); + } + + @Override + public String getTypeName() { + return CUSTOM_TYPE_NAME; + } + + @Override + public void setValue(Object value, ValueFields valueFields) { + super.setValue(value, valueFields); + valueFields.setCachedValue(value); + } +} diff --git a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/FlowableConfiguration.java b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/FlowableConfiguration.java index bc111efdda..6fef6638cd 100644 --- a/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/FlowableConfiguration.java +++ b/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/FlowableConfiguration.java @@ -1,12 +1,12 @@ package org.cloudfoundry.multiapps.controller.web.configuration; +import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; - -import jakarta.inject.Inject; import javax.sql.DataSource; +import jakarta.inject.Inject; import org.cloudfoundry.multiapps.controller.core.util.ApplicationConfiguration; import org.flowable.common.engine.impl.AbstractEngineConfiguration; import org.flowable.common.engine.impl.async.DefaultAsyncTaskExecutor; @@ -61,6 +61,10 @@ public SpringProcessEngineConfiguration processEngineConfiguration(DataSource da AsyncExecutor jobExecutor, @Lazy FailedJobCommandFactory abortFailedProcessCommandFactory) { SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration(); + //We set custom variable type because when we update a value in the context, we see in your code that it has been updated + //but the cache isn't. That's why with custom type we manually update the cache + //Link to the Flowable Github issue: https://github.com/flowable/flowable-engine/issues/4130 + processEngineConfiguration.setCustomPreVariableTypes(List.of(new CustomLongStringType())); processEngineConfiguration.setDatabaseSchemaUpdate(DATABASE_SCHEMA_UPDATE); processEngineConfiguration.setDataSource(dataSource); processEngineConfiguration.setTransactionManager(transactionManager); @@ -137,5 +141,4 @@ public RuntimeService runtimeService(ProcessEngine processEngine) { public HistoryService historyService(ProcessEngine processEngine) { return processEngine.getHistoryService(); } - }