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

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

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

    基于JBPM的工作流應(yīng)用的開發(fā)

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

    1. ??流程的定義

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

    JBPM 專門提供了一個(gè)開發(fā)流程的環(huán)境,稱為process development environment(pde)。可以 jbpm 根目錄下執(zhí)行命令 ant create.pde 來生成 pde 工作目錄 。生成的包結(jié)構(gòu)如下所示:


    ?????????Build.xml
    文件用于配置一個(gè)流程,即利 ant 工具解析 processdefinition.xml 文件,并將運(yùn)行流程時(shí)所需的相關(guān)信息存儲(chǔ)到數(shù)據(jù)庫中。

    Lib 存放了開發(fā)和配置流程所需的全部庫文件,包括數(shù)據(jù)庫的 jdbc 驅(qū)動(dòng)。

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

    Src/config 只有兩個(gè)文件, jbpm.properties log4j.properties 。其中, jbpm.propertie 文件包含了數(shù)據(jù)庫的配置信息。因此,更換數(shù)據(jù)庫或數(shù)據(jù)庫的 jdbc 驅(qū)動(dòng)都需要修改這里。

    Scr/java 存放 java 源文件。

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

    Src/test 存放測(cè)試代碼。

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

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

    Target/test-classes 存放測(cè)試程序的編譯結(jié)果。

    Target/test-report 存放測(cè)試報(bào)告。

    2.?? 流程的執(zhí)行

    JBPM 把負(fù)責(zé)執(zhí)行流程的類庫打包成jbpm.core.jar,它也是JBPM工作流引擎的核心。在開發(fā)一個(gè)工作流應(yīng)用時(shí),只需將該jar文件放到相應(yīng)的lib目錄下面。而開發(fā)人員就可以專注于開發(fā)一個(gè)流程模型,完成對(duì)流程的定義,而無需過多考慮流程執(zhí)行的細(xì)節(jié)。

    3. ??流程的客戶端

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

    一個(gè)基于工作流的webapp應(yīng)用的開發(fā)和普通webapp的開發(fā)方式很相似。包結(jié)構(gòu)也保持一貫作風(fēng):

    ??????
    所以,我們需要做的主要工作是完成客戶端應(yīng)用所需的 jsp 頁面的開發(fā),可以選用 Struts 來進(jìn)行開發(fā)。需要注意的是,我們要對(duì) lib 目錄下的 jbpm.properties 文件進(jìn)行配置,主要是對(duì)數(shù)據(jù)庫 jdbc 驅(qū)動(dòng)的配置。

    4. ?? 系統(tǒng)數(shù)據(jù)庫的創(chuàng)建

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

    5.?? 開發(fā)過程

    環(huán)境配置如下:

    JBPM 2.0

    Ant 1.6.2

    Tomcat 5.0.27

    SQL Server 2000

    SQL Server 2000 Driver for JDBC

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

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

    ?

    補(bǔ)充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命令,解析這個(gè)文件并且將執(zhí)行時(shí)需要的信息存儲(chǔ)在數(shù)據(jù)庫中。如下圖:

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

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



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

    評(píng)論

    # re: 基于JBPM的工作流應(yīng)用的開發(fā) 2009-08-03 14:18 ooo

    dddddlaji  回復(fù)  更多評(píng)論   

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    收藏夾

    Java技術(shù)網(wǎng)站

    友情鏈接

    國內(nèi)一些開源網(wǎng)站

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国内精品免费麻豆网站91麻豆| 一区视频免费观看| 亚洲av高清在线观看一区二区| 一出一进一爽一粗一大视频免费的| 亚洲AV成人影视在线观看| 亚洲一卡2卡三卡4卡无卡下载| 亚洲另类图片另类电影| 成人午夜亚洲精品无码网站| 国产高清在线精品免费软件| 亚洲另类激情专区小说图片| 一本色道久久88亚洲综合| 亚洲色精品aⅴ一区区三区| 亚洲一级特黄无码片| 亚洲?V无码乱码国产精品| 亚洲真人无码永久在线| 亚洲国产视频网站| 亚洲精品美女在线观看播放| 亚洲风情亚Aⅴ在线发布| 亚洲精品乱码久久久久久中文字幕| 免费做爰猛烈吃奶摸视频在线观看 | 国产亚洲精品影视在线| 黄色a级片免费看| 四虎影视成人永久免费观看视频| 成全视频在线观看免费| 国产成人午夜精品免费视频| 99久久99久久精品免费看蜜桃| 中文字幕免费在线看线人 | 亚洲欧洲精品国产区| 亚洲AV色无码乱码在线观看 | 国产高清在线精品免费软件 | 性xxxxx免费视频播放| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 巨胸喷奶水视频www免费视频| 一级做a爰片久久免费| a一级毛片免费高清在线| 日韩一级片免费观看| 成人久久久观看免费毛片| 一区二区三区免费电影| 西西大胆无码视频免费| 国产亚洲日韩一区二区三区| 亚洲人成色4444在线观看|