ssh+jbpm整合

上传人:muj****520 文档编号:156854670 上传时间:2022-09-28 格式:DOCX 页数:36 大小:17.05KB
收藏 版权申诉 举报 下载
ssh+jbpm整合_第1页
第1页 / 共36页
ssh+jbpm整合_第2页
第2页 / 共36页
ssh+jbpm整合_第3页
第3页 / 共36页
资源描述:

《ssh+jbpm整合》由会员分享,可在线阅读,更多相关《ssh+jbpm整合(36页珍藏版)》请在装配图网上搜索。

1、简述 Jbpm工作流框架与现有ssh框架的集成工作其实很简单,但国内外的资料太小,所以会在集成时走入太多误区,本文是在struts1.2,spring2.5,hibernate3.2上集成成功的详细步骤。其中解决了,jbpm的访问数据库session与原有hibernate的session不同的问题,string-max大字段问题。完成了流程部署web及后台程序。利用spring-modules-0.8当中的spring31做为集成的桥梁(其实它已经做好了集成,但文档和实例实在是太简单)。 使用jbpm-starters-kit-3.1.4生成数据库表及安装eclipse图形化配置插件 1下载

2、jbpm-starters-kit-3.1.4到其网站,包含所有需要的工具及jar包。 2数据库的安装以oracle为例,其它数据库可按此例修改。 2.1创建所需用户及表空间,如果有了用户和表空间就不需要了。 2.2 找到jbpm-starters-kit-3.1.4文件夹,在其下的jbpm文件夹的下级文件夹lib中加入oracle的驱动包ojdbc14.jar. 2.3 在jbpmsrcresources文件夹下建立oracle文件夹, 将jbpmsrcresourceshsqldb里的create.db.hibernate.properties和identity.db.xml文件copy到

3、刚刚建立的oracle文件夹当中. 2.4 修改create.db.hibernate.properties文件,修改目标数据库的连接属性如下: # these properties are used by the build script to create # a hypersonic database in the build/db directory that contains # the jbpm tables and a process deployed in there hibernate.dialect=org.hibernate.dialect.OracleDialect h

4、ibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver hibernate.connection.url=jdbc:oracle:thin:10.62.1.12:1521:oracle hibernate.connection.username=dpf hibernate.connection.password=dpf hibernate.show_sql=true hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider 2.5

5、修改jbpmsrcconfig.fileshibernate.cfg.xml文件,同样是配置数据库的连接属性如下: org.hibernate.dialect.OracleDialect oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:10.62.1.12:1521:oracle dpf dpf org.hibernate.cache.HashtableCacheProvider 2.6 修改jbpmbuild.deploy.xml文件.找到create.db项并进行如下修改: 2.7 配置ant,在jbpm目录执行 ant create.db

6、 buildfile build.deploy.xml命令。 会有一些小错误的提示,没有关系数据库的表已经建立完成。 2.8 eclipse的图形化配置插件安装文件可以到jbpm-starters-kit-3.1.4jbpm-designer jbpm-gpd-featureeclipse下找到,需注意版本。 部署jbpm的jar包和moudle的jar包 1 把如下jar包放入WEB-INFlib文件夹下, spring-modules-jbpm31.jar可以在 spring-modules-0.8下找到,其它的都属于jbpm工具包。 bsh-1.3.0.jar bsf.jar sprin

7、g-modules-jbpm31.jar jbpm-webapp-3.1.4.jar jbpm-identity-3.1.4.jar jbpm-3.1.4.jar 部署hbm文件到项目 1 在jbpm文件夹中找到所有的*.hbm.xml数据库映射文件。放到项目的一个文件夹当中。本例放到comgresoftsecuritymodelhbm文件夹中。并且在hibernate的sessionfactory建立时,设置为相关路径配置。 2 此文件需在spring管理的hibernate配置文件下修改,本例为 dataAccessContext-hibernate.xml,如下: org.hiberna

8、te.dialect.Oracle9Dialect true org.hibernate.cache.EhCacheProvider true classpath*:/com/gresoft/security/model/hbm/ 设置大字段string-max 1 此文件需在spring管理的hibernate配置文件下修改,本例为 dataAccessContext-hibernate.xml,如下: 配置configration、template 说明: jbpmConfiguration是根据springmodules所提供的 LocalJbpmConfigurationFactory

9、Bean进行配置,其集成好对jbpmConfiguration的管理。在系统使用时JbpmConfiguration需调用jbpmTemplate的jbpmTemplate.getJbpmConfiguration()方法得到。 1 此文件需在spring管理的hibernate配置文件下修改,本例为 dataAccessContext-hibernate.xml,如下: 2 增加类路径中jbpm.cfg.xml文件,可以根据 jbpm-starters-kit-3.1.4jbpmsrcjava.jbpmorgjbpmdefault.jbpm.cfg.xml 复制后修改。本例放到/datasq

10、l/jbpm.cfg.xml下。上面配置文件有相关配置。全部内容如下: ! - 增加如下内容 - !- 不再使用- 过滤器的设置与建立 过滤器的建立是为了保证一个session的正常工作。 1 web.xml中的修改 本例中描述如下: JbpmContextFilter ponents.jbpm.JbpmContextHolder 2建立对应的类文件 本例中描述如下: package ponents.jbpm; import java.io.IOException; import java.io.Serializable; import java.security.Principal; imp

11、ort javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.jbpm.JbpmConfiguration; import org

12、.jbpm.JbpmContext; import org.springframework.web.context.WebApplicationContext; public class JbpmContextHolder implements Filter, Serializable private static final long serialVersionUID = 1L; String jbpmConfigurationResource = null; String jbpmContextName = null; boolean isAuthenticationEnabled = t

13、rue; public void init(FilterConfig filterConfig) throws ServletException / get the jbpm configuration resource this.jbpmConfigurationResource = filterConfig .getInitParameter(jbpm.configuration.resource); / get the jbpm context to be used from the jbpm configuration this.jbpmContextName = filterConf

14、ig .getInitParameter(jbpm.context.name); if (jbpmContextName = null) jbpmContextName = JbpmContext.DEFAULT_JBPM_CONTEXT_NAME; / see if authentication is turned off String isAuthenticationEnabledText = filterConfig .getInitParameter(authentication); if (isAuthenticationEnabledText != null) & (disable

15、d.equalsIgnoreCase(isAuthenticationEnabledText) isAuthenticationEnabled = false; public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException String actorId = null; / see if we can get the authenticated swimlaneAct

16、orId if (servletRequest instanceof HttpServletRequest) HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; Principal userPrincipal = httpServletRequest.getUserPrincipal(); if (userPrincipal != null) actorId = userPrincipal.getName(); JbpmContext jbpmContext = getJbpmConfigur

17、ation(servletRequest) .createJbpmContext(jbpmContextName); try if (isAuthenticationEnabled) jbpmContext.setActorId(actorId); filterChain.doFilter(servletRequest, servletResponse); finally jbpmContext.close(); /* * 从spring获取JbpmConfiguration的bean加载方式 */ protected JbpmConfiguration getJbpmConfiguratio

18、n( ServletRequest servletRequest) WebApplicationContext webApplicationContext = (WebApplicationContext) (HttpServletRequest) servletRequest) .getSession() .getServletContext() .getAttribute( WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); JbpmConfiguration jbpmConfiguration = (JbpmCon

19、figuration) webApplicationContext .getBean(jbpmConfiguration); / 得到业务Bean(在这里是你需要注入的bean) System.out.println(-); System.out.println(jbpmconfiguration对象化= + jbpmConfiguration.toString(); System.out.println(-); return jbpmConfiguration; public void destroy() 编写发布流程定义xml的人机页面及程序 1 JSP页面使用struts1.2,spri

20、ng2.0,hibernate3.2框架。此为流程发布页面。 请选择要发布的流程文件 2 后台对应类 /* * 文件名: JbpmAction.java * 版本: * 描述: * 版权所有: * / * 创建者: 沙振中 * 创建日期: Dec 27, 2007 * 修改者: * 修改日期: * 修改说明: */ package com.gresoft.security.web; import java.io.InputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSer

21、vletResponse; import mons.beanutils.DynaBean; import mons.logging.Log; import mons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.jbpm.J

22、bpmContext; import org.jbpm.graph.def.ProcessDefinition; import org.springmodules.workflow.jbpm31.JbpmTemplate; import mons.core.web.StrutsAction; public class JbpmAction extends StrutsAction private static Log log = LogFactory.getLog(JbpmAction.class); private JbpmTemplate jbpmTemplate; public void

23、 setjbpmTemplate(JbpmTemplate jbpmTemplate) this.jbpmTemplate = jbpmTemplate; /* * 进入上传流程主页面 * param mapping * param form * param request * param response * return */ public ActionForward index(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) return m

24、apping.findForward(delpoyindex); /* * 上传流程文件 * param mapping * param form * param request * param response * return */ public ActionForward deploy(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception DynaBean dy = (DynaBean) form; FormFile

25、 file = (FormFile) dy.get(workflowfile); InputStream is = file.getInputStream(); JbpmContext jbpmContext = jbpmTemplate.getJbpmConfiguration().createJbpmContext(); ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(is); /利用容器的方法将流程定义数据部署到数据库上 jbpmContext.deployProcessDefinition(processDefinition); / 关闭 jbpmContext jbpmContext.close(); / 提交到数据库当中,使用统一的session jbpmTemplate.getHibernateTemplate().flush(); log.info(流程部署成功!); return mapping.findForward(delpoyindex); 注:相关ssh配置文件的设置需根据自己实际项目为准。 写在最后 通过上述集成的工作,可以使你的项目中很好的集成jbpm。Jbpm流程的设置需根据实际业务相绑定。现在我们就可以在项目当中应用工作流了。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!