Activiti是工作流框架,是解决企业流程管理的解决方案,该技术多用于政府和OA办公领域。
那么何为工作流:我们可以举一个很简单的列子,在公司向公司申请假期的这个过程就是一个工作流,从员工申请假期到负责人签字批准或者驳回这样的一个完整过程就是工作流,而Activiti框架就是针对这样流程封装的一个框架。
使用Activiti框架的步骤:①在Eclipse中安装activiti插件,安装插件的方法可以参考(eclipse背景颜色插件的安装),但是插件的存放位置是在dropins文件夹中,安装成功后重启软件,
②导包:activiti环境所需要的jar包(11个 第一个不需要)结合SSM框架的jar包一起使用
③配置文件:有两种方式:(1)使用硬编码的方式,将jdbc连接信息写入到代码中(但是这种方式不推荐使用)
public void testConnect() throws Exception {
// 根据doc文档 ctrl+f ProcessEngineConfiguration 不用配置文件
// 配置信息
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
// jdbc 连接信息
processEngineConfiguration.setJdbcUrl("jdbc:mysql:///activiti?createDatabaseIfNotExist=true");
processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
processEngineConfiguration.setJdbcUsername("root");
processEngineConfiguration.setJdbcPassword("123456");
// 自动创建表
processEngineConfiguration.setDatabaseSchemaUpdate("true");
// 服务核心对象 (一旦核心对象 它就会创建表结构)
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
System.out.println(processEngine);
}
(2)config配置文件(其中配置文件的方式有两种:一,使用自定义的配置文件 配置文件的文件名可以自己随意取,二,使用默认的配置文件 配置文件的文件名是:activiti.cfg.xml 具体使用方式如下面代码)
// 自定义配置文件
@Test
public void testConnect2() throws Exception {
// 加载配置类的对象
ProcessEngineConfiguration createProcessEngineConfigurationFromResource = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg2.xml");
// 核心对象
ProcessEngine buildProcessEngine = createProcessEngineConfigurationFromResource.buildProcessEngine();
System.out.println(buildProcessEngine);
}
// 默认加载配置文件
// 最佳实践
// 约定大于配置
@Test
public void testConnect3() throws Exception {
// 核心对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
}
推荐使用的是第三种(简单方便 约定大于配置)
④通过以上的操作,那么一个activiti的工作环境就是基本的完成 ,下面我们可以初步了解activiti的工作核心,工作引擎(ProcessEngine)负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
⑤resportyService 仓库 (1) 发布流程
获取流程发布对象:DeploymentBuilder createDeployment = repositoryService.createDeployment();
(2)查询部署列表和流程定义的列表
(3)删除-真删除和假删除(挂起和激活) (4)查看流程图
⑥runtimeService 运行时 和 tasksService 任务 接口
(1)启动流程(processkey启动 )
(2)查询任务列表
查询某个人的列表
// TaskService 任务
TaskService taskService = defaultProcessEngine.getTaskService();
// 获取查询对象
TaskQuery createTaskQuery = taskService.createTaskQuery();
// 设置条件
list 分页
(3)完成任务
私有任务 (一个人)
公有任务 (多个人)
(4)完成私有任务
taskService.complete(taskId)
(5) 完成公有任务
先认领任务
然后在完成任务
taskService.claim(taskId, userId);
taskService.complete(taskId);
(6)查询实例状态是否就结束