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

生成基于 Oracle 的 jBPM 数据库脚本

阅读更多

        项目需要使用Oracle,发现jBPM没有提供基于Oracle 数据库的脚本,上网也没有找到可用的,就自己生成了一份。下面是步骤。这个是使用Ant来生成的。


1. 下载最新版本的 JBoss jBPM Starters kit。解压这个文件,假设解压目录为 "${jbpm.starters.kit}",它的下面应该有 jbpm, jbpm-bpel,jbpm-db,jbpm-designer,jbpm-server 五个子目录。其中我们要用到的是 jbpm 和 jbpm-db两个目录。

2. 导航到 jbpm-db 子目录。在该目录下可以找到 build.properties 文件。这个文件需要作一定修改才能使用。

    找到下面的这段代码:

js 代码
  1. jbpm.3.location=C:/jbpm-X.X   
  2.   
  3. upgrade.hibernate.properties=hsqldb/hibernate.properties   
  4. upgrade.libdir=hsqldb/lib   
  5. upgrade.old.schema.script=hsqldb/upgrade.scripts/hsqldb.create.jbpm.3.0.2.sql   

      注意第一行,将 “C:/jbpm-x.x” 改成 "${jbpm.starters.kit}/jbpm"。

3. 导航到 jbpm 子目录。在 jbpm\src\config.files 路径下可以找到 hibernate.cfg.xml 文件。这个文件需要修改和数据库连接相关的部分。

      找到下面这行代码:

xml 代码
  1. <!---->  
  2. <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialectproperty>  
  3. <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriverproperty>  
  4. <property name="hibernate.connection.url">jdbc:hsqldb:mem:.;sql.enforce_strict_size=trueproperty>  
  5. <property name="hibernate.connection.username">saproperty>  
  6. <property name="hibernate.connection.password">property>  

      将其修改成 Oracle 的格式:

xml 代码
  1. <!---->  
  2. <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialectproperty>  
  3. <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriverproperty>  
  4. <property name="hibernate.connection.url">jdbc:oracle:thin@localhost:1521:fredproperty>  
  5. <property name="hibernate.connection.username">FiberSchedulerJBPMproperty>  
  6. <property name="hibernate.connection.password">FiberSchedulerJBPMproperty>   5. 导航到子目录 jbpm 下的路径 jbpm-db\oracle\lib,下载最新的 Oracle jdbc驱动程序(我使用的是 class14.jar),把它放在该路径下。

      其中 "localhost" 换成你自己的数据库所在的机器名(或者ip地址),"fred" 换成你自己的Oracle数据库的 SID 名字, 使用你自己的 Oracle 数据库用户名和密码来替换 "FiberSchedulerJBPM" 。

4. 导航到 jbpm-db 子目录,在 jbpm-db\oracle 路径下找到文件 hibernate.properties。

      找到下面这段代码:

js 代码
  1. hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver   
  2. hibernate.connection.url=jdbc:oracle:thin@HOST:PORT:SID   
  3. hibernate.connection.username=USER   
  4. hibernate.connection.password=PASSWORD   

      根据你的数据库配置修改,我的修改如下:

js 代码
  1. hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver   
  2. hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:fred   
  3. hibernate.connection.username=FiberSchedulerJBPM   
  4. hibernate.connection.password=FiberSchedulerJBPM  

5. 在目录  jbpm-db下找到ant脚本 build.xml 文件,这个ant 脚本中有这样一段代码是用来生成数据库脚本的:

xml 代码
  1. <target name="db.scripts" description="helper target to generate the database scripts" depends="prepare">  
  2.     <delete dir="build/${db}/scripts" />  
  3.   <mkdir dir="build/${db}/scripts" />  
  4.   <java classname="org.jbpm.db.JbpmSchema" fork="true">  
  5.     <classpath refid="classpath.${db}" />  
  6.     <arg value="scripts"/>    
  7.     <arg value="${basedir}/build/${db}/scripts"/>    
  8.     <arg value="${db}"/>    
  9.     <arg value="${jbpm.3.location}/src/config.files/hibernate.cfg.xml"/>    
  10.     <arg value="${basedir}/${db}/hibernate.properties"/>    
  11.   java>    
  12. target>  

      这段脚本将调用 jBPM的类 org.jbpm.db.JbpmSchema.java 的 main 方法,并给他传5个参数。我们在目录 jbpm 的路线 jbpm\src\java.jbpm\org\jbpm\db 下找到类 JbpmSchema,打开它找到这么一段代码:

java 代码
  1. public static void main(String[] args) {   
  2.   try {   
  3.     if ( (args==null) || (args.length==0) ) {   
  4.       throw new IllegalArgumentException();   
  5.     }   
  6.        
  7.     String cmd = args[0];   
  8.        
  9.     if ("create".equalsIgnoreCase(cmd)) {   
  10.       Configuration configuration = createConfiguration(args, 1);   
  11.       new JbpmSchema(configuration).createSchema();   
  12.     } else if ("drop".equalsIgnoreCase(cmd)) {   
  13.       Configuration configuration = createConfiguration(args, 1);   
  14.       new JbpmSchema(configuration).dropSchema();   
  15.     } else if ("clean".equalsIgnoreCase(cmd)) {   
  16.       Configuration configuration = createConfiguration(args, 1);   
  17.       new JbpmSchema(configuration).cleanSchema();   
  18.     } else if ("scripts".equalsIgnoreCase(cmd)) {   
  19.       Configuration configuration = createConfiguration(args, 3);   
  20.       new JbpmSchema(configuration).saveSqlScripts(args[1], args[2]);   
  21.     }  

      显然,它只使用了ant脚本传给它的前三个参数。当生成非基于 Oracle 的数据库脚本时,前三个脚本足够了。问题是当生成基于 Oracle 的数据库脚本时,需要使用后两个参数。所以,我们在这段代码的后面加上:

java 代码
  1. else if ((args != null) && (args.length > 3) && ("scripts".equalsIgnoreCase(cmd))) {   
  2.        new JbpmSchema(JbpmSessionFactory.createConfiguration()).saveSqlScripts(args[1], args[2]);   
  3.      }  

     现在这段代码应该是这个样子:

java 代码
  1. public static void main(String[] args) {   
  2.   try {   
  3.     if ( (args==null) || (args.length==0) ) {   
  4.       throw new IllegalArgumentException();   
  5.     }   
  6.        
  7.     String cmd = args[0];   
  8.        
  9.     if ("create".equalsIgnoreCase(cmd)) {   
  10.       Configuration configuration = createConfiguration(args, 1);   
  11.       new JbpmSchema(configuration).createSchema();   
  12.     } else if ("drop".equalsIgnoreCase(cmd)) {   
  13.       Configuration configuration = createConfiguration(args, 1);   
  14.       new JbpmSchema(configuration).dropSchema();   
  15.     } else if ("clean".equalsIgnoreCase(cmd)) {   
  16.       Configuration configuration = createConfiguration(args, 1);   
  17.       new JbpmSchema(configuration).cleanSchema();   
  18.     } else if ("scripts".equalsIgnoreCase(cmd)) {   
  19.       Configuration configuration = createConfiguration(args, 3);   
  20.       new JbpmSchema(configuration).saveSqlScripts(args[1], args[2]);   
  21.     } else if ((args != null) && (args.length > 3) && ("scripts".equalsIgnoreCase(cmd))) {   
  22.       new JbpmSchema(JbpmSessionFactory.createConfiguration()).saveSqlScripts(args[1], args[2]);   
  23.     }  

      好了,现在一切都完美了。我们接下来执行最后一步,生成我们需要的脚本。

6. 打开命令行提示符窗口并在命令行中导航到子目录 jbpm-db,键入命令  ant oracle.scripts。等命令执行完毕以后,会发现在路径 jbpm-db\build\oracle\scripts 下生成了我们需要的脚本文件:
oracle.clean.sql
oracle.create.sql
oracle.drop.create.sql
oracle.drop.sql

分享到:
评论
3 楼 rantim 2008-01-24  
2楼 正解
2 楼 Frederick 2007-09-01  
这个代码对MySQL的数据库是有用的,但是对Oracle的数据库似乎没有用啊,所以才需要手动创建数据库。
1 楼 mythmoon 2007-08-22  
public void createSchema(String jbpmContextName) {
    JbpmContext jbpmContext = createJbpmContext(jbpmContextName);
    try {
      Services services = jbpmContext.getServices();
      DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory) services.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
      persistenceServiceFactory.createSchema();
    } finally {
      jbpmContext.close();
    }
  }

自动创建。

相关推荐

    生成基于Oracle的jBPM数据库脚本

    在生成基于Oracle的jBPM数据库脚本的过程中,我们需要对jBPM的环境进行一系列配置,以便使其能够与Oracle数据库进行交互。以下是详细步骤和涉及的知识点: 1. **下载和解压jBPM Starters kit**: - jBPM Starters ...

    jbpm对应的ORACLE数据库脚本

    在网上找了很多关于怎样生成jbpm-oracle数据库脚本的文章,没有一个能真正解决实际过程中遇到的问题。后来才知道,那里有一个包的java文件方法同名了,删除之后,就生成成功了!下载我打个包上传给需要的人。

    jbpm配置心得体会(结合各种数据库)

    - **生成库表**: 使用 Ant 脚本生成所需的数据库表。 - **建立 Web 运行内容**: 创建必要的 Web 应用内容,以便在 JBoss 上运行。 2. **JBoss 配置**: - **配置**: 修改 JBoss 的配置文件以支持 jBPM 的运行...

    jBPM开发入门指南(2)[归类].pdf

    然后,获取jBPM的启动包,例如jbpm-starters-kit-3.1.1,进入jbpm-db目录,执行特定于MySQL的Ant命令(ant mysql.scripts),这将在指定目录下生成SQL脚本。执行这些脚本(如mysql.create.sql)将在"jbpm"库中创建所...

    JBPM3.2 表初始化,流程发布第一课

    JBPM提供了SQL脚本,用于在MySQL、Oracle、PostgreSQL等常见数据库中创建必要的表结构。 2. 表初始化脚本:在安装或升级JBPM时,需要运行初始化脚本来填充这些表。这些脚本通常包括用户、角色、权限、工作流定义等...

    jbpm3 入门项目-环境搭建(1)

    可能需要安装MySQL、Oracle或HSQLDB等数据库,配置相应的数据库连接参数。 5. **项目构建**:使用Maven或Ant编译jbpm3源代码。这将生成必要的jar文件和类路径,使得jbpm3可运行。 6. **示例项目**:jbpm3通常包含...

    jbpm 的一个相关示例

    在数据库方面,JBPM支持多种关系型数据库,如MySQL、Oracle、PostgreSQL等,这得益于其灵活的数据持久化机制。通过JPA(Java Persistence API)和Hibernate ORM,JBPM能够适应不同的数据库环境,确保数据的一致性和...

    基于Maven搭建ssm,bootstrap,mysql 实现后台管理

    增删改查的处理类,service层,mybatis的xml,SQL( mysql 和Oracle)脚本, jsp页面 都生成 就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接池druid; 数据库连接池 阿里巴巴的 druid。...

    基于JAVA的小型办公自动化系统

    “z_office.rar”是一个RAR格式的压缩文件,通常包含项目源代码、数据库脚本、配置文件等资源。RAR是一种流行的压缩格式,能提供更好的数据压缩和恢复能力。而“获取解压密码.jpg”可能是一个提示解压密码的图片,...

    Java个人简历模板34.doc

    - **Oracle、MySQL**: 两种常见的关系型数据库管理系统,Oracle更适用于大型企业级应用,MySQL则以其轻量级和开源特性受欢迎。 - **PL/SQL**: Oracle的SQL扩展,用于编写存储过程和触发器。 - **数据库优化**: ...

    Java开发工程师简历模版.docx

    6. **数据库知识**:熟悉Oracle和MySQL数据库,掌握了PL/SQL语言,这包括SQL查询、存储过程和函数等。 7. **操作系统和脚本**:熟悉Linux常用命令和服务配置,了解Shell编程,这对于在服务器上部署和管理Java应用...

    Java软件工程师的求职简历模板.docx编程资料

    - **JSP (Java Server Pages)**:一种基于Java技术的服务器端网页技术,可以嵌入动态脚本和静态HTML代码,生成动态网页。 - **Servlets**:运行于服务器端的小程序,用于扩展Web服务器的功能,例如处理客户端请求...

    java版商城源码下载-at:在

    和oracle)脚本, jsp页面 都生成 就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接池druid; 数据库连接池 阿里巴巴的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势 C ...

    办公自动化 JSP

    3. **数据库设计**:数据库代码可能包括SQL脚本,用于创建和初始化数据表,存储用户信息、任务状态、工作流实例等。通常会采用关系型数据库,如MySQL或Oracle,以支持复杂的查询和事务操作。 4. **工作流引擎**:...

    abcdef语言宝典介绍

    - **Oracle**: 甲骨文公司的关系型数据库管理系统。 - **PostgreSQL (PGSQL)**: 开源的对象关系型数据库系统。 #### 操作系统与服务器 - **Linux**: 开放源代码的操作系统,广泛应用于服务器领域。 - **Tomcat**: ...

    Java个人简历模板28.doc

    10. **数据库技能**:求职者能使用Oracle和MySQL,对PL/SQL有一定了解,还能进行数据库优化。 11. **JBPM工作流**:求职者熟练应用JBPM,包括流程实例、任务、变量的管理,以及任务分配和事件处理,这在处理复杂...

    自整理Java关于基础和框架的面试题

    - SSI(Server Side Includes)是一种简单的模板引擎,用于在服务器端插入文本、脚本等。 ##### SSH整合 - **SSH**:Struts + Spring + Hibernate,一种常用的Java Web开发框架组合。 - 实现了MVC模式,并提供了...

    java基础学习笔记

    - **Oracle**:虽然这里提到“Oracle”,但在Java学习路径中可能是指Oracle提供的Java开发工具和资源,包括但不限于Oracle JDK。 - **JDBC**:Java数据库连接,用于Java应用程序与数据库交互的标准接口。 ##### 第...

Global site tag (gtag.js) - Google Analytics