O2O项目总结-流程管理
审核流程的部署
-
流程的部署选择以文件上传的形式进行套餐审核流程的部署
-
首先需要一个BpmnInfo类储存上传部署的部分信息,完成基本的domain qo service controller
-
前端:完成一个发起流程文件部署,这个需要使用一个上传页面功能是将格式为bpmn的文件可以上传到浏览器中
-
然后通过ajax流程将文件存储到磁盘中,返回一个路径插入到隐藏域的input:path 中
-
页面中还可以输入文件的 部署的类型,( bpmnType=“car_package”,后面通过这个信息可以在bpmnInfo中直接查询到流程信息) ,和备注信息
-
点击确定时提交表单, bpInfopath ,car_package,info 通过表单中信息 后端要完成流程的部署工作
-
集成Activiti来部署流程,其中使用到了多个io流工具代码展示
-
部署完成后需要将一部分数据封装到BpnmInfo类中,作为流程部署文件的展示以及一些后续参数的使用
BpmnInfo bpmnInfo = new BpmnInfo(); bpmnInfo.setInfo(info); bpmnInfo.setBpmnType(bpmnType); bpmnInfo.setDeploymentId(deployment.getId()); bpmnInfo.setDeployTime(deployment.getDeploymentTime());
-
流程部署完毕后出现流程实例,有一些流程定义的基本数据也需要存入到,BpmnInfo中,
-
部署流程需要做的额就是将部署完成的deployment信息和ProcessDefinition流程定义的数据封装bpmnInfo类中
-
需要注意的:流程部署过程中需要用到的流在部署流程结束后需要将流关闭,否则后续的删除流程功能无法删除上传在磁盘中存储的部署文件
ProcessDefinition processDefinition = repositoryService. createProcessDefinitionQuery(). deploymentId(deployment.getId()). singleResult(); // bpmnInfo.setBpmnName(processDefinition.getName()); bpmnInfo.setActProcessId(processDefinition.getId()); bpmnInfo.setActProcessKey(processDefinition.getKey()); bpmnInfoMapper.insert(bpmnInfo);
-
controller层 @RequiresPermissions("business:bpmnInfo:deploy") @RequestMapping("/deploy") @ResponseBody public AjaxResult depoly(String path, String info,String bpmnType) throws IOException { bpmnInfoService.depoly(path,info,bpmnType); return AjaxResult.success("操作成功",""); }
-
service层 public void depoly(String path, String info, String bpmnType) throws IOException { System.out.println(SystemConfig.getProfile()); //获取上传过来的的文件路所在的路径= SystemConfig.getProfile(),path 底层拼接寻找,形成一个输入流 File file = new File(SystemConfig.getProfile(),path); FileInputStream fileInputStream = new FileInputStream(file); Deployment deployment = repositoryService. createDeployment(). //一个文件路径加一个输入流作为部署流程参数 addInputStream(path, fileInputStream). deploy(); BpmnInfo bpmnInfo = new BpmnInfo(); bpmnInfo.setInfo(info); bpmnInfo.setBpmnType(bpmnType); bpmnInfo.setDeploymentId(deployment.getId()); bpmnInfo.setDeployTime(deployment.getDeploymentTime()); ProcessDefinition processDefinition = repositoryService. createProcessDefinitionQuery(). deploymentId(deployment.getId()). singleResult(); // bpmnInfo.setBpmnName(processDefinition.getName()); bpmnInfo.setActProcessId(processDefinition.getId()); bpmnInfo.setActProcessKey(processDefinition.getKey()); bpmnInfoMapper.insert(bpmnInfo); //关闭流 fileInputStream.close(); }
前端代码
-
文件的部署需要依赖一个jasny-bootstrap的插件
-
还需要当文件放入到文本框中但是未提交文件前就需要做出文件判断,防止有人恶意上传他类文件
-
这个需要前后端代码进行配合,
-
首先前端利用ajax将文件存入到磁盘中,而在存入磁盘中前要进行相应的后端判断
-
是不是bpmn类型的文件,如果不是bpmn文件则抛异常,并在ajax程序中将文件清除
-
@Override public String updateBpmn(MultipartFile file) throws IOException { String extension = FileUploadUtils.getExtension(file); String path=null; if (!"bpmn".
-
-
-