private FlowExecutor buildFlowExecutorViaServerSessionBindingExecution() {
        val conversationManager = new SessionBindingConversationManager();
        val session = webflowProperties.getSession().getServer();
        conversationManager.setLockTimeoutSeconds((int) Beans.newDuration(session.getLockTimeout()).toSeconds());
        conversationManager.setMaxConversations(session.getMaxConversations());

        val executionFactory = new FlowExecutionImplFactory();
        executionFactory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(executionListeners));

        val flowExecutionSnapshotFactory = new SerializedFlowExecutionSnapshotFactory(executionFactory, flowDefinitionRegistry);
        flowExecutionSnapshotFactory.setCompress(session.isCompress());

        val repository = new DefaultFlowExecutionRepository(conversationManager, flowExecutionSnapshotFactory);
        executionFactory.setExecutionKeyFactory(repository);
        return buildCasFlowExecutor(executionFactory, repository);
    }
Build flow executor.

@return the flow executor
core/cas-server-core-webflow-api/src/main/java/org/apereo/cas/web/flow/executor/WebflowExecutorFactory.java