Activiti5.10簡易教程一

Activiti5.10簡易教程一java

一搭建環境mysql

1.1   JDK 6+sql

activiti 運行在版本 6 以上的 JDK 上。轉到 Oracle Java SE 下載頁面,點擊按鈕「下載 JDK 」。網頁中也有安裝說明。要覈實安裝是否成功,在命令行上運行 java – version 。將打印出安裝的 JDK 的版本。數據庫

1.2   Ant 1.8.1+apache

從 Ant[http://ant.apache.org/bindownload.cgi] 下載頁面下載最新穩定版的 Ant 。解壓文件,確保其 bin 文件夾在操做系統的 path 下。在命令行上運行 ant – versioneclipse

來檢查 Ant 是否安裝成功。成功將打印安裝的 Ant 版本。maven

1.3   Eclipse 3.7+編輯器

從 Eclipse 的下載頁面下載 Eclipse Classic( 或 Eclipse JEE) 版的 eclipse 。解壓下載的文件,而後就能夠運行 eclipse 路徑下的 eclipse 文件了。測試

下載地址: http://www.eclipse.org/downloads/packages/release/indigo/sr2 ui

1.4   Activiti -eclipse designer 插件安裝

         在安裝 Activiti -eclipse designer 插件前先安裝 maven 插件, m2e(eclipse) 插件在 Install New SoftWare 安裝時會出現些問題,按如下步驟安裝便可。

1.4.1 先安裝 GEF 插件

maven 插件安裝的時候會依賴這個插件,在 Eclipse -> help -> Install New SoftWare 中安裝, update site: http://download.eclipse.org/tools/gef/updates/interim/

1.4.2 安裝 SVN 插件

在 Eclipse -> help -> Install New SoftWare 中安裝, update site: http://subclipse.tigris.org/update_1.6.x

1.4.3 安裝 Maven 插件

方式一 :在線安裝

         在 Eclipse -> help -> Install New SoftWare 中安裝, update site: http://nexus.tesla.io:8081/nexus/content/sites/m2e.extras/m2e/1.5.0/N/LATEST/

順便 eclipse m2e 支持 site : http://www.eclipse.org/m2e/download/

         如在線安裝不成功,報 [the selected did not contain any resources that can run on server maven project] 錯誤,建議採用方式二安裝。

方式二 :本地安裝

         下載 maven 和 eclipse-maven3-plugin 插件( eclipse-maven3-plugin 爲本人 CSDN 上傳)

Maven site: http://ant.apache.org/bindownload.cgi

eclipse-maven3-plugin site: http://download.csdn.net/detail/yangyi22/5663245

         在 eclipse 目錄下創建 myplugins 目錄,將 eclipse-maven3-plugin 解壓後文件複製進去,創建 links 目錄,新建 maven.link 文件(名字隨意取)添加文本:

path=…/eclipse/myplugins/maven ,即讓 eclipse 啓動時去尋找 myplugins 中的插件,如本人安裝的路徑: path=D:/Java~coding~site /eclipse[indigo-jee]/eclipse/myplugins/maven

1.4.4 最後安裝 Activiti -eclipse designer

打開 Help à Install New Software 。在以下面板中,點擊 Add 按鈕,而後填入下列字段:l Name : Activiti BPMN 2.0 designer

l Location : http://activiti.org/designer/update/

 

 

安裝成功後,新建 activiti 項目,視圖以下:

 

 

安裝 m2eclipse 插件後,重啓 Eclipse ,如提示 :

Eclipse is running in a JRE, but a JDK is required

  Some Maven plugins may not work when importing projects or updating source folders.

須要修改 eclipse.ini 文件,新增一項配置

-vm 配置項必須在– vmargs 配置項前,是由於執行到 -vmargs 配置項已經選擇了一個默認的 JVM 了。

因此在– vmargs 前面加上這一句 :

-vm  

C:/Program Files/Java/jdk1.6.0_20/bin/javaw.exe 

二開始 activiti 5.10 的第一個 demo

2.1   創建 activiti-demo 工程,選擇 Activiti Project

 

 

建立成功後的項目:

 

 

給 activiti-demo 項目添加 activiti 依賴包,項目右鍵 Build Path->Configure Build Path->libraries -> Add External Jars 選中 …\activiti-5.10\setup\files\dependencies\libs 下全部包添加便可。

2.2 將 activiti-demo 工程的數據庫整合爲 MySQL

         將 …\activiti-5.10\setup\build\activiti-cfg 目錄下的 activiti.cfg.xml 配置文件複製到項目 src\main\resources 目錄下,修改數據庫配置以下:

<!-- Database configurations -->

    < property name = "jdbcUrl"

value = "jdbc:mysql://localhost:3306/test?autoReconnect=true" />

    < property name = "jdbcDriver"

        value = "com.mysql.jdbc.Driver" />

    < property name = "jdbcUsername" value = "root" />

     < property name = "jdbcPassword" value = "root" />

    <!-- Database configurations -->

    < property name = "databaseSchemaUpdate" value = "true" />

    <!-- job executor configurations -->

    < property name = "jobExecutorActivate" value = "false" />

2.3 設計 activiti-demo 工程的流程

在該項目的 src/main/resource/diagrams 下右鍵建立 Activiti diagram ,文件名爲: DemoProcess.bpmn 。

 

 -->

 

此時進入 Activiti Diagram Editor ,在空白處點一下,下邊屬性欄中設置 id 和 name , id 就是這個流程的 key ,後邊啓動流程的時候使用到。

 

 

注意: Activiti 5.8 升級到 5.9 之後, xxx.bpmn20.xml 和 xxx.png 已不默認生成,僅僅是生成 xxx.bpmn 文件, xxx.bpmn 中的定義內容就如 xxx.bpmn20.xml 同樣。

         另外,快捷菜單:「 Create deployment artifacts 」和「 Import BPMN20 file 」,在 5.9 之後去掉了。

如需設計完成流程後自動生成一個 png 圖片按以下處理

l   保存沒法生存 png 圖片按如下處理

Window –> Preferences -> Activiti ->Save 勾選便可

 

或者手動操做 : 用 Activiti Designer 打開 xxx.bpmn 文件,而後右鍵 選擇 Export Diagram... ,在彈出的對話框中設置圖片的參數便可,通常使用默認就能夠了。

在設計編輯器中保存 DemoProcess.bpmn 後的項目視圖以下:

 

 

測試類代碼   DemoProcessTest.java

package main.java;

import java.io.FileInputStream;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

/**
 * Activiti 5.10 demo
 * @author BruceQin
 *
 */
public class DemoProcessTest {
  // diagrams實際路徑
  private static String realPath =
      "D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]" +
      "\\activiti-demo\\src\\main\\resources\\diagrams";
  public static void main(String[] args) throws Exception {
    // 建立 Activiti流程引擎
    ProcessEngine processEngine = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource("activiti.cfg.xml")
        .buildProcessEngine();
   
    // 取得 Activiti 服務
    RepositoryService repositoryService = processEngine.getRepositoryService();
    RuntimeService runtimeService = processEngine.getRuntimeService();

    // 部署流程定義
    repositoryService
        .createDeployment()
        .addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))
        .addInputStream("DemoProcess.png", new FileInputStream(realPath + "\\DemoProcess.bpmn"))        .deploy();        // 啓動流程實例    ProcessInstance instance = processEngine         .getRuntimeService().startProcessInstanceByKey("DemoProcess");    String procId = instance.getId();    System.out.println("procId:"+ procId);        // 得到第一個任務    TaskService taskService = processEngine.getTaskService();    List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("firstTask").list();    for (Task task : tasks) {      System.out.println("Following task is: taskID -" +task.getId()+" taskName -"+ task.getName());      // 認領任務      taskService.claim(task.getId(), "testUser");    }         // 查看testUser 如今是否可以獲取到該任務    tasks = taskService.createTaskQuery().taskAssignee("testUser").list();    for (Task task : tasks) {      System.out.println("Task for testUser: " + task.getName());      // 完成任務      taskService.complete(task.getId());    }    System.out.println("Number of tasks for testUser: "        + taskService.createTaskQuery().taskAssignee("testUser").count());        // 獲取並認領第二個任務    tasks = taskService.createTaskQuery().taskDefinitionKey("secondTask").list();    for (Task task : tasks) {      System.out.println("Following task is : taskID -" +task.getId()+" taskName -"+ task.getName());      taskService.claim(task.getId(), "testUser");    }        //完成第二個任務結束結束流程    for (Task task : tasks) {      taskService.complete(task.getId());    }        // 覈實流程是否結束    HistoryService historyService = processEngine.getHistoryService();    HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();    System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());  }}

相關文章
相關標籤/搜索