1. 程式人生 > >第三章,Activiti流程引擎的配置

第三章,Activiti流程引擎的配置

1、ProcessEngineConfiguration

ProcessEngineConfiguration物件代表一個Activiti流程引擎的全部配置,該類下面有一系列的靜態方法,用於讀取和解析相應的配置檔案,並且返回ProcessEngineConfiguration的物件例項。

1.1、createProcessEngineConfigurationFromResourceDefault方法

該方法會從classpath下預設讀取activiti.cfg.xml檔案,該檔案是一個spring的bean配置檔案,利用spring的依賴注入,獲取processEngineConfiguration的bean例項。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-4.1.xsd">

    <bean
id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act"/> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/> <property name="jdbcUsername"
value="root"/>
<property name="jdbcPassword" value="root"/> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans>

1.2,createProcessEngineConfigurationFromResource方法

該方法就是不會預設的載入activiti.cfg.xml檔案,而是會使用開發者自己傳入的檔案。這個方法接收兩個引數,第一個是檔名稱的字串引數,第二個是通過這個檔案完成依賴注入的物件的名稱字串,例如我在classpath建立了config.xml,裡面利用定義了一個process的bean例項,所以我們在使用這個方法的時候應該是ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(“config.xml”,”process”)。

1.3,createProcessEngineConfigurationFromInputStream方法

這個方法的使用就不會限制我們一定要把檔案放在classpath下,利用輸入流我們可以讀取任意的檔案。

1.4,createStandaloneInMemProcessEngineConfiguration方法

這個方法不會讀取任何的配置檔案,所有的資料屬性都是硬編碼在程式碼中的,我們在使用的時候只需要指定databaseSchemaUpdate屬性和jdbcUrl屬性,而且這個使用的記憶體資料庫,例如h2。如果在程式碼編寫中需要改變某個屬性的值,我們只需要呼叫這個類的set方法。

2,資料來源的配置

當前是使用jdbc的形式,將資料庫的配置資訊寫在了配置檔案中,在activiti中ProcessEngineConfiguration引擎類中的方法也是可以接受資料來源例項引數的,例如可以使用C3P0,DBCP的資料來源。

2.1,C3P0資料來源配置

<?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-4.1.xsd">

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act"/>
        <property name="user" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource"/>
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>
</beans>

2.2,DBCP資料來源配置

<?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-4.1.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/act"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource"/>
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>
</beans>

測試java程式碼

package first;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;

public class First {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService repositoryService = engine.getRepositoryService();
        RuntimeService runtimeService = engine.getRuntimeService();
        TaskService taskService = engine.getTaskService();
        repositoryService.createDeployment()
                        .addClasspathResource("bpmn/First.bpmn").deploy();
        runtimeService.startProcessInstanceByKey("myProcess");
        Task task = taskService.createTaskQuery().singleResult();
        System.out.println("第一個任務完成前,當前任務名稱是:" + task.getName());
        taskService.complete(task.getId());
        task = taskService.createTaskQuery().singleResult();
        System.out.println("第二個任務完成前,當前任務名稱是:" + task.getName());
        taskService.complete(task.getId());
        task = taskService.createTaskQuery().singleResult();
        System.out.println("流程結束後,查詢任務:" + task);
    }
}

相關推薦

Activiti流程引擎配置

1、ProcessEngineConfiguration ProcessEngineConfiguration物件代表一個Activiti流程引擎的全部配置,該類下面有一系列的靜態方法,用於讀取和解析相應的配置檔案,並且返回ProcessEngineConfi

【原創】SSM框架下新增activiti流程引擎配置--轉載請註明出處

1.Activiti簡介 Activiti是一款基於bpmn2.0標準所開發的流程引擎,該引擎可以對bpmn20.xml和bpmn檔案進行解析,按照設計的所預先設計出的流程圖來進行流程流轉的工作流引擎。目前在市場上的大部分OA系統工作流都是基於該框架進行開發的。 2.Activiti的ja

Activiti入門教程(詳解流程引擎配置

     在先前的部落格中提到了有關ProcessEngineConfiguration建立,但並沒有詳細的解釋,主要建立的幾個方法,那麼這篇部落格就來談一談有關ProcessEngineConfig

python 培訓 函數裝飾器模塊內置函數之一函數

python目錄: 函數示例裝飾器模塊內置函數一、函數示例:  1、定義函數:    def fun(args):      ‘描述信息‘      函數體    return 返回值   定義函數的三種形式:    無參函數def foo():print(‘in the foo‘)

python培訓模塊

python系統相關的信息模塊: import syssys.argv 是一個 list,包含所有的命令行參數. sys.stdout sys.stdin sys.stderr 分別表示標準輸入輸出,錯誤輸出的文件對象. sys.stdin.readline() 從標準輸入讀一行 sys.stdo

暫存器整理

第三章,記憶體訪問 一,字資料在記憶體中的儲存 1, 記憶體以位元組為單位,劃分為若干個單元。位元組:8bit,字:16bit,雙字:32bit,四字:64bit 2, 字資料的儲存的原則為:高-高-低-低,字資料的低位位元組存放於低地址記憶體單元,字資料的高位位元組存放於高地址的記憶體單元。取低地址記

暫存器

第三章,記憶體訪問 一,字資料在記憶體中的儲存 1, 記憶體以位元組為單位,劃分為若干個單元。位元組:8bit,字:16bit,雙字:32bit,四字:64bit 2, 字資料的儲存的原則為:高-高-低-低,字資料的低位位元組存放於低地址記憶體單元,字資料的高位位元組存放於高地址的記憶體單元。取低地址記

.NET Core實戰專案之CMS 入門篇-原始碼解析配置檔案及依賴注入

作者:依樂祝 原文連結:https://www.cnblogs.com/yilezhu/p/9998021.html 寫在前面 上篇文章我給大家講解了ASP.NET Core的概念及為什麼使用它,接著帶著你一步一步的配置了.NET Core的開發環境並建立了一個ASP.NET Core的mvc專

[uboot] ()uboot流程——uboot-spl程式碼流程

以下例子都以project X專案tiny210(s5pv210平臺,armv7架構)為例。 建議先看《[project X] tiny210(s5pv210)上電啟動流程(BL0-BL2)》,根據例子瞭解一下上電之後的BL0\BL1\BL2階段,以及各個階段的

淺談RPA--orchestrator怎麼用?

因為咱們公司用的主要是uipath的產品,因此博主接下來對於這章會針對uipath的相關套件展開討論。 orchestrator,是uipath的一個產品,其主要功能是robot排程,角色許可權控制,流程管理,robot版本管理,config配置,佇列管理等功能。 這樣子

OpenCV 3 pyton(二值化和尋找輪廓線)

retval, dst = cv.threshold( src, thresh, maxval, type[, dst] ) 這是個閾值化操作 src是input array (多通道, 8-bit or 32-bit floating point). d

Kotlin詳解:實戰

一,搭建開發環境 1,安裝Android Studio 3.0及以上版本 2,升級Gradle外掛版本至少為4.1 3,升級Kotlin外掛版本 4,工程配置 ①,配置工程build.gradle buildscript { ext.kotlin_version = '

阿里雲linux伺服器------配置phpmysql環境實現動態網站

在第二章中我們講述瞭如何配置靜態網站,接下來我們配置動態網站需要的環境 第一步:配置php環境,開啟putty連線到自己的伺服器執行以下命令   安裝php yum install php php-devel 重啟apache使php生效 y 安裝php的擴充套

activiti RuntimeService設定獲和取流程變數及與taskService的區別開始和完成任務時設定流程變數

上一章我們講了taskService獲取流程變數的過程,這裡我們講講RuntimeService是怎麼設定和獲取的,其實過程跟taskService是差不多的。RuntimeService 與流程例項及執行物件相關,對於的表是:act_ru_executionTaskServ

java並發編程的藝術讀書筆記

java並發編程的藝術final域的內存語義寫final域的重排規則:禁止把final域的寫重排序到構造方法之外,主要包括倆個個方面1)JMM禁止編譯器把final域的寫重排序到構造方法之外2)編譯器會在final域寫之後,構造函數return之前插入一個storestore屏障,這個屏障禁止處理器把fina

JAVA-初步認識--其他流程控制語句

繼續 bre ges con 它的 -1 範圍 一個 span 一. 其他的流程控制語句 比較簡單,但要註意的是它們有自己的控制範圍,離開範圍就沒用了。就是兩個關鍵字,加上分號,就是一個語句。 break;continue; break意思是跳出,跳出就代表著有自己的範圍,

持續集成jenkins工具使用之郵件配置

imp 修改 布爾型 suffix table ces 直接 wpa where 1 Email Extension Plugin插件安裝 持續集成很重要的一環就是及時將構建結果通知到對應的責任人,如:構建失敗了,至少需要下發通知給造成本次構建失敗的開發人員,如果包含自

交換機的Telnet遠程登陸配置

telnet 交換機 配置 遠程 一、實驗名稱交換機的Telnet遠程登陸配置二、實驗內容1.新建 Packet Tracer 拓撲圖 配置交換機管理 ip 地址 Switch(config)# int vlan 1 Switch(config-if)#

12網絡管理(下)網絡基礎配置

linix 網絡管理 更多內容請點擊:Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~) http://blog.51cto.com/13683480/2095439筆記整理開始時間:2018年5月2日18:52:09 第12章,網絡管理(下)網絡基礎配置 本章內容

Java多線程編程核心技術

靜態 多線程編程 方法 except In obj 喚醒 bject not 1,notify的同步塊完了,才會運行wait的同步塊 2,interrupt()不是靜態方法,用在wait的線程上會有InteruptException,鎖也會被釋放 3,notify()喚醒的