


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
jBPM 流程部署文件研究Posted by Nicholas Ding on 五月 29th, 2006jBPM 为流程定义及其相关文件专门使用了一种打包机制,就是.par文件,似乎JBoss很喜欢这样的形式,之前还有为Hibernate提供的.har包。这个.par被称为Process Archive,故名思义,里面包含了流程需要的所有信息。其实.par文件就是一个简单的zip格式的压缩包。里面的核心文件是processdefinition.xml这个流程定义,当然用 Eclipse jBPM插件制作的流程还含有一个流程图片,可以使用jBPM提供的webapp动态标示当前所执行的流程。除次之外,classes这个目录以内的文件 都会被动态加载到内存,因为流程里面定义的Action和Task等的实现类都需要去Classpath找,jBPM会在部署.par包的时候用自己的 Class Loader加载进去。(PS:也可以直接放在上层Classpath里面,只要能够加载到就可以)流程部署详解如果认为一定要使用Eclipse jBPM插件来部署流程的话,那就错了,jBPM插件从一定程度上简化了jBPM开发,尤其是Deployment功能为大家省了不少事情,但是如果要手 工部署,怎么做呢?接下来就要研究一下到底部署这个.par文件的时候做了哪些事情。首先要让Eclipse jBPM的部署功能有效,那么要确保服务器使用jBPM提供的webapp,并且让起Context位于/jbpm这个位置。例如http: /localhost:8080/jbpm,那么在jBPM插件里面写上localhost,端口8080,测试一下连接就可以了。那么我们分析一下 webapp,发现原来是org.jbpm.webapp.servlet.UploadServlet这个类在起作用。看一下UploadServlet的代码,看handleRequest里面的内容,用Commons Fileupload做的文件上传,如果文件小直接加载到内存,文件大会用磁盘的临时空间(Fileupload的文档上有解释)。文件上传完毕,那么就 执行doDeployment操作。这个doDeployment才是部署的关键入口。ZipInputStream zipInputStream = new ZipInputStream(fileItem.getInputStream();这行代码解释了如何加载.par文件,首先作为Zip格式读取,然后得到jbpmContext来进行流程部署。这个JbpmContext也是采用了 ThreadLocal,感觉原理上和Hibernate用的差不多(到这篇文章为止,我在Weblogic还没法成功使用这个得到 jbpmContext,还只能用jbpmConfiguration来获取)。JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);jbpmContext.deployProcessDefinition(processDefinition);这样以来,一个流程就这么简单的部署上去了。当然了,如果不想Upload,还可以使用本地文件系统直接部署,需要提供一个URL就可以了,请参考DeployServlet,还可以使用ant进行部署。这么看来,部署一个流程就变得非常方便了。部署文件怎么就消失了,到底去了哪里?在部署完.par流程包之后,仿佛就不再需要这个.par文件了,但是是什么原因能够让服务器不必知道.par的位置而又能每次正常运行这个流程呢?这个问题我诼磨了很久,一个zip文件不可能凭空消失啊,至少他应该存在于引擎可以找到的地方。而这个地方,正是数据库!看一下jbpm生成的数据库,包含两张比较特别的表jbpm_bytearray和jbpm_byteblock,正是这两张表纯储了.par文件的内容。可以说,他是将zip里面的内容拆开存到了数据库。mysql select * from jbpm_bytearray;+-+-+-+| ID_ | NAME_ | FILEDEFINITION_ |+-+-+-+| 1 | processimage.jpg | 1 | 2 | gpd.xml | 1 | 3 | processimage.jpg | 4 | 4 | gpd.xml | 4 | 5 | classes/com/sample/action/MessageActionHandler.class | 4 |+-+-+-+jbpm_bytearray这张表把.par文件目录存了进去,jbpm_byteblock则是将二进制内容存了进去。可以说如果你的.par 文件里面含有Java Bytecode,那么引擎会从数据库读出byte数组然后作为类加载,如果你的类存在于引擎可见的Classpath,那么他会从那里面加载。总结jBPM在流程的部署上着实下了不少功夫,从流程的部署上可以看到jBPM引擎的一些工作方式,这也有点类似IoC的概念,本身jBPM提供了基于 有限状态机的编程模型,这一模型大大的简化了编程难度,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全方面培训课件
- 吊顶音响工程方案(3篇)
- 电力拆除改造工程方案(3篇)
- 安全教育防火培训课件
- 灯塔冷库改造工程方案(3篇)
- 猫咪线描绘画课件
- 基于真实情境的初中语文学习任务设计探究
- 农业无人机租赁服务在2025年市场拓展与渠道建设分析
- 防汛工程治理方案范本(3篇)
- 工程爆破施工方案(3篇)
- 软件行业基础知识培训课件
- 教案2025秋形势与政策纪念抗战胜利坚定民族信念抗战胜利80周年
- 卷烟零售户培训课件
- 2025年学法减分试题及答案
- 2025年中小学教师师德师风考试题库及答案
- DGTJ08-2090-2020 绿色建筑评价标准
- 2025年商业店铺出租合同(标准版)(可修改可打印)
- 设备采购质保金管理制度
- 互助友爱班级大家庭主题班会课件
- 中国目前各行业的现状
- 小学生情绪调适心理课件
评论
0/150
提交评论