天天看點

activiti學習資料(Activiti Initiative)

Activiti Initiative  

言歸正傳吧,今天是第一篇blog,說說新的workflow Engine吧 -- Activiti。這是Tom Baeyens離開JBoss之後自己繼續開發的一款BPM Engine。他為了表示這是從jBPM的延續,可能今年11月份正式釋出版本時将會直接使用5.0這個版本号。

    因為工作的原因,被要求跟蹤一下工作流的情況,正好趕上Activiti的Initiative,是以決定好好follow一下。小自我膨脹一下,花了大概兩個禮拜的時間,注意,是整整兩個禮拜,算上白天晚上的時間哦,大概看完了Activiti 60% -- 70% 的源碼,一些知識跟大家分享一下,也希望自己提出建議的時候能聽到JavaEyers的意見和指責,前進共勉。

    今天先做個簡單介紹,看完世界杯後接着寫。

    作為一個工作流引擎,WfMC(Workflow Management Coalition)有它自己标準的定義;但是做為一個User和Developer,知道标準固然好;更重要的,你必須知道你現在正在使用的這款産品(或者架構)的正确元件和典型特點。

    Activiti從jBPM繼承而來,固然有着和jBPM相似的結構群組件;但是從我跟蹤Activiti的User和Developer論壇情況來看,說實話,一些使用英語的老外好像都沒搞清楚到底Activiti中目前有哪些元件,各個元件到底用來做什麼。說實話,我覺得這個很重要,因為一個架構的整體藍圖,就好像打仗中的整體戰略,會對你靈活而自主的執行戰術産生很大的影響;知道了戰略,你會在戰術時知道Why or Why not,進而自信和自主的決定什麼時候按照标準(架構提供的API/SPI)執行,什麼時候該将在外而軍令有所不受(需要Hack源代碼,以擴充包的形式自定義你的特殊需求)。

    對于Activiti,它目前具有4個關鍵元件(截止到最新的5.0-alpha3版本):

    1.流程引擎。

      作用:運作時核心元件,解析流程定義檔案(.bpmn20.xml檔案),将其轉化為純粹的記憶體Java對象,以供運作時各個功能使用;

      表現為:jar包(activiti-engine-5.0.alpha3.jar);

      使用:部署在應用伺服器/Servlet容器的運作時類路徑中(如:Tomcat的lib中)

      級别:最核心元件,建議所有擴充都另行打包,并且在你确實了解Activiti源碼後進行

    2.管理者控制台(activiti-probe)

      作用:供系統管理者了解Activiti底層資料庫目前的情況。

      表現為:war包(activiti-probe.war)

      使用:部署在應用伺服器/Servlet容器的web應用目錄下(如:Tomcat的webapps)

      級别:應用層的核心元件。但目前功能十分有限,如:不能監控流程執行的動态情況,無法知道流程目前執行到哪個節點,無法人為調整/幹預流程的執行狀态等;無法提供統計資訊,或者基于統計,給出流程可優化資訊等。無日志。

    3.使用者控制台(activiti-explorer)

      作用:供普通使用者真正使用Activiti流程引擎功能

      表現為:war包(activiti-explorer.war)

      使用:部署在應用伺服器/Servlet容器的web應用目錄下(如:Tomcat的webapps)

      級别:應用層核心元件。供使用者可以開始、申請以及完成一個個工作流具體内容。目前支援流程中嵌入表單,表單中含有參數等。即:使用者可以在此管理自己的To-Do List内容

    4.業務流程模組化工具(activiti-modeler)

      作用:供業務人員通過圖形界面建立需要的業務流程模型。

      表現為:war包(activiti-modeler.war)

      使用:部署在應用伺服器/Servlet容器的web應用目錄下(如:Tomcat的webapps)

      級别:應用層重要元件。可以供企業内所謂的業務分析員通過圖形界面快速直接的建立自己的業務流程模型,以便後用。目前該元件由Signavio獨立提供。

    直覺效果:

activiti學習資料(Activiti Initiative)
activiti學習資料(Activiti Initiative)

    最後,将來會有一個元件叫做 activiti-cycle,是用來給所謂的技術人員、業務人員和終端使用者協同工作用的。具體的截圖可以看看這裡:http://activiti.org/cycle.html

    說了這麼多了,為什麼會先明确元件的劃分;如果用過Activiti或者jBPM的同學一定明白,這些BPM引擎的标準使用方法是通過自帶的Ant腳本建構完成,如果你需要在你的特殊環境裡靈活使用的話,一是建議好好看看Ant的那個建構腳本;二是你總得知道建構腳本中每個Target是幹什麼的吧。如果想知道腳本每步在幹什麼,你就得知道這些BPM Suite都含有哪些元件,那麼才會明白腳本中每一步是把哪個元件拿來做什麼部署或者使用了;這樣你才會根據你的需求,大膽而自信的裁剪你自己需要的ant建構腳本,成功測試後來滿足一下你那小小的虛榮心和成就感。 哈哈

    自我感覺:初次使用時最困惑的其實不是各個元件都表現為什麼形式,被放在了運作時環境的什麼地方,起了哪些作用;而是引擎相關檔案(jPDL or Bpmn20)是如何被各個元件所感覺的?!流程定義檔案的部署到底幹了什麼,是一個怎樣的過程,獨立麼?