更新時間:2021-05-11 來源:黑馬程序員 瀏覽量:
Alfresco軟件在2010年5月17日宣布Activiti業務流程管理(BPM)開源項目的正式啟動,其首席架構師由業務流程管理BPM的專家 Tom Baeyens擔任,Tom Baeyens就是原來jbpm的架構師,而jbpm是一個非常有名的工作流引擎,當然activiti也是一個工作流引擎。
Activiti是一個工作流引擎, activiti可以將業務系統中復雜的業務流程抽取出來,使用專門的建模語言BPMN2.0進行定義,業務流程按照預先定義的流程進行執行,實現了系統的流程由activiti進行管理,減少業務系統由于流程變更進行系統升級改造的工作量,從而提高系統的健壯性,同時也減少了系統開發維護成本。
官方網站:https://www.activiti.org/
經歷的版本:
目前最新版本:Activiti7.0.0.Beta
BPM(Business Process Management),即業務流程管理,是一種規范化的構造端到端的業務流程,以持續的提高組織業務效率。常見商業管理教育如EMBA、MBA等均將BPM包含在內。
BPM軟件就是根據企業中業務環境的變化,推進人與人之間、人與系統之間以及系統與系統之間的整合及調整的經營方法與解決方案的IT工具。
通過BPM軟件對企業內部及外部的業務流程的整個生命周期進行建模、自動化、管理監控和優化,使企業成本降低,利潤得以大幅提升。
BPM軟件在企業中應用領域廣泛,凡是有業務流程的地方都可以BPM軟件進行管理,比如企業人事辦公管理、采購流程管理、公文審批流程管理、財務管理等。
BPMN(Business Process Model AndNotation)- 業務流程模型和符號 是由BPMI(BusinessProcess Management Initiative)開發的一套標準的業務流程建模符號,使用BPMN提供的符號可以創建業務流程。
2004年5月發布了BPMN1.0規范.BPMI于2005年9月并入OMG(The Object Management Group對象管理組織)組織。OMG于2011年1月發布BPMN2.0的最終版本。
具體發展歷史如下:
BPMN 是目前被各 BPM 廠商廣泛接受的 BPM 標準。Activiti 就是使用 BPMN 2.0 進行流程建模、流程執行管理,它包括很多的建模符號,比如:
Event
用一個圓圈表示,它是流程中運行過程中發生的事情。
活動用圓角矩形表示,一個流程由一個活動或多個活動組成
Bpmn圖形其實是通過xml表示業務流程,上邊的.bpmn文件使用文本編輯器打開:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <process id="myProcess" name="My process" isExecutable="true"> <startEvent id="startevent1" name="Start"></startEvent> <userTask id="usertask1" name="創建請假單"></userTask> <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow> <userTask id="usertask2" name="部門經理審核"></userTask> <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow> <userTask id="usertask3" name="人事復核"></userTask> <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="usertask3"></sequenceFlow> <endEvent id="endevent1" name="End"></endEvent> <sequenceFlow id="flow4" sourceRef="usertask3" targetRef="endevent1"></sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess"> <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess"> <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> <omgdc:Bounds height="35.0" width="35.0" x="130.0" y="160.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"> <omgdc:Bounds height="55.0" width="105.0" x="210.0" y="150.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2"> <omgdc:Bounds height="55.0" width="105.0" x="360.0" y="150.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask3" id="BPMNShape_usertask3"> <omgdc:Bounds height="55.0" width="105.0" x="510.0" y="150.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> <omgdc:Bounds height="35.0" width="35.0" x="660.0" y="160.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="165.0" y="177.0"></omgdi:waypoint> <omgdi:waypoint x="210.0" y="177.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> <omgdi:waypoint x="315.0" y="177.0"></omgdi:waypoint> <omgdi:waypoint x="360.0" y="177.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> <omgdi:waypoint x="465.0" y="177.0"></omgdi:waypoint> <omgdi:waypoint x="510.0" y="177.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4"> <omgdi:waypoint x="615.0" y="177.0"></omgdi:waypoint> <omgdi:waypoint x="660.0" y="177.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>
部署activiti
Activiti是一個工作流引擎(其實就是一堆jar包API),業務系統訪問(操作)activiti的接口,就可以方便的操作流程相關數據,這樣就可以把工作流環境與業務系統的環境集成在一起。
流程定義
使用activiti流程建模工具(activity-designer)定義業務流程(.bpmn文件) 。
.bpmn文件就是業務流程定義文件,通過xml定義業務流程。
流程定義部署
activiti部署業務流程定義(.bpmn文件)。
使用activiti提供的api把流程定義內容存儲起來,在Activiti執行過程中可以查詢定義的內容
Activiti執行把流程定義內容存儲在數據庫中
啟動一個流程實例
流程實例也叫:ProcessInstance
啟動一個流程實例表示開始一次業務流程的運行。
在員工請假流程定義部署完成后,如果張三要請假就可以啟動一個流程實例,如果李四要請假也啟動一個流程實例,兩個流程的執行互相不影響。
用戶查詢待辦任務(Task)
因為現在系統的業務流程已經交給activiti管理,通過activiti就可以查詢當前流程執行到哪了,當前用戶需要辦理什么任務了,這些activiti幫我們管理了,而不需要開發人員自己編寫在sql語句查詢。
用戶辦理任務
用戶查詢待辦任務后,就可以辦理某個任務,如果這個任務辦理完成還需要其它用戶辦理,比如采購單創建后由部門經理審核,這個過程也是由activiti幫我們完成了。
流程結束
當任務辦理完成沒有下一個任務結點了,這個流程實例就完成了。
猜你喜歡: