// 工作流引擎的配置
<
bean
id
=
"processEngineConfiguration"
class
=
"org.activiti.spring.SpringProcessEngineConfiguration"
>
<
property
name
=
"dataSource"
ref
=
"dataSource"
/>
<
property
name
=
"transactionManager"
ref
=
"transactionManager"
/>
<
property
name
=
"databaseSchemaUpdate"
value
=
"true"
/>
<
property
name
=
"jobExecutorActivate"
value
=
"true"
/>
<
property
name
=
"enableDatabaseEventLogging"
value
=
"true"
/>
<
property
name
=
"customFormTypes"
>
<
list
>
<
bean
class
=
"org.activiti.explorer.form.UserFormType"
/>
<
bean
class
=
"org.activiti.explorer.form.ProcessDefinitionFormType"
/>
<
bean
class
=
"org.activiti.explorer.form.MonthFormType"
/>
</
list
>
</
property
>
//生成工作流引擎
<
bean
id
=
"processEngine"
class
=
"org.activiti.spring.ProcessEngineFactoryBean"
destroy-method
=
"destroy"
>
<
property
name
=
"processEngineConfiguration"
ref
=
"processEngineConfiguration"
/>
</
bean
>
当前从工作流引擎实例的产生说起。也就是从
org.activiti.spring.ProcessEngineFactoryBean类的
getObject方法开始,工作流开始初始化各种设置。如下:
this
.
processEngine
=
processEngineConfiguration
.buildProcessEngine();--->> init()-->>........
以下是sessionFactory的初始化过程
************************************************************
protected
void
initSessionFactories() {
if
(
sessionFactories
==
null
) {
sessionFactories
=
new
HashMap<Class<?>, SessionFactory>();
dbSqlSessionFactory
=
new
DbSqlSessionFactory();
dbSqlSessionFactory
.setDatabaseType(
databaseType
);
dbSqlSessionFactory
.setIdGenerator(
idGenerator
);
dbSqlSessionFactory
.setSqlSessionFactory(
sqlSessionFactory
);
dbSqlSessionFactory
.setDbIdentityUsed(
isDbIdentityUsed
);
dbSqlSessionFactory
.setDbHistoryUsed(
isDbHistoryUsed
);
dbSqlSessionFactory
.setDatabaseTablePrefix(
databaseTablePrefix
);
dbSqlSessionFactory
.setTablePrefixIsSchema(
tablePrefixIsSchema
);
dbSqlSessionFactory
.setDatabaseCatalog(
databaseCatalog
);
dbSqlSessionFactory
.setDatabaseSchema(
databaseSchema
);
dbSqlSessionFactory
.setOptimizeDeleteOperationsEnabled(
isOptimizeDeleteOperationsEnabled
);
addSessionFactory(
dbSqlSessionFactory
);
addSessionFactory(
new
GenericManagerFactory(AttachmentEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(CommentEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(DeploymentEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(ModelEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(ExecutionEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricActivityInstanceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricDetailEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricProcessInstanceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricVariableInstanceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricTaskInstanceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(HistoricIdentityLinkEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(IdentityInfoEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(IdentityLinkEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(JobEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(ProcessDefinitionEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(PropertyEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(ResourceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(ByteArrayEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(TableDataManager.
class
));
addSessionFactory(
new
GenericManagerFactory(TaskEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(VariableInstanceEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(EventSubscriptionEntityManager.
class
));
addSessionFactory(
new
GenericManagerFactory(EventLogEntryEntityManager.
class
));
addSessionFactory(
new
DefaultHistoryManagerSessionFactory());
addSessionFactory(
new
UserEntityManagerFactory());
addSessionFactory(
new
GroupEntityManagerFactory());
addSessionFactory(
new
MembershipEntityManagerFactory());
}
if
(
customSessionFactories
!=
null
) {
for
(SessionFactory sessionFactory:
customSessionFactories
) {
addSessionFactory(sessionFactory);
}
}
}
//
sessionFactories是hashmap类型
protected
void
addSessionFactory(SessionFactory sessionFactory) {
sessionFactories
.put(sessionFactory.getSessionType(), sessionFactory);
}