<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    基于JBPM的工作流應用的開發

    利用JBPM開發一個工作流應用,相對于使用shark是比較簡單直觀的。我們之前提到過,一個工作流管理系統最基本的組件包括流程定義組件,流程執行組件和流程客戶端組件。下面從這三個方面看一下JBPM對開發工組流應用的支持。

    1. ??流程的定義

    JBPM 沒有采用WfMC提出的流程定義語言XPDL,而是自己開發了一種稱為JPDL的語言來定義流程。因此,在開發一個應用時我們最終需要生成一個符合該XML schema的文件processdefinition.xml來表示定義好的流程。它可以manually獲得,也可以使用可視化的定義工具自動生成。

    JBPM 專門提供了一個開發流程的環境,稱為process development environment(pde)。可以 jbpm 根目錄下執行命令 ant create.pde 來生成 pde 工作目錄 。生成的包結構如下所示:


    ?????????Build.xml
    文件用于配置一個流程,即利 ant 工具解析 processdefinition.xml 文件,并將運行流程時所需的相關信息存儲到數據庫中。

    Lib 存放了開發和配置流程所需的全部庫文件,包括數據庫的 jdbc 驅動。

    Src 包括開發和配置流程的全部源文件和所需資源。

    Src/config 只有兩個文件, jbpm.properties log4j.properties 。其中, jbpm.propertie 文件包含了數據庫的配置信息。因此,更換數據庫或數據庫的 jdbc 驅動都需要修改這里。

    Scr/java 存放 java 源文件。

    Src/process 存放工作流定義文件 (processdefinition.xml) 和相關的資源文件,如圖片和 form 文件。

    Src/test 存放測試代碼。

    Target/classes src/java 中源碼的輸出目錄,存放編譯后的 class 文件。

    Target/par 存放用命令 ant build.process.archives 生成的 par 包。 Par 包實際上就是把 src/process 中的流程定義及相關文件打包成 zip 形式存儲。

    Target/test-classes 存放測試程序的編譯結果。

    Target/test-report 存放測試報告。

    2.?? 流程的執行

    JBPM 把負責執行流程的類庫打包成jbpm.core.jar,它也是JBPM工作流引擎的核心。在開發一個工作流應用時,只需將該jar文件放到相應的lib目錄下面。而開發人員就可以專注于開發一個流程模型,完成對流程的定義,而無需過多考慮流程執行的細節。

    3. ??流程的客戶端

    客戶端組件的開發,需要一個應用服務器作為servlet container,我們這里選擇了tomcatJBPM將開發一個webapp所需的類打包成jbpm.web.jar,包括自定義的tagStruts用到的類等等。開發應用時,將該jar放到WEB-INF\lib下面就可以了。

    一個基于工作流的webapp應用的開發和普通webapp的開發方式很相似。包結構也保持一貫作風:

    ??????
    所以,我們需要做的主要工作是完成客戶端應用所需的 jsp 頁面的開發,可以選用 Struts 來進行開發。需要注意的是,我們要對 lib 目錄下的 jbpm.properties 文件進行配置,主要是對數據庫 jdbc 驅動的配置。

    4. ?? 系統數據庫的創建

    JBPM 可以支持多種數據庫系統,包括MSSQL,MysqlOraclehdbsql等。它提供了很靈活的配置方式,只需要修改jbpm.properties文件,同時將相應的JDBC Driver拷貝到lib目錄就可以了。利用antgenerate.ddl命令,JBPM還支持自動生成用于創建系統表的sql腳本,而且可以生成對應于各種數據庫系統的腳本,非常便于數據庫系統的更換和系統數據庫的創建。

    5.?? 開發過程

    環境配置如下:

    JBPM 2.0

    Ant 1.6.2

    Tomcat 5.0.27

    SQL Server 2000

    SQL Server 2000 Driver for JDBC

    仍以之前演示過的request a payraise為例(見下圖),介紹一下利用JBPM開發一個工作流應用需要完成的工作。

    1)?????? 首先,我們需要完成流程的定義。這不僅包括定義processdefinition.xml,還要對流程執行時使用到的其他資源進行定義。比如,在web應用中用到的圖片,form等。還需要配置form.xml,該文件確定了流程中不同狀態和form的關系,如request a payraise狀態下,需要如下圖所示的form

    ?

    補充Processdefinition.xml
    示例:

    ?

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE process-definition PUBLIC?"-//jBpm/jBpm Mapping DTD 2.0//EN" "http://jbpm.org/dtd/processdefinition-2.0.dtd">

    <process-definition name="pay raise process">

    <!-- SWIMLANES -->
    <swimlane name="requester" />

    ????<swimlane name="boss">
    ??? <delegation class="org.jbpm.delegation.assignment.ActorAssignmentHandler">cg</delegation>
    </swimlane>

    ????<swimlane name="erp operator">
    ??? <delegation class="org.jbpm.delegation.assignment.ActorAssignmentHandler">pf</delegation>
    </swimlane>

    <!-- START-STATE -->
    ? <start-state name="request a payraise" swimlane="requester">
    ??? <transition to="evaluating"/>
    ? </start-state>

    <!-- NODES -->
    ? <state name="evaluating">
    ??? <assignment swimlane="boss" />
    ??? <transition name="approve"???? to="fork"/>
    ??? <transition name="disapprove"? to="done"/>
    ? </state>
    ?
    ? <fork name="fork">
    ? ?<transition to="updating erp asynchronously" />
    ? ?<transition to="treating collegues on cake and pie" />
    ? </fork>

    ????? <state name="updating erp asynchronously">
    ??? <assignment swimlane="erp operator" />
    ??? <transition to="join" />
    ? </state>

    ????? <state name="treating collegues on cake and pie">
    ??? <assignment swimlane="requester" />
    ??? <transition to="join" />
    ? </state>
    ?
    ? <join name="join">
    ? ?<transition to="done" />
    ? </join>

    <!-- END-STATE -->
    ? <end-state name="done" />

    </process-definition>


    ?

    2)?????? 有了processdefinition.xml文件,我們就可以配置流程。即使用ant命令,解析這個文件并且將執行時需要的信息存儲在數據庫中。如下圖:

    3)?????? 我們無需關心流程將怎么執行,完全交給jbpm.core.jar就好。

    4)?????? 剩下的另外一項比較繁重的工作就是開發一個用于該流程的客戶端應用。前面已經提到過, 我們需要做的主要工作是完成客戶端應用所需的 jsp 頁面的開發。包括登錄頁面,查看自己的 tasklist 頁面,執行 task 的頁面等。除此之外,還可以通過日志來完成流程的監控和管理界面。這些都由應用的需求來決定。



    posted on 2006-10-08 18:14 nbt 閱讀(1327) 評論(1)  編輯  收藏 所屬分類: workflow

    評論

    # re: 基于JBPM的工作流應用的開發 2009-08-03 14:18 ooo

    dddddlaji  回復  更多評論   

    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java技術網站

    友情鏈接

    國內一些開源網站

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 又大又硬又粗又黄的视频免费看| 久久亚洲AV成人出白浆无码国产| 国产一精品一AV一免费孕妇| 成人浮力影院免费看| 成年男女免费视频网站| 久久精品国产大片免费观看| 免费很黄无遮挡的视频毛片| 亚洲第一街区偷拍街拍| 久久精品国产亚洲AV忘忧草18| 亚洲av无码片在线播放| 亚洲精品午夜无码电影网| 久久精品国产精品亚洲| 精品国产日韩亚洲一区| 亚洲一区日韩高清中文字幕亚洲 | 亚洲国产精品13p| 亚洲综合精品香蕉久久网| 亚洲人成人网站在线观看| 亚洲美女在线国产| 奇米影视亚洲春色| 7777久久亚洲中文字幕蜜桃| 亚洲成aⅴ人在线观看| 国产亚洲精品影视在线| 美景之屋4在线未删减免费| 美女羞羞喷液视频免费| 一级毛片在线免费看| 性感美女视频免费网站午夜| 免费在线精品视频| 91亚洲精品视频| 黄页视频在线观看免费| 精品国产一区二区三区免费| 免费观看的av毛片的网站| 午夜国产羞羞视频免费网站| 亚洲精品无码MV在线观看| 亚洲一区二区三区四区视频| 又硬又粗又长又爽免费看| 1000部拍拍拍18勿入免费视频下载 | 成人在线免费观看| 久久久久亚洲AV无码网站| 免费视频成人国产精品网站| 日本免费人成在线网站| 亚洲精品中文字幕无码蜜桃|