資源描述:
《java開源項目-使用java開源工作流jbpm開發(fā)一個簡單的》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、java開源項目-使用Java開源工作流jBPM開發(fā)一個簡單的時間:2011-05-2523:36來源:博客作者:jack點擊:次 jBPM是jboss旗下遵守LGPL許可的java開源工作流,功能比較完善,從4.0開始引入了pvm的概念,支持jPDL、BPEL等流程定義語言。由于相關(guān)資料還比較少,開發(fā)自己的一個demo還不是太容易,本文詳細講解如何做一個簡單的demo程序。 我們從http://www.jboss.org/jbossjbpm/jbpm_downloads/下載jBPM,實際使用時發(fā)現(xiàn)4.0.CR1和4.1版本各有一些問題,此處把這兩個版本都下載下來
2、。開發(fā)使用4.1版本,Eclipse插件GPD(圖形化設(shè)計流程)使用4.0.CR1版本的,tomcat使用6.0.18版本的,jdk要求5.0及以上,Eclipse使用eclipse-jee-galileo-win32版本的?! ∠螺d包里面有自帶的一個example,根據(jù)jBMP的文檔可以部署,但這個example把工作流部分封裝為RESTfulWebService,學習起來有一定難度,看了會讓人一頭霧水,此處就不講了。以下講述如何把jBPM嵌入到應(yīng)用系統(tǒng)中去?! ?、在Eclipse中安裝GPD?! “?jbpm-4.0.CR1_HOME%/gpd下的jbpm-gpd
3、-site.zip安裝到Eclipse中,熟悉Eclipse的知道安裝方法,在jBPM的文檔中也有介紹?! ?、在Eclipse中建立一個動態(tài)網(wǎng)站的項目jBPMDemo,復制必要的jar文件到WEB-INF/lib下面?! “?jbpm-4.1_HOME%/lib下的所有jar文件、%jbpm-4.1_HOME%/jbpm.jar復制過去?! 〉玧uel.jar中javax/el中的類與tomcat中的有沖突,把juel.jar中的javax/el刪除。 3、配置mysql數(shù)據(jù)庫?! ≡趍ysql數(shù)據(jù)庫中建立一個名為jbpmdb的數(shù)據(jù)庫,在里面執(zhí)行%jbpm-4.1_
4、HOME%/install/src/db/jbpm.mysql.create.sql建立jbpm所需的數(shù)據(jù)庫表?! ×硗饨⒁粋€表存放業(yè)務(wù)數(shù)據(jù): createtableask_for_leave( idMEDIUMINTNOTNULLAUTO_INCREMENTprimarykey, apply_uservarchar(50),--申請人 apply_timetimestampdefaultnow(),--申請時間 begin_leave_timetimestamp,--假期開始時間 end_leave_timetimestamp,--假期結(jié)束時間 lea
5、ve_reasonvarchar(500),--請假理由 approve_uservarchar(50),--審批人 approve_timetimestamp,--審批時間 is_passedsmallint,--是否同意,1同意,2駁回 approve_remarkvarchar(500),--審批備注,如駁回的原因 back_timetimestamp--銷假時間 ); 4、配置JOTM事務(wù)支持?! “裞arol.properties、jta.jar、commons-logging.jar、carol.jar、connector-1_5.jar、jo
6、tm.jar、jotm_jrmp_stubs.jar、jts1_0.jar、mysql-connector-java-3.1.11-bin.jar、objectweb-datasource.jar、xapool.jar放到%tomcat_home%/lib下面。 把howl.jar、jotm.jar、objectweb-datasource.jar、ow_carol.jar、xapool.jar放到WEB-INF/lib下面?! ≡趈BPLDemo的context配置數(shù)據(jù)源,代碼如下: 7、ontextdisplayName="jBPMDemo" docBase="${catalina.base}/webapps/jBPMDemo" path="/jBPMDemo" workDir="work/Catalina/localhost/jBPMDemo"reloadable="true">