`
shazhenzhong
  • 浏览: 17644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jbpm与ssh完整示例(二)

阅读更多
流程的发布常用的有二种方式:直接发布processdefinition.xml定义的xml文件, 在以前的文章描述中使用的方式。建议使用第二种方式,gpd.xml、processdefinition.xml、processimage.jpg压缩成zip文件上传。注rar不可以,java当中不支持这种商业化的压缩文件。

代码如下:

1 deployjbpm.jsp下选择zip压缩文件上传

<%@ page contentType="text/html;charset=UTF-8"%>

<%@ include file="/commons/taglibs.jsp"%>

<html>

<head>

</head>

<body>

<form action="${ctx}/jbpmdeploy.do?method=deploy" enctype="multipart/form-data" method="post" />

      选择zip类型流程上传 : <input type="file" name="file" />

      <br/>

      <input type="submit">

    </form>

</body>

</html>



2 struts中的action文件

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;



import com.shane.commons.core.web.StrutsAction;

import com.shane.security.service.UploadProcessManager;



public class JbpmAction extends StrutsAction {



         private static Log log = LogFactory.getLog(JbpmAction.class);



         private UploadProcessManager uploadProcessManager;

        

         public void setUploadProcessManager(UploadProcessManager uploadProcessManager) {

                   this.uploadProcessManager = uploadProcessManager;

         }

        

    /**

     * 上传流程文件

     * @param mapping

     * @param form

     * @param request

     * @param response

     * @return

     */

    public ActionForward deploy(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response)throws Exception {        

             log.info("执行流程部署!");

             log.info(uploadProcessManager.handleRequest(request));

                   return mapping.findForward("delpoyindex");

         }

     

}



3 Service类,使用时要修改自已的hibernate的封装。代码中使用spring的设置式注入方式。相关文件可以自行编写。本方式是根据jbpm自带的示例改写。

3.1接口定义

import java.io.IOException;



import javax.servlet.http.HttpServletRequest;



public interface UploadProcessManager {



         public void printInput(HttpServletRequest request) throws IOException;

        

         public String handleRequest(HttpServletRequest request);

}



3.2实现类

import java.io.IOException;

import java.io.InputStream;

import java.util.Iterator;

import java.util.List;

import java.util.zip.ZipInputStream;



import javax.servlet.http.HttpServletRequest;



import org.apache.commons.fileupload.DiskFileUpload;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUpload;

import org.apache.commons.fileupload.FileUploadException;

import org.jbpm.JbpmConfiguration;

import org.jbpm.JbpmContext;

import org.jbpm.graph.def.ProcessDefinition;



import com.shane.commons.core.dao.HibernateEntityDao;



public class UploadProcessManagerImpl extends HibernateEntityDao implements UploadProcessManager{

        

         private JbpmConfiguration jbpmConfiguration;

        

         public void printInput(HttpServletRequest request) throws IOException {

                   InputStream inputStream = request.getInputStream();

                   StringBuffer buffer = new StringBuffer();

                   int read;

                   while ((read = inputStream.read()) != -1) {

                            buffer.append((char)read);

                   }

         }

        

         public String handleRequest(HttpServletRequest request) {



             if (!FileUpload.isMultipartContent(request)) {

                      return "Not a multipart request";

             }

                   try {

                       DiskFileUpload fileUpload = new DiskFileUpload();

                       List list = fileUpload.parseRequest(request);

                       Iterator iterator = list.iterator();

                       if (!iterator.hasNext()) {

                                return "No process file in the request";

                       }

                       FileItem fileItem = (FileItem)iterator.next();

                       if (fileItem.getContentType().indexOf("application/x-zip-compressed") == -1) {

                                return "Not a process archive";

                       }

                       return doDeployment(fileItem);

                   } catch (FileUploadException e) {

                            e.printStackTrace();

                            return "FileUploadException";

                   }                

         }

        

         public String doDeployment(FileItem fileItem) {

                   try {

                      ZipInputStream zipInputStream = new ZipInputStream(fileItem.getInputStream());

                      JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();

            if(jbpmContext == null) {

                               jbpmContext = this.getJbpmContext();

                      }

                      ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);   

                      jbpmContext.deployProcessDefinition(processDefinition);

                      zipInputStream.close();

                      return "Deployed archive " + processDefinition.getName() + " successfully";

                   } catch (IOException e) {

                            return "IOException";

                   }

         }

        

         private JbpmContext getJbpmContext(){

                   JbpmContext context = jbpmConfiguration.getInstance().createJbpmContext();

                   context.setSession(this.getSession());

                   return context;

         }



        

         public void setJbpmConfiguration(JbpmConfiguration jbpmConfiguration) {

                   this.jbpmConfiguration = jbpmConfiguration;

         }

        

}



分享到:
评论
4 楼 atchina 2009-06-15  
如果有完整的项目就好了
3 楼 flysunsystem 2009-02-12  
期待上传完整的项目。哈哈。
2 楼 flysunsystem 2009-02-06  
楼主:能不能给个完整的例子?谢谢了

我的邮箱是flysunmicro@gmail.com
1 楼 sskhnje 2009-01-12  
谢谢啊, 好文章, 学到很多东西。
期待更新,谢谢

相关推荐

    jbpm_ssh.zip_jbpm+ssh

    **jbpm_ssh.zip_jbpm+ssh** 是一个包含jbpm(Java Business Process Management)与SSH(Spring、Struts和Hibernate)集成示例的压缩包。这个集成是企业级Java应用开发中的常见实践,旨在利用jbpm的强大工作流管理...

    jbpm 整合 ssh框架

    - `jbpm与ssh框架集成.mht` 文件可能包含了一个完整的示例,演示了如何在SSH项目中启动和控制jbpm流程。 - `jbpm 4_3 与 spring 集成 - AJava.mht` 文件可能是关于jbpm 4.3版本与Spring集成的详细教程,包括具体的...

    jbpm+SSH完整例子,有详细文档说明

    这个“jbpm+SSH完整例子”正是结合了这两种技术,为初学者提供了一个学习和理解jbpm工作流以及SSH框架集成的实用示例。 首先,jbpm的核心功能包括流程定义、流程实例管理、任务服务、事件处理等。它使用BPMN 2.0...

    jbpm+ssh整合

    【jbpm+ssh整合】是将企业级工作流引擎jbpm与流行的SSH(Struts、Spring、Hibernate)框架集成,实现一个完整的业务流程管理系统。jbpm是一个开源的工作流引擎,可以处理复杂的业务流程自动化,而SSH是Java开发中...

    jbpm +ssh整合

    在Java开发中,jbpm与SSH的整合可以实现业务流程管理和后端服务的无缝对接,提高系统的灵活性和可扩展性。 首先,我们来了解jbpm的核心功能。jbpm支持BPMN2(Business Process Model and Notation 2.0)标准,这是...

    工作流 JBPM SSH 示例

    工作流JBPM SSH示例是将企业级工作流管理系统JBPM与流行的Java开发框架SSH(Struts、Spring、Hibernate)整合的一个典型应用。这个示例旨在帮助开发者理解如何在Java Web环境中集成工作流管理,以实现更高效的企业...

    jbpm整合ssh的例子

    【jbpm整合ssh的例子】是关于如何将Java业务流程管理(jbpm)系统与Spring(ssh中的S)、Struts(ssh中的s)和Hibernate(ssh中的h)这三大流行开源框架进行集成的一个示例项目。这个例子展示了在Tomcat应用服务器上...

    JBPM4.4SSH案例,有jar包

    总之,这个【JBPM4.4 SSH案例】提供了一个完整的开发环境,不仅包含了JBPM4.4的核心功能,还有前端设计工具和一个实际的业务流程实例。开发者可以通过加载和运行这个项目,深入了解BPM系统的运作机制,以及如何在SSH...

    jBPM4实战系列(二)jBPM4.4+ssh 整合配置及完整实例

    "jBPM4实战系列(二)jBPM4.4+ssh 整合配置及完整实例" 这个标题表明我们将会探讨一个关于jBPM4的具体实战项目,特别关注的是如何将jBPM4版本与SSH(Spring、Struts和Hibernate)框架整合,并提供了一个完整的实现示例...

    jBPM4.4与ssh整合

    **jBPM4.4与SSH整合详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。SSH(Struts、Spring、Hibernate)是Java开发中的...

    JBPM4.4 + ssh2 + mssql2008请假流程设计示例

    【标题】"JBPM4.4 + ssh2 + mssql2008请假流程设计示例"是一个关于企业级工作流管理系统实现的实践项目,它结合了JBPM(Java Business Process Management)4.4版本、SSH2(Struts2、Spring、Hibernate)三大框架...

    jbpm与SSH的整合

    有代码示例也有文档说明,适合学习JBPM的童鞋们上手

    SSH jbpm4 ExtJs 完整配置,完整实例

    在这个实例中,jbpm4与SSH框架集成,提供了流程定义和执行的能力。 5. ExtJs:ExtJs是一个强大的JavaScript库,用于创建交互式的Web应用。WebRoot目录下可能包含ExtJs的库文件和使用ExtJs编写的前端界面代码。 6. ...

    jbpm4与SSH整合

    【jbpm4与SSH整合】是一项在Java企业级开发中常见的技术融合,涉及到Spring(简称SSH中的S)、Struts(S)和Hibernate(H)这三个主流的开源框架,以及jbpm(Java Business Process Management,一个流程管理框架)...

    JBPM web(SSH+JBPM) 例子

    【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...

    SSH整合JBPM

    学习SSH整合JBPM通常涉及阅读官方文档、参考示例项目、查阅在线教程等。这些资源可以帮助开发者了解整合步骤,解决实际问题。 7. **实战案例**:"SSHJBPM"可能是整合后的项目名称,可能包含配置文件、源代码、测试...

    jbpm4.4 shh2 项目示例

    jbpm4.4 shh2 项目示例是基于jbpm4.4版本与SSH2(Struts2、Spring和Hibernate)集成的一个实战项目。jbPM(Business Process Management)是一款开源的工作流管理系统,用于实现业务流程自动化。SSH2是Java开发中的...

    jBPM4.4与SSH框架的整合

    【jbpm4.4与SSH框架的整合】 jBPM,即java Business Process Managerment,是一个基于JavaEE的轻量级工作流管理包,属于JBoss组织的一个子项目。它提供了一套完整的流程管理和执行机制,帮助企业处理复杂业务流程...

    jBPM4.4Pssh.rar_jbpm-4.4_ssh jbpm_工作流OA

    在本压缩包 "jBPM4.4Pssh.rar" 中,重点是将 jbPM 4.4 与 SSH(Struts、Spring 和 Hibernate)框架整合的示例。SSH 是 Java Web 开发中常见的三大框架,它们分别负责视图层、业务层和数据持久层的管理。 Struts 是...

Global site tag (gtag.js) - Google Analytics