osworkflow工作流技術研究

 轉載,原文地址:http://bluewens.blog.163.com/blog/static/6991307200991005424525/
         目前本人正在研發一個基於JAVA技術的OA軟件,功能很全,最核心的功能就算是工作流了。說到工作流,自然要想到工作流引擎,感覺自己開發一個,太耗時,因此,想到用網上的開源工作流引擎。搜索了許多工作流引擎,對我來說,感覺最好的還是osworkflow工作流引擎。

       爲何這樣說呢?因爲osworkflow是一種基於有限狀態機的工作流引擎技術。個人感覺以狀態+設定的規則自由靈活地引導工作流轉,這正是OA應用所必需的,具有簡單靈活等優點,但缺點就是目前其官方網站提供的工作流設計器不好用,需要自己設計,另外,內置的用戶管理系統(即用戶表,用戶組表和角色表)均太過簡單,也太過死板,還需要根據自己的應用來自定義。

      下面將以第一個osworkflow demo程序來開始研究如何應用osworkflow。

   首先,到osworkflow的官方網站http://www.opensymphony.com/osworkflow/,下載一個最新的osworkflow-2.8.0.zip,解壓後,裏面除了源碼之外,還提供了一個osworkflow-2.8.0-example.war示例,我們就從這個示例開始下手。

     第二步,將osworkflow-2.8.0-example.war重命名成osworkflow_demo.war包。然後將其拷貝到tomcat6.0的webapps目錄(如G:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps)下面。如果tomcat6.0正在運行狀態,則tomcat6.0會自動將該war包解壓分發到osworkflow_demo目錄。

    第三步,打開IE瀏覽器,輸入http://localhost:8080/osworkflow_demo/ ,然後就可以看到效果。

    值得一提的是,osworkflow內置的示例程序,用的是內存模式保存流程步驟,用戶數據。用戶在此示例網站改動的數據數據均保存在WEB-INF\classes的osuser.xml或者example.xml中,要實現數據的可執久化(即保存到數據庫),需要對osworkflow進行更深入的研究。

      下面我們來研究這個示例網站的使用,順便領會一下它的設計思路,從中找出竅門,以便以後我們要把osworkflow技術很好地應用在我們的OA中。

      首先,我們登錄http://localhost:8080/osworkflow_demo/,自動重置到默認的主頁http://localhost:8080/osworkflow_demo/default.jsp。上面的英文說的是要我們創建一個帳號,當然,我們也可以將test作爲用戶名,test作爲密碼來登錄。主頁下面是一張稿件審批流程圖,用戶登錄後,新建流程,每執行一步工作流均按此流程圖相符合,並且每執行一步均可點擊Viw Live Graph 查看執行效果。

其主要流程是:開始—>初稿->編輯稿件->審稿->發稿.(但值得提示的是,本示例並不是直接走這個流程,而是有一些曲折,詳見下述)。因爲如果初稿準備的不好或者要進行一些設計,就要走以下的流程。

開始->初稿(First Draft)->稿件設計這時要分出來2步(Foo和Bar),Bar的下步流程是Bax,只有Foo和Bar及Baz均完成,才能進行下一步編輯稿件 Edit Doc,接着是初次審稿Review Doc,初審過後,可能要進行多次的複審(Second Review),如果不進行多次的複審,也可能直接就發稿(Public Doc)了.此時流程就結束了。

總之,這個示例很符合日常工作的場景。

 讓我們來以test作爲用戶名和密碼登錄一下,體驗osworkflow的應用吧。

1.登錄http://localhost:8080/osworkflow_demo/nav.jsp,

可以點擊Home 返回首頁,點擊New Workflow 新建流程(本示例新建5個流程,即1,2,3,4,5),點擊My Underway Workflows 查看自己下面所有的流程。

在文本框中輸入數字,如1,然後選擇VIEW,則查看到流程1的執行狀態。見下圖

Permissions


 

StepActionStatusOwnerStart DateFinish DatePrevious
Publish Doc (14)NONEFinishedtestSat Oct 10 00:59:03 CST 2009null13,
Publish Doc (13)Publish DocumentFinishedtestSat Oct 10 00:59:01 CST 2009Sat Oct 10 00:59:03 CST 200912,
Review Doc (12)Publish DocFinishedtestSat Oct 10 00:58:52 CST 2009Sat Oct 10 00:59:01 CST 200911,
Second Review (11)Finish Second ReviewFinishedtestSat Oct 10 00:58:43 CST 2009Sat Oct 10 00:58:52 CST 200910,
Second Review (10)Sign Up For Second ReviewFinished Sat Oct 10 00:58:35 CST 2009Sat Oct 10 00:58:43 CST 20099,
Review Doc (9)Peer ReviewFinishedtestSat Oct 10 00:57:34 CST 2009Sat Oct 10 00:58:35 CST 20098,
Edit Doc (8)Finish EditingFinishedtestSat Oct 10 00:57:13 CST 2009Sat Oct 10 00:57:34 CST 20097, 5,
Baz (7)Finish BazFinishedtestSat Oct 10 00:57:11 CST 2009Sat Oct 10 00:57:13 CST 20096,
Bar (6)Finish BarFinishedtestSat Oct 10 00:56:43 CST 2009Sat Oct 10 00:57:11 CST 20091,
Foo (5)Finish FooFinishedtestSat Oct 10 00:56:43 CST 2009Sat Oct 10 00:56:58 CST 20091,
First Draft (1)Finish First DraftFinishedtestSat Oct 10 00:54:54 CST 2009Sat Oct 10 00:56:43 CST 2009 
Viw Live Graph


 

Home | New Workflow | My Underway Workflows

 

流程圖的數據均保存在WEB-INF\classes\example.xml中,圖片效果是從example.lyt.xml文件中將流程進一步解析出來的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章