This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new b1cd2e1 Flowable: allow to configure IdGenerator
b1cd2e1 is described below
commit b1cd2e14c7f006112efec7ce82d86be10aac4e9d
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Wed Mar 20 09:09:24 2019 +0100
Flowable: allow to configure IdGenerator
---
.../src/main/resources/workflowFlowableContext.xml | 9 ++++
.../syncope/core/logic/init/FlowableLoader.java | 55 ++++++++++------------
fit/core-reference/src/main/resources/log4j2.xml | 4 ++
3 files changed, 39 insertions(+), 29 deletions(-)
diff --git
a/ext/flowable/flowable-bpmn/src/main/resources/workflowFlowableContext.xml
b/ext/flowable/flowable-bpmn/src/main/resources/workflowFlowableContext.xml
index aebf495..73e4873 100644
--- a/ext/flowable/flowable-bpmn/src/main/resources/workflowFlowableContext.xml
+++ b/ext/flowable/flowable-bpmn/src/main/resources/workflowFlowableContext.xml
@@ -40,6 +40,13 @@ under the License.
<bean id="syncopeFormHandlerHelper"
class="org.apache.syncope.core.flowable.support.SyncopeFormHandlerHelper"/>
+ <!--
+ This is called to generate unique identifiers for database entities used
by Flowable.
+ Consider to switch to
org.flowable.common.engine.impl.persistence.StrongUuidGenerator
+ in high-demanding production environments.
+ -->
+ <bean id="idGenerator" class="org.flowable.engine.impl.db.DbIdGenerator"/>
+
<bean class="org.flowable.spring.SpringProcessEngineConfiguration"
scope="prototype">
<property name="databaseSchemaUpdate" value="true"/>
@@ -56,6 +63,8 @@ under the License.
</property>
<property name="formHandlerHelper" ref="syncopeFormHandlerHelper"/>
+
+ <property name="idGenerator" ref="idGenerator"/>
</bean>
<bean id="bpmnProcessManager"
class="org.apache.syncope.core.flowable.impl.FlowableBpmnProcessManager"/>
diff --git
a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/init/FlowableLoader.java
b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/init/FlowableLoader.java
index ea526ad..45436a1 100644
---
a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/init/FlowableLoader.java
+++
b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/init/FlowableLoader.java
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
-import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.io.IOUtils;
import org.apache.syncope.common.lib.types.FlowableEntitlement;
@@ -32,9 +31,8 @@ import
org.apache.syncope.core.flowable.support.DomainProcessEngine;
import org.apache.syncope.core.persistence.api.SyncopeLoader;
import org.apache.syncope.core.provisioning.api.EntitlementsHolder;
import org.apache.syncope.core.spring.ResourceWithFallbackLoader;
-import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.impl.db.DbIdGenerator;
import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.spring.SpringProcessEngineConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -60,39 +58,38 @@ public class FlowableLoader implements SyncopeLoader {
public void load() {
EntitlementsHolder.getInstance().init(FlowableEntitlement.values());
- byte[] wfDef = new byte[0];
-
try (InputStream wfIn =
userWorkflowDef.getResource().getInputStream()) {
- wfDef = IOUtils.toByteArray(wfIn);
- } catch (IOException e) {
- LOG.error("While loading " +
userWorkflowDef.getResource().getFilename(), e);
- }
+ byte[] wfDef = IOUtils.toByteArray(wfIn);
- for (Map.Entry<String, ProcessEngine> entry :
dpEngine.getEngines().entrySet()) {
- List<ProcessDefinition> processes =
entry.getValue().getRepositoryService().
-
createProcessDefinitionQuery().processDefinitionKey(FlowableRuntimeUtils.WF_PROCESS_ID).
- list();
- LOG.debug(FlowableRuntimeUtils.WF_PROCESS_ID + " Flowable
processes in repository: {}", processes);
+ dpEngine.getEngines().forEach((domain, processEngine) -> {
+ List<ProcessDefinition> processes =
processEngine.getRepositoryService().
+
createProcessDefinitionQuery().processDefinitionKey(FlowableRuntimeUtils.WF_PROCESS_ID).
+ list();
+ LOG.debug(FlowableRuntimeUtils.WF_PROCESS_ID + " Flowable
processes in repository: {}", processes);
- // Only loads process definition from file if not found in
repository
- if (processes.isEmpty()) {
-
entry.getValue().getRepositoryService().createDeployment().addInputStream(
- userWorkflowDef.getResource().getFilename(), new
ByteArrayInputStream(wfDef)).deploy();
+ // Only loads process definition from file if not found in
repository
+ if (processes.isEmpty()) {
+
processEngine.getRepositoryService().createDeployment().addInputStream(
+ userWorkflowDef.getResource().getFilename(), new
ByteArrayInputStream(wfDef)).deploy();
- ProcessDefinition procDef =
entry.getValue().getRepositoryService().createProcessDefinitionQuery().
-
processDefinitionKey(FlowableRuntimeUtils.WF_PROCESS_ID).latestVersion().
- singleResult();
+ ProcessDefinition procDef =
processEngine.getRepositoryService().createProcessDefinitionQuery().
+
processDefinitionKey(FlowableRuntimeUtils.WF_PROCESS_ID).latestVersion().
+ singleResult();
- FlowableDeployUtils.deployModel(entry.getValue(), procDef);
+ FlowableDeployUtils.deployModel(processEngine, procDef);
- LOG.debug("Flowable Workflow definition loaded for domain {}",
entry.getKey());
- }
+ LOG.debug("Flowable Workflow definition loaded for domain
{}", domain);
- // jump to the next ID block
- for (int i = 0; i <
entry.getValue().getProcessEngineConfiguration().getIdBlockSize(); i++) {
-
SpringProcessEngineConfiguration.class.cast(entry.getValue().getProcessEngineConfiguration()).
- getIdGenerator().getNextId();
- }
+ if
(processEngine.getProcessEngineConfiguration().getIdGenerator() instanceof
DbIdGenerator) {
+ // jump to the next ID block
+ for (int i = 0; i <
processEngine.getProcessEngineConfiguration().getIdBlockSize(); i++) {
+
processEngine.getProcessEngineConfiguration().getIdGenerator().getNextId();
+ }
+ }
+ }
+ });
+ } catch (IOException e) {
+ LOG.error("While loading " +
userWorkflowDef.getResource().getFilename(), e);
}
}
}
diff --git a/fit/core-reference/src/main/resources/log4j2.xml
b/fit/core-reference/src/main/resources/log4j2.xml
index 7df562b..8ad93bc 100644
--- a/fit/core-reference/src/main/resources/log4j2.xml
+++ b/fit/core-reference/src/main/resources/log4j2.xml
@@ -184,6 +184,10 @@ under the License.
<appender-ref ref="mainFile"/>
<appender-ref ref="main"/>
</asyncLogger>
+ <asyncLogger name="org.hibernate.validator" additivity="false"
level="ERROR">
+ <appender-ref ref="mainFile"/>
+ <appender-ref ref="main"/>
+ </asyncLogger>
<asyncLogger name="com.zaxxer.hikari" additivity="false" level="ERROR">
<appender-ref ref="mainFile"/>
<appender-ref ref="main"/>