`
jacky6024
  • 浏览: 81137 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

《深入浅出jBPM》一书中第7章与第9章相关工程的源码

阅读更多
《深入浅出jBPM》一书中第7章与第9章相关工程的源码。本书由人民邮电出版社出版。

第7章介绍的报销及采购流程的完整工程及其源代码: jbpm-web-test.rar

第9章企业级应用里涉及到的工程及相关EJB的源代码:jbpm-ent-test.ear.rar
分享到:
评论
71 楼 lizhengjun 2009-10-23  
高老师,您好!
jpd.xml文件中出现中文乱码后,在显示流程进度图时,必须根据流程节点名称到jpd.xml文件中进行匹配查找,以取得位置相关数据,由于之前已经成了乱码,故匹配查找不成功。
因为如此,我目前编写程序,运行时,只有英文命名的节点才能正确显示进度,中文命名的就无法显示,不知您是如何处理这个问题的?
70 楼 jacky6024 2009-10-19  
您好,请查看您的jbpm.cfg.xml文件当中

<bean   name="jbpm.mail.address.resolver" class="test.handler.MailAddressResolver" singleton="true" />

配置是否正确,您配置的类是否存在,或者该类代码当中是否有问题,谢谢。
69 楼 good21 2009-10-18  
高老师,您好:
    我在做采购流程时,邮件功能老是出现这种错误,麻烦您指点一下,谢谢。
[color=red]org.jbpm.graph.def.DelegationException: java.lang.String cannot be cast to org.jbpm.mail.AddressResolver[/color] at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignment(TaskMgmtInstance.java:259)
at org.jbpm.taskmgmt.exe.TaskInstance.assign(TaskInstance.java:198)
at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:197)
at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:168)
at org.jbpm.graph.def.Node.enter(Node.java:318)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$9d17f3a1.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:151)
at org.jbpm.graph.def.Node.leave(Node.java:393)
at org.jbpm.graph.def.Node.leave(Node.java:368)
at org.jbpm.graph.node.Fork.execute(Fork.java:140)
at org.jbpm.graph.def.Node.enter(Node.java:318)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$9d17f3a1.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:151)
at org.jbpm.graph.def.Node.leave(Node.java:393)
at org.jbpm.graph.node.StartState.leave(StartState.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$9d17f3a1.leave(<generated>)
at org.jbpm.graph.exe.Token.signal(Token.java:192)
at org.jbpm.graph.exe.Token.signal(Token.java:140)
at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:479)
at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:393)
at test.testprocess.TestPurchaseProcess.newProcessInstance(TestPurchaseProcess.java:43)
at test.testprocess.TestPurchaseProcess.testPurchaseProcess(TestPurchaseProcess.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.jbpm.graph.def.DelegationException: java.lang.String cannot be cast to org.jbpm.mail.AddressResolver
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:382)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:373)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
at org.jbpm.graph.node.TaskNode$$EnhancerByCGLIB$$d75de9eb.raiseException(<generated>)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:373)
at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:276)
at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:215)
at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:185)
at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:169)
at org.jbpm.taskmgmt.exe.TaskInstance.setActorId(TaskInstance.java:292)
at org.jbpm.taskmgmt.exe.TaskInstance.setActorId(TaskInstance.java:262)
at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignmentActorIdExpr(TaskMgmtInstance.java:287)
at org.jbpm.taskmgmt.exe.TaskMgmtInstance.performAssignment(TaskMgmtInstance.java:247)
... 54 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to org.jbpm.mail.AddressResolver
at org.jbpm.mail.Mail.resolveAddresses(Mail.java:229)
at org.jbpm.mail.Mail.getRecipients(Mail.java:90)
at org.jbpm.mail.Mail.send(Mail.java:160)
at org.jbpm.mail.Mail.execute(Mail.java:81)
at org.jbpm.graph.def.Action.execute(Action.java:122)
at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:259)
... 61 more

68 楼 jacky6024 2009-10-08  
hehl2005 写道
版主在吗,好几天了,源代码都下不了啊!急啊

刚才我试了一下,可以下载的呀!
67 楼 hehl2005 2009-09-30  
版主在吗,好几天了,源代码都下不了啊!急啊
66 楼 jacky6024 2009-09-17  
lei8012 您好,书上所有代码我都测试运行过的,应该是没有问题的,另外,BeanShell里是可能直接运行Java代码的,所以System.out.println...是可以运行的。
65 楼 lei8012 2009-09-17  
高老师你好:
    书上P143页说的timer的例子,在task-node上面增加timer的源码好像和我的不一样,task-node里面不能包括timer啊,我用工具增加不上去,只能手动填写。但是这样执行不了。工具是产生这样的代码:
<task-node name="task-node1">
<task name="test task">
<assignment actor-id="zhoulei"></assignment>
</task>
<timer duedate="5 seconds" name="test timer" repeat="20 seconds">
<script>
print(&quot;test timer1...&quot;);
</script>
</timer>
<transition to="end-state1"></transition>
</task-node>

另外,script应该不会有system.out.println的吧,应该是print的样子。
64 楼 jacky6024 2009-09-17  
dongyeyun  您好,

JbpmContext有两种创建方式,一种是filter方式;一种是手工通过create方式创建,这两种方法书中都有介绍。

如果你采用手工create方式那么就需要在用完之后close它,否则就由filter来close。默认情况下,对Jbpm所有操作只有在close后hibernate的session才会提交。

所有您的问题应该是没有将用完的JbmpContext对象close,请检查您的JbpmContext的创建方式,然后在用完之后将其close掉。
63 楼 dongyeyun 2009-09-17  
高杰老师您好:我使用jbpm的时候,通过taskInstance.end("transitionName")时,为什么流程没有往下流转啊?token还是停留在上一节点,这和jbpmContext对象的关闭与否是不存在关系?应当在什么地方关闭呢?
62 楼 jacky6024 2009-09-15  
您好,我看了一下其源码,JobSession删除job就是直接delete的呀:
  public void deleteJob(Job job) {
    log.debug("deleting "+job);
    session.delete(job);
  }
是不是您不是手工调JobSession删除Job的?
61 楼 学会做人 2009-09-14  
jacky6024 写道
生成Job的时候要记住Job的ID,然后JobSession删除指定ID的Job,或者通过Hibernate的Session同样可以删除指定ID的Job

高杰老师,这个问题是解决了;但我还是想问一下,我们在以前尝试的时候遇到的问题!在删除timer的时候,报BatchUpdateException是怎么回事呢?
在源代码里,是用了session来删除的
!后面还有一个add已经删除了的timer的方法!估计就是在session删除的时候报的错吧!
60 楼 jacky6024 2009-09-14  
生成Job的时候要记住Job的ID,然后JobSession删除指定ID的Job,或者通过Hibernate的Session同样可以删除指定ID的Job
59 楼 jessie7755 2009-09-13  
高老师您好,我有个很急的问题想请教一下,如果一个任务没有处理人该怎么解决?这个任务实例已经生成但没有处理人,流程到这里就断了。我采用你书里面提到的动态定时器,当没有处理人时就生成一个定时器,这个定时器的作用就是去数据库中查找处理人。当有处理人时就分配给该任务,但这个时候这个定时器应该怎么删除呢?
58 楼 jacky6024 2009-09-08  
feiniao04 您好,数据库里已有的数据对于发布是没有影响的,我想问题应该不是在数据库里的数据上面。
57 楼 feiniao04 2009-09-08  
发布的问题搞定了,但是还是没搞清楚起初为何发布总是不成功。我是无奈之下把数据库所有的数据全部清空,之后又测试了一遍,莫名其妙的居然发布成功。数据库里之前的数据对新发布的数据会有影响吗?
56 楼 feiniao04 2009-09-08  
高杰老师,我又遇到了一个问题,折磨我好几天了,就是我通过配置ProcessUploadServlet这个类,然后用eclipse可视化操作去发布流程,首先点Test Connection,系统提示连接成功。后面再点Deploy Process Archive也显示成功,但是数据库就是找不到新添加的流程,但是,我通过代码的方式发布流程是没问题的。依据您的经验,我在哪个环节出了问题呢,急盼解答。
55 楼 jacky6024 2009-08-26  
gzaqq 写道
您好,高杰老师:
《深入浅出jbpm》中的helloworld等例子为什么不在数据库中的jbpm_log里生成日志?
应该怎样配置才能在数据库中生成流程日志?

生成日志的工作是由流程引擎自动完成的,正常情况下对流程的操作是有日志产生的,请确认您的操作是否正确。
54 楼 gzaqq 2009-08-22  
您好,高杰老师:
《深入浅出jbpm》中的helloworld等例子为什么不在数据库中的jbpm_log里生成日志?
应该怎样配置才能在数据库中生成流程日志?
53 楼 jacky6024 2009-08-21  
jpd.xml文件会出现乱码,确实有这一问题,但这个问题并不影响流程模版的设计与发布,不用管这个文件。
52 楼 feiniao04 2009-08-21  
想请教一个高杰老师,关于用jbpm设计流程时不支持中文的问题如何解决,我用的是eclipse3.4+jbpm3.2.3.项目中的流程节点名称都是中文,然后jpd.xml文件就会出现乱码。

相关推荐

    深入浅出JBPM最新源码第七章-报销实例

    【深入浅出JBPM最新源码第七章-报销实例】是一个关于企业流程管理(Business Process Management,简称BPM)的实战教程,主要聚焦在JBPM框架的使用上,结合了myeclipse集成开发环境、SQL数据库、Tomcat6.0应用服务器...

    深入浅出jBPM 5,6章

    《深入浅出jBPM 5,6章》是一本专为理解jBPM这一流程管理系统而精心编写的书籍。jBPM是一个开源的工作流管理系统,它提供了业务流程建模、执行、监控和优化的全面解决方案。这本书的第5章和第6章尤其关键,它们涵盖...

    jbpm深入浅出第7章实例代码

    本资源“jbpm深入浅出第7章实例代码”聚焦于通过jbpm实现工作流的实战演练,旨在帮助读者更深入地理解和掌握jbpm的使用。 jbpm的工作流程管理包括了流程定义、流程执行、流程监控等多个方面。第7章可能涉及的内容...

    深入浅出 jBPM 电子书, ,综合大量例子和资料

    深入浅出jBPM 电子文档,内容包括:面向图的程序设计,流程建模,节点——Node 职责,task-node节点,state节点类型,decision节点类型.等等,.还 综合大量例子和资料 , 是 学习 JBPM 必读首选! 希望这部书,大家能...

    《深入浅出jBPM》第3章

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    深入浅出_jBPM_电子书

    深入浅出 jBPM 电子书,很适合初学者学习的一个开发文档

    《深入浅出jBPM》第2章(2)

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    《深入浅出jBPM》第2章(1)

    《深入浅出jBPM》中文版由jBPM方面的专家高杰根据自己的经验编写,是一本实用的jBPM教程。全书分两个部分,第一部分详细讲 解jBPM 3.2,第二部分介绍jBPM 4。作者从初学者的角度由浅入深地介绍jBPM的基本知识、使用...

    深入浅出jBPM.1-6章测试代码_jbpm-test.rar

    《深入浅出jBPM:1-6章测试代码详解》 jBPM,全称为Java Business Process Management,是一款开源的工作流管理系统,用于处理业务流程的建模、部署、执行和监控。它提供了灵活的工作流定义,支持BPMN 2.0标准,...

    深入浅出JBPM

    **深入浅出JBPM** JBPM,全称Java Business Process Management,是一款开源的工作流管理系统,由JBoss组织开发,现在是Red Hat公司的产品。它提供了一整套解决方案,用于设计、执行、监控和优化业务流程。JBPM的...

    深入浅出jBPM完整版part1

    第 1 章 helloworld..............................................2 1.1 下载开发套件.............................................2 1.2 安装流程设计器 .........................................7 1.3 jBPM...

    深入浅出jBPM完整版.part4

    《深入浅出jBPM》深入浅出,示例丰富,实用性强,适合有一定Java基础的读者阅读。

    深入浅出jBPM电子书

    深入浅出jBPM电子书,JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有...

    深入浅出JBPM 采购实例

    【深入浅出JBPM 采购实例】是一个基于Myeclipse8.5、Tomcat6.0和JBPM3.2.3的实践教程,旨在帮助读者理解并掌握工作流管理系统JBPM在采购流程中的应用。在这个实例中,作者省略了邮件功能,因为JBPM3.2.3版本不包含...

    深入浅出jbpm系统开发

    【深入浅出jbpm系统开发】是一本专为jbpm工作流引擎初学者设计的入门指南,旨在帮助读者快速理解和掌握这一强大的开源工作流引擎。jbpm作为一个流行且功能丰富的工具,广泛应用于企业流程自动化、任务管理和决策支持...

    jbpm源码阅读之一

    压缩包中的文件 "Java23种设计模式(总结).doc" 显然是一个关于Java设计模式的文档,这与jbpm源码阅读紧密相关。设计模式是软件工程中的最佳实践,对于理解任何复杂系统的源码都是非常有帮助的。jbpm作为一个成熟的...

Global site tag (gtag.js) - Google Analytics