jbpm 3.2.2+Tomcat 6.0.10+MySQL5.0.27/SQL Server2000部署详解

    大象刚刚接触jBPM,经过这几天的折腾,终于把jbpm-console这个项目在Tomcat6上布署成功了,现在把这几天来的学习经验拿出来和大家分享一下。(结尾处有相关JAR包和MySQL及SQL Server 2000脚本下载)
    系统环境:windowsXP-SP2  JDK1.5.0_09  jbpm-jpdl-3.2.2  MySQL5.0.27  Tomcat6.0.10  MSSQL 2000
    1、安装JDK1.5.0_09
       不必一定要按我的版本来安装,不过至少JDK应该在1.5以上,JDK安装好以后,设置PATHCLASSPATH环境变量。
    2、安装Tomcat6.0.10
       这个没什么好说的,请用6.0的版本,因为大象没在5.0或5.5上测试过,而且这几个版本之间有很大的不同,为了能尽快上手,还是按照我写的来吧。^_^ 
    3、安装MySQL5.0.27
       MySQL安装中采用默认安装即可,字符集不用设置为GB2312GBK,这样做比较通用(大象用的MySQL没有设置)。
    4、安装Ant-1.7.0
       apache网站上下载Ant,然后解压,设置PATH环境变量,在CMD中键入ant -version 如果看到

       Apache Ant version 1.7.0 compiled on December 13 2006  那说明你的PATH环境已经设置好了。)
    5、安装jbpm-jpdl-3.2.2
       下载jbpm-jpdl-suite-3.2.2,然后解压就行,直接放在根目录下,比如:D:/jbpm-jpdl-3.2.2,这个版本是包含所有的一整套工具,目录下主要包含以下几个子目录:
       config —— jBPMHibernatelog4j的配置文件
       db ——
各种数据库的SQL语句
       deploy ——
已经打包好的war
       designer —— jBPM
Eclipse插件,具体在eclipse子目录中
       doc —— API
文档及用户使用向导
       examples —— jBPM
自带的例子程序
       lib ——
依赖的第三方依赖类库
       server ——
一个已经配置好了的基于JBossjBPM示例
       src —— jBPM的源代码
       jbpm-jpdl-suite-3.2.2的下载地址:http://sourceforge.net/project/showfiles.php?group_id=70542
                注意看下面一个链接:View older releases from the f) jBPM jPDL 3 package » 这是jbpm以前的版本
        6、安装Eclipse3.2.1MyEclipse5.1.0GA
               我使用的是一种整合版本,就是解压后可以直接使用,eclipsemyeclipse已经整合好了(嘿嘿,感觉非常方便,我自己还做了一个Eclipse3.3MyEclipse6.0的整合版,详情请看:详解Eclipse+MyEclipse完全绿色版制作方法),版本比我的高应该没关系,虽然没试过,但网上有很多人都在高版本上做过,应该没问题。这里就不说安装方法了,网上有很多相关资料。
   7、安装jbpm开发插件
      虽然布署jbpm-console这个项目不需要用到开发插件,但为了以后的开发,在这里我还是说一下,大象用的版本是3.0.13,为什么使用这个版本呢?因为我试过最新的3.1.3.sp2版,里面可视化编辑流程里左下角没有swimlanes标签,而3.0.13的版本中却有。
      3.0.13的下载地址:http://sourceforge.net/project/showfiles.php?group_id=70542&package_id=116692 这个页面可以找到所有的插件版本,当然包括最新版。
      下面来说下我的安装方法:

       看到这红线框的两个文件夹了吧,大象前面说了,我用的是一种整合版本,解压后就可以直接用了,所以这两个文件夹早就已经存在了,所以如果你们要用的话就像这样建两个文件夹吧,ThirdPlugins是放第三方插件的,Links是放ini配置文件的,下面都会有详细介绍。
       将下载的jbpm-gpd-3.0.13解压,复制整个eclipse文件夹,进入ThirdPlugins下,新建一文件夹,命名jbpm-gpd-3.0.13,再在此目录下粘贴eclipse文件夹
 
       另外还需要将plugins目录下的jar包作一下修改,只保留如下两个jar包,因为其它几个jar包在MyEclipse中也有,启动eclipse之后会发生冲突,而且千万不要想当然的,在myeclipse中把同名的jar包用高版本替换,不然你会发现启动之后全是错误,嘿嘿,大象试过,有着血一样的教训,请大家千万不要重蹈覆辙。
 
       此文件内容为:path=ThirdPlugins/jbpm-gpd-3.0.13
       OK,到此,插件安装已经全部完成,另外还需要在eclipse中对jBPM作一下设置,同样为了以后开发作准备。
       启动eclipse,点击Windows->Preference,中文版为"窗口"->"选项",可以看到:
 
       点击Add,选择Search...找到你解压的jbpm-jpdl-3.2.2文件夹,然后填写Name,点击OK。回到主界面,此时还要勾选Name下的复选框,点击Apply

 
       Server Deployment里面的东西是用来布署流程用的,前提是你得先发布好jbpm-console控制台这个程序,保证这个程序跑起来没有问题,否则是不会成功的。8080端口号和你服务器保持一致,如TomcatJBoss,另外布署一个新流程时,一定要先启动服务器。jbpm-console这个名字是默认发布到服务器上的名字,比如Tomcat中,webapps下使用的名字和这个要一样,那个变了,这个也要跟着变,还是保持默认就行。upload不要作修改,这些其实与布署jbpm-console应用没有多大关系,大家看看就行。

    8、布署jbpm-console
       jbpm-jpdl-3.2.2/deploy目录下可以看到jbpm-console.warbuild.xml(当然还有其它文件,现在我们只关心这两个),在CMD中,进入jbpm-jpdl-3.2.2/deploy目录下,使用命令:ant customize.console.for.tomcat 然后我们在deploy下可以看到多出来customizedtarget两个文件夹,进入customized,可以看到jbpm-console.war这个文件,用winrar将其解压到当前目录下,这时我们就得到了jbpm-console的发布应用了,不过别高兴,还有很多工作没做呢。这里我来说下,为什么使用ant customize.console.for.tomcat 这个命令,打开build.xml文件,你可以看到这样一段代码:

< target  name ="customize.console.for.tomcat"  description ="Creates a customized jbpm-console.war for tomcat in the customized directory" >
    
< mkdir  dir ="target/war"   />
    
< mkdir  dir ="customized"   />
    
< unzip  src ="jbpm-console.war"  dest ="target/war"   />
    
< copy  todir ="target/war/WEB-INF/lib" >
      
< fileset  dir ="../lib" >
        
< include  name ="activation.jar"   />
        
< include  name ="antlr*.jar"   />
        
< include  name ="asm.jar"   />
        
< include  name ="bsh.jar"   />
        
< include  name ="cglib.jar"   />
        
< include  name ="commons-logging.jar"   />
        
< include  name ="dom4j.jar"   />
        
< include  name ="hibernate3.jar"   />
        
< include  name ="jboss-backport-concurrent.jar"   />
        
< include  name ="jbossretro-rt.jar"   />
      
</ fileset >
    
</ copy >
    
< delete >
      
< fileset  dir ="target/war/WEB-INF/lib" >
        
< include  name ="el-api.jar"   />
        
< include  name ="el-ri.jar"   />
      
</ fileset >
    
</ delete >
    
< zip  destfile ="customized/jbpm-console.war" >
      
< fileset  dir ="target/war"   />
    
</ zip >
</ target >
       大家看到了吧,customize.console.for.tomcattagetname,所以这里使用这个命令就不觉得奇怪了,大象开始也觉得很迷惑,为什么网上都这样写,却不写为什么,看来是问题太简单了,那些大大们想来这根本就不是问题。呵呵呵~~~
    a、加入必要的jar包
          jbpm-console/WEB-INF/lib下要加入以下几个jar包:jboss-j2ee.jarcommons-collections.jarjsf-api.jarjsf-impl.jar,删除jsf-api-14.jarjsf-impl-14.jar这两个jar包。
    b、建jBPM数据库
       jbpm-jpdl-3.2.2/db下找到jbpm.jpdl.mysql.sql,打开它删除前面的alter table JBPM_XX部分,保留后面的,然后再在每句SQL语句后面加上分号,检查一下有没有遗漏。然后在MySQL中新建一个jbpm数据库,将sql脚本导入进来,大象使用的是SQLyog可视化操作工具,其它相关的可视化工具非常多,可以任选一种使用,如果你不用这些工具来简化开发,那就配置mysqlPATH环境变量,在命令行中操作吧。^_^
       SQLyog中操作如下:
       1、点击菜单"DB"->"Create Database",输入jbpm
       2、点击菜单"Tools"->"Import From SQL Statements...",在弹出窗口中点击"..."按钮,选择jbpm.jpdl.mysql.sql文件,然后再点击Execute按钮。请在点击Execute前确保sql脚本没有语法错误,否则是不可能执行成功的。
    c、修改hibernate.cfg.xml文件
       修改jbpm-jpdl-3.2.2/deploy/customized/jbpm-console/WEB-INF/classeshibernate.cfg.xml文件,原配置文件要修改部分如下:

     <!--  hibernate dialect  -->
    
< property  name ="hibernate.dialect" > org.hibernate.dialect.HSQLDialect </ property >
    
<!--  JDBC connection properties (begin) ===
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    ==== JDBC connection properties (end) 
-->
    
< property  name ="hibernate.cache.provider_class" > org.hibernate.cache.HashtableCacheProvider </ property >
    
<!--  DataSource properties (begin)  -->
    
< property  name ="hibernate.connection.datasource" > java:/JbpmDS </ property >
    
<!--  DataSource properties (end)  -->
     修改后如下:
    <!--  hibernate dialect  -->
    
< property  name ="hibernate.dialect" > org.hibernate.dialect.MySQLInnoDBDialect </ property >
    
< property  name ="hibernate.connection.driver_class" > com.mysql.jdbc.Driver </ property >
    
< property  name ="hibernate.connection.url" > jdbc:mysql://localhost:3306/jbpm </ property >
    
< property  name ="hibernate.connection.username" > root </ property >
    
< property  name ="hibernate.connection.password" > 自己的密码(无密码就空着) </ property >
    
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    <!--  DataSource properties (begin)
    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
    DataSource properties (end) 
-->
     d、修改web.xml文件
        jbpm-console/WEB-INF下打开web.xml文件,在servlet前加入以下listener,注意:把listener放在所有的servlet前面,我发现网上很多帖子里都没有提到这一点,不知道他们的程序是怎么跑起来的?残念ING~~~
< listener >  
    < listener-class > com.sun.faces.config.ConfigureListener </ listener-class >  
</ listener >

< listener >
    < listener-class > com.sun.faces.application.WebappLifecycleListener </ listener-class >  
</ listener >
        这两个监听器很关键,大象先一直没有成功的原因就是没有加这个,而这两个监听器都在jsf-impl.jar包中,jbpm-console这个应用可是用jsf来实现的,如果你不加,则会产生如下这些错误:

javax.servlet.ServletException: Servlet.init() for servlet Faces Servlet threw exception
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:656)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPage(FormAuthenticator.java:316)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:244)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256)
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:142)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
    ...16 more


java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256)
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:142)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2008-8-3 13:03:49 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /jbpm-console threw load() exception
    e、修改Tomcat安全验证
        有两种方法修改安全验证,第一种是修改%TOMCAT_HOME%/conf下的tomcat-users.xml文件,第二种是在%TOMCAT_HOME%/conf目录下再新建Catalina文件夹,然后再在Catalina文件夹下建localhost文件夹,在此目录下建jbpm-console.xml文件。
       i、修改tomcat-users.xml文件
          修改前请备份tomcat-users.xml文件,修改后的内容如下:
<? xml version='1.0' encoding='utf-8' ?>
< tomcat-users >
  
< role  rolename ="user" />
  
< role  rolename ="administrator" />
  
< role  rolename ="manager" />
  
< role  rolename ="sales" />
  
< role  rolename ="hr" />
  
< role  rolename ="admin" />
  
< role  rolename ="participant" />
  
< user  username ="user"  password ="user"  roles ="user,sales" />
  
< user  username ="shipper"  password ="shipper"  roles ="user,hr" />
  
< user  username ="manager"  password ="manager"  roles ="admin,hr,manager,user,sales" />
  
< user  username ="tadmin"  password =""  roles ="admin,manager" />
  
< user  username ="admin"  password ="admin"  roles ="admin,user,hr" />
</ tomcat-users >
          使用这种方式来处理安全验证将不用考虑向数据库中插入组,角色,用户之类的数据,完全由Tomcat来管理
       ii、新建jbpm-console.xml文件
          使用这种方式将需要向数据库中插入数据,由jBPM来管理安全验证,jbpm-console.xml文件内容如下:
< Context >
< Realm   className ="org.apache.catalina.realm.JDBCRealm 
          driverName="
com.mysql.jdbc.Driver" connectionURL ="jdbc:mysql://localhost:3306/jbpm"
          connectionName
="root"  
          connectionPassword
="自己的密码"
          userTable
="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"  
          userNameCol
="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"  
          userCredCol
="DISTINCT u.PASSWORD_"
          userRoleTable
="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"  
          roleNameCol
="g.NAME_"   />
</ Context >
          需要向数据库中插入的数据:
      INSERT   INTO  JBPM_ID_GROUP  VALUES ( 1 , ' G ' , ' sales ' , ' organisation ' , NULL );
      
INSERT   INTO  JBPM_ID_GROUP  VALUES ( 2 , ' G ' , ' admin ' , ' security-role ' , NULL );
      
INSERT   INTO  JBPM_ID_GROUP  VALUES ( 3 , ' G ' , ' user ' , ' security-role ' , NULL );
      
INSERT   INTO  JBPM_ID_GROUP  VALUES ( 4 , ' G ' , ' hr ' , ' organisation ' , NULL );
      
INSERT   INTO  JBPM_ID_GROUP  VALUES ( 5 , ' G ' , ' manager ' , ' security-role ' , NULL );
      
INSERT   INTO  JBPM_ID_USER  VALUES ( 1 , ' U ' , ' user ' , ' user@sample.domain ' , ' user ' );
      
INSERT   INTO  JBPM_ID_USER  VALUES ( 2 , ' U ' , ' manager ' , ' manager@sample.domain ' , ' manager ' );
      
INSERT   INTO  JBPM_ID_USER  VALUES ( 3 , ' U ' , ' admin ' , ' admin@sample.domain ' , ' admin ' );
      
INSERT   INTO  JBPM_ID_USER  VALUES ( 4 , ' U ' , ' shipper ' , ' shipper@sample.domain ' , ' shipper ' );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 1 , ' M ' , NULL , NULL , 2 , 4 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 2 , ' M ' , NULL , NULL , 3 , 4 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 3 , ' M ' , NULL , NULL , 4 , 4 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 4 , ' M ' , NULL , NULL , 4 , 3 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 5 , ' M ' , NULL , NULL , 1 , 3 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 6 , ' M ' , NULL , NULL , 2 , 3 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 7 , ' M ' , NULL , NULL , 3 , 3 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 8 , ' M ' , NULL , NULL , 3 , 2 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 9 , ' M ' , NULL , NULL , 2 , 2 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 10 , ' M ' , NULL , NULL , 2 , 5 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 11 , ' M ' , NULL , ' boss ' , 2 , 1 );
      
INSERT   INTO  JBPM_ID_MEMBERSHIP  VALUES ( 12 , ' M ' , NULL , NULL , 1 , 1 );
       这两种方法任选一种即可。
        
此时基本工作都已经做完,不过在发布前,不要忘了,将MySQL的驱动拷贝到%TOMCAT_HOME%/lib目录下,然后就可以将jbpm-console文件夹复制到%TOMCAT_HOME%/webapps目录下了,接着在bin目录下双击tomcat6.exe启动服务器,等启动过程执行完后,打开IE,输入http://localhost:8080/jbpm-console 回车,应该就能看到jbpm控制台界面了。
 
    
       到此,在MySQL下的布署就全部结束了,如果能看到这个界面,那恭喜你,你终于成功了!
    下面接着说下如何将MySQL数据库换成MS SQL Server 2000,其实很简单,如果在MySQL下布署成功了,只需要将hibernate.cfg.xml文件里的配置改成MS SQL Server 2000的连接方式就行了,另外在2000中建立jbpm的数据库也是必要的。
    9、使用SQL Server 2000数据库
       jbpm-jpdl-3.2.2/db下找到jbpm.jpdl.mssql.sql,打开后删除alter table JBPM_XXdrop table JBPM_XX这些语句,这些东东都是用来在以前的版本上做升级用的,我们是新建数据库当然用不到这些了。在SQL Server中新建jbpm数据库,COPY剩下的sql语句,在查询分析器里粘贴,然后执行,这时会有很多警告产生,如下:
警告: 已创建表  ' JBPM_DELEGATION ' ,但其最大行大小( 8300 )超过了每行的最大字节数( 8060 )。如果结果行长度超过  8060  字节,则此表中行的  INSERT  或  UPDATE  将失败。   

警告: 已创建表 
' JBPM_LOG ' ,但其最大行大小( 18321 )超过了每行的最大字节数( 8060 )。如果结果行长度超过  8060  字节,则此表中行的  INSERT  或  UPDATE  将失败。
      这些不用管它,接下来修改hiberate.cfg.xml文件,大象采用的是JTDS驱动的连接方式,修改后的内容如下:
    <!--  hibernate dialect  -->
    
< property  name ="hibernate.dialect" > org.hibernate.dialect.SQLServerDialect </ property >
    
< property  name ="hibernate.connection.driver_class" > net.sourceforge.jtds.jdbc.Driver </ property >
    
< property  name ="hibernate.connection.url" > jdbc:jtds:sqlserver://localhost:1433/jbpm </ property >
    
< property  name ="hibernate.connection.username" > sa </ property >
    
< property  name ="hibernate.connection.password" > 自己的密码(无密码就空着) </ property >
    
< property  name ="hibernate.cache.provider_class" > org.hibernate.cache.HashtableCacheProvider </ property >
    
<!--  DataSource properties (begin)
    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
    DataSource properties (end) 
-->
     不要忘了,还要将JTDS的驱动拷贝到%TOMCAT_HOME%/lib目录下,如果采用的是Tomcat安全验证,此时就不用向数据库插入数据,直接就可以启动服务器运行了。如果采用的是jBPM来管理安全验证,此时则需要将前面提到的数据插入数据库中,在插入前需要修改一下,将每条记录前的ID号去掉,因为数据库中对此字段已经作了标识,不能手动对它设置。数据插入后,就启动服务器看下吧!
     写到这里,关于jbpm-console所有的布署都讲完了,大象以上所说的全部都是亲自在电脑上一步一步的做过,绝不会胡乱copy一下网上的东东发出来。如有什么问题,希望和大家一起交流。(如果图片不能显示,在其上点击右键,选择"显示图片")
     需要使用的JAR包: 点击下载
     SQL脚本: 点击下载
     本文为菠萝大象原创,如要转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值