轉載,原文地址: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
Step | Action | Status | Owner | Start Date | Finish Date | Previous |
---|---|---|---|---|---|---|
Publish Doc (14) | NONE | Finished | test | Sat Oct 10 00:59:03 CST 2009 | null | 13, |
Publish Doc (13) | Publish Document | Finished | test | Sat Oct 10 00:59:01 CST 2009 | Sat Oct 10 00:59:03 CST 2009 | 12, |
Review Doc (12) | Publish Doc | Finished | test | Sat Oct 10 00:58:52 CST 2009 | Sat Oct 10 00:59:01 CST 2009 | 11, |
Second Review (11) | Finish Second Review | Finished | test | Sat Oct 10 00:58:43 CST 2009 | Sat Oct 10 00:58:52 CST 2009 | 10, |
Second Review (10) | Sign Up For Second Review | Finished | Sat Oct 10 00:58:35 CST 2009 | Sat Oct 10 00:58:43 CST 2009 | 9, | |
Review Doc (9) | Peer Review | Finished | test | Sat Oct 10 00:57:34 CST 2009 | Sat Oct 10 00:58:35 CST 2009 | 8, |
Edit Doc (8) | Finish Editing | Finished | test | Sat Oct 10 00:57:13 CST 2009 | Sat Oct 10 00:57:34 CST 2009 | 7, 5, |
Baz (7) | Finish Baz | Finished | test | Sat Oct 10 00:57:11 CST 2009 | Sat Oct 10 00:57:13 CST 2009 | 6, |
Bar (6) | Finish Bar | Finished | test | Sat Oct 10 00:56:43 CST 2009 | Sat Oct 10 00:57:11 CST 2009 | 1, |
Foo (5) | Finish Foo | Finished | test | Sat Oct 10 00:56:43 CST 2009 | Sat Oct 10 00:56:58 CST 2009 | 1, |
First Draft (1) | Finish First Draft | Finished | test | Sat Oct 10 00:54:54 CST 2009 | Sat Oct 10 00:56:43 CST 2009 |
Home | New Workflow | My Underway Workflows
流程圖的數據均保存在WEB-INF\classes\example.xml中,圖片效果是從example.lyt.xml文件中將流程進一步解析出來的。