编辑: Cerise银子 2013-04-07

12 activiti总体框架分析 org.activiti.engine是activiti的核心功能,控制工作流的流转.几个核心的类如下图 所示: 1.1 ProcessEngine ProcessEngine 接口继承 EngineServices , EngineServices 包括很多工作 流/BPM方法的服务,它们都是线程安全的. EngineServices 提供的服务包括: RepositoryService: 提供了管理和控制流程定义的操作. RuntimeService: 提供了管理和控制流程实例的操作. FormService: 提供了管理流程表单的操作,即使不用 FormService , activiti也可以完美运行. TaskService: 提供了任务管理的操作,包括实例任务 挂起 、 激活 、 完成 、 暂停 、 查询 . HistoryService: 提供对历史流程,历史任务,历史变量的查询操作. IdentityService: 提供用户和组管理的操作(创建,更新,删除,查询...). ManagementService: 提供了查询和管理异步操作(定时器,异步操作, 延迟 暂停、激活等)的功能,它还可以查询到数据库的表和表的元数据. 工作流开发计划

13 activiti总体框架分析 EngineServices 代码如下所示: public interface EngineServices { RepositoryService getRepositoryService();

RuntimeService getRuntimeService();

FormService getFormService();

TaskService getTaskService();

HistoryService getHistoryService();

IdentityService getIdentityService();

ManagementService getManagementService();

ProcessEngineConfiguration getProcessEngineConfiguration();

} ProcessEngine 代码如下所示: public interface ProcessEngine extends EngineServices { /** the version of the activiti library */ public static String VERSION = 5.17.0.2 ;

/** The name as specified in '

process-engine-name'

in * the activiti.cfg.xml configuration file. * The default name for a process engine is '

default */ String getName();

void close();

} 工作流开发计划

14 activiti总体框架分析 1.2 ProcessEngineConfiguration ProcessEngineConfiguration 是配置管理类,它管理的对象包括 ProcessEngine,XXservice,数据库session 等. ProcessEngineConfiguration 的配置,activiti默认会从activiti.cfg.xml中读 取,也可以在Spring的配置文件中读取. ProcessEngineConfiguration 的实现 包括: ProcessEngineConfigurationImpl 继承 ProcessEngineConfiguration ,实现了各种Service的初始化 StandaloneProcessEngineConfiguration 是单独运行的流程引擎,继承 ProcessEngineConfigurationImpl .代码如下: public class StandaloneProcessEngineConfiguration extends ProcessEngineC @Override protected CommandInterceptor createTransactionInterceptor() { return null;

} } StandaloneInMemProcessEngineConfiguration 是单元测试时的辅助类, 继承 StandaloneProcessEngineConfiguration ,默认使用H2内存数据 库.数据库表会在引擎启动时创建,关闭时删除.代码如下所示: public class StandaloneInMemProcessEngineConfiguration extends public StandaloneInMemProcessEngineConfiguration() { this.databaseSchemaUpdate = DB_SCHEMA_UPDATE_CREATE_DROP;

this.jdbcUrl = jdbc:h2:mem:activiti ;

} } SpringProcessEngineConfiguration 是Spring环境下使用的流程引擎. JtaProcessEngineConfiguration 单独运行的流程引擎,并使用JTA事务. 工作流开发计划

15 activiti总体框架分析 1.3 ActivitiException activiti的基础异常类是 org.activiti.engine.ActivitiException ,一个非检 查异常.Activiti的异常都是通过 org.activiti.engine.ActivitiException 抛出,但存在以下特殊情况: ActivitiWrongDbException: 当Activiti引擎发现数据库版本号和引擎版本 号不一致时抛出. ActivitiOptimisticLockingException: 对同一数据进行并发方法并出现 乐观锁时抛出. ActivitiClassLoadingException: 当无法找到需要加载的类或在加载类 时出现了错误(比如,JavaDelegate,TaskListener等. ActivitiObjectNotFoundException: 当请求或操作的对应不存在时抛 出. ActivitiIllegalArgumentException: 这个异常表示调用Activiti API时传 入了一个非法的参数,可能是引擎配置中的非法值,或提供了一个非法制,或 流程定义中使用的非法值. ActivitiTaskAlreadyClaimedException: 当任务已经被认领了,再调用 taskService.claim(...)就会抛出. BpmnError: 流程部署错误,如流程定义文件不合法. JobNotFoundException: JOB不存在. 2. org.activiti.engine.impl 1. 实现了流程管理服务 RepositoryServiceImpl , RuntimeServiceImpl , FormServiceImpl , TaskServiceImpl , HistoryServiceImpl , IdentityServiceImpl , ManagementServiceImpl 2. 实现流程虚拟机PVM 3. 数据持久化,脚本任务,条件表达式EL的解析等等 4. 命令接口的定义 工作流开发计划

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题