1.核心API
1.1ProcessEngine
1.1-1 .PocessEngine是Activiti中最核心的类,其他的类都是由他而来;
1.1-2 .产生方式:ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();调用 ProcessEngine的getDefaultProcessEngine()方法会自动加载classpath下名为activit.cfg.xml文件;
1.1-3 .可以产生:RepositoryService
RepositoryService repositoryService =pocessEngine.getRepositoryService();
1.1-4 .可以产生RuntimeService
RuntimeService runtimeService = pocessEngine.getRuntimeService();
1.1-5 .可以产生TaskService
TaskService taskService = processEngine.getTaskService();
各个Service的作用 :
RepositoryService 管理流程定义
RuntimeService 执行管理 包括启动,推进,删除流程实例等
TaskService 任务管理
IdentityService 组织机构管理
HistoryService 历史管理(执行完的数据管理)
FormService 一个可选服务,任务表单管理
ManagerService
1.2.RepositoryService
是Activiti的仓库服务类。所谓的仓库服务类就是指仓库流程定义文档的两个文件:bpmn文件和流程图片
可以产生DeploymentBuilder,用来定义流程部署的相关参数
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
删除流程定义 repositoryService.deleteDepioyment(deploymentId);
1.3RuntimeService
是Activitie流程执行服务类,可以从这个服务类中获取很多相关流程执行相关信息;
1.4TaskService
是Activitie 任务服务类,可以从类中获取任务的信息
1.5HistoryService
是activitie 查询历史信息的类。在一个流程执行完之后,这个对象为我们提高查询历史信息;
1.6ProcessDefinition
是activitie流程定义类,可以从这里获取资源文件
1.7ProcessIntance
代表流程定义的执行实例,流程实例就是一个流程从开始到结束的最大流程分支,即一个流程中流程实例只有一个;
5.8Execution
activiti用这个对象去描述流程执行的每个节点。在没有并发的情况下,Execution就是同ProcessInstsnce。
流程按照流程定义的规则执行一次的过程,就可以表示执行对象Execution
ProcessInstance 的源代码
public interface ProcessInstance extends Execution{ }
总结
在一个流程定义中,执行对象可以存在多个,但是流程实例只能有一个;
当流程按照规则只执行一次的时候,那么流程实例就是流程对象;
2.基本流程实例
2.1:流程图
开始------提交申请-----审批(部门经理)-----审批(经理)
2.2:部署流程定义
获取流程引擎
ProcessEngine processEngine =ProcessEngine.getDefaultProcessEngine();
获取仓库服务的实例
Deployment deployment = processEngine.getRepositoryService().createDeployment()
.addClasspathResource("*.bpmn").addClasspathResource("*.png")
.deploy();
2.3:启动流程实例
//指定任务办理者
String assignee ="XX";
//获取流程引擎对象
ProcessEngine processEngine =ProcessEngine.getDefaultProcessEngine();
//查询任务列表
List<Task> taskList =processEngine.getTaskService().createTaskQuery().taskAssignee(xx).list();
//遍历查看内容
For(Task task : taskList){
task.getId();
task.getName();
}
2.4 办理任务
String taskId ="12";
ProcessEngine processEngine = ProcessEngine.getDefaultProcessEngine();
processEngince.getTaskService().complete(taskId);
3.部署流程定义(classpath路径加载文件)
--先获取流程引擎对象:
--通过流程引擎获取一个RepositoryService对象(也就是仓库对象)
--由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关对象;
--这是一个 链式编程,在部署配置对象中设置显示名,上传流程定义规则文件;
--向数据库表中存放流程定义的规则信息
--分别操作三张表
(act_redeployment 部署对象表 )(act_re_procdef 流程定义表)
(act_ge_bytearray 资源文件表)