天天看點

工作流activiti5概述工作流基本概念工作流作用适用領域實作方法

工作流

概述

       工作流是針對工作中具有固定程式的正常活動而提出的一個概念。通過将工作活動分解成定義良好的任務、角色、規則和過程來進行執行和監控,達到提高生産組織水準和工作效率的目的。工作流技術為企業更好地實作經營目标提供了先進的手段。 

工作流基本概念

1.       問:什麼是工作流呢?

答:工作流是兩個或兩個以上的人,為了共同的目标,連續的以串行或并行的方式去完成某一業務或某一項活動。如工作流的名稱所表達的含義,一個人處理的業務不稱其為工作流,隻有任務從一個人"流"向另一個人的時候才有工作流,并且個體參與工作流必須是為了同一個工作目标,如果個體處于兩個互相獨立的項目之中,不會産生工作流。

2.       問:什麼是串行?什麼是并行?

答:業務中的步驟也許以一步接着一步的方式進行,我們稱之為串行;

在一個活動節點由不同的人或組合根據不同的情況處理,我們稱之為并行。

工作流作用

1.       首先聲明一點,所有能使用工作流的系統都能不用工作流實作。但是,這樣做的壞處是:

a.       開發人員很頭疼,相同的流程需要不斷的coding,開發周期将變長

b.       維護更是惡夢,一旦變更流程或流程有纰漏,更改會很麻煩

c.       需要人工進行資料查詢、統計、分析

d.       系統将無法控制活動或任務的流向任何人都能進行處理操作

e.       等等。太多了。

2.       用工作流的好處是:

a.       上面的問題都将得到解決

b.       事找人隻要人計劃好事情,事情會自動去找相關的人,這樣人隻要專注于任務處理就行

c.       資料存儲對每個人的每項操作都有記錄

d.       便于可管理系統自動統計每項任務,并按你的需求進行統計分析,給出結果

e.       等等。優點多多。

适用領域

  1. 适用行業:

        消費品行業,制造業,電信服務業,銀證險等金融服務業,物流服務業,物業服務業,物業管理,大中型進出口貿易公司,政府事業機構,研究院所及教育服務業等,特别是大的跨國企業和集團公司。

  2. 具體應用:

        關鍵業務流程:訂單、報價處理、采購處理、合同稽核、客戶電話處理、供應鍊管理等 

        行政管理類: 出差申請、加班申請、請假申請、用車申請、各種辦公用品申請、購買申請、日報周報等凡是原來手工流轉處理的行政表單。 

        人事管理類:員工教育訓練安排、績效考評、職位變動處理、員工檔案資訊管理等。 

        财務相關類:付款請求、應收款處理、日常報帳處理、出差報帳、預算和計劃申請等。 

        客戶服務類:客戶資訊管理、客戶投訴、請求處理、售後服務管理等管理等。 

        特殊服務類: ISO系列對應流程、品質管理對應流程、産品資料資訊管理、貿易公司報關處理、物流公司貨物跟蹤處理等各種通過表單逐漸手工流轉完成的任務均可應用工作流軟體自動規範地實施。 

實作方法

       既然工作流這麼神奇,這麼好用,那麼我們該如何實作一套工作流呢?别急,接下來我們以請假流程為例,帶你領略一套完整的工作流程。

工作流需要依靠工作流管理系統來實作。限于篇幅,我們這裡隻讨論工作流的實作,假設你現在有一套能正常運作的管理系統。

那麼我們要做的就是根據客戶的業務需求,畫出整體的工作流程圖,以請假流程為例,如圖1-1。

圖1-1 請假管理流程圖

至于具體的圖示含義,諸君可參見于http://www.mossle.com/docs/activiti工作流使用者手冊。

       有了工作流程圖,我們接下來要做的就是将該流程部署并釋出到系統中。其中,LeaveProcess.bpmn20.xml是工作流程圖的檔案名稱。

               ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();      
RepositoryService repositoryService = processEngine.getRepositoryService();      
repositoryService.createDeployment()      
  .addClasspathResource("org/activiti/test/LeaveProcess.bpmn20.xml")      
.deploy();      

       釋出完成後,我們還需要啟動該流程執行個體。其中,"LeaveProcess:1:4"是流程定義id,variables是該流程執行個體啟動人的資訊,存于Map中。

RuntimeService runtimeService = processEngine.getRuntimeService();      
ProcessInstance processInstance = runtimeService. startProcessInstanceById("LeaveProcess:1:4", variables);      

       到了這裡,一個工作流任務就正式開始了,然後我們可以根據api裡所提供的接口,自定義我們工作流程的功能函數,它們的特點就是從目前節點流轉到下一節點,都隻需要知道目前執行人、下一執行人和目前執行任務的描述資訊。

       當然,我們開始了一個工作流程後,到最後一定要關閉它,也就是要結束這項工作。如果不這麼做,那麼這項工作就會一直留在資料庫裡,一兩條沒什麼影響,但如果任務多了,那麼對資料通路性能的影響那将是很可怕的。接下來就結束任務流程,其實任務流程的結束和其他正常的流轉沒什麼差別,唯一的不同就是,結束的下一執行人是不存在的。即,對api的調用隻需傳目前執行人和執行任務描述資訊即可。

       限于篇幅,這裡隻介紹了工作流的理論和實作的大體流程,想要詳細了解的可以聯系本文作者!

繼續閱讀