- 浏览: 7252333 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
1、创建公文流转相关的实体类,并创建数据库表
2、根据对用例的分析,初步建立公文流转相关的接口
3、实现接口
- 集成JBPM到OA系统(第一步:创建数据库表)
◆拷贝相关的依赖包到WEB-INF/lib下面(bsh.jar/ jcr-1.0.jar/ jbpm-identity.jar/ jbpm-jpdl.jar)
◆修改hibernate.cfg.xml,添加JBPM的映射配置,以及缓存属性的配置
◆因为JBPM中的User对象与OA系统中的User对象名称上有冲突,所以需要,修改OA系统中User映射的auto-import属性为"false"。(参考User.hbm.xml)
◆当修改了User映射的auto-import="false"之后,需要在查询User对象的时候,使用其全路径类名(请参考UserManagerImpl.java)
◆启动Tomcat,应能正确创建JBPM的所有数据库表
- 集成JBPM到OA系统(第二步:与Spring集成)
◆JBPM与Spring整合,需要用到第三方的集成包:spring-modules-0.8.zip
◆将其中的spring-modules-jbpm31.jar拷贝到WEB-INF/lib下面即可
◆JBPM与Spring整合的方法是:将JbpmConfiguration对象的创建交给Spring来完成
◆所以,JBPM与Spring整合需要在spring配置文件中配置JbpmConfiguration对象的创建
配置JbmpConfiguration
- <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
- <property name="configuration" value="classpath:jbpm.cfg.xml">
- property>
- bean>
◆这时候,需要jbpm.cfg.xml,这是JBPM的配置文件,我们可以从:JBPM_HOME\src\jpdl\org\jbpm目录下拷贝default.jbpm.cfg.xml文件,并重新命名为jbpm.cfg.xml
- 集成JBPM到OA系统(第三步:如何实现业务逻辑类,请参考WorkflowManagerImpl.java)
◆用到jbpmConfiguration对象的时候,需要注入
<property name="jbpmConfiguration" ref="jbpmConfiguration"></property>
◆当我们使用JbpmContext对象来操纵JBPM的时候,需要将JbpmContext的HibernateSession对象设置为当前的HibernateSession对象
- private JbpmContext getContext(){
- JbpmContext context = jbpmConfiguration.createJbpmContext();
- context.setSession(getSession());
- return context;
- }
流程的定义
流程的定义建议使用jBPM提供的eclipse下的插件,图形化配置插件安装文件可以到jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature\eclipse下找到,需注意版本。使用这种方式可以把定义的流程描述的三个文件压缩成zip包,统一的部署到数据库中,方便b/s系统中显示图片当前节点信息。
1插件安装
把jbpm-gpd-feature文件夹复制到C:\Program Files\MyEclipse-6.0M1\eclipse\plugins下,注意自己的ecplise路径。
在C:\Program Files\MyEclipse-6.0M1\eclipse\links文件夹下建立jbpm-gpd.link文件。内容如下:path=C:\\Program Files\\MyEclipse-6.0M1\\eclipse\\plugins\\jbpm-gpd-feature。
这样再重新启动eclipse就可以使用流程定义功能了。
2流程的定义
在Eclipse环境中选择file->new->other下的jboss jbpm->process definition流程定义。要在自己的项目文件中先指定文件要创建的文件夹。
这样会产生三个文件:gpd.xml、processdefinition.xml、processimage.jpg。
processimage.jpg文件是定义流程产生的图片、gpd.xml文件是图形文件的座标说明。用于在b/s下显示流程流转的图片位置。
评论
我是按照视频写的,我上传文件一点提交debug里就出现
Daemon Thread [http-8080-1] (Suspended (exception SQLException))
ServerPreparedStatement(PreparedStatement).executeUpdate(byte[][], InputStream[], boolean[], int[], boolean[], boolean) line: 1302
ServerPreparedStatement(PreparedStatement).executeUpdate(boolean) line: 1274
ServerPreparedStatement(PreparedStatement).executeUpdate() line: 1259
IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(PreparedStatement) line: 73
IdentityGenerator$GetGeneratedKeysDelegate(AbstractReturningDelegate).performInsert(String, SessionImplementor, Binder) line: 33
SingleTableEntityPersister(AbstractEntityPersister).insert(Object[], boolean[], String, Object, SessionImplementor) line: 2158
SingleTableEntityPersister(AbstractEntityPersister).insert(Object[], Object, SessionImplementor) line: 2638
EntityIdentityInsertAction.execute() line: 48
ActionQueue.execute(Executable) line: 250
DefaultSaveEventListener(AbstractSaveEventListener).performSaveOrReplicate(Object, EntityKey, EntityPersister, boolean, Object, EventSource, boolean) line: 298
DefaultSaveEventListener(AbstractSaveEventListener).performSave(Object, Serializable, EntityPersister, boolean, Object, EventSource, boolean) line: 181
DefaultSaveEventListener(AbstractSaveEventListener).saveWithGeneratedId(Object, String, Object, EventSource, boolean) line: 107
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).saveWithGeneratedOrRequestedId(SaveOrUpdateEvent) line: 187
DefaultSaveEventListener.saveWithGeneratedOrRequestedId(SaveOrUpdateEvent) line: 33
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).entityIsTransient(SaveOrUpdateEvent) line: 172
DefaultSaveEventListener.performSaveOrUpdate(SaveOrUpdateEvent) line: 27
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).onSaveOrUpdate(SaveOrUpdateEvent) line: 70
SessionImpl.fireSave(SaveOrUpdateEvent) line: 535
SessionImpl.save(String, Object) line: 523
SessionImpl.save(Object) line: 519
GraphSession.deployProcessDefinition(ProcessDefinition) line: 77
JbpmContext.deployProcessDefinition(ProcessDefinition) line: 173
WorkflowManagerImpl.deployProcessDefinition(byte[], byte[]) line: 61
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: 310
ReflectiveMethodInvocation.invokeJoinpoint() line: 182
ReflectiveMethodInvocation.proceed() line: 149
TransactionInterceptor.invoke(MethodInvocation) line: 106
ReflectiveMethodInvocation.proceed() line: 171
ExposeInvocationInterceptor.invoke(MethodInvocation) line: 89
ReflectiveMethodInvocation.proceed() line: 171
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204
$Proxy8.deployProcessDefinition(byte[], byte[]) line: not available
WorkflowAction.add(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 48
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
WorkflowAction(DispatchAction).dispatchMethod(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse, String) line: 270
WorkflowAction(DispatchAction).execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 187
DelegatingActionProxy.execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 110
RequestProcessor.processActionPerform(HttpServletRequest, HttpServletResponse, Action, ActionForm, ActionMapping) line: 431
RequestProcessor.process(HttpServletRequest, HttpServletResponse) line: 236
ActionServlet.process(HttpServletRequest, HttpServletResponse) line: 1196
ActionServlet.doPost(HttpServletRequest, HttpServletResponse) line: 432
ActionServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 710
ActionServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 803
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
PagerFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 29
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
OpenSessionInViewFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) line: 198
OpenSessionInViewFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 76
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
CharacterEncodingFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) line: 96
CharacterEncodingFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 76
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
StandardWrapperValve.invoke(Request, Response) line: 228
StandardContextValve.invoke(Request, Response) line: 175
StandardHostValve.invoke(Request, Response) line: 128
ErrorReportValve.invoke(Request, Response) line: 104
StandardEngineValve.invoke(Request, Response) line: 109
CoyoteAdapter.service(Request, Response) line: 216
Http11AprProcessor.process(long) line: 866
Http11AprProtocol$Http11ConnectionHandler.process(long) line: 716
AprEndpoint$Worker.run() line: 1498
Thread.run() line: 619
这样的异常,我在action中获取了值,能够取到
WorkflowActionForm waf = (WorkflowActionForm)form;
//判断上传文件是否为空,觉得是否抛出异常
System.err.println("----------------"+waf.getProcessDefinition().getFileData());
//部署流程
workflowManager.deployProcessDefinition(
waf.getProcessDefinition().getFileData(),
waf.getProcessImage().getFileData() );
请教了
我们的项目中使用的工作流,处理各种有一定的顺序的业务逻辑,好像你采用的是WorkFlow吧,在Spring的WorkFlow中好像有关于文件上传的业务流程的Demo哦
我是按照视频写的,我上传文件一点提交debug里就出现
Daemon Thread [http-8080-1] (Suspended (exception SQLException))
ServerPreparedStatement(PreparedStatement).executeUpdate(byte[][], InputStream[], boolean[], int[], boolean[], boolean) line: 1302
ServerPreparedStatement(PreparedStatement).executeUpdate(boolean) line: 1274
ServerPreparedStatement(PreparedStatement).executeUpdate() line: 1259
IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(PreparedStatement) line: 73
IdentityGenerator$GetGeneratedKeysDelegate(AbstractReturningDelegate).performInsert(String, SessionImplementor, Binder) line: 33
SingleTableEntityPersister(AbstractEntityPersister).insert(Object[], boolean[], String, Object, SessionImplementor) line: 2158
SingleTableEntityPersister(AbstractEntityPersister).insert(Object[], Object, SessionImplementor) line: 2638
EntityIdentityInsertAction.execute() line: 48
ActionQueue.execute(Executable) line: 250
DefaultSaveEventListener(AbstractSaveEventListener).performSaveOrReplicate(Object, EntityKey, EntityPersister, boolean, Object, EventSource, boolean) line: 298
DefaultSaveEventListener(AbstractSaveEventListener).performSave(Object, Serializable, EntityPersister, boolean, Object, EventSource, boolean) line: 181
DefaultSaveEventListener(AbstractSaveEventListener).saveWithGeneratedId(Object, String, Object, EventSource, boolean) line: 107
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).saveWithGeneratedOrRequestedId(SaveOrUpdateEvent) line: 187
DefaultSaveEventListener.saveWithGeneratedOrRequestedId(SaveOrUpdateEvent) line: 33
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).entityIsTransient(SaveOrUpdateEvent) line: 172
DefaultSaveEventListener.performSaveOrUpdate(SaveOrUpdateEvent) line: 27
DefaultSaveEventListener(DefaultSaveOrUpdateEventListener).onSaveOrUpdate(SaveOrUpdateEvent) line: 70
SessionImpl.fireSave(SaveOrUpdateEvent) line: 535
SessionImpl.save(String, Object) line: 523
SessionImpl.save(Object) line: 519
GraphSession.deployProcessDefinition(ProcessDefinition) line: 77
JbpmContext.deployProcessDefinition(ProcessDefinition) line: 173
WorkflowManagerImpl.deployProcessDefinition(byte[], byte[]) line: 61
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: 310
ReflectiveMethodInvocation.invokeJoinpoint() line: 182
ReflectiveMethodInvocation.proceed() line: 149
TransactionInterceptor.invoke(MethodInvocation) line: 106
ReflectiveMethodInvocation.proceed() line: 171
ExposeInvocationInterceptor.invoke(MethodInvocation) line: 89
ReflectiveMethodInvocation.proceed() line: 171
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204
$Proxy8.deployProcessDefinition(byte[], byte[]) line: not available
WorkflowAction.add(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 48
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
WorkflowAction(DispatchAction).dispatchMethod(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse, String) line: 270
WorkflowAction(DispatchAction).execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 187
DelegatingActionProxy.execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) line: 110
RequestProcessor.processActionPerform(HttpServletRequest, HttpServletResponse, Action, ActionForm, ActionMapping) line: 431
RequestProcessor.process(HttpServletRequest, HttpServletResponse) line: 236
ActionServlet.process(HttpServletRequest, HttpServletResponse) line: 1196
ActionServlet.doPost(HttpServletRequest, HttpServletResponse) line: 432
ActionServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 710
ActionServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 803
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
PagerFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 29
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
OpenSessionInViewFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) line: 198
OpenSessionInViewFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 76
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
CharacterEncodingFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) line: 96
CharacterEncodingFilter(OncePerRequestFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 76
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206
StandardWrapperValve.invoke(Request, Response) line: 228
StandardContextValve.invoke(Request, Response) line: 175
StandardHostValve.invoke(Request, Response) line: 128
ErrorReportValve.invoke(Request, Response) line: 104
StandardEngineValve.invoke(Request, Response) line: 109
CoyoteAdapter.service(Request, Response) line: 216
Http11AprProcessor.process(long) line: 866
Http11AprProtocol$Http11ConnectionHandler.process(long) line: 716
AprEndpoint$Worker.run() line: 1498
Thread.run() line: 619
这样的异常,我在action中获取了值,能够取到
WorkflowActionForm waf = (WorkflowActionForm)form;
//判断上传文件是否为空,觉得是否抛出异常
System.err.println("----------------"+waf.getProcessDefinition().getFileData());
//部署流程
workflowManager.deployProcessDefinition(
waf.getProcessDefinition().getFileData(),
waf.getProcessImage().getFileData() );
请教了
发表评论
-
编程的十四条经验
2013-05-06 10:32 1795排列不分先后: 1. 当 ... -
整合Struts2+JasperReport Web报表应用示例
2013-04-22 13:56 2248整合Struts2+JasperReport Web报表应用 ... -
关于H2使用的那些事
2012-12-14 16:40 27077在项目中采用H2作为工 ... -
Java 分割功能实现
2011-08-25 08:39 2744在项目针对比较大的文件需要文件的分割功能,特意写了一个 ... -
反射工具类
2010-04-25 10:47 2351package easyway.tbs.client.bm.u ... -
项目中Hibernate中Criteria和Query查询和模式引用
2010-02-21 15:52 2398在项目中Hibernate中Criteria和Q ... -
json 在项目中开发一个巧妙地应用
2009-12-12 16:49 3864在项目中需要保存客户的信息到Cookie中,因为客户要求 ... -
项目中使用时间工具类
2009-11-21 16:43 2988项目中使用的时间工具类的主要的采用commons-l ... -
将HTML文件转换为图片应用开发
2009-10-21 11:15 4406项目使用的基 ... -
Spring项目的测试用例
2009-08-22 12:49 2285在项目的开发过程中使用Junit4测试代码,使用 ... -
Hibernate正向工程hbm2ddl
2009-08-19 10:14 2259一般在项目开 ... -
Hibernate中用户类型(User Type)应用
2009-08-16 09:08 3092在项目中许多地方使用枚举类,枚举对象值对应数据一个常 ... -
关于常用城市控件中数据的处理方案
2009-08-15 19:41 2365在项目中由于多次使用的国家省份城市的控件,以前采 ... -
在Spring2.5注解时必须注意几点
2009-08-15 19:22 2094项目中采用Spring2.5配置重点内容如下: ... -
中文转换拼音的实现思路以及实现
2009-08-15 18:40 2835在项目中一位大师兄写的中文转换拼音代码:自己整理一下 ... -
在项目中一些相关常量数组使用枚举应用
2009-08-15 18:01 2548在项目中采用Hibernate中支持枚举类型因此我们使用许 ... -
在项目开发中关于Hibernate注解的配置的一些说明
2009-08-15 13:26 4310在项目开发中采用Hibernate3注解方式实现关 ... -
关于项目中泛型的应用
2009-08-15 12:38 2348在项目采用JDK1.6采用泛型开发,在开发应用之中减少了大 ... -
针对项目中XML解析的扩展应用
2009-08-15 12:14 2542由于项目中多个需 ...
相关推荐
jbpm4.3与spring整合的一个小文档
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
近期网上有人介绍jBPM4与Spring整合的2种方式,但没有人贴出代码,闲着无聊写了个例子,源码见附件,在WEBLOGIC下运行正常,事务由spring控制http://ip:7001/Spring/helloWorld.do
在spring3中整合jbpm5的例子,前台用spring mvc3做了简单的页面。 其中用到了jbpm5的persistence,local human service等,简单、完整。 用的mysql数据库,修改下spring datasource的配置,然后用mvn jetty:run编译...
jbpm与spring集成开发指南,描述了jbpm与spring开发过程。
jBPM4与Spring整合的2种方式,JBPM技术现在已经不是最好最新的了,随着国人对工作流理解的深入,现在厂商普遍自己设计开发工作流引擎。
JBPM4.4+spring+ext整合
jbpm4.4 ibatis-spring 整合
JBPM4.3与Spring会签 实例,欢迎交流ningjinlin@gmail.com
JBPM与Spring集成开发指南.docx
JBPM与Spring集成开发指导书.docx
JBPM与Spring集成开发指导书.doc
jbpm5.4 spring mvc 集成开发 Jetty maven JTA 事务等配置!
jbpm spring驱动,这个驱动用于jbpm集成spring情况。
spring+jbpm的配置示例,jbpm配置,希望大家一起进行学习,共同提高
JBPM+STRUTS+SPRING整合
介绍JBPM基本内容和与Spring集成关键点。文章没有排版,但内容很有价值。
NULL 博文链接:https://1960370817.iteye.com/blog/2392653