You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/03/20 08:10:46 UTC
[syncope] branch 2_1_X updated: Flowable: allow to configure
IdGenerator
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ò <il...@apache.org>
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"/>