最近在研究jBPM,碰到了一大堆问题,这个郁闷的了。不过到今天为止,终于小有成果,可喜可贺啊,:)
下面主要讲一下最近碰到的一些问题,疑问以及解决方案
1、流程的测试
刚开始不知道怎么用插件,流程代码都是手写的,结果等我好不容易写完之后发布,发现无法编译这个流程文件,这个郁闷啊。肯定是我哪里写错了。然后去找有没有dtd文件,结果好不容易找到了,但是好像没有起作用,我很奇怪,怎么这么好的东西,会没有dtd文件呢。最后还是决定用插件,因为找到了一篇怎么用插件的文章,原来所有的东西都可以做的,哈哈哈。真是不错。
还有一个比较郁闷的地方就是jBPM的api doc,这个简直就不是doc,里面基本上没有说明文字,晕倒。这就是所谓jboss出品,真想扁他们。结果每次出了问题都要到网上乱搜一汽,运气好还能找到一点有用的东西。以上纯属牢骚。
下面说一下测试。
我是用编程的方式发布我的流程的
代码如下,自己写的一个发布类
但是这个发布类有一个问题,无法发布jpg文件到数据库,不过似乎在测试阶段也不需要图片。正式发布的时候,可以通过插件直接上传到服务器。
还有一个疑问,user guide 里说Process archives can also be deployed programmatically with the class org.jbpm.jpdl.par.ProcessArchiveDeployer ,但是这个类在3.1.2里面根本没有,不知道怎么回事
然后编写unit test ,在单元测试里面,针对每个流程路径进行测试。
2、流程发布
在完成单元测试之后,就可以通过插件直接上传到服务器了,不过事先你的服务器要有上传发布的功能。我的是直接从websale修改过来了。让这个demo跑起来,花了好大的劲。主要是版本问题。最大的一个问题在JbpmContext的创建上面。
原来的是这个样子:JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
但是这个方法在新版本中已经不支持,而且好像还不能很好的功能。从字面意思来看,应该是获得当前存在的context,但是,context只有close之后才能把相应的事务提交,所以这个几乎每次我都新创建了一个。
就想其他人一样,也有点不是很理解,为什么都已经save的,怎么还没有提交。既然要close才commit,那要getCurrentJbpmContext()方法有什么用了。
最后我的折中办法
java 代码
- JbpmConfiguration config = JbpmConfiguration.getInstance();
-
- JbpmContext jbpmContext = config.getCurrentJbpmContext();
- if (jbpmContext == null) jbpmContext = config.createJbpmContext();
在context这个问题上,就判断一下是否为空,如果空的话就创建一个,就像我上面说的,每次只有close了才能把事务提交,估计这个context也就没有了,每次都是要创建的。
这个问题,是我在调试web程序 的时候出现最多的问题,每次都是NullException,晕死了。结果都是context 空的问题。也不知道jboss每次版本更新之后怎么不把demo也改一下,彻底的服了。
3、其他问题
还有一个就是JSF问题,在使用CommondLink这个组件的时候,一定要把这个组件包含在Form里面,也不知道这个是JSF的bug,还是其他的原因,这个问题也折腾了我好久,后来搜了一下,原来也有很多人有这个问题,狂晕啊。sun不至于这么菜吧,唉。
先写到这里吧,到现在总算能把我的web跑起来,也能看到我的流程图,真是开心啊。简单的流程也能跑了,下面继续努力。要实现负责的流程还有很多路要走。最复杂的还是流程的实现以及与外部逻辑的整合问题。加油。。。。
分享到:
相关推荐
jbpm流程设计器 + 生成对应xml文档: 内部含有: jbpm控件 1: myflow2:插件原本内容 访问地址:http://localhost:8080/jbpmFlow1/myflow2/demo4.jsp 实现生成对应xml文档 并写有对xml文档读取存储到对象中,...
文档《JBPM流程引擎资料》详细介绍了如何利用JBPM开发流程应用,涵盖了从框架构造到节点处理的方方面面。 首先,文档提到了jBPM的基本概念。jBPM是一个轻量级流程引擎,它允许开发者以模块化的方式管理业务流程。...
### JBPM流程监控的实现过程详解 JBPM作为一款由JBOSS公司推出的开源工作流管理工具,以其强大的功能和灵活性赢得了众多开发者的青睐。尽管如此,JBPM原生并未直接提供流程监控功能的API,这无疑给那些希望在企业...
在提供的压缩包"eclipse3.4解压版带jbpm流程定义插件"中,用户无需安装,仅需解压即可开始使用,这极大地简化了部署过程。这意味着Eclipse 3.4已经被配置好,集成了jbpm的相关库和插件,用户可以直接打开Eclipse进行...
5.2 JBPM流程发布 45 5.2.1 搭建JBPM的WEB应用 46 5.2.2 发布第一个流程 48 六、日历(Scheduler) 54 6.1 Scheduler在C/S程序上的应用 54 6.2 Scheduler 在Web上的应用 57 6.3 Scheduler时间的分类 60 七、异步执行 ...
**jbpm 请假流程定义发布项目** jbpm(Java Business Process Management)是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。这个项目主要介绍如何使用jbpm来实现一个具体的请假流程,并且提供了...
**JBPM3.2 表初始化与流程发布详解** JBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于业务流程的建模、部署、执行和监控。在JBPM3.2版本中,用户需要对数据库进行初始化,以便正确...
- **JBPM 流程发布**: - 搭建 WEB 应用:创建包含 JBPM 的 Web 应用。 - 发布第一个流程:将定义好的流程部署到应用服务器。 #### 六、日历 (Scheduler) - **Scheduler 的应用**: - C/S 程序上的应用:在...
- **JBPM 流程发布**: 包括在应用服务器上部署 JBPM 工程,并发布流程定义。 #### 六、日历 (Scheduler) **日历功能** 是 JBPM 提供的一项高级特性,它允许用户为流程中的事件安排特定的时间: - **C/S 程序上的...
【JBPM3.2 表初始化与流程发布详解】 JBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于业务流程的建模、部署、执行和监控。在JBPM3.2版本中,表初始化是系统设置的重要环节,而流程...
1. **加载(发布)流程定义**:通过Eclipse Designer或其他工具创建ProcessDefinition,并加载到应用程序中。 2. **启动流程**:基于流程定义创建ProcessInstance,开始实际的业务流程。 3. **处理任务**:参与人员...
这里已经添加了jbpm的表hibernate建表测试代码,通过运行junit就可以建表和发布流程,之前的struts2代码不变,CreateSchemaTest.java是建jbpm表,DeployProcessTest.java是发布jbpm流程,到这里hibernate已经部署成功,接...
- **发布流程**:使用`DEPLOY`命令将流程定义发布到系统。 - **上传ZIP包**:包含流程定义(PNG和JPDL.XML)的ZIP文件。 - **启动流程**:通过流程定义的关键字`STARTPROCESSINSTANCEBYKEY`启动新实例。 - **...
通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...
该项目于2004年10月18日发布2.0版本,并随后成为JBoss企业中间件平台的一部分,更名为JBoss jBPM。JBPM的核心特点之一是它使用自定义的流程定义语言JPdl,将业务流程视为UML状态图,简化了流程设计。 **JPdl 介绍**...
发布这些流程定义的顺序并不影响并发子流程的实现。主流程用于协调整个并发过程,而子流程则代表并发执行的任务单元。 关键在于TaskNode的使用。TaskNode在流程图中表示一个任务节点,通常用于分配工作项给用户或...
在掌握了流程设计后,教程将进入发布工程的环节。这涉及到将设计好的流程模型部署到JBPM服务器上,使其可供实际应用调用。通过JSP(JavaServer Pages)页面,你可以实现与用户的交互,启动和跟踪流程实例。这部分...