Activiti系列: 如何在web中使用activiti和sql server


    最近要開始使用activiti結合原有的系統來開發一個專業領域內的業務管理軟件,以下記錄了第一次搭建該開發平台過程中所遇到的各種問題,備忘。
 

一、按照如下方式新建一個web工程

之所以要用maven,主要是為了解決各種依賴項的問題,用maven來管理依賴項還是很方便的。
 用Eclipse創建Maven結構的web項目的時候選擇了Artifact Id為maven-artchetype-webapp,由於這個catalog比較老,用的servlet還是2.3的,而一般現在都是用3.0,在Project Facets里面修改Dynamic web module為3.0的時候就會出現Cannot change version of project facet Dynamic web module to 3.0,如圖:
 
解決這個問題的步驟如下:
1. 把Servlet改成3.0,打開項目的web.xml
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< web-app  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xmlns = "http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     id = "schedule-console"  version = "3.0" >

2. 修改項目的設置,在Navigator下打開項目.settings目錄下的org.eclipse.jdt.core.prefs
把1.5改成1.8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
 
 
3. 打開org.eclipse.wst.common.project.facet.core.xml 
把java改為1.8, 把jst.web改為3.0;
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< faceted-project >
   < fixed  facet = "wst.jsdt.web" />
   < installed  facet = "jst.web"  version = "3.0" />
   < installed  facet = "wst.jsdt.web"  version = "1.0" />
   < installed  facet = "java"  version = "1.8" />
</ faceted-project >
 
二、解決報錯The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
可以使用如下步驟來解決。
1、右擊web工程-》屬性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server
2、切換到Java Build Path界面中的Orader and Export,選擇Tomcat。
 
 
三、修改項目的pom.xml文件,添加activiti相關依賴項
相關依賴項如下:
 
  <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-engine</artifactId>
      <version>${activiti-version}</version>
    </dependency>
    <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-spring</artifactId>
      <version>${activiti-version}</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.3</version>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.3.168</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.6</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <version>1.7.6</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>    
 
其中 activiti -version的定義如下:
  <properties>
    <activiti-version>5.18.0</activiti-version>
  </properties>  
 
其實這些內容我都是從Activiti工程的pom文件中拷貝過來的。
 
四、添加activiti需要的配置文件
在activiti的userguide( http://activiti.org/userguide/index.html#_configuration )中有說。
如果我們使用如下語句來創建一個流程引擎實例
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine()
 
那么實際上他是到該項目的classpath路徑下去找一個名為 activiti.cfg.xml的配置文件,然后根據該配置文件的設置,通過spring的方式來創建一個processEngine。而且是去找其中的那個名字是default的processEngine。
所以我們可以在該項目的src/main/resources 目錄下創建一個名為 activiti.cfg.xml的文件,然后將如下內容復制進去。
 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd">
 
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">      
    </bean>
</beans>  
 
五、創建sql server數據庫
    通過sql server management studio 創建一個數據庫,比如名字叫做 activiti     
    
六、在maven中添加sql server jdbc依賴項
    在maven倉庫中是沒有sql server 的jdbc jar包的,可以按照如下步驟操作

Download the JDBC driver for Microsoft SQL Server

    1. Visit the MSDN site for SQL Server and download the latest version of the JDBC driver for your operating system.
    2. Unzip the package
    3. Open a command prompt and switch into the expanded directory where the jar file is located.
    4. Execute the following command. Be sure to modify the jar file name and version as necessary:
1
mvn  install : install - file  -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
    1. You should see something similar to this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[INFO] Scanning  for  projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven- install -plugin:2.3.1: install - file  (default-cli) @ standalone-pom ---
[INFO] Installing  /Users/claude/installers/JDBC/sqljdbc_4 .0 /enu/sqljdbc4 .jar to  /Users/claude/ .m2 /repository/com/microsoft/sqlserver/sqljdbc4/4 .0 /sqljdbc4-4 .0.jar
[INFO] Installing  /var/folders/c6/q1bdtq557kv54783p1g6cbsw0000gp/T/mvninstall1874482299687761721 .pom to  /Users/claude/ .m2 /repository/com/microsoft/sqlserver/sqljdbc4/4 .0 /sqljdbc4-4 .0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total  time : 1.208s
[INFO] Finished at: Tue Mar 13 14:07:31 EDT 2012
[INFO] Final Memory: 3M /81M
[INFO] ------------------------------------------------------------------------

Modify your POM

Include the new dependency by modifying your project’s pom.xml. Add the following dependency:

1
2
3
4
5
< dependency >
     < groupId >com.microsoft.sqlserver</ groupId >
     < artifactId >sqljdbc4</ artifactId >
     < version >4.0</ version >
</ dependency >

Save the pom.xml file and build the project to make sure no errors exist.

七、讓activiti連接sql server數據庫
         修改第四節中的activiti.cfg.xml文件,將  processEngineConfiguration 的內容改成下文這樣:
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
        <property name="databaseSchemaUpdate" value="true"/>
        <property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;databaseName=activiti2 " />
        <property name="jdbcDriver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <property name="jdbcUsername" value="sa" />
        <property name="jdbcPassword" value="sa123" />        
    </bean>  
 
八、在代碼中使用activiti的api     
               ProcessEngine  processEngine  = ProcessEngines. getDefaultProcessEngine ();    
            if(processEngine != null)
            {
                out.println("<h1> Hello !" + processEngine.getName() + "</h1>");
                IdentityService identityService = processEngine.getIdentityService();
                List<String> keys = identityService.getUserInfoKeys("Kermit");
                for(String keykeys)
                {                    
                    out.println(String.format("<h1> key = %s, value = %s </h1>"keyidentityService.getUserInfo("Kermit"key)));
                }
            }    
    以上在調用   ProcessEngines. getDefaultProcessEngine ();     的時候,實際上背后就會去調用搜索classPath目錄下的activiti.cfg.xml文件,然后通過其中的配置來創建processEngine對象。
    
九、在eclipse中調試activiti項目
在eclipse中調試web項目,其實他是把相關的資料生成到如下路徑:
<eclipse workspace dir>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MavenWeb
    如果發現某項配置修改之后,調試的時候沒有生效,那可以試着clean一下,  Project ->clean...,然后重新生成即可。
 
 
 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM