private FlowExecutor buildFlowExecutorViaClientFlowExecution() {
        val executionFactory = new FlowExecutionImplFactory();
        executionFactory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(executionListeners));

        val cipherExecutorResolver = new DefaultCipherExecutorResolver(webflowCipherExecutor, tenantExtractor,
            WebflowProperties.class, bindingContext -> {
            val properties = bindingContext.value();
            return WebflowConversationStateCipherExecutor.from(properties.getWebflow().getCrypto());
        });

        val repository = new ClientFlowExecutionRepository(executionFactory, flowDefinitionRegistry,
            cipherExecutorResolver, webflowProperties);
        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