作者:楊洪波
jbpm解析流程定義有三種方式:
1)par包
static ProcessDefinition auctionProcess =
ProcessArchive.parse("org/jbpm/tdd/auction.par");
注意,必須在classes的org/jbpm/tdd/目錄下有一個(gè)auction.par文件
2)xml文件方式
static ProcessDefinition auctionProcess =
JpdlXmlReader.parseFromResource("org/jbpm/tdd/auction.xml");
注意,必須在classes的org/jbpm/tdd/目錄下有一個(gè)auction.xml文件
3)文本方式
static ProcessDefinition auctionProcess = JpdlXmlReader.parse(
"<process-definition>" +
" <start-state name='start'>" +
" <transition to='auction'/>" +
" </start-state>" +
" <state name='auction'>" +
" <transition to='end'/>" +
" </state>" +
" <end-state name='end'/>" +
"</process-definition>");
這種方式的本質(zhì)和xml文件解析方式是一樣的.
作者:楊洪波
作者:楊洪波
shark和jbpm配置文件處理方式比較
1.都使用了單例模式
我想這個(gè)是最基本的,一般的程序員寫(xiě)解析程序都會(huì)這樣使用;要說(shuō)明的是,AgileFlow
除了使用單例模式,還實(shí)現(xiàn)了配置文件的動(dòng)態(tài)裝載,如果用戶修改了配置文件,它能夠在
運(yùn)行中動(dòng)態(tài)的獲取這些變化.
使用jbpm時(shí),第一句話就要使用該模式:JbpmServiceFactory.getInstance()....
2.都實(shí)現(xiàn)了缺省配置和定制配置
Shark中,缺省配置放在一個(gè)深層次的目錄中,定制配置放在config目錄,兩個(gè)配置
文件的內(nèi)容差不多;
jbpm中,缺省配置放在代碼中實(shí)現(xiàn),如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置放在config目錄中,為jbpm.properties
比較而言,jbpm的實(shí)現(xiàn)方式要好,理由如下:
1)缺省配置容易找到
2)定制配置很簡(jiǎn)單,默認(rèn)是沒(méi)有配置的,比shark的要清爽很多
3.都實(shí)現(xiàn)了用一個(gè)單例實(shí)現(xiàn)多個(gè)單例
我在Shark學(xué)習(xí)系列的文章中討論過(guò)這個(gè)功能,jbpm是在JbpmConfiguration.java中實(shí)現(xiàn)的:
private void instantiateConfiguredObjects() {
// instantiate configured objects
this.fileMgr = (FileMgr) instantiate( "jbpm.file.mgr", FileMgr.class );
this.idGenerator = (IdGenerator) instantiate( "jbpm.id.generator", IdGenerator.class );
this.serviceFactory = (ServiceFactory) instantiate( "jbpm.service.factory", ServiceFactory.class );
}
1.都使用了單例模式
我想這個(gè)是最基本的,一般的程序員寫(xiě)解析程序都會(huì)這樣使用;要說(shuō)明的是,AgileFlow
除了使用單例模式,還實(shí)現(xiàn)了配置文件的動(dòng)態(tài)裝載,如果用戶修改了配置文件,它能夠在
運(yùn)行中動(dòng)態(tài)的獲取這些變化.
使用jbpm時(shí),第一句話就要使用該模式:JbpmServiceFactory.getInstance()....
2.都實(shí)現(xiàn)了缺省配置和定制配置
Shark中,缺省配置放在一個(gè)深層次的目錄中,定制配置放在config目錄,兩個(gè)配置
文件的內(nèi)容差不多;
jbpm中,缺省配置放在代碼中實(shí)現(xiàn),如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置放在config目錄中,為jbpm.properties
比較而言,jbpm的實(shí)現(xiàn)方式要好,理由如下:
1)缺省配置容易找到
2)定制配置很簡(jiǎn)單,默認(rèn)是沒(méi)有配置的,比shark的要清爽很多
3.都實(shí)現(xiàn)了用一個(gè)單例實(shí)現(xiàn)多個(gè)單例
我在Shark學(xué)習(xí)系列的文章中討論過(guò)這個(gè)功能,jbpm是在JbpmConfiguration.java中實(shí)現(xiàn)的:
private void instantiateConfiguredObjects() {
// instantiate configured objects
this.fileMgr = (FileMgr) instantiate( "jbpm.file.mgr", FileMgr.class );
this.idGenerator = (IdGenerator) instantiate( "jbpm.id.generator", IdGenerator.class );
this.serviceFactory = (ServiceFactory) instantiate( "jbpm.service.factory", ServiceFactory.class );
}
編號(hào) |
|
|
|
I00 |
★★★ |
AWF(北京炎黃盈動(dòng)) |
嵌入式的工作流平臺(tái),功能不是太完善,主要研發(fā)實(shí)力不足 |
I01 |
★★ |
DLFlo(上海東蘭) |
2000就開(kāi)始做工作流平臺(tái),2002年推出了java版本。但整體來(lái)看,發(fā)展的不是很理想 |
I02 |
★★★★★ |
LiveFlow(上海東蘭) |
和DLFlo定位差不多,都面向二次開(kāi)發(fā)平臺(tái)。但是正個(gè)產(chǎn)品還是停留在“workflow”功能層次。—— 但是,吸收了DLFlo的很多經(jīng)驗(yàn),所以其工作流平臺(tái)目前還是屬于國(guó)內(nèi)前列 |
I03 |
★★★ |
BusinessWare(北京麒麟遠(yuǎn)創(chuàng)) |
主要方向是BPM和BPI(業(yè)務(wù)流程整合)。整個(gè)產(chǎn)品是一個(gè)“集成平臺(tái)”。 |
I04 |
★★ |
e-cology(上海泛微) |
但從workflow這個(gè)層次來(lái)說(shuō),泛微沒(méi)有太多的特色。 |
I05 |
★★ |
eWay Platform(北京東方易維) |
Eway的黃金時(shí)代已經(jīng)一去不復(fù)返了,自動(dòng)“馬毅”那個(gè)團(tuán)隊(duì)離開(kāi)以后。工作流的一些理念當(dāng)時(shí)還是值得的,有些類似ofbiz。表單處里采用二次開(kāi)發(fā)jsp頁(yè)面來(lái)處理。 |
I06 |
★★★ |
JKCFlow(四川金科成) |
JFCFlow從早期的工作流產(chǎn)品轉(zhuǎn)移向“業(yè)務(wù)基礎(chǔ)軟件平臺(tái)”,但是整個(gè)產(chǎn)品平臺(tái)目前還只能算是,一個(gè)OA開(kāi)發(fā)平臺(tái)。在workflow和model方面并不是非常的強(qiáng) |
I07 |
★★★★ |
JoinWork(上海天際星) |
Joinwork剛剛推出來(lái),其開(kāi)發(fā)者丁宏比較欣賞jBPM,joinwork很多思想也是參考了jBPM。但功能上稍微弱了點(diǎn)。但是其基于SWT的設(shè)計(jì)思想很值得借鑒。 |
I08 |
★★★★ |
Koof MetaLogic(北京世紀(jì)金政) |
去年推出的workflow產(chǎn)品,專做工作流平臺(tái),雖然主要定位于oa和電子政務(wù)平臺(tái),但工作流這一快,還是有很多克參考的功能。 |
I09 |
★★★ |
RiseOffice(北京有生博大) |
當(dāng)前版本riseoffice5.1,整個(gè)工作流產(chǎn)品基本上為“OA審批流程”量身定做。其表單處里和權(quán)限控制很有特色,以及審批歷程的處理。整個(gè)design端時(shí)采用web的,用的 addflow控件。 |
I10 |
★★★★★ |
SunFlow(杭州信雅達(dá)) |
sunFlow這一兩年發(fā)展很迅速,大有趕超SynchroFlow 趨勢(shì)。 其產(chǎn)品最大的特色是采用基于域的聯(lián)邦系統(tǒng)架構(gòu),對(duì)分布式管理、運(yùn)行支持較好。而且也是目前國(guó)內(nèi)為數(shù)不多的可以支持“仿真”的工作流系統(tǒng)。 |
I11 |
★★★★★ |
SynchroFlow(西安協(xié)同數(shù)碼) |
基本上非常嚴(yán)格遵循了wfmc的規(guī)范,完全實(shí)現(xiàn)了interface1、interface2、interface3、interface5。 這一點(diǎn)上,SunFlow和SynchroFlow都有很多相像的地方,都遺留很多學(xué)院研究的特點(diǎn)(這兩個(gè)產(chǎn)品的最初原型都是在大學(xué)中誕生的)。 |
I12 |
★★★★★ |
Utimus(國(guó)內(nèi)) |
進(jìn)入中國(guó)最早的國(guó)外工作流產(chǎn)品,整個(gè)產(chǎn)品采用邏輯的組織結(jié)構(gòu)圖,工作流系統(tǒng)支持的功能也很強(qiáng)。其比較有特色的是其“事件條件表 |