`
sun201200204
  • 浏览: 299319 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

将JBPM4整合到web工程

    博客分类:
  • j2ee
阅读更多
1.在eclipse里面创建一个动态的web项目。

2.在lib目录下加入依赖库(由于我们在jsp中需要用到jstl标签,所以这里我们还必须加入jstl的依赖库)

引用

*JBPM4_HOME/jbpm.jar
*JBPM4_HOME/lib/*.jar
*jakarta-taglibs-standard-1.1.2_HOME/lib/jstl.jar
*jakarta-taglibs-standard-1.1.2_HOME/lib/standard.jar

用tomcat6页面会报错,
解决方法:

方法一:换成tomcat5.5 一点问题也没有了

方法二:将juel.jar, juel-engine.jar, juel-impl.jar这三个包复制到tomcat6下lib中,并删除原来的el-api.jar,切记要把WEB-INF\lib中的juel.jar, juel-engine.jar, juel-impl.jar删除。不然还是要冲突。


3.在项目的Java Resources目录下创建一个resources目录,并且把“JBPM4初探---HelloWorld”项目中src目录下的所有配置文件拷到resources目录下。

4.在项目的src目录一个java文件(servlet),用来编写我们发布流程并获取最新发布的流程定义
package com.test;   
  
import java.io.IOException;   
import java.util.ArrayList;   
import java.util.LinkedHashMap;   
import java.util.List;   
import java.util.Map;   
  
import javax.servlet.ServletConfig;   
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
import org.jbpm.api.Configuration;   
import org.jbpm.api.ProcessDefinition;   
import org.jbpm.api.ProcessDefinitionQuery;   
import org.jbpm.api.ProcessEngine;   
import org.jbpm.api.RepositoryService;   
  
public class JbpmServlet extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
    private ProcessEngine processEngine = null;   
    private RepositoryService repositoryService = null;   
  
    /* 初始化ProcessEngine. */  
    public void init(ServletConfig config) throws ServletException {   
        processEngine = new Configuration().buildProcessEngine();   
        repositoryService = processEngine.getRepositoryService();   
    }   
  
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        process(request, response);   
    }   
  
    protected void doPost(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        process(request, response);   
    }   
  
    protected void process(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        String zzg = request.getParameter("zzg");   
        if (zzg.equals("deploy")) {   
            deployProcessDefinition(request, response);   
        } else {   
            removeProcessDefinitionById(request, response);   
        }   
        List list = getLatestProcessDefinition(request, response);   
        request.setAttribute("process", list);   
        request.getRequestDispatcher("/index.jsp").forward(request, response);   
    }   
  
    /**  
     * 发布流程方法  
     * @param request  
     * @param response  
     * @throws ServletException  
     * @throws IOException  
     */  
    protected void deployProcessDefinition(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        String xml = request.getParameter("xml");   
        repositoryService.createDeployment().addResourceFromString(   
                "hello.jpdl.xml", xml).deploy();   
    }   
  
    /* 获取所有最新流程. */  
    protected List<ProcessDefinition> getLatestProcessDefinition(   
            HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        //获取全部的流程定义   
        List<ProcessDefinition> processDefinitions = repositoryService   
                .createProcessDefinitionQuery().orderAsc(   
                        ProcessDefinitionQuery.PROPERTY_NAME).list();   
           
        Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();   
        for (ProcessDefinition pd : processDefinitions) {   
            String key = pd.getKey();   
            ProcessDefinition definition = map.get(key);   
            if ((definition == null)   
                    || (definition.getVersion() < pd.getVersion())) {   
                map.put(key, pd);   
            }   
        }   
        return new ArrayList(map.values());   
    }   
  
    /* 删除流程定义. */  
    protected void removeProcessDefinitionById(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        String id = request.getParameter("id");   
                //根据流程ID获取流程定义实例   
                //注意:jbpm4是不允许直接根据流程定义的ID来直接删除流程定义的   
        ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()   
                .processDefinitionId(id).uniqueResult();   
  
        repositoryService.deleteDeploymentCascade(pd.getDeploymentId());   
    }   
}  
}


5.在项目的webapp目录建立一个index.jsp,主要用来发布流程并显示最新发布的流程
<%@page contentType="text/html;charset=UTF-8" %>   
<%@page import="org.jbpm.api.*" %>   
<%@page import="java.util.*" %>   
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>   
  
<html>   
    <head>   
        <title>jbpm学习</title>   
    </head>   
    <body>   
        <form action="jbpm?zzg=deploy" method="post">   
            <textarea name="xml" cols=50 rows=15></textarea>   
            <input type="submit" value="发布"/>   
            <input type="reset" value="取消"/>   
        </form>   
        <table width=430 border=1>   
            <tr>   
                <td>ID</td>   
                <td>Key</td>   
                <td>名称</td>   
                <td>版本</td>   
                <td>操作</td>   
            </tr>   
            <c:forEach var="process" items="${process}">   
            <tr>   
                <td>${process.id}</td>   
                <td>${process.key}</td>   
                <td>${process.name}</td>   
                <td>${process.version}</td>   
                <td><a href="jbpm?zzg=delete&id=${process.id }">删除</a></td>   
            </tr>   
            </c:forEach>   
        </table>   
    </body>   
</html>  


6.修改项目下的web.xml文件
 
    <servlet>   
        <description />   
        <servlet-name>JbpmServlet</servlet-name>   
        <servlet-class>com.test.JbpmServlet</servlet-class>   
    </servlet>   
    <servlet-mapping>   
        <servlet-name>JbpmServlet</servlet-name>   
        <url-pattern>/jbpm</url-pattern>   
    </servlet-mapping>   


7.为项目创建一个服务器,做测试。
在文本框中输入:
<?xml version="1.0" encoding="UTF-8"?>

<process name="hello" xmlns="http://jbpm.org/4.3/jpdl">
   <start g="235,38,48,48" name="start1">
      <transition name="to state1" to="state1" g="-59,-17"/>
   </start>
   <state g="214,154,92,52" name="state1">
      <transition name="to end1" to="end1" g="-47,-17"/>
   </state>
   <end g="240,284,48,48" name="end1"/>
</process>

如果没报错,测试成功。
分享到:
评论
1 楼 独门记忆 2011-12-15  
请问怎样在Tomcat服务器中运行该项目,进行相关的操作呢?

相关推荐

    jbpm—web工程

    【jbpm—web工程】是一个综合性的项目,它将jbpm(Java Business Process Management)与Struts、Spring和Hibernate这三大主流的Java开发框架进行了深度整合。该项目的主要目的是构建一个功能完善的Web应用程序,...

    jBPM4.4整合SSH2

    jBPM 4.4 与 SSH2 的整合是一个涉及多层面的工程,涵盖了 Web、业务逻辑和持久化等关键部分。通过合理的配置和库文件管理,可以充分利用 SSH2 的优点,为 jBPM 提供一个强大且稳定的运行环境。在实际应用中,开发者...

    jbpm整合s2sh

    在jbpm整合s2sh中,Struts2作为前端控制器,接收用户的交互,将请求转发到相应的业务逻辑处理。 2. **Spring**:Spring框架是Java企业级应用的核心,提供了依赖注入(DI)和面向切面编程(AOP)等特性。在jbpm整合...

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

    这个压缩包包含了使用这些技术进行开发所需的各种配置文件和源代码,下面我们将详细探讨这些组件以及如何将它们整合在一起。 1. Spring框架:Spring是Java领域的一个核心框架,提供依赖注入(DI)和面向切面编程...

    每天一课—family168—JBPM(2)

    下面将详细讲解jBPM4整合到Web工程的关键知识点: 1. **jBPM简介**:jBPM4是jBPM的一个版本,提供了一套完整的工具集,包括流程建模、部署、执行、监控和管理。它支持BPMN 2.0标准,使得业务流程模型更加直观且易于...

    将FineReport应用集成到JBPM工程中

    #### 整合web.xml文件 1. **添加servlet和servlet-mapping**:为了使FineReport能够在JBPM项目中正常运行,需要在JBPM项目的`web.xml`文件中添加新的`servlet`和`servlet-mapping`配置。具体做法是将FineReport安装...

    jbpm4.4-请假流程

    你提到的"jbpm4web"可能是一个包含所有必要文件的Web工程,这通常包括源代码、配置文件、资源文件以及必要的依赖库。 导入项目到Eclipse后,你需要确保你的开发环境中已经安装了支持Java的Web容器,例如Tomcat 6。...

    斯坦福特jbpm培训ppt

    创建一个基于jbPM的Web工程,首先要创建一个带有Struts特性的Web工程。接着,配置jbPM的相关文件,如hibernate.cfg.xml用于定义数据库连接,jbpm.cfg.xml用于设置运行时参数,jbpm.mail.templates.xml处理邮件通知,...

    JBPM3.2与Spring结合时任务调度的实现.doc

    首先,你需要下载`spring-modules-0.8`工程包,并从中提取`spring-modules-jbpm31.jar`放入Web应用的`WEB-INF/lib`目录。尽管这个jar文件是为JBPM3.1设计的,但它也能用于JBPM3.2,因为它们的核心机制并没有太大变化...

    JBPM5.1入门学习

    - 创建Web工程:使用Eclipse创建一个新的Web项目,并导入必要的依赖。 - 导入SSH相关依赖:为了支持Spring、Hibernate和Struts框架,需要添加相应的依赖。 - 导入JBPM相关依赖:确保所有必需的JBPM库文件都已正确...

    spring整合JPBM3.2

    首先,你需要获取`spring-modules-0.8`的工程包,并从中提取出`spring-modules-jbpm31.jar`,将其放入Web应用的`WEB-INF/lib`目录下。尽管这个jar文件是为了3.1.x准备的,但在3.2.1版本中,它依然能够提供支持。 接...

    斯坦福特jbpm培训ppt不错的资料噢

    斯坦福特jbpm培训的资料涵盖了jBPM整合Struts、Hibernate(SSH)的实践,包括需求分析、业务数据库设计、工程搭建、流程图创建、任务分配、流程配置、邮件通知的实现以及流程图的可视化展示。通过对这些内容的学习,...

    jbpm 项目实践 1.2 (集成appfuse spring modules)

    通过Spring的ApplicationContext,我们可以方便地将jbpm的Service、SessionFactory等注入到我们的应用中,实现解耦和模块化。 3. **AppFuse的角色**:AppFuse提供了一个基本的应用模板,其中包括了Spring、...

    Java软件开发工程师简历.pdf

    在 JavaEE 方面,该工程师熟悉 Struts2、Spring、Hibernate 等企业主流开发框架技术,并了解 Mybatis 的 CRUD 操作,能够使用 Mybatis+Struts2+Spring 架构整合。同时,熟悉 JBPM 工作流引擎,能够独立完成工作流的...

    软件工程师简历模板式样.doc

    - **电信故障管理系统**:使用Extjs提升用户体验,Struts2和Spring进行控制和事务管理,Hibernate Annotation进行持久化,引入JBPM4实现工作流,体现了对Web开发、框架集成和工作流管理的深入理解。 - **电信安全...

    姓名_javaEE软件工程师_2年_模板(42).doc

    - 熟练掌握 Spring 框架,包括 IOC 和 DI、AOP 编程、声明式事务处理及 SSH 的整合等技术。 7. Mybatis 和 SpringMVC 框架: - 熟悉 Mybatis 和 SpringMVC 开源框架。 8. 数据库技能: - 熟悉 Oracle 和 MySQL ...

    姓名-javaEE软件工程师-2年-模板(48).doc

    他对工作流技术JBPM有深入理解,熟悉Lucene和Compass搜索引擎工具,懂得Web Service,并能运用POI处理Excel文件。在项目开发和管理上,他熟练使用SVN和Maven,也熟悉Linux常用命令。 在大数据处理领域,王强熟悉...

    姓名_javaEE软件工程师_2年_模板(50).doc

    景鑫是一位拥有2年工作经验的JavaEE软件工程师,他的专业技能涵盖了Java编程、Web开发、数据库管理、脚本语言、框架技术、工作流、搜索引擎、Web服务、大数据处理等多个方面。他的求职意向是寻找在北京的全职JavaEE...

    (完整word)Java软件开发工程师简历.docx

    4. **Mybatis与数据库**:了解Mybatis的CRUD操作,能够利用Mybatis+Struts2+Spring架构进行系统整合,这有助于高效地进行数据库操作和业务逻辑处理。 5. **工作流引擎**:熟悉JBPM工作流引擎,能够独立完成工作流的...

    Java个人简历模板4.doc

    【Java个人简历模板4.doc】是一个Java开发者的简历,展示...这份简历充分体现了开发者全面的Java技能,从基础到进阶,从Web开发到大数据处理,再到项目实施经验,显示出开发者具备成为一名合格的Java软件工程师的能力。

Global site tag (gtag.js) - Google Analytics