三阶段---Activiti初体验
关于工作流的案例

Activiti7是啥?
他是一个java工作流框架--可以专门帮我做审批流程
怎么玩?
我先在资源中建一个bpmn目录然后在里面画一个bpmn图


操作activiti引擎的方法
1.初始化引擎--为了连接数据库 创建activiti需要的表 拿到流程引擎
@Test
public void init() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
}
2.部署流程---把我画的bpmn图上传到activiti上 让他认识一下我画的图
//部署
@Test
public void testDeploy() {
//获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取仓库
RepositoryService repositoryService = processEngine.getRepositoryService();
//完成部署
//调用activiti中的api来实先部署
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("bpmn/leaveProcess.bpmn20.xml")
.addClasspathResource("bpmn/leaveProcess.png")
.deploy();
//部署对象只能获取到部署id和部署时间
System.out.println("部署id:" + deployment.getId());
System.out.println("部署时间" + deployment.getDeploymentTime());
// System.out.println("名称(获取不到)" + deployment.getName());
// System.out.println("key(获取不到)" + deployment.getKey());
}
3.启动流程--可以理解为我点了我要请假的按钮
发一次请假申请生成一次流程实例
//启动流程
@Test
public void testStartProcess() {
//获取引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取运行时
RuntimeService runtimeService = processEngine.getRuntimeService();
//调用activiti的api来启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess");
System.out.println("流程实例id: " + processInstance.getId());
System.out.println("流程实例id: " + processInstance.getProcessInstanceId());
System.out.println("流程实例id: " + processInstance.getProcessDefinitionId());
System.out.println("流程实例id: " + processInstance.getProcessDefinitionKey());
//实例找定义 通过定义找部署
System.out.println("流程实例id: " + processInstance.getDeploymentId());
}
4.查询代办任务--审批人要看自己要审批啥
5.添加审批意见就是他是同意还是不同意
6.历史记录是为了查询记录
几个id的关系
Deployment(部署 ID)
↓ 上传了
Process Definition(流程定义 ID = 模板)
↓ 有人提交请假
Process Instance(流程实例 ID = 某张单据)
↓ 每一步审批
Task(任务 ID = 待办事项)
三个网关的区别
排他网关:选一个做
并行网关:同时做
包容网关:看条件满足条件的都做
浙公网安备 33010602011771号