传智播客oa学习,部署和管理流程定义

      今天继续学习oa,汤老师讲了在oa中部署流程定义,对它进行管理,使用par包进行部署,并可以在线查看流程定义文件和流程图片,还可以把流程定义文档打包下载。经过前几天的学习,汤老师让大家自己先动手实现,自己做的时候遇到了很多问题,带着这些问题再听汤老师的讲解,效果不错。总结一下今天学习的重点。

   oa中可以查看流程列表,默认显示所有流程定义的最后一个版本。还可以显示指定的流程定义的所有版本。这要用到GraphSession的两个方法。
   查询所有的流程定义的最后一个版本:
    GraphSession.findLatestProcessDefinitions();
查询指定名字的所有的流程定义:
    GraphSession.findAllProcessDefinitionVersions(name);
   GraphSession由JbpmContext.getGraphSession()获得。
        获得流程定义的par包中的文件
 通过FileDefinition可以得到流程定义文档中的所有的文件,他是通过ProcessDefinition.getFileDefinition()获得的。FileDefinition有方法,getBytes(String name)获得指定名字的文件的内容(返回值为byte数组)。
  getBytesMap()返回的是流程定义中的所有文件,是一个Map。key是文件名,String类型;value是文件内容,byte[]类型。
  把byte[]转成字符串,使用new String(byte[] buf, String encoding);
    然后而是让浏览器直接显示为图片和xml内容。打开一个新窗口,可以在配置链
接的时候指定一个target,或者是使用window.open。后者的好处是可以定制窗口的大小和是否显示工具栏、菜单栏等。
显示processimage.jpg图片
   ProcdefForm pdForm = (ProcdefForm) form;
   ProcessDefinition pd = procdefService.getProcdef(pdForm.getId());
 if (pd != null) {
  FileDefinition fd = pd.getFileDefinition();
  byte[] content = fd.getBytes("processimage.jpg");
                         //显示为图片
  response.setContentType("image/jpeg");
  response.getOutputStream().write(content);
  }

显示processdefinition.xml
              ProcdefForm pdForm = (ProcdefForm) form;
 ProcessDefinition pd = procdefService.getProcdef(pdForm.getId());
             FileDefinition fd = pd.getFileDefinition();
 byte[] content = fd.getBytes("processdefinition.xml");
             response.setContentType("application/xml");
 response.getOutputStream().write(content);


对把流程定义文档打包下载
  需要使用ZipOutputStream类
 向ZipOutputStream中添加一个文件的方法:
  ZipEntry zipEntry = new ZipEntry(name); // 新建并指定文件名字
  zipOutputStream.putNextEntry(zipEntry); //开始写入新的 ZIP 文件条目并将流
定位到条目数据的开始处。
  zipOutputStream.write(content); // 写文件内容(字节数组)
  zipOutputStream.closeEntry(); //关闭当前 ZIP 条目并定位流以写入下一个条目


      需要注意的是如果ZipEntry的名字以‘/’结尾,表示一个目录;也可以在指定文件名字的时候指定所在的目录结构,例如想在zip文件中的"dd"目录下有一个文件a.txt,可以写成"dd/a.txt"。在调用ZipOutputStream的putNextEntry(ZipEntry)方法或close()方法后,会自动关闭上一个未关闭的Entry(所以可以不必显示调用closeEntry()方法)。
 实现下载
response.setContentType("application/zip");
String zipName = pd.getName() + "_" + pd.getVersion() + ".zip";
zipName = URLEncoder.encode(zipName, "utf-8");
response.addHeader("Content-Disposition", "attachment; filename=/"" +
zipName + "/"");
    最后一定要关闭ZipOutputStream,否则,现在下来的文件没有数据。
删除流程定义,不要使用session自已实现删除操作,而应调用:
jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionId);
  对jbpm实体的增删改操作,都应使用jbpm提供的api;如果只是查询实体,则可以自己使用session 直接操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值