您好,登錄后才能下訂單哦!
工作流介紹
工作流(Workflow),就是通過計算機對業務流程自動化執行管理。它主要解決的是“使在多個參與者之間按照某種預定義的規則自動進行傳遞文檔、信息或任務的過程,
從而實現某個預期的業務目標,或者促使此目標的實現”。
Activiti
Alfresco軟件在2010年5月17日宣布Activiti業務流程管理(BPM)開源項目的正式啟動,其首席架構師由業務流程管理BPM的專家 Tom Baeyens擔任,Tom Baeyens就是原來jbpm的架構師,
而jbpm是一個非常有名的工作流引擎,當然activiti也是一個工作流引擎。
Activiti是一個工作流引擎, activiti可以將業務系統中復雜的業務流程抽取出來,使用專門的建模語言(BPMN2.0)進行定義,業務系統按照預先定義的流程進行執行,
實現了業務系統的業務流程由activiti進行管理,減少業務系統由于流程變更進行系統升級改造的工作量,從而提高系統的健壯性,同時也減少了系統開發維護成本。
BPM
BPM(Business Process Management),即業務流程管理,是一種以規范化的構造端到端的卓越業務流程為中心,以持續的提高組織業務績效為目的系統化方法
BPMN
BPMN(Business Process Model And Notation)- 業務流程模型和符號 是由BPMI(Business Process Management Initiative)開發的一套標準的業務流程建模符號,
使用BPMN提供的符號可以創建業務流程。 2004年5月發布了BPMN1.0規范.BPMI于2005年9月并入OMG(The Object 新航道培訓Management Group對象管理組織)組織。OMG于2011年1月發布BPMN2.0的最終版本.
activiti就是采用bpmn2.0進行建模
關于流程的兩個常用到的關鍵詞 流程定義 ,流程實例
他們的關系就像java類和java對象一樣
1流程實例(ProcessInstance):a和b都發起了一個病假,那么就產生了兩個病假的流程實例
2流程定義(ProcessDefinition):a和b請的病假就是一個流程定義
activiti服務架構圖
上面的架構說白了就是通過activiti.cfg.xml獲取引擎配置對象ProcessEngineConfiguration
通過這個配置對象獲取引擎對象ProcessEngine,
最后可以通過引擎獲取各個service來進行流程的處理
下面簡介各個service的作用
RepositoryService | activiti的資源管理類 ,用于流程部署,獲取流程部署的資源。。 |
RuntimeService | activiti的流程運行管理類,用于啟動一個流程實例,操作當前運行的流程信息 |
TaskService | activiti的任務管理類,操作個人任務,組任務 |
HistoryService | activiti的歷史管理類,用于操作歷史 流程信息 |
IdentityService | activiti的用戶身份管理類,設置用戶、組(角色)、用戶和組關系 。。 |
FormService | activiti的表單管理類,實現activiti中配置表單數據。 |
ManagerService | activiti的引擎管理類,用于activiti運行的監控,給超級管理員使用。 |
下面是activi的安裝
Activiti下載地址:http://activiti.org/download.html(我用的5.14版本)
下載好了后目錄結構
database里面就有我們需要的數據庫,activiti支持多種數據庫
h3, mysql, oracle, postgres, mssql, db2
我這里采用mysql做演示
創建數據庫的方式
需要加入spring的jar包和mybatis的jar,最好是ssm都有的環境下進行測試
方式1
到目錄下database-create找到mysql的三個sql導入到自己創建的數據庫中
方式2
采用程序創建的方式
在classpath目錄下建立activiti.cfg.xml(為什么在這個位置建立名稱為這個的后面說)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> <property name="username" value="ferwms" /> <property name="password" value="ferwms" /> <property name="maxActive" value="3" /> <property name="maxIdle" value="1" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 數據源 --> <property name="dataSource" ref="dataSource" /> <!-- activiti數據庫表處理策略 --> <property name="databaseSchemaUpdate" value="true" /> </bean></beans>
其實就是一個spring的配置
大家會發現在上面的processEngineConfiguration里面有一個參數databaseSchemaUpdate是數據庫處理的策略,幾種策略如下
false(默認):檢查數據庫表的版本和依賴庫的版本, 如果版本不匹配就拋出異常。
true: 構建流程引擎時,執行檢查,如果需要就執行更新。 如果表不存在,就創建。(常用)
create-drop: 構建流程引擎時創建數據庫表, 關閉流程引擎時刪除這些表。
drop-create:先刪除表再創建表。(常用,使用完成后改為true)
create: 構建流程引擎時創建數據庫表, 關閉流程引擎時不刪除這些表。
我們選擇的是true,所以在創建流程引擎的時候會檢查不存在就創建
下面的程序得到流程引擎對象
/從classpath目錄下查找resource名稱的xml(如果不指定就默認activiti.cfg.xml)//從里面找出bean的id為processEngineConfiguration的流程引擎配置類,//當然也有其他的構造類可以指定bean的idString resource = "activiti.cfg.xml"; ProcessEngineConfiguration configuration = ProcessEngineConfiguration. createProcessEngineConfigurationFromResource(resource); //根據流程配置對象獲取引擎,發現策略是true,//也就是沒有數據庫就創建數據庫,所以會自動創建activiti的數據庫ProcessEngine processEngine = configuration.buildProcessEngine();
/* * 獲取流程引擎對象嗎,下面的方法會默認查找classpath目錄下的名稱為activi.cfg.xml * 里面bean的id為processEngineConfiguration的ProcessEngineConfiguration引擎配置對象來獲取ProcessEngine對象 */ ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
上邊兩端代碼獲取流程引擎對象的作用是一樣的,但是下方的獲取方式需要注意xml的位置和命名規范
創建完的數據庫
那么不同的名稱的作用是什么
ACT_RE_*: 'RE'表示repository。 這個前綴的表包含了流程定義和流程靜態資源 (圖片,規則,等等)。
ACT_RU_*: 'RU'表示runtime。 這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 Activiti只在流程實例執行過程中保存這些數據, 在流程結束時就會刪除這些記錄。 這樣運行時表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 這些表包含身份信息,比如用戶,組等等。
ACT_HI_*: 'HI'表示history。 這些表包含歷史數據,比如歷史流程實例, 變量,任務等等。
ACT_GE_*: GE表示general。通用數據, 用于不同場景下。
eclipse下activiti-designer插件的安裝(繪制流程圖生成bpmn文件)
注意,插件需要另外單獨下載(百度一下就有),不是上面官方的哪個帶jar的壓縮包!!!
首先需要知道這個插件的作用:
安裝了這個插件就可以在eclipse中根據bpmn2.0的規則繪制流程圖,流程圖文件是已bpmn結尾的,說白了畫完圖后用記事本打開就是xml,不過格式是bpmn的而已
安裝步驟:
我這里使用eclipse-indigo版本,其他出問題
1打開eclipse創建myplugins文件夾
2將上面的activiti文件解壓放進去
3打開eclipse下的dropins創建文件activiti.txt
4設置里面內容為path=d:\\eclipse\\activiti 地址是你eclipse自己的地址
5重啟eclipse,右擊新建-other可以找到activiti
windows-preference點上這個,可以在生成bpmn文件的同時生成一張流程的png文件,因為activiti代碼生成的會亂碼,需要修改源碼,很麻煩
打開windows-showView-other 打開properties視圖,可以更方便修改bpmn流程圖
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。