All Downloads are FREE. Search and download functionalities are using the official Maven repository.

t.engine.bonita-server.7.8.4.source-code.bonita-tenant-community.xml Maven / Gradle / Ivy

There is a newer version: 10.2.0
Show newest version
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <context:annotation-config />

    <context:property-placeholder/>

    <bean id="sessionService" class="org.bonitasoft.engine.session.impl.SessionServiceImpl">
        <constructor-arg name="sessionProvider" ref="sessionProvider" />
        <constructor-arg name="applicationName" value="BPM" />
        <constructor-arg name="logger" ref="platformTechnicalLoggerService" />
        <!-- set Engine session duration (in ms) : -->
        <property name="sessionDuration" value="${bonita.tenant.session.duration}" />
    </bean>

    <bean id="queriableLogSessionProvider" class="org.bonitasoft.engine.services.impl.QueriableLogSessionProviderImpl">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="tenantRecorderSync" class="org.bonitasoft.engine.recorder.impl.RecorderImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="eventService" ref="tenantEventService" />
    </bean>

    <bean id="searchEntitiesDescriptor" class="org.bonitasoft.engine.search.descriptor.SearchEntitiesDescriptor">
    </bean>

    <bean id="flowNodeExecutor" class="org.bonitasoft.engine.execution.FlowNodeExecutorImpl">
        <constructor-arg name="flowNodeStateManager" ref="flowNodeStateManager" />
        <constructor-arg name="activityInstanceManager" ref="activityInstanceService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="dataInstanceService" ref="dataInstanceService" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="commentService" ref="commentService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="contractDataService" ref="contractDataService" />
        <constructor-arg name="workFactory" ref="workFactory" />
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
    </bean>

    <bean id="containerRegistry" class="org.bonitasoft.engine.execution.ContainerRegistry">
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="workFactory" ref="workFactory" />
    </bean>

    <bean id="parentContainerResolver" class="org.bonitasoft.engine.data.ParentContainerResolverImpl">
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
    </bean>

    <bean id="bpmInstancesCreator" class="org.bonitasoft.engine.bpm.model.impl.BPMInstancesCreator">
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="actorMappingService" ref="actorMappingService" />
        <constructor-arg name="gatewayInstanceService" ref="gatewayInstanceService" />
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="dataInstanceService" ref="dataInstanceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="transientDataService" ref="transientDataService" />
        <constructor-arg name="parentContainerResolver" ref="parentContainerResolver" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />

    </bean>

    <bean id="waitingEventsInterrupter" class="org.bonitasoft.engine.execution.WaitingEventsInterrupter">
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="schedulerService" ref="scheduler" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="stateBehaviors" class="org.bonitasoft.engine.execution.StateBehaviors">
        <constructor-arg name="bpmInstancesCreator" ref="bpmInstancesCreator" />
        <constructor-arg name="eventsHandler" ref="eventsHandler" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="userFilterService" ref="userFilterService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="actorMappingService" ref="actorMappingService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="dataInstanceService" ref="dataInstanceService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="commentService" ref="commentService" />
        <constructor-arg name="identityService" ref="identityService" />
        <constructor-arg name="parentContainerResolver" ref="parentContainerResolver" />
        <constructor-arg name="waitingEventsInterrupter" ref="waitingEventsInterrupter" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
    </bean>


    <bean id="flowNodeStateManager" class="org.bonitasoft.engine.execution.FlowNodeStateManagerImpl">
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="bpmInstancesCreator" ref="bpmInstancesCreator" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="commentService" ref="commentService" />
        <constructor-arg name="stateBehaviors" ref="stateBehaviors" />
        <constructor-arg name="waitingEventsInterrupter" ref="waitingEventsInterrupter" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="processInstanceInterruptor" ref="processInstanceInterruptor" />
    </bean>

    <bean id="processInstanceInterruptor" class="org.bonitasoft.engine.execution.ProcessInstanceInterruptor">
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="eventsHandler" class="org.bonitasoft.engine.execution.event.EventsHandler">
        <constructor-arg name="schedulerService" ref="scheduler" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="bpmInstancesCreator" ref="bpmInstancesCreator" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="messagesHandlingService" ref="messagesHandlingService" />
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="workFactory" ref="workFactory" />
        <constructor-arg name="processInstanceInterruptor" ref="processInstanceInterruptor" />
    </bean>


    <bean id="messagesHandlingService" class="org.bonitasoft.engine.message.MessagesHandlingService">
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="lockService" ref="lockService" />
        <constructor-arg name="tenantId" value="${tenantId}" />
        <constructor-arg name="userTransactionService" ref="transactionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="workFactory" ref="workFactory" />
    </bean>

    <bean id="transitionConditionEvaluator"
          class="org.bonitasoft.engine.execution.transition.TransitionConditionEvaluator">
        <constructor-arg name="resolverService" ref="expressionResolverService" />
    </bean>

    <bean id="defaultTransitionGetter" class="org.bonitasoft.engine.execution.transition.DefaultTransitionGetter" />

    <bean id="implicitGatewayTransitionEvaluator"
          class="org.bonitasoft.engine.execution.transition.ImplicitGatewayTransitionEvaluator">
        <constructor-arg name="conditionEvaluator" ref="transitionConditionEvaluator" />
        <constructor-arg name="defaultTransitionGetter" ref="defaultTransitionGetter" />
    </bean>


    <bean id="inclusiveGatewayTransitionEvaluationStrategy"
          class="org.bonitasoft.engine.execution.transition.InclusiveGatewayTransitionEvaluationStrategy" />
    <bean id="exclusiveGatewayTransitionEvaluationStrategy"
          class="org.bonitasoft.engine.execution.transition.ExclusiveGatewayTransitionEvaluationStrategy" />

    <bean id="inclusiveTransitionEvaluator"
          class="org.bonitasoft.engine.execution.transition.InclusiveExclusiveTransitionEvaluator">
        <constructor-arg name="strategy" ref="inclusiveGatewayTransitionEvaluationStrategy" />
        <constructor-arg name="evaluator" ref="transitionConditionEvaluator" />
        <constructor-arg name="defaultTransitionGetter" ref="defaultTransitionGetter" />

    </bean>

    <bean id="exclusiveTransitionEvaluator"
          class="org.bonitasoft.engine.execution.transition.InclusiveExclusiveTransitionEvaluator">
        <constructor-arg name="strategy" ref="exclusiveGatewayTransitionEvaluationStrategy" />
        <constructor-arg name="evaluator" ref="transitionConditionEvaluator" />
        <constructor-arg name="defaultTransitionGetter" ref="defaultTransitionGetter" />
    </bean>

    <bean id="parallelGatewayTransitionEvaluator"
          class="org.bonitasoft.engine.execution.transition.ParallelGatewayTransitionEvaluator" />

    <bean id="transitionEvaluator" class="org.bonitasoft.engine.execution.TransitionEvaluator">
        <constructor-arg name="implicitGatewayTransitionEvaluator" ref="implicitGatewayTransitionEvaluator" />
        <constructor-arg name="parallelGatewayTransitionEvaluator" ref="parallelGatewayTransitionEvaluator" />
        <constructor-arg name="inclusiveTransitionEvaluator" ref="inclusiveTransitionEvaluator" />
        <constructor-arg name="exclusiveTransitionEvaluator" ref="exclusiveTransitionEvaluator" />
    </bean>

    <bean id="processExecutor" class="org.bonitasoft.engine.execution.ProcessExecutorImpl">
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="flowNodeExecutor" ref="flowNodeExecutor" />
        <constructor-arg name="workService" ref="workService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="gatewayInstanceService" ref="gatewayInstanceService" />
        <constructor-arg name="processResourcesService" ref="processResourcesService" />
        <constructor-arg name="connectorService" ref="connectorService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="expressionService" ref="expressionService" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="handlers">
            <map>
                <entry key="PROCESSINSTANCE_STATE_UPDATED">
                    <bean class="org.bonitasoft.engine.execution.handler.ArchiveProcessInstancesHandler">
                        <constructor-arg name="tenantId" value="${tenantId}" />
                    </bean>
                </entry>
            </map>
        </constructor-arg>
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="containerRegistry" ref="containerRegistry" />
        <constructor-arg name="bpmInstancesCreator" ref="bpmInstancesCreator" />
        <constructor-arg name="eventsHandler" ref="eventsHandler" />
        <constructor-arg name="flowNodeStateManager" ref="flowNodeStateManager" />
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="transitionEvaluator" ref="transitionEvaluator" />
        <constructor-arg name="contractDataService" ref="contractDataService" />
    </bean>

    <bean id="documentReferenceExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.DocumentReferenceExpressionExecutorStrategy">
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
    </bean>

    <bean id="documentListReferenceExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.DocumentListReferenceExpressionExecutorStrategy">
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
    </bean>

    <bean id="dependencyResolver" class="org.bonitasoft.engine.api.impl.resolver.BusinessArchiveArtifactsManager">
        <constructor-arg name="dependencyResolvers">
            <list>
                <bean class="org.bonitasoft.engine.api.impl.resolver.ClasspathArtifactManager">
                    <constructor-arg name="dependencyService" ref="dependencyService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.ActorBusinessArchiveArtifactManager">
                    <constructor-arg name="actorMappingService" ref="actorMappingService" />
                    <constructor-arg name="identityService" ref="identityService" />
                    <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.ConnectorBusinessArchiveArtifactManager">
                    <constructor-arg name="connectorService" ref="connectorService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.UserFilterBusinessArchiveArtifactManager">
                    <constructor-arg name="userFilterService" ref="userFilterService" />
                    <constructor-arg name="processResourcesService" ref="processResourcesService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.ParameterBusinessArchiveArtifactManager">
                    <constructor-arg name="parameterService" ref="parameterService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.FormMappingAndPageArtifactManager">
                    <constructor-arg name="sessionService" ref="sessionService" />
                    <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
                    <constructor-arg name="pageService" ref="pageService" />
                    <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService" />
                    <constructor-arg name="formMappingService" ref="formMappingService" />
                    <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.BusinessDataBusinessArchiveArtifactManager">
                    <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.DocumentInitialValueArtifactManager">
                    <constructor-arg name="processResourcesService" ref="processResourcesService" />
                </bean>
                <bean class="org.bonitasoft.engine.api.impl.resolver.ExternalResourceArtifactManager">
                    <constructor-arg name="processResourcesService" ref="processResourcesService" />
                </bean>
            </list>
        </constructor-arg>
        <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="processResourcesService" class="org.bonitasoft.engine.resources.ProcessResourcesServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
    </bean>

    <bean id="tenantResourcesService" class="org.bonitasoft.engine.resources.TenantResourcesServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="businessArchiveService" class="org.bonitasoft.engine.bar.BusinessArchiveServiceImpl">
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="dependencyService" ref="dependencyService" />
        <constructor-arg name="businessArchiveArtifactsManager" ref="dependencyResolver" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
    </bean>

    <bean id="commandService" class="org.bonitasoft.engine.command.api.impl.CommandServiceImpl">
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="defaultCommandProvider" ref="defaultCommandProvider" />
    </bean>

    <bean id="communityDefaultCommands" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list>
                <ref bean="canStartProcessDefinition" />
                <ref bean="isInvolvedInHumanTask" />
                <ref bean="importProfiles" />
                <ref bean="exportDefaultProfiles" />
                <ref bean="isUserProcessSupervisor" />
                <ref bean="createSupervisor" />
                <ref bean="getSupervisor" />
                <ref bean="deleteSupervisor" />
                <ref bean="searchProcessSupervisors" />
                <ref bean="executeActionsAndTerminate" />
                <ref bean="isAllowedToStartProcess" />
                <ref bean="isAllowedToSeeOverviewForm" />
                <ref bean="isAllowedToSeeInstanciationForm" />
                <ref bean="searchAssignedTasksSupervisedBy" />
                <ref bean="searchArchivedTasksSupervisedBy" />
                <ref bean="searchProcessDefinitionsSupervisedBy" />
                <ref bean="searchSCommentSupervisedBy" />
                <ref bean="isAllowedToStartProcesses" />
                <ref bean="addEntityMemberCommand" />
                <ref bean="removeEntityMemberCommand" />
                <ref bean="searchEntityMembersCommand" />
                <ref bean="searchEntityMembersForUserCommand" />
                <ref bean="deleteEntityMembersCommand" />
                <ref bean="searchWaitingEventsCommand" />
                <ref bean="advancedStartProcessCommand" />
                <ref bean="executeBDMQuery" />
                <ref bean="getBusinessDataByIdCommand" />
                <ref bean="getBusinessDataByIdsCommand" />
                <ref bean="getBusinessDataByQueryCommand" />
                <ref bean="multipleStartPointsProcessCommand" />
                <ref bean="deleteSessionCommand" />
            </list>
        </property>
    </bean>

    <bean id="commandsToDeployAtStartup" parent="communityDefaultCommands"
          class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
            </list>
        </property>
    </bean>

    <bean id="deleteSessionCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>deleteSessionCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Deletes a tenant session based on its sessionId</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.DeleteSessionCommand</value>
        </constructor-arg>
    </bean>

    <bean id="defaultCommandProvider" class="org.bonitasoft.engine.command.api.impl.CommandProvider">
        <property name="defaultCommands" ref="commandsToDeployAtStartup" />
    </bean>

    <bean id="canStartProcessDefinition" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>canStartProcessDefinition</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Return true if the user can start the process, false otherwise. Use parameter key USER_ID_KEY and
                PROCESS_DEFINITION_ID_KEY
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.CanStartProcessDefinition</value>
        </constructor-arg>
    </bean>

    <bean id="isInvolvedInHumanTask" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isInvolvedInHumanTask</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Return true if a user is involved in a specific human task, false otherwise. Use parameter key
                USER_ID_KEY and HUMAN_TASK_INSTANCE_ID_KEY
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.IsInvolvedInHumanTask</value>
        </constructor-arg>
    </bean>

    <bean id="executeBDMQuery" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>executeBDMQuery</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Execute a named query in the BDM. Use parameter keys : "queryName" the name of the query in the bdm,
                "returnType" the query expected return type, "returnsList" if result is a List or a single value,
                "queryParameters" a Map to value query parameters
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.ExecuteBDMQueryCommand</value>
        </constructor-arg>
    </bean>

    <bean id="isUserProcessSupervisor" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isUserProcessSupervisor</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Get if the user a supervisor of processDefinition. Use parameter keys USER_ID_KEY,
                PROCESS_DEFINITION_ID_KEY
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.process.IsUserProcessSupervisor</value>
        </constructor-arg>
    </bean>

    <bean id="createSupervisor" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>createSupervisor</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Create process supervisor.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.process.CreateSupervisor</value>
        </constructor-arg>
    </bean>

    <bean id="getSupervisor" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>getSupervisor</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Get process supervisor. Use parameter key SUPERVISOR_ID_KEY</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.process.GetSupervisor</value>
        </constructor-arg>
    </bean>

    <bean id="deleteSupervisor" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>deleteSupervisor</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Delete process supervisor. Use parameter key SUPERVISOR_ID_KEY</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.process.DeleteSupervisor</value>
        </constructor-arg>
    </bean>

    <bean id="searchProcessSupervisors" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchProcessSupervisors</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Search process supervisor for process definition.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.process.SearchProcessSupervisors</value>
        </constructor-arg>
    </bean>

    <bean id="importProfiles" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>importProfilesCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Import profiles, profileEntries and profile mappings</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.web.profile.command.ImportProfilesCommand</value>
        </constructor-arg>
    </bean>

    <bean id="exportDefaultProfiles" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>exportDefaultProfilesCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Export default profiles</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.web.profile.command.ExportDefaultProfilesCommand</value>
        </constructor-arg>
    </bean>

    <bean id="executeActionsAndTerminate" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>executeActionsAndTerminate</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>execute actions and terminate a user task instance</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.web.forms.ExecuteActionsAndTerminateTask</value>
        </constructor-arg>
    </bean>

    <bean id="isAllowedToStartProcess" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isAllowedToStartProcess</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Check if one of many actors can be allowed to start process.(who's the process Initiator)</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.IsAllowedToStartProcess</value>
        </constructor-arg>
    </bean>

    <bean id="isAllowedToSeeOverviewForm" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isAllowedToSeeOverviewForm</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Check if one of many actors can be allowed to read overview form.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.IsAllowedToSeeOverviewForm</value>
        </constructor-arg>
    </bean>

    <bean id="isAllowedToSeeInstanciationForm" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isAllowedToSeeInstanciationForm</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Check if one of many actors can be allowed to read Instanciation form.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.IsAllowedToSeeInstanciationForm</value>
        </constructor-arg>
    </bean>

    <bean id="searchAssignedTasksSupervisedBy" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchAssignedTasksSupervisedBy</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Returns the list of assigned user tasks of process definition supervised by a user.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.task.supervisor.SearchAssignedTasksSupervisedBy</value>
        </constructor-arg>
    </bean>

    <bean id="searchArchivedTasksSupervisedBy" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchArchivedTasksSupervisedBy</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Returns the list of archived user tasks of process definition supervised by a user. Use parameter
                keys SUPERVISOR_ID_KEY: id of the supervisor,
                SEARCH_OPTIONS_KEY: the object containing all the search parameters
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.task.supervisor.SearchArchivedTasksSupervisedBy</value>
        </constructor-arg>
    </bean>

    <bean id="searchProcessDefinitionsSupervisedBy" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchProcessDefinitionsSupervisedBy</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Searching processeDefinitions whose supervisor is the specified user.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.supervisor.SearchProcessDefinitionsSupervisedBy</value>
        </constructor-arg>
    </bean>

    <bean id="searchSCommentSupervisedBy" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchSCommentSupervisedBy</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Returns the list of comments for processes supervised by a user. One mandatory parameter:
                supervisorId: ID of the user supervisor of the processes on
                which comments are.
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.comment.SearchCommentsSupervisedBy</value>
        </constructor-arg>
    </bean>

    <bean id="isAllowedToStartProcesses" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>isAllowedToStartProcesses</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Check if the user can be allowed to start all of processes.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.permission.IsAllowedToStartProcesses</value>
        </constructor-arg>
    </bean>

    <bean id="addEntityMemberCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>addEntityMemberCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Adds a Entity member to the provided identity notions. Parameter keys: EXTERNAL_ID_KEY: Entity member
                id provided as is by the external system,
                userId: -1 is not needed, roleId: -1 is not needed, groupId: -1 is not needed
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.identitymapping.AddEntityMemberCommand</value>
        </constructor-arg>
    </bean>

    <bean id="removeEntityMemberCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>removeEntityMemberCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Removes a Entity member mapping: ENTITY_MEMBER_ID_KEY: Entity member id to remove</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.identitymapping.RemoveEntityMemberCommand</value>
        </constructor-arg>
    </bean>

    <bean id="searchEntityMembersCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchEntityMembersCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Searches Entity member mappings: Parameter keys: DISCRIMINATOR_ID_KEY: the discriminator to isolate
                the different functional notions,
                SEARCH_OPTIONS_KEY: the Search options to filter and sort the results, MEMBER_TYPE_KEY: Member Type to
                search for (USER, GROUP, ROLE, or MEMBERSHIP).
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.identitymapping.SearchEntityMembersCommand</value>
        </constructor-arg>
    </bean>

    <bean id="searchEntityMembersForUserCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchEntityMembersForUserCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Searches Entity member mappings: Parameter keys: USER_ID_KEY: the ID of the user to search Entity
                members for (directly associated, or through role or
                group), DISCRIMINATOR_ID_KEY: the discriminator to isolate the different functional notions,
                SEARCH_OPTIONS_KEY: the Search options to filter and sort the
                results.
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.identitymapping.SearchEntityMembersForUserCommand</value>
        </constructor-arg>
    </bean>

    <bean id="deleteEntityMembersCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>deleteEntityMembersCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Delete all Entity member mappings associated with provided externalId, for specific Discriminator.
                Parameter keys: EXTERNAL_ID_KEY: external id
                provided as is by the external system, DISCRIMINATOR_ID_KEY: the discriminator to isolate the different
                functional notions.
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.external.identitymapping.DeleteEntityMembersCommand</value>
        </constructor-arg>
    </bean>

    <bean id="searchWaitingEventsCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>searchWaitingEventsCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Search waiting events. Parameter keys: searchOptions.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.system.SearchWaitingEventsCommand</value>
        </constructor-arg>
    </bean>

    <bean id="advancedStartProcessCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>advancedStartProcessCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Advanced start process.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.AdvancedStartProcessCommand</value>
        </constructor-arg>
    </bean>

    <bean id="getBusinessDataByIdCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>getBusinessDataById</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Get the business data via its identifier and class name, and returns its Json representation.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.GetBusinessDataByIdCommand</value>
        </constructor-arg>
    </bean>

    <bean id="getBusinessDataByIdsCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>getBusinessDataByIds</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Get the business data via its identifiers and class name, and returns its Json representation.
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.GetBusinessDataByIdsCommand</value>
        </constructor-arg>
    </bean>

    <bean id="getBusinessDataByQueryCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>getBusinessDataByQueryCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Execute a named query in the BDM, and returns its Json representation. Use parameter keys :
                "queryName" the name of the query in the bdm, "returnType" the query expected return type, "returnsList"
                if result is a List or a single value, "queryParameters" a Map to value query parameters
            </value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.GetBusinessDataByQueryCommand</value>
        </constructor-arg>
    </bean>


    <bean id="multipleStartPointsProcessCommand" class="org.bonitasoft.engine.command.api.impl.CommandDeployment">
        <constructor-arg name="name">
            <value>multipleStartPointsProcessCommand</value>
        </constructor-arg>
        <constructor-arg name="description">
            <value>Advanced start process using multiple start points.</value>
        </constructor-arg>
        <constructor-arg name="implementation">
            <value>org.bonitasoft.engine.command.MultipleStartPointsProcessCommand</value>
        </constructor-arg>
    </bean>

    <bean id="tenantEventService" class="org.bonitasoft.engine.events.impl.EventServiceImpl">
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="connectorExecutor" class="org.bonitasoft.engine.connector.impl.ConnectorExecutorImpl">
        <constructor-arg name="queueCapacity" value="${bonita.tenant.connector.queueCapacity}" />
        <constructor-arg name="corePoolSize" value="${bonita.tenant.connector.corePoolSize}" />
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="maximumPoolSize" value="${bonita.tenant.connector.maximumPoolSize}" />
        <constructor-arg name="keepAliveTimeSeconds" value="${bonita.tenant.connector.keepAliveTimeSeconds}" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="timeTracker" ref="timeTracker" />
    </bean>

    <bean id="expressionService" class="org.bonitasoft.engine.expression.impl.ExpressionServiceImpl">
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="checkExpressionReturnType" value="true" />
        <constructor-arg name="timeTracker" ref="timeTracker" />
    </bean>

    <bean id="expressionExecutorStrategyProvider"
          class="org.bonitasoft.engine.expression.ExpressionExecutorStrategyProvider" autowire="byType">
    </bean>

    <bean id="serverLazyLoader" class="org.bonitasoft.engine.business.data.proxy.ServerLazyLoader">
        <constructor-arg name="bdBusinessDataRepository" ref="businessDataRepository" />
    </bean>

    <bean id="serverProxyfier" class="org.bonitasoft.engine.business.data.proxy.ServerProxyfier">
        <constructor-arg name="lazyLoader" ref="serverLazyLoader" />
    </bean>

    <bean id="businessDataRetriever" class="org.bonitasoft.engine.business.data.BusinessDataRetriever">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
        <constructor-arg name="proxyfier" ref="serverProxyfier" />
    </bean>

    <bean id="businessDataExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.BusinessDataExpressionExecutorStrategy">
        <constructor-arg name="refBusinessDataRetriever" ref="refBusinessDataRetriever" />
        <constructor-arg name="businessDataRetriever" ref="businessDataRetriever" />
    </bean>

    <bean id="businessObjectDAOExpressionStrategy"
          class="org.bonitasoft.engine.expression.BusinessObjectDAOExpressionStrategy">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
    </bean>

    <bean id="queryBusinessDataExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.QueryBusinessDataExpressionExecutorStrategy">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
    </bean>

    <bean id="constantExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.ConstantExpressionExecutorStrategy" />

    <bean id="groovyScriptExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.GroovyScriptExpressionExecutorCacheStrategy">
        <constructor-arg name="cacheService" ref="cacheService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="inputExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.InputExpressionExecutorStrategy" />

    <bean id="patternExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.PatternExpressionExecutorStrategy" />

    <bean id="xPathReadExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.XPathReadExpressionExecutorStrategy" />

    <bean id="engineConstantExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.EngineConstantExpressionExecutorStrategy">
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
    </bean>

    <bean id="contractInputExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.ContractInputExpressionExecutorStrategy">
        <constructor-arg name="contractDataService" ref="contractDataService" />
    </bean>

    <bean id="listExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.ListExpressionExecutorStrategy" />


    <bean id="businessDataExpressionReferenceExecutorStrategy"
          class="org.bonitasoft.engine.expression.BusinessDataReferenceExpressionExecutorStrategy">
        <constructor-arg name="refBusinessDataRetriever" ref="refBusinessDataRetriever" />
    </bean>

    <bean id="equalityComparator" class="org.bonitasoft.engine.expression.impl.condition.EqualityComparator" />
    <bean id="inequalityComparator" class="org.bonitasoft.engine.expression.impl.condition.InequalityComparator" />
    <bean id="binaryComparatorMapper" class="org.bonitasoft.engine.expression.impl.condition.BinaryComparatorMapper">
        <constructor-arg name="equalityComparator" ref="equalityComparator" />
        <constructor-arg name="inequalityComparator" ref="inequalityComparator" />
    </bean>

    <bean id="binaryComparatorExecutor"
          class="org.bonitasoft.engine.expression.impl.condition.BinaryComparatorExecutor">
        <constructor-arg name="mapper" ref="binaryComparatorMapper" />
    </bean>

    <bean id="logicalComplementExecutor"
          class="org.bonitasoft.engine.expression.impl.condition.LogicalComplementExecutor" />

    <bean id="conditionExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.ConditionExpressionExecutorStrategy">
        <constructor-arg name="logicalComplementExecutor" ref="logicalComplementExecutor" />
        <constructor-arg name="binaryComparatorExecutor" ref="binaryComparatorExecutor" />
    </bean>

    <bean id="javaMethodCallExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.impl.JavaMethodCallExpressionExecutorStrategy" />

    <bean id="parameterExpressionExecutorStrategy"
          class="org.bonitasoft.engine.expression.ParameterExpressionExecutorStrategy">
        <constructor-arg name="parameterService" ref="parameterService" />
    </bean>

    <bean id="parameterService" class="org.bonitasoft.engine.parameter.ParameterServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="technicalLoggerService" ref="tenantTechnicalLoggerService"/>
    </bean>

    <bean id="queriableLoggerStrategy" class="org.bonitasoft.engine.services.impl.SimpleQueriableLoggerStrategy" />

    <bean id="workFactory" class="org.bonitasoft.engine.execution.work.BPMWorkFactory" />

    <bean id="workService" class="org.bonitasoft.engine.work.WorkServiceImpl">
        <constructor-arg name="transactionService" ref="transactionService" />
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="workExecutorService" ref="workExecutorService" />
        <constructor-arg name="workFactory" ref="workFactory" />
    </bean>

    <bean id="workExecutorService" class="org.bonitasoft.engine.work.WorkExecutorServiceImpl">
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="bonitaExecutorServiceFactory" ref="bonitaExecutorServiceFactory" />
        <constructor-arg name="workTerminationTimeout" value="${bonita.tenant.work.terminationTimeout}" />
    </bean>

    <bean id="operationsAnalyzer" class="org.bonitasoft.engine.core.operation.impl.OperationsAnalyzer" />

    <bean id="persistRightOperandResolver"
          class="org.bonitasoft.engine.core.operation.impl.PersistRightOperandResolver">
        <constructor-arg name="operationsAnalyzer" ref="operationsAnalyzer" />
    </bean>

    <bean id="operationService" class="org.bonitasoft.engine.core.operation.impl.OperationServiceImpl">
        <constructor-arg name="operationExecutorStrategyProvider" ref="operationExecutorStrategyProvider" />
        <constructor-arg name="leftOperandHandlerProvider" ref="leftOperandHandlerProvider" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="persistRightOperandResolver" ref="persistRightOperandResolver" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="operationExecutorStrategyProvider"
          class="org.bonitasoft.engine.core.operation.OperationExecutorStrategyProvider" autowire="constructor" />

    <bean id="leftOperandHandlers" parent="communityLeftOperandHandlers"
          class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
            </list>
        </property>
    </bean>

    <bean id="communityLeftOperandHandlers" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list>
                <ref bean="dataLeftOperandHandler" />
                <ref bean="transientDataLeftOperandHandler" />
                <ref bean="externalDataLeftOperandHandler" />
                <ref bean="documentLeftOperandHandler" />
                <ref bean="documentListLeftOperandHandler" />
                <ref bean="businessDataLeftOperandHandler" />
            </list>
        </property>
    </bean>

    <bean id="leftOperandHandlerProvider" class="org.bonitasoft.engine.core.operation.LeftOperandHandlerProvider">
        <property name="leftOperandHandlers" ref="leftOperandHandlers" />
    </bean>

    <bean id="refBusinessDataRetriever" class="org.bonitasoft.engine.business.data.RefBusinessDataRetriever">
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
    </bean>

    <bean id="updateDataRefAction" class="org.bonitasoft.engine.operation.UpdateDataRefAction">
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="refBusinessDataRetriever" ref="refBusinessDataRetriever" />
    </bean>

    <bean id="businessDataLeftOperandHandler" class="org.bonitasoft.engine.operation.BusinessDataLeftOperandHandler">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="refBusinessDataRetriever" ref="refBusinessDataRetriever" />
        <constructor-arg name="entitiesActionsExecutor" ref="entitiesActionsExecutor" />
        <constructor-arg name="updateDataRefAction" ref="updateDataRefAction" />
    </bean>

    <bean id="assignmentOperationExecutorStrategy"
          class="org.bonitasoft.engine.core.operation.impl.AssignmentOperationExecutorStrategy" />

    <bean id="dataLeftOperandHandler" class="org.bonitasoft.engine.operation.DataLeftOperandHandler">
        <constructor-arg name="dataInstanceService" ref="dataInstanceService" />
        <constructor-arg name="parentContainerResolver" ref="parentContainerResolver" />
    </bean>

    <bean id="transientDataLeftOperandHandler" class="org.bonitasoft.engine.operation.TransientDataLeftOperandHandler">
        <constructor-arg name="transientDataService" ref="transientDataService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="externalDataLeftOperandHandler"
          class="org.bonitasoft.engine.core.operation.impl.ExternalDataLeftOperandHandler" />

    <bean id="mergeEntityAction" class="org.bonitasoft.engine.operation.MergeEntityAction">
        <constructor-arg name="repository" ref="businessDataRepository" />

    </bean>

    <bean id="entitiesActionsExecutor" class="org.bonitasoft.engine.operation.EntitiesActionsExecutor" />

    <bean id="javaMethodOperationExecutorStrategy"
          class="org.bonitasoft.engine.operation.BusinessDataJavaMethodOperationExecutorStrategy">
        <constructor-arg name="businessDataService" ref="businessDataService" />
        <constructor-arg name="entitiesActionsExecutor" ref="entitiesActionsExecutor" />
        <constructor-arg name="mergeEntityAction" ref="mergeEntityAction" />
    </bean>

    <bean id="businessDataAssignmentStrategy" class="org.bonitasoft.engine.operation.BusinessDataAssignmentStrategy">
        <constructor-arg name="actionsExecutor" ref="entitiesActionsExecutor" />
        <constructor-arg name="mergeEntityAction" ref="mergeEntityAction" />
    </bean>

    <bean id="xpathUpdateQueryOperationExecutorStrategy"
          class="org.bonitasoft.engine.core.operation.impl.XpathUpdateQueryOperationExecutorStrategy" />

    <bean id="documentLeftOperandHandler" class="org.bonitasoft.engine.operation.DocumentLeftOperandHandler">
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="sessionService" ref="sessionService" />
    </bean>

    <bean id="documentListLeftOperandHandler" class="org.bonitasoft.engine.operation.DocumentListLeftOperandHandler">
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="activityInstanceService" ref="activityInstanceService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="processInstanceService" ref="processInstanceService" />
    </bean>

    <bean id="actorMappingService" class="org.bonitasoft.engine.actor.mapping.impl.ActorMappingServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="identityService" ref="identityService" />
    </bean>

    <bean id="bonitaExecutorServiceFactory" class="org.bonitasoft.engine.work.DefaultBonitaExecutorServiceFactory">
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="workFactory" ref="workFactory" />
        <constructor-arg name="tenantId" value="${tenantId}" />
        <constructor-arg name="corePoolSize" value="${bonita.tenant.work.corePoolSize}" />
        <constructor-arg name="maximumPoolSize" value="${bonita.tenant.work.maximumPoolSize}" />
        <constructor-arg name="keepAliveTimeSeconds" value="${bonita.tenant.work.keepAliveTimeSeconds}" />
        <constructor-arg name="queueCapacity" value="${bonita.tenant.work.queueCapacity}" />
        <constructor-arg name="engineClock" ref="engineClock" />
    </bean>

    <bean id="userFilterService" class="org.bonitasoft.engine.userfilter.UserFilterServiceDecorator">
        <constructor-arg name="userFilterService" ref="userFilterServiceSub" />
    </bean>

    <bean id="userFilterServiceSub" class="org.bonitasoft.engine.core.filter.impl.UserFilterServiceImpl">
        <constructor-arg name="connectorExecutor" ref="connectorExecutor" />
        <constructor-arg name="cacheService" ref="cacheService" />
        <constructor-arg name="processResourcesService" ref="processResourcesService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>


    <bean id="defaultFlushEventListeners" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list>
                <ref bean="csvFlushEventListener" />
                <ref bean="memoryFlushEventListener" />
            </list>
        </property>
    </bean>

    <bean id="flushEventListeners" parent="defaultFlushEventListeners"
          class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
            </list>
        </property>
    </bean>

    <bean id="defaultActivatedRecords" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list>
                <value>EXECUTE_CONNECTOR_INCLUDING_POOL_SUBMIT</value>
                <value>EXECUTE_CONNECTOR_CALLABLE</value>
                <value>EXECUTE_CONNECTOR_OUTPUT_OPERATIONS</value>
                <value>EXECUTE_CONNECTOR_INPUT_EXPRESSIONS</value>
                <value>EXECUTE_CONNECTOR_DISCONNECT</value>
                <value>EXECUTE_CONNECTOR_WORK</value>
                <value>EVALUATE_EXPRESSION_INCLUDING_CONTEXT</value>
                <value>EVALUATE_EXPRESSION</value>
                <value>EVALUATE_EXPRESSIONS</value>
            </list>
        </property>
    </bean>

    <bean id="activatedRecords" parent="defaultActivatedRecords"
          class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
            </list>
        </property>
    </bean>

    <bean id="timeTracker" class="org.bonitasoft.engine.tracking.TimeTracker">
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="startTracking" value="${bonita.tenant.timetracker.startTracking}" />
        <constructor-arg name="flushEventListeners" ref="flushEventListeners" />
        <constructor-arg name="maxSize" value="${bonita.tenant.timetracker.maxSize}" />
        <constructor-arg name="flushIntervalInSeconds"
                         value="${bonita.tenant.timetracker.flushIntervalInSeconds}" />
        <constructor-arg name="activatedRecords" ref="activatedRecords" />
    </bean>

    <bean id="csvFlushEventListener" class="org.bonitasoft.engine.tracking.csv.CSVFlushEventListener">
        <constructor-arg name="activateAtStart" value="${bonita.tenant.timetracker.csv.activateAtStart}" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="outputFolder" value="${bonita.tenant.timetracker.csv.folder}" />
        <constructor-arg name="csvSeparator" value="${bonita.tenant.timetracker.csv.separator}" />
    </bean>

    <bean id="memoryFlushEventListener" class="org.bonitasoft.engine.tracking.memory.MemoryFlushEventListener">
        <constructor-arg name="activateAtStart" value="${bonita.tenant.timetracker.memory.activateAtStart}" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="maxSize" value="${bonita.tenant.timetracker.memory.maxSize}" />
    </bean>

    <bean id="themeRetriever" class="org.bonitasoft.engine.theme.impl.ThemeRetrieverImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
    </bean>

    <bean id="themeService" class="org.bonitasoft.engine.theme.impl.ThemeServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="themeRetriever" ref="themeRetriever" />
    </bean>


    <bean id="tenantConfiguration" class="org.bonitasoft.engine.api.impl.TenantConfiguration" autowire="byType">
        <property name="cleanInvalidSessionsJobCron" value="${org.bonitasoft.engine.clean.invalid.sessions.cron}" />
        <property name="jobListeners">
            <list>
                <ref bean="timerEventTriggerJobListener" />
            </list>
        </property>
    </bean>

    <bean id="timerEventTriggerJobListener" class="org.bonitasoft.engine.jobs.TimerEventTriggerJobListener">
        <constructor-arg name="eventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>


    <bean id="supervisorMappingService"
          class="org.bonitasoft.engine.supervisor.mapping.impl.SupervisorMappingServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
    </bean>


    <bean id="profileService" class="org.bonitasoft.engine.profile.impl.ProfileServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="sessionService" ref="sessionService" />
    </bean>


    <bean id="profilesImporter" class="org.bonitasoft.engine.profile.ProfilesImporter">
        <constructor-arg name="profileService" ref="profileService" />
        <constructor-arg name="identityService" ref="identityService" />
        <constructor-arg name="profilesParser" ref="profilesParser" />
    </bean>

    <bean id="profilesExporter" class="org.bonitasoft.engine.profile.ProfilesExporter">
        <constructor-arg name="profileService" ref="profileService" />
        <constructor-arg name="identityService" ref="identityService" />
        <constructor-arg name="profilesParser" ref="profilesParser" />
    </bean>

    <bean id="profilesParser" class="org.bonitasoft.engine.profile.ProfilesParser">
    </bean>


    <bean id="activityInstanceService"
          class="org.bonitasoft.engine.core.process.instance.impl.ActivityInstanceServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="processInstanceService"
          class="org.bonitasoft.engine.core.process.instance.impl.ProcessInstanceServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceRead" ref="persistenceService" />
        <constructor-arg name="activityService" ref="activityInstanceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="bpmEventInstanceService" ref="eventInstanceService" />
        <constructor-arg name="dataInstanceService" ref="dataInstanceService" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="connectorInstanceService" ref="connectorInstanceService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="documentService" ref="documentService" />
        <constructor-arg name="commentService" ref="commentService" />
        <constructor-arg name="refBusinessDataService" ref="refBusinessDataService" />
        <constructor-arg name="contractDataService" ref="contractDataService" />
    </bean>
    <bean id="gatewayInstanceService"
          class="org.bonitasoft.engine.core.process.instance.impl.GatewayInstanceServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="persistenceRead" ref="persistenceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
    </bean>

    <bean id="eventInstanceService"
          class="org.bonitasoft.engine.core.process.instance.event.impl.EventInstanceServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="archiveService" ref="archiveService" />
    </bean>

    <bean id="refBusinessDataService"
          class="org.bonitasoft.engine.core.process.instance.impl.RefBusinessDataServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceRead" ref="persistenceService" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="archiveService" ref="archiveService" />
    </bean>

    <bean id="processDefinitionService"
          class="org.bonitasoft.engine.core.process.definition.ProcessDefinitionServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="dependencyService" ref="dependencyService" />
        <constructor-arg name="cacheService" ref="cacheService" />
    </bean>


    <bean id="commentService" class="org.bonitasoft.engine.core.process.comment.api.impl.SCommentServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="systemCommentType">
            <map>
                <entry key="STATE_CHANGE" value="true" />
            </map>
        </constructor-arg>
    </bean>


    <bean id="permissionService" class="org.bonitasoft.engine.service.impl.PermissionServiceImpl">
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>

    <bean id="apiExtensionPageServiceListener"
          class="org.bonitasoft.engine.page.impl.ApiExtensionPageServiceListenerImpl">
        <constructor-arg name="pageMappingService" ref="pageMappingService" />
    </bean>

    <bean id="pageService" class="org.bonitasoft.engine.page.impl.PageServiceImpl" autowire="byType">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="profileService" ref="profileService" />
        <property name="pageServiceListeners">
            <list>
                <ref bean="apiExtensionPageServiceListener" />
            </list>
        </property>
        <property name="providedPages" ref="providedPages" />
    </bean>

    <bean id="providedPages" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list>
                <!-- required pages -->
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="bonita-home-page.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="bonita-default-layout.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="bonita-bootstrap-default-theme.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="task-autogenerated-form.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="process-autogenerated-form.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="case-autogenerated-overview.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>

                <!-- this examples can be removed in production -->
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="bonita-html-page-example.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="bonita-groovy-page-example.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="api-extension-example.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="api-extension-viewer.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>

                <!-- New web-pages -->
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="page-process-list.zip" />
                    <constructor-arg name="hidden" value="false" />
                </bean>
                <bean class="org.bonitasoft.engine.page.impl.ImportPageDescriptor">
                    <constructor-arg name="zipName" value="page-tenant-status.zip" />
                    <constructor-arg name="hidden" value="true" />
                </bean>
            </list>
        </property>
    </bean>

    <bean id="technicalUser" class="org.bonitasoft.engine.core.login.TechnicalUser">
        <constructor-arg name="userName" value="${userName}" />
        <constructor-arg name="password" value="${userPassword}" />
    </bean>


    <bean id="loginService" class="org.bonitasoft.engine.core.login.SecuredLoginServiceImpl">
        <constructor-arg ref="${authentication.service.ref.name:authenticationService}" />
        <constructor-arg ref="sessionService" />
        <constructor-arg ref="identityService" />
        <constructor-arg ref="tenantTechnicalLoggerService" />
        <constructor-arg ref="technicalUser" />
        <constructor-arg ref="profileService" />
    </bean>

    <bean id="genericAuthenticationServiceAccessor"
          class="org.bonitasoft.engine.authentication.GenericAuthenticationServiceAccessor">
        <constructor-arg ref="${authentication.service.ref.name:authenticationService}" />
    </bean>

    <bean id="tenantTechnicalLoggerService" class="org.bonitasoft.engine.log.technical.TechnicalLoggerSLF4JImpl">
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>


    <bean id="identityService" class="org.bonitasoft.engine.identity.impl.IdentityServiceImpl">
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="encrypter">
            <bean class="org.bonitasoft.engine.identity.impl.MD5CredentialsEncrypter" />
        </constructor-arg>
    </bean>

    <bean id="externalIdentityMappingService"
          class="org.bonitasoft.engine.external.identity.mapping.impl.ExternalIdentityMappingServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
    </bean>

    <bean id="expressionResolverService"
          class="org.bonitasoft.engine.core.expression.control.api.impl.ExpressionResolverServiceImpl" >
        <constructor-arg name="expressionService" ref="expressionService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="timeTracker" ref="timeTracker" />
    </bean>

    <bean id="documentService" class="org.bonitasoft.engine.core.document.api.impl.DocumentServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="urlProvider" ref="documentURLProvider" />
        <constructor-arg name="archiveService" ref="archiveService" />
    </bean>

    <bean name="documentURLProvider"
          class="org.bonitasoft.engine.core.document.api.impl.SDocumentDownloadURLProviderImpl">
        <constructor-arg name="servletUrl" value="${document.servlet.url}" />
    </bean>

    <bean id="dependencyService" class="org.bonitasoft.engine.dependency.impl.DependencyServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="broadcastService" ref="broadcastService" />
        <constructor-arg name="readSessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="userTransactionService" ref="transactionService" />
        <constructor-arg name="bonitaTaskExecutor" ref="bonitaTaskExecutor" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
    </bean>

    <bean id="transientDataService" class="org.bonitasoft.engine.core.data.instance.impl.TransientDataServiceImpl">
        <constructor-arg name="cacheService" ref="cacheService" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="flowNodeInstanceService" ref="activityInstanceService" />
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="transientDataExpressionExecutorStrategy"
          class="org.bonitasoft.engine.core.data.instance.impl.TransientDataExpressionExecutorStrategy"
          autowire="byType">
        <constructor-arg name="transientDataService" ref="transientDataService" />
    </bean>

    <bean id="dataInstanceService" class="org.bonitasoft.engine.data.instance.api.impl.DataInstanceServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="archiveService" ref="archiveService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="dataExpressionExecutorStrategy" class="org.bonitasoft.engine.expression.DataExpressionExecutorStrategy">
        <constructor-arg name="dataService" ref="dataInstanceService" />
        <constructor-arg name="parentContainerResolver" ref="parentContainerResolver" />
    </bean>

    <bean id="connectorServiceSub" class="org.bonitasoft.engine.core.connector.impl.ConnectorServiceImpl">
        <constructor-arg name="cacheService" ref="cacheService" />
        <constructor-arg name="connectorExecutor" ref="connectorExecutor" />
        <constructor-arg name="expressionResolverService" ref="expressionResolverService" />
        <constructor-arg name="operationService" ref="operationService" />
        <constructor-arg name="dependencyService" ref="dependencyService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="timeTracker" ref="timeTracker" />
        <constructor-arg name="processResourcesService" ref="processResourcesService" />
    </bean>

    <bean id="connectorService" class="org.bonitasoft.engine.connector.ConnectorServiceDecorator">
        <constructor-arg name="connectorService" ref="connectorServiceSub" />
    </bean>

    <bean id="connectorInstanceService" class="org.bonitasoft.engine.core.connector.impl.ConnectorInstanceServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="archiveService" ref="archiveService" />
    </bean>

    <bean id="categoryService" class="org.bonitasoft.engine.core.category.impl.CategoryServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
    </bean>

    <bean id="cacheService" class="org.bonitasoft.engine.cache.ehcache.EhCacheCacheService">
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="cacheConfigurations" ref="cacheConfigurations" />
        <constructor-arg name="defaultCacheConfiguration" ref="defaultTenantCacheConfiguration" />
        <constructor-arg name="diskStorePath" value="java.io.tmpdir/tenant.cache" />
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>

    <bean id="defaultTenantCacheConfiguration" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="DEFAULT_TENANT" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.default.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.default.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.default.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.default.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.default.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.default.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.default.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.default.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.default.readIntensive}" />
    </bean>

    <bean id="cacheConfigurations" parent="communityCacheConfigurations"
          class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
            </list>
        </property>
    </bean>

    <bean id="communityCacheConfigurations" class="org.springframework.beans.factory.config.ListFactoryBean">
        <property name="sourceList">
            <list merge="true">
                <ref bean="processDefinitionCacheConfig" />
                <ref bean="connectorCacheConfig" />
                <ref bean="parameterCacheConfig" />
                <ref bean="userFilterCacheConfig" />
                <ref bean="groovyScriptCacheConfig" />
                <ref bean="transientDataCacheConfig" />
            </list>
        </property>
    </bean>

    <bean id="connectorCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="CONNECTOR" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.connector.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.connector.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.connector.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.connector.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.connector.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.connector.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.connector.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.connector.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.connector.readIntensive}" />
    </bean>

    <bean id="processDefinitionCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="_PROCESSDEF" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.processdef.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.processdef.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.processdef.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.processdef.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.processdef.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.processdef.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.processdef.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.processdef.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.processdef.readIntensive}" />
    </bean>


    <bean id="parameterCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="parameters" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.parameter.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.parameter.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.parameter.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.parameter.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.parameter.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.parameter.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.parameter.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.parameter.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.parameter.readIntensive}" />
    </bean>

    <bean id="userFilterCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="USER_FILTER" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.userfilter.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.userfilter.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.userfilter.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.userfilter.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.userfilter.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.userfilter.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.userfilter.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.userfilter.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.userfilter.readIntensive}" />
    </bean>

    <bean id="groovyScriptCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="GROOVY_SCRIPT_CACHE_NAME" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.groovy.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.groovy.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.groovy.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.groovy.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.groovy.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.groovy.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.groovy.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.groovy.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.groovy.readIntensive}" />
    </bean>

    <bean id="transientDataCacheConfig" class="org.bonitasoft.engine.cache.CacheConfiguration">
        <property name="name" value="transient_data" />
        <property name="maxElementsInMemory" value="${bonita.tenant.cache.transientdata.maxElementsInMemory}" />
        <property name="inMemoryOnly" value="${bonita.tenant.cache.transientdata.inMemoryOnly}" />
        <property name="eternal" value="${bonita.tenant.cache.transientdata.eternal}" />
        <property name="evictionPolicy" value="${bonita.tenant.cache.transientdata.evictionPolicy}" />
        <property name="timeToLiveSeconds" value="${bonita.tenant.cache.transientdata.timeToLiveSeconds}" />
        <property name="maxElementsOnDisk" value="${bonita.tenant.cache.transientdata.maxElementsOnDisk}" />
        <property name="copyOnRead" value="${bonita.tenant.cache.transientdata.copyOnRead}" />
        <property name="copyOnWrite" value="${bonita.tenant.cache.transientdata.copyOnWrite}" />
        <property name="readIntensive" value="${bonita.tenant.cache.transientdata.readIntensive}" />
    </bean>

    <bean id="businessDataRepository" class="org.bonitasoft.engine.business.data.impl.JPABusinessDataRepositoryImpl">
        <constructor-arg name="transactionService" ref="transactionService" />
        <constructor-arg name="businessDataModelRepository" ref="businessDataModelRepository" />
        <constructor-arg name="configuration">
            <map>
                <entry key="hibernate.dialect" value="${${bdm.db.vendor}.hibernate.dialect}" />
                <entry key="hibernate.connection.datasource" value="${bdm.datasource.jndi.path}" />
                <entry key="hibernate.show_sql" value="${bonita.tenant.bdm.repository.show_sql}" />
                <entry key="hibernate.format_sql" value="${bonita.tenant.bdm.repository.format_sql}" />
                <entry key="hibernate.transaction.jta.platform"
                       value="${bdm.hibernate.transaction.jta_platform}" />
                <entry key="hibernate.validator.autoregister_listeners"
                       value="${bonita.tenant.bdm.repository.validator.autoregister_listeners}" />
                <entry key="hibernate.validator.apply_to_ddl"
                       value="${bonita.tenant.bdm.repository.validator.apply_to_ddl}" />
                <entry key="javax.persistence.validation.mode"
                       value="${bonita.tenant.bdm.repository.javax.persistence.validation.mode}" />
                <entry key="hibernate.current_session_context_class" value="thread" />
            </map>
        </constructor-arg>
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>

    <bean id="businessDataModelRepository"
          class="org.bonitasoft.engine.business.data.impl.BusinessDataModelRepositoryImpl">
        <constructor-arg name="dependencyService" ref="dependencyService" />
        <constructor-arg name="schemaManager" ref="schemaManager" />
        <constructor-arg name="tenantResourcesService" ref="tenantResourcesService" />
        <constructor-arg name="tenantId" value="${tenantId}" />
    </bean>

    <bean id="schemaManager" class="org.bonitasoft.engine.business.data.impl.SchemaManagerUpdate">
        <constructor-arg name="loggerService" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="configuration">
            <map>
                <entry key="hibernate.dialect" value="${${bdm.db.vendor}.hibernate.dialect}" />
                <entry key="hibernate.connection.datasource" value="${bdm.notmanageddatasource.jndi.path}" />
                <entry key="hibernate.show_sql" value="${bonita.tenant.bdm.schemamanager.show_sql}" />
                <entry key="hibernate.format_sql" value="${bonita.tenant.bdm.schemamanager.format_sql}" />
                <entry key="hibernate.transaction.jta.platform"
                       value="${bdm.hibernate.transaction.jta_platform}" />
                <entry key="hibernate.validator.autoregister_listeners"
                       value="${bonita.tenant.bdm.schemamanager.validator.autoregister_listeners}" />
                <entry key="hibernate.validator.apply_to_ddl"
                       value="${bonita.tenant.bdm.schemamanager.validator.apply_to_ddl}" />
                <entry key="javax.persistence.validation.mode"
                       value="${bonita.tenant.bdm.schemamanager.javax.persistence.validation.mode}" />
            </map>
        </constructor-arg>
    </bean>

    <bean id="jsonBusinessDataSerializer"
          class="org.bonitasoft.engine.business.data.impl.JsonBusinessDataSerializerImpl">
        <constructor-arg name="classLoaderService" ref="classLoaderService" />
    </bean>

    <bean id="typeConverterUtil" class="org.bonitasoft.engine.commons.TypeConverterUtil">
        <constructor-arg name="datePatterns" type="java.lang.String[]">
            <list>
                <value>yyyy-MM-dd</value>
                <value>HH:mm:ss</value>
                <value>yyyy-MM-dd HH:mm:ss</value>
                <value>yyyy-MM-dd'T'HH:mm:ss</value>
                <value>yyyy-MM-dd'T'HH:mm:ss.SSS</value>
            </list>
        </constructor-arg>
    </bean>

    <bean id="businessDataReloader" class="org.bonitasoft.engine.business.data.impl.BusinessDataReloader">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
    </bean>

    <bean id="countQueryProvider" class="org.bonitasoft.engine.business.data.impl.CountQueryProvider" />

    <bean id="businessDataService" class="org.bonitasoft.engine.business.data.impl.BusinessDataServiceImpl">
        <constructor-arg name="businessDataRepository" ref="businessDataRepository" />
        <constructor-arg name="jsonBusinessDataSerializer" ref="jsonBusinessDataSerializer" />
        <constructor-arg name="businessDataModelRepository" ref="businessDataModelRepository" />
        <constructor-arg name="typeConverterUtil" ref="typeConverterUtil" />
        <constructor-arg name="businessDataReloader" ref="businessDataReloader" />
        <constructor-arg name="countQueryProvider" ref="countQueryProvider" />
    </bean>

    <bean id="authenticationService" class="org.bonitasoft.engine.authentication.impl.AuthenticationServiceImpl">
        <constructor-arg name="identityService" ref="identityService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
    </bean>

    <bean id="archivingStrategy" class="org.bonitasoft.engine.archive.impl.DefaultArchivingStrategy">
        <constructor-arg name="additionalConfiguration" ref="archivingStrategyAdditionalConfiguration" />
    </bean>

    <util:map id="archivingStrategyAdditionalConfiguration">
    </util:map>

    <bean id="archiveService" class="org.bonitasoft.engine.archive.impl.ArchiveServiceImpl">
        <constructor-arg name="definitiveArchivePersistenceService" ref="persistenceService" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="archivingStrategy" ref="archivingStrategy" />
        <constructor-arg ref="transactionService" />
    </bean>

    <bean id="applicationService" class="org.bonitasoft.engine.business.application.impl.ApplicationServiceImpl">
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
    </bean>

    <bean id="contractDataService" class="org.bonitasoft.engine.core.contract.data.ContractDataServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="eventService" ref="tenantEventService" />
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="archiveService" ref="archiveService" />
    </bean>


    <bean id="formMappingService" class="org.bonitasoft.engine.core.form.impl.FormMappingServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="pageMappingService" ref="pageMappingService" />
        <constructor-arg name="pageService" ref="pageService" />
        <constructor-arg name="formMappingKeyGenerator" ref="formMappingKeyGenerator" />
        <constructor-arg name="externalUrlAdapter">
            <util:constant static-field="org.bonitasoft.engine.page.URLAdapterConstants.EXTERNAL_URL_ADAPTER" />
        </constructor-arg>
        <constructor-arg name="legacyUrlAdapter">
            <util:constant static-field="org.bonitasoft.engine.page.URLAdapterConstants.LEGACY_URL_ADAPTER" />
        </constructor-arg>
        <constructor-arg name="queriableLoggerService" ref="queriableLoggerService" />
        <constructor-arg name="authorizationRuleMapping" ref="${bonita.tenant.authorization.rule.mapping}" />
    </bean>

    <bean id="defaultAuthorizationRuleMapping" class="org.bonitasoft.engine.core.form.impl.AuthorizationRuleMappingImpl" />

    <bean id="queriableLoggerService" class="org.bonitasoft.engine.services.impl.QueriableLoggerImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="loggerStrategy" ref="queriableLoggerStrategy" />
        <constructor-arg name="sessionProvider" ref="queriableLogSessionProvider" />
        <constructor-arg name="logger" ref="tenantTechnicalLoggerService" />
        <constructor-arg name="platformService" ref="platformService" />
        <constructor-arg name="transactionService" ref="transactionService"/>
    </bean>

    <bean id="sessionProvider" class="org.bonitasoft.engine.session.impl.SessionProviderImpl" />

    <bean id="pageMappingService" class="org.bonitasoft.engine.page.impl.PageMappingServiceImpl">
        <constructor-arg name="persistenceService" ref="persistenceService" />
        <constructor-arg name="recorder" ref="tenantRecorderSync" />
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
    </bean>

    <bean id="urlAdapterInjector" class="org.bonitasoft.engine.page.impl.UrlAdapterInjector" autowire="byType"
          init-method="injectUrlAdapters">
        <constructor-arg name="pageMappingService" ref="pageMappingService" />
    </bean>

    <bean id="authorizationRulesInjector" class="org.bonitasoft.engine.page.impl.AuthorizationRulesInjector"
          autowire="byType" init-method="injectAuthorizationRules">
        <constructor-arg name="pageMappingService" ref="pageMappingService" />
    </bean>

    <bean id="taskInvolvementDelegate" class="org.bonitasoft.engine.api.impl.TaskInvolvementDelegate" />

    <bean id="processInvolvementDelegate" class="org.bonitasoft.engine.api.impl.ProcessInvolvementDelegate" />

    <!-- Authorization rules to register -->
    <bean id="isAdmin" class="org.bonitasoft.engine.page.IsAdminRule" />
    <bean id="isProcessOwner" class="org.bonitasoft.engine.page.IsProcessOwnerRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="formMappingService" ref="formMappingService" />
        <constructor-arg name="supervisorMappingService"
                         ref="supervisorMappingService" />
    </bean>
    <bean id="isTaskAvailableForUser" class="org.bonitasoft.engine.page.IsTaskAvailableForUserRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="activityInstanceService"
                         ref="activityInstanceService" />
    </bean>
    <bean id="isActorInitiatorRule" class="org.bonitasoft.engine.page.IsActorInitiatorRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="formMappingService" ref="formMappingService" />
        <constructor-arg name="actorMappingService" ref="actorMappingService" />
    </bean>
    <bean id="isProcessInitiator" class="org.bonitasoft.engine.page.IsProcessInitiatorRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="processInvolvementDelegate" ref="processInvolvementDelegate" />
    </bean>
    <bean id="isTaskPerformer" class="org.bonitasoft.engine.page.IsTaskPerformerRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="taskInvolvementDelegate" ref="taskInvolvementDelegate" />
    </bean>
    <bean id="isInvolvedInProcessInstance" class="org.bonitasoft.engine.page.IsInvolvedInProcessInstanceRule">
        <constructor-arg name="sessionService" ref="sessionService" />
        <constructor-arg name="sessionAccessor" ref="sessionAccessor" />
        <constructor-arg name="taskInvolvementDelegate" ref="taskInvolvementDelegate" />
    </bean>


    <bean id="formMappingKeyGenerator"
          class="org.bonitasoft.engine.core.form.impl.FormMappingKeyGeneratorImpl">
        <constructor-arg name="processDefinitionService"
                         ref="processDefinitionService" />
    </bean>
    <bean class="org.bonitasoft.engine.core.form.LegacyURLAdapter">
        <constructor-arg name="processDefinitionService" ref="processDefinitionService" />
        <constructor-arg name="formMappingService" ref="formMappingService" />
    </bean>

    <bean id="externalUrlAdapter" class="org.bonitasoft.engine.core.form.ExternalURLAdapter" />

    <bean id="engineClock" class="org.bonitasoft.engine.commons.time.DefaultEngineClock" />

</beans>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy