网站建设学习心得,网站建设计划图,学习网站建设有什么用,个人可以做公益网站吗3. Service服务 所有的Service都通过流程引擎获得。 3.1 RepositoryService 仓库服务是存储相关的服务#xff0c;一般用来部署流程文件#xff0c;获取流程文件#xff08;bpmn和图片#xff09;#xff0c;查询流程定义信息等操作#xff0c;是引擎中的一个重要的服务。…3. Service服务 所有的Service都通过流程引擎获得。 3.1 RepositoryService 仓库服务是存储相关的服务一般用来部署流程文件获取流程文件bpmn和图片查询流程定义信息等操作是引擎中的一个重要的服务。部署流程定义操作的数据库表有部署表(act_re_deployment)、流程定义表(act_re_procdef)和二进制表(act_ge_bytearray) //获取仓库服务
RepositoryService repositoryService processEngine.getRepositoryService();
//部署流程
Deployment deployment repositoryService.createDeployment().name(请假流程).addClasspathResource(leave.bpmn).deploy(); // 完成部署
ProcessDefinitionQuery query repositoryService.createProcessDefinitionQuery();
// 根据流程定义的key来过滤
query.processDefinitionKey(leave2);
// 添加排序条件
query.orderByProcessDefinitionVersion().desc();
//分页查询从哪开始查询几条
query.listPage(0, 2);
// 查询的是所有的流程定义
ListProcessDefinition list query.list();
for (ProcessDefinition pd : list) {System.out.println(pd.getId() - pd.getName() - pd.getVersion());
}
//根据id删除流程
repositoryService.deleteDeployment(1005);部署文件实际是一个bpmn文件和一个png图片 部署bpmn的时候系统自动生成了一个png图片可以下载查看 RepositoryService repositoryService processEngine.getRepositoryService();
String deploymentId 72501;//部署id
ListString names repositoryService.getDeploymentResourceNames(deploymentId);
for (String name : names) {System.out.println(name);// 获得两个流程定义文件对应的输入流InputStream in repositoryService.getResourceAsStream(deploymentId, name);// 读取输入流写到指定的本地磁盘上FileCopyUtils.copy(in, new FileOutputStream(F:/ name));in.close();
}去F盘下可以看到两个文件 自动生成的png图片中文会乱码解决这个问题需要在processEngineConfiguration的bean中配置字体如图 property nameactivityFontName value宋体/
property namelabelFontName value宋体/如果不想生成png图片可以配置如下属性 property namecreateDiagramOnDeploy valuefalse /还可以将png和bpnm添加到zip压缩包中部署zip压缩包。 // 从类路径下读取leave.zip压缩文件并把它包装成一个输入流
ZipInputStream zipInputStream new ZipInputStream(this.getClass().getClassLoader().getResourceAsStream(leave.zip));
Deployment deployment repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy(); // 完成部署Activiti会把压缩包内的bpmn和png添加到数据库即数据库里存的是解压后的两个文件而不是zip。 使用idea生成bpmn对应的png需要把bpmn的文件后缀名改成xml 根据流程定义id获取文件流 String processDefinitionId leave2:5:62504; // 流程定义id
// 直接获得png图片的名称
// 根据流程定义id查询流程定义对象
ProcessDefinitionQuery query repositoryService.createProcessDefinitionQuery();
query.processDefinitionId(processDefinitionId);
ProcessDefinition processDefinition query.singleResult();
// 根据流程定义对象获得png图片的名称,getResourceName()是获得bpmn
String pngName processDefinition.getDiagramResourceName();
// 直接获得png图片对应的输入流
InputStream pngStream repositoryService.getProcessDiagram(processDefinitionId);
// 读取输入流写到指定的本地磁盘上
FileCopyUtils.copy(pngStream, new FileOutputStream(F:/ pngName));
pngStream.close();3.2 RuntimeService 流程运行时的流程实例流程定义流程版本流程节点等信息使用运行时服务操作是引擎中的一个重要的服务启动流程实例操作的数据表有流程实例表(act_ru_execution)、任务表(act_ru_task)。 RuntimeService runtimeService processEngine.getRuntimeService();
//key是act_re_procdef中的KEY_,即bpmn文件的id
runtimeService.startProcessInstanceByKey(leave2);
//或者根据流程定义id启动id是act_re_procdef中的ID_推荐使用
runtimeService.startProcessInstanceById(leave2:5:62504);
//一个KEY_对应多个ID_即一个流程定义可以产生多个流程实例。
//查询流程操作的是流程实例表(act_ru_execution)
ProcessInstanceQuery query runtimeService.createProcessInstanceQuery();
ListProcessInstance list query.list();删除一个流程实例 String processInstanceId 1001; // 流程实例id
String deleteReason 不请假了; // 删除原因任君写
runtimeService.deleteProcessInstance(processInstanceId, deleteReason);3.3 TaskService 对任务进行查询、接收、办理、完成等操作。查询任务操作的数据表是任务表(act_ru_task)。 TaskService taskService processEngine.getTaskService();
//创建查询对象,指定查询人,进行查询
ListTask taskList taskService.createTaskQuery().taskAssignee(ZhangSan).list();//提交任务到下一个代理人
taskService.complete(task.getId());
listPage(offset,pageSize)用于分页查询3.4 IdentityService 流程运行过程中的一些用户信息组信息等操作使用认证服务但是认证服务一般只作为辅助每一个系统都有一个比较完整的人员系统创建用户和用户组等操作。一般不使用自带的认证。 //添加用户组
IdentityService identityService processEngine.getIdentityService();
Group groupEntity identityService.newGroup(1001);
groupEntity.setName(超级管理员);
groupEntity.setType(administrator);
identityService.saveGroup(groupEntity);//保存用户组
//删除用户组
identityService.deleteGroup(1);//添加用户
User user identityService.newUser(10001);
user.setEmail(adminsina.com);
user.setFirstName(zhang);
user.setLastName(san);
user.setPassword(admin);
identityService.saveUser(user);//保存用户
identityService.deleteUser(10001);//删除用户3.5 HistoryService 流程运行时和运行完成之后的一些历史信息包括历史任务历史节点等 HistoryService historyService processEngine.getHistoryService();
//查询历史运行信息
HistoricProcessInstance historicProcessInstance historyService.createHistoricProcessInstanceQuery().processInstanceId(40001).singleResult();
System.out.println(开始时间 historicProcessInstance.getStartTime());
System.out.println(结束时间 historicProcessInstance.getEndTime());3.6 FormService 可选服务任务表单管理 后续讲解 3.7 ManagementService Management Service 提供了对 Activiti 流程引擎的管理和维护功能这些功能不在工作流驱动的应用程序中使用主要用于 Activiti 系统的日常维护。 ManagementService managementService processEngine.getManagementService();
String taskTable managementService.getTableName(Task.class);
System.out.println(taskTable);