1.
定义ProcessEngine属性
SpringProcessEngineConfiguration继承ProcessEngineConfigurationImpl
2.
定义ProcessEngineFactoryBean实现spring FactoryBean接口,getObject方法中调用SpringProcessEngineConfiguration的buildProcessEngine()方法加载
3. ProcessEngineConfigurationImpl的init()方法
1) initConfigurators:
其他系统和flowable Engine继承的配置器; crm没有EngineConfigurators
2) configuratorsBeforeInit:
配置器初始化前执行的逻辑
3) initProcessDiagramGenerator:
初始化流程图生成器
4) initHistoryLevel:
初始化历史记录等级,NONE 5) initFunctionDelegates: 初始化JUEL表达式的方法,默认是FlowableDateFunctionDelegate 6) initDelegateInterceptor: 初始化外部功能调用的拦截器,(DelegateInterceptor) 7) initExpressionManager: 初始化表达式管理器 8) initAgendaFactory: 初始化agenda工厂 9) initDataSource,initDbSchemaManagers: 初始化数据库连接 10) initHelpers: 初始化ProcessInstanceHelper,ListenerNotificationHelper,FormHandlerHelper 11) initVariableTypes 初始化VariableTypes 12) initBeans: 13) initFormEngines: 14) initFormTypes: 15) initScriptingEngines: 16) initClock: 17) initBusinessCalendarManager: 18) initCommandContextFactory: 19) initTransactionContextFactory: 20) initCommandExecutors: 1) initDefaultCommandConfig: contextReusePossible = true propagation = TransactionPropagation.REQUIRED 2) initSchemaCommandConfig: contextReusePossible = true propagation = TransactionPropagation.REQUIRED 3) initCommandInvoker: 4) initCommandInterceptors: 5) initCommandExecutor: 21) initServices: repositoryService,runtimeService,runtimeService,identityService,identityService,identityService,managementService,dynamicBpmnService 22) initIdGenerator: 23) initWsdlImporterFactory: 24) initWsdlImporterFactory: 25) initListenerFactory: 26) initBpmnParser: 27) initProcessDefinitionCache: 28) initProcessDefinitionInfoCache: 29) initAppResourceCache: 30) initKnowledgeBaseCache: 31) initJobHandlers: 1) AsyncContinuationJobHandler: async-continuation ==> planContinueProcessSynchronousOperation 2) AsyncTriggerJobHandler: async-trigger ==> planTriggerExecutionOperation 3) TriggerTimerEventJobHandler: trigger-timer ==> planTriggerExecutionOperation 4) TimerStartEventJobHandler: timer-start-event 5) TimerSuspendProcessDefinitionHandler: suspend-processdefinition 6) TimerSuspendProcessDefinitionHandler: suspend-processdefinition 7) TimerActivateProcessDefinitionHandler: activate-processdefinition 8) ProcessEventJobHandler: event 32) initHistoryJobHandlers: 1) AsyncHistoryJobHandler 2) AsyncHistoryJobHandler 33) initTransactionFactory: 34) initSqlSessionFactory: 35) initSessionFactories: 36) initSessionFactories: 37) initEntityManagers: 38) initCandidateManager: 39) initHistoryManager: 40) initDynamicStateManager: 41) initJpa: 42) initDeployers: 43) initEventHandlers: 44) initFailedJobCommandFactory: JobRetryCmd 45) initEventDispatcher: 46) initProcessValidator: 47) initFormFieldHandler: 48) initDatabaseEventLogging: 49) initFlowable5CompatibilityHandler: 50) initVariableServiceConfiguration: 51) initIdentityLinkServiceConfiguration: 52) initJobServiceConfiguration: 53) initAsyncExecutor: 1) AbstractAsyncExecutor.start()启动异步Job 2) DefaultAsyncJobExecutor.startAdditionalComponents() 1) initAsyncJobExecutionThreadPool 初始化异步Job线程池 2) startJobAcquisitionThread: AcquireAsyncJobsDueRunnable 从act_ru_job中获取记录,当线程池满后等待asyncExecutorAsyncJobLockTimeInMillis时间后再重试 3) unlockOwnedJobs 4) startTimerAcquisitionThread AcquireTimerJobsRunnable 从act_ru_timer_job中获取asyncExecutorMaxAsyncJobsDuePerAcquisition数量的记录,并将记录转移到act_ru_job中; 当数量大于asyncExecutorMaxTimerJobsPerAcquisition时,等待asyncExecutorTimerLockTimeInMillis时间重试 5) startResetExpiredJobsThread 54) initAsyncHistoryExecutor DefaultAsyncHistoryJobExecutor 55) configuratorsAfterInit: 56) afterInitTaskServiceConfiguration: