public void init()

in saga/seata-saga-engine/src/main/java/org/apache/seata/saga/engine/config/AbstractStateMachineConfig.java [125:215]


    public void init() throws Exception {
        // init seqGenerator
        if (seqGenerator == null) {
            seqGenerator = new UUIDSeqGenerator();
        }

        // init ExpressionFactoryManager
        if (expressionFactoryManager == null) {
            expressionFactoryManager = new ExpressionFactoryManager();

            SequenceExpressionFactory sequenceExpressionFactory = new SequenceExpressionFactory();
            sequenceExpressionFactory.setSeqGenerator(seqGenerator);
            expressionFactoryManager.putExpressionFactory(DomainConstants.EXPRESSION_TYPE_SEQUENCE, sequenceExpressionFactory);

            ExceptionMatchExpressionFactory exceptionMatchExpressionFactory = new ExceptionMatchExpressionFactory();
            expressionFactoryManager.putExpressionFactory(DomainConstants.EXPRESSION_TYPE_EXCEPTION, exceptionMatchExpressionFactory);
        }

        // init expressionResolver
        if (expressionResolver == null) {
            DefaultExpressionResolver defaultExpressionResolver = new DefaultExpressionResolver();
            defaultExpressionResolver.setExpressionFactoryManager(expressionFactoryManager);
            expressionResolver = defaultExpressionResolver;
        }

        if (stateLogRepository == null) {
            StateLogRepositoryImpl defaultStateLogRepository = new StateLogRepositoryImpl();
            defaultStateLogRepository.setStateLogStore(stateLogStore);
            this.stateLogRepository = defaultStateLogRepository;
        }

        if (stateMachineRepository == null) {
            StateMachineRepositoryImpl defaultStateMachineRepository = new StateMachineRepositoryImpl();
            defaultStateMachineRepository.setCharset(charset);
            defaultStateMachineRepository.setSeqGenerator(seqGenerator);
            defaultStateMachineRepository.setDefaultTenantId(defaultTenantId);
            defaultStateMachineRepository.setJsonParserName(sagaJsonParser);
            defaultStateMachineRepository.setStateLangStore(stateLangStore);
            this.stateMachineRepository = defaultStateMachineRepository;
        }

        // auto register resources
        if (autoRegisterResources && stateMachineDefInputStreamArray != null) {
            stateMachineRepository.registryByResources(stateMachineDefInputStreamArray, defaultTenantId);
        }

        if (statusDecisionStrategy == null) {
            statusDecisionStrategy = new DefaultStatusDecisionStrategy();
        }

        if (syncProcessCtrlEventPublisher == null) {
            ProcessCtrlEventPublisher syncEventPublisher = new ProcessCtrlEventPublisher();

            ProcessControllerImpl processorController = createProcessorController(syncEventPublisher);

            ProcessCtrlEventConsumer processCtrlEventConsumer = new ProcessCtrlEventConsumer();
            processCtrlEventConsumer.setProcessController(processorController);

            DirectEventBus directEventBus = new DirectEventBus();
            syncEventPublisher.setEventBus(directEventBus);

            directEventBus.registerEventConsumer(processCtrlEventConsumer);

            syncProcessCtrlEventPublisher = syncEventPublisher;
        }

        if (enableAsync && asyncProcessCtrlEventPublisher == null) {
            ProcessCtrlEventPublisher asyncEventPublisher = new ProcessCtrlEventPublisher();

            ProcessControllerImpl processorController = createProcessorController(asyncEventPublisher);

            ProcessCtrlEventConsumer processCtrlEventConsumer = new ProcessCtrlEventConsumer();
            processCtrlEventConsumer.setProcessController(processorController);

            AsyncEventBus asyncEventBus = new AsyncEventBus();
            asyncEventBus.setThreadPoolExecutor(getThreadPoolExecutor());
            asyncEventPublisher.setEventBus(asyncEventBus);

            asyncEventBus.registerEventConsumer(processCtrlEventConsumer);

            asyncProcessCtrlEventPublisher = asyncEventPublisher;
        }

        if (this.serviceInvokerManager == null) {
            this.serviceInvokerManager = new ServiceInvokerManager();
        }

        if (this.scriptEngineManager == null) {
            this.scriptEngineManager = new ScriptEngineManager();
        }
    }