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

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

1、按照以下方式新建一個web工程html

之因此要用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 >
 
2、解決報錯The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
可使用以下步驟來解決。
一、右擊web工程-》屬性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server
二、切換到Java Build Path界面中的Orader and Export,選擇Tomcat。
 
 
3、修改項目的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文件中拷貝過來的。
 
4、添加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>  
 
5、建立sql server數據庫
    經過sql server management studio 建立一個數據庫,好比名字叫作 activiti     
    
6、在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:java

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.web

7、讓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>  
 
8、在代碼中使用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對象。
    
9、在eclipse中調試activiti項目
在eclipse中調試web項目,其實他是把相關的資料生成到以下路徑:
<eclipse workspace dir>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MavenWeb
    若是發現某項配置修改以後,調試的時候沒有生效,那能夠試着clean一下,  Project ->clean...,而後從新生成便可。
相關文章
相關標籤/搜索