- 浏览: 270618 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
jbpm流程文件的部署
(2010-05-05 14:51:55)
转载
标签:
it
一般我们都是用jbpm源程序代码的servlet形式实现流程文件.par文件的部署,或是通过
.parseXMLString("<process-definition>" + " <start-state>"
+ " <transition to='s' />" + " </start-state>"
+ " <state name='s'>" + " <transition to='end' />"
+ " </state>" + " <end-state name='end' />"
+ "</process-definition>");
这种方式实现,但后一种实现方式不会将流程图片持久会数据库中。
还有一种实现par流程文件的部署,将定义好的流程打包成zip或是par:
File zipFile = new File("./Flows/MyTest_1.zip");
FileInputStream fIn = new FileInputStream(zipFile);
ZipInputStream zipIn = new ZipInputStream(fIn);
ProcessDefinition processDefinition = ProcessDefinition
.parseParZipInputStream(zipIn); 这样就可以实现了跟源程序中的servlet部署一样的效果。那么到底jbpm流程文件是如何实现部署的呢?看以下的解释:jBPM
为流程定义及其相关文件专门使用了一种打包机制,就是.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提供了基于有限状态机的编程模型,这一模型大大的简化了编程难度,同时将流程的定义和实现分离出来,使得可以在流程实现的功能子集定义新的流程。在流程部署上提供了版本机制,即连续部署两个相同的流程会出现版本增量,总是新建高版本的流程,但是低版本的流程在执行过程中不会因为高版本的部署而自动取消,直到运行完毕。
分享
(2010-05-05 14:51:55)
转载
标签:
it
一般我们都是用jbpm源程序代码的servlet形式实现流程文件.par文件的部署,或是通过
.parseXMLString("<process-definition>" + " <start-state>"
+ " <transition to='s' />" + " </start-state>"
+ " <state name='s'>" + " <transition to='end' />"
+ " </state>" + " <end-state name='end' />"
+ "</process-definition>");
这种方式实现,但后一种实现方式不会将流程图片持久会数据库中。
还有一种实现par流程文件的部署,将定义好的流程打包成zip或是par:
File zipFile = new File("./Flows/MyTest_1.zip");
FileInputStream fIn = new FileInputStream(zipFile);
ZipInputStream zipIn = new ZipInputStream(fIn);
ProcessDefinition processDefinition = ProcessDefinition
.parseParZipInputStream(zipIn); 这样就可以实现了跟源程序中的servlet部署一样的效果。那么到底jbpm流程文件是如何实现部署的呢?看以下的解释:jBPM
为流程定义及其相关文件专门使用了一种打包机制,就是.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提供了基于有限状态机的编程模型,这一模型大大的简化了编程难度,同时将流程的定义和实现分离出来,使得可以在流程实现的功能子集定义新的流程。在流程部署上提供了版本机制,即连续部署两个相同的流程会出现版本增量,总是新建高版本的流程,但是低版本的流程在执行过程中不会因为高版本的部署而自动取消,直到运行完毕。
分享
发表评论
-
JBPM4的优秀博文链接
2011-08-31 22:39 13321 Jbpm4 IOC容器 http://www.it ... -
jbpm4 在tomcat6 下面ssh2 错误
2011-08-31 21:35 1003异常:java.lang.LinkageError: load ... -
JBPM4表结构说明
2011-07-23 00:33 1301JBPM4表结构说明 (2010-05-05 14:10:02 ... -
BPM4.3总结二 Jbpm4.3使用文档
2011-07-23 00:30 1159JBPM4.3总结二 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结五 合同审批实例
2011-07-23 00:27 1364JBPM4.3总结五 [此博文包含图片] (2010-05-0 ... -
JBPM4.3总结四 2.9任务管理
2011-07-23 00:26 1065JBPM4.3总结四 (2010-05-05 11:53:32 ... -
JBPM4.3总结三 集成自定义用户表
2011-07-23 00:24 1582JBPM4.3总结三 (2010-05-05 11:54:56 ... -
swing 实现JBPM 4.2例子
2011-07-22 13:20 1042swing 实现JBPM 4.2例子 http://blo ... -
JBPM4.3之任务管理
2011-07-22 12:37 1082JBPM4.3总结四(2010-05-05 11:53:32) ... -
jbpm frequently used url
2011-06-29 12:19 10911. http://old.family168.com/bb ... -
jbpm4 和 spring 的集成
2011-06-29 11:37 841jbpm4 内置了和 spring 的集成支持, 配置很简单, ... -
任务提交后为什么JBPM4_HIST_VAR不存在值
2011-06-29 11:05 1503JbpmProcessEngineUtil.getExecut ... -
权限问题
2011-06-29 09:05 1241机构 与 权限关系表:机构拥有与之关联的权限 应用 与 权限 ... -
jBPM4的运行期环境
2011-06-29 08:52 690一、运行期环境就是一个餐馆 二、jBPM4的运行期环境 E ... -
Jbpm4.3连接数据库配置
2011-06-29 08:35 1317Jbpm4.3连接数据库配置 收藏 1、我以mysql为例子 ... -
jbpm4 有18张表,简单介绍如下
2011-06-29 08:33 1836jbpm4 有18张表,简单介绍如下: JBPM4_DEP ... -
Drools
2011-06-28 20:59 1284Drools - The Business Logic int ... -
Activiti BPM Platform
2011-06-28 20:58 1127Activiti BPM Platform http://a ... -
jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
2011-06-28 20:57 841jbpm6(2007-03-14 23:32:38)转载 ... -
jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
2011-06-28 20:52 802jbpm6(2007-03-14 23:32:38)转载 ...
相关推荐
【jbpm流程部署文件】详解 jbpm(Java Business Process Management)是一种开源的工作流管理系统,用于实现业务流程自动化。在jbpm中,流程部署是将流程定义文件转换为可执行的流程实例的关键步骤。以下是对jbpm...
在流程的部署与服务方面,文档说明了如何部署业务归档、流程文件和流程资源,以及如何部署Java类。它还介绍了jBPM的几个关键服务,包括ProcessEngine流程引擎、TaskService任务服务、HistoryService历史服务和...
在提供的压缩包文件中,"droolsjbpm-jbpm-designer-6.0.0.Beta1-480-gdc1d8ec.zip"可能是jbpm流程设计器的一个早期版本,而"jbpm-designer-master.zip"则可能是源码仓库的主分支,包含了最新的jbpm流程设计器源代码...
在提供的压缩包"eclipse3.4解压版带jbpm流程定义插件"中,用户无需安装,仅需解压即可开始使用,这极大地简化了部署过程。这意味着Eclipse 3.4已经被配置好,集成了jbpm的相关库和插件,用户可以直接打开Eclipse进行...
【JBPM-web开发部署在Tomcat中的流程实现详解】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了丰富的API和工具,允许开发者构建灵活、可扩展的...
- **部署文件**:`.bar`文件,包含了流程模型和其他相关资源,用于部署到jbpm服务器。 - **源代码**:可能包含Java代码,用于与jbpm引擎交互,如启动流程实例、查询任务等。 - **配置文件**:可能有jbpm的配置文件,...
6. **部署流程定义**:jbpm使用BPMN 2.0标准的XML文件来定义流程。你可以使用jbpm-designer工具创建流程图,然后将其导出为XML。在代码中,通过`JbpmContext`部署这个XML文件,使其在引擎中生效。 7. **启动流程**...
1. **部署流程定义**:jbpm流程的起点是定义流程模型。这通常通过BPMN2(Business Process Model and Notation)标准来完成,jbpm支持通过图形化工具(如Eclipse BPMN2插件)进行建模。流程定义文件(.bpmn2)需要...
3. **SQL脚本**:用于创建和初始化数据库表的SQL文件,这是JBPM4运行的基础,因为流程实例、任务和其他元数据需要存储在数据库中。 4. **测试用例**:可能包含测试流程执行和审批逻辑的JUnit或其他测试框架的测试类...
"JBPM工作流实战_流程定义文件的上传处理视频 03"这一主题主要关注如何在实际操作中处理JBPM流程定义文件的上传,这在构建业务流程自动化系统时是非常关键的步骤。 首先,流程定义文件是JBPM工作流的核心组成部分,...
通过jbpm Designer,你可以拖放元素来构建流程,并且可以保存为XML格式的jbpm流程定义文件(.bpmn20.xml)。 3. **源码集成**: 标签提到“源码”,意味着我们将讨论jbpm如何与Java应用源码结合。jbpm的核心库可以...
在Eclipse中安装了JBoss Tools后,还需要安装专门的JBPM流程设计插件。同样地,可以通过Eclipse的"Help" -> "Install New Software"菜单,添加JBPM流程设计器的更新站点(如http://jbpm.org/update/jbpm-studio/),...
- **JBPM软件包**:从JBPM官方网站下载所需版本,例如`JBoss jBPM Starters Kit`,包含完整的软件包、开发插件、预配置的JBoss服务器示例和数据库配置文件。 - **启动示例**:在解压后的`jbpm-server`目录中运行`...
`subjbpm.jpdl.xml`文件则是jbpm流程定义语言(Job Process Definition Language)的文件,它是jbpm用来存储流程定义的XML格式。此文件包含了流程的所有详细信息,包括活动(tasks)、泳道(lanes)、转换...
2. **jbpm流程定义**:示例可能包含了使用jbpm的工作流定义文件(.bpmn或.bpmn2),这些文件使用XML描述了业务流程的步骤、决策和任务。开发者可以通过jbpm提供的工具(如jbpm-designer)创建和编辑这些流程图。 3....
5. 使用ant部署pde包到数据库,实现流程数据的初始化。 6. 最后,通过jbpm API开发具体的工作流程应用。 对于“中国国情”的流程应用,jbpm在一定程度上可能需要适应国内的特殊需求。目前,国内工作流管理系统主要...
【jbpm流程管理系统详解】 jbpm,全称Java Business Process Management,是一款开源的工作流和业务流程管理(BPM)系统,由Red Hat公司维护。它提供了全面的工具集,包括流程设计、执行、监控和优化,帮助企业实现...
【jbpm流程管理程序概述】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了业务流程自动化和管理的功能,适用于开发Web应用程序中的物品领取等业务流程。jbpm不仅支持工作流的建模...