1.工作流:(workflow)

整個工作的流程
eg:請假工作流
(我)員工-->組長-->經理-->主管-->人事-->總經理(董事會)
eg:出差(報賬)工作流
(我)員工(需要報銷12000)-->組長-->經理(只能1000)-->財務總監(無窮大(只能5000))-->總經理(10000)-->董事長(很厲害)
工作流(workflow)就是工作流程的計算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規則在計算機中以恰當的模型進行表示並對其實施計算。它主要解決的是“使在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現”。(我的理解就是:將部分或者全部的工作流程、邏輯讓計算機幫你來處理,實現自動化)
所謂工作流引擎是指workflow作為應用系統的一部分,並為之提供對各應用系統有決定作用的根據角色、分工和條件的不同決定信息傳遞路由、內容等級等核心解決方案。
例如開發一個系統最關鍵的部分不是系統的界面,也不是和數據庫之間的信息交換,而是如何根據業務邏輯開發出符合實際需要的程序邏輯並確保其穩定性、易維護性和彈性。
比如你的系統中有一個任務流程,一般情況下這個任務的代碼邏輯、流程你都要自己來編寫。實現它是沒有問題的。但是誰能保證邏輯編寫的毫無紕漏?經過無數次的測試與改進,這個流程沒有任何漏洞也是可以實現的,但是明顯就會拖慢整個項目的進度。
工作流引擎解決的就是這個問題:如果應用程序缺乏強大的邏輯層,勢必變得容易出錯(信息的路由錯誤、死循環等等)。
工作流的兩大框架:
JBPM(沒有廢棄)-->已經很少有人使用
Activity(工作流):更方便,更快捷,開發效率更高
在android中四大組件之一:activity
都遵循某個規范/協議/標准:BPMN2.0
BPMN:
BPMN(Business Process Model and Notation)--業務流程模型與符號。
BPMN是一套流程建模的標准,主要目標是被所有業務用戶容易理解的符號,支持從創建流程輪廓的業務分析到這些流程的最終實現,知道最終用戶的管理監控。通俗一點其實就是一套規范,畫流程模型的規范。流程模型包括:流程圖、協作圖、編排圖、會話圖。詳細信息請google。
Activiti簡介:
Activiti是一個開源的工作流框架,它實現了BPMN 2.0規范,可以發布設計好的流程定義,並通過api進行流程調度。Activiti 作為 一個遵從 Apache 許可的工作流和業務流程管理開源平台,其核心是基於 Java 的超快速、超穩定的 BPMN2.0 流程引擎,強調流程服務的可嵌入性和可擴展性,同時更加強調面向業務人員。
Activiti 流程引擎重點關注在系統開發的易用性和輕量性上。每一項 BPM 業務功能 Activiti 流程引擎都以服務的形式提供給開發人 員。通過使用這些服務,開發人員能夠構建出功能豐富、輕便且高效的 BPM 應用程序。
activiti-6.0.0:
database:數據庫(activiti工作流自帶的數據庫表(23張表))
所支持的數據庫:db2,h2,hsql,sql-server(mssql),mysql,oracle,postgresSQL
如果你所使用的數據庫上面並沒有-->自己定義這23張表
libs:jar包(使用activiti所需要的jar包)
wars:demo包(里面裝的都是war包)
activiti-app.war
(在5.1.2以后可能沒有了)docs:文檔
activiti的關鍵對象:
1.Deployment:流程部署對象,部署一個流程時創建。
2.ProcessDefinitions:流程定義,部署成功后自動創建。
3.ProcessInstances:流程實例,啟動流程時創建。
4.Task:任務,在Activiti中的Task僅指有角色參與的任務,即定義中的UserTask。
5.Execution:執行計划,流程實例和流程執行中的所有節點都是Execution,如UserTask、ServiceTask等。
activiti的服務接口:(沒有順序)
在activiti集成spring的時候,必須要在配置文件中定義這7個服務接口(必須要),而且少定義一個activiti就跑不起來
1.ProcessEngine:流程引擎的抽象,通過它我們可以獲得我們需要的一切服務。
2.RepositoryService:Activiti中每一個不同版本的業務流程的定義都需要使用一些定義文件,部署文件和支持數據(例如BPMN2.0 XML文件,表單定義文件,流程定義圖像文件等),這些文件都存儲在Activiti內建的Repository中。RepositoryService提 供了對repository的存取服務。在所有的activiti項目中,都至少要擁有一個.bpmn文件(定義了你的task的流程走向)
3.RuntimeService:在Activiti中,每當一個流程定義被啟動一次之后,都會生成一個相應的流程對象實例。RuntimeService提供 了啟動流程、查詢流程實例、設置獲取流程實例變量等功能。此外它還提供了對流程部署,流程定義和流程實例的存取服務。
private Fruit apple1;
private Apple apple2;
apple1 = new Apple();
4.TaskService: 在Activiti中業務流程定義中的每一個執行節點被稱為一個Task,對流程中的數據存取,狀態變更等操作均需要在 Task中完成。TaskService提供了對用戶Task 和Form相關的操作。它提供了運行時任務查詢、領取、完成、刪除以及變量設置等功能。
5.IdentityService: Activiti中內置了用戶以及組管理的功能,必須使用這些用戶和組的信息才能獲取到相應的Task IdentityService 提供了對Activiti 系統中的用戶和組的管理功能。員工(lisi 123),組長(wangwu 123),經理(zhaoliu 123),總監(tianqi 123),總裁(zhaosi 123)
6.ManagementService: ManagementService提供了對Activiti流程引擎的管理和維護功能,這些功能不在工作流驅動的應用程序 中使用,主要用於Activiti系統的日常維護。不用關心,activiti會自動幫忙處理!
7.HistoryService: HistoryService用於獲取正在運行或已經完成的流程實例的信息,與RuntimeService中獲取的流程信息不同,歷史信息包含已經持久化存儲的永久信息,並已經被針對查詢優化。
2.myeclipse集成activiti的插件:
通過引用的方式實現集成
在網上下載activiti的插件
http://activiti.org/designer/update/
會得到activiti-designer-5.18.0.zip
直接解壓
然后直接把解壓出的文件夾copy到Myeclipse的dropins目錄
再在Myeclipse的dropins目錄里新增一個文件activiti.link
使用編輯器編輯activiti.link
path=就是activiti-designer-5.18.0地址
path=Myeclipse的dropins目錄\\activiti-designer-5.18.0\\
重啟MyEclipse
找到首選項-->直接在首選項中會看到Activiti選項即可安裝成功
New project-->Activiti
