1. <bean id="processEngineConfiguration" class="org.flowable.spring.SpringProcessEngineConfiguration">
定义ProcessEngine属性
SpringProcessEngineConfiguration继承ProcessEngineConfigurationImpl
2. <bean id="processEngineFactory" class="org.flowable.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
定义ProcessEngineFactoryBean实现spring FactoryBean接口,getObject方法中调用SpringProcessEngineConfiguration的buildProcessEngine()方法加载
3. ProcessEngineConfigurationImpl的init()方法
1) initConfigurators:
其他系统和flowable Engine继承的配置器; crm没有EngineConfigurators
2) configuratorsBeforeInit:
配置器初始化前执行的逻辑
3) initProcessDiagramGenerator:
初始化流程图生成器
4) initHistoryLevel:
初始化历史记录等级,NONE<ACTIVITY<AUDIT<FULL;默认是AUDIT
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:
网友评论