??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
1)par?br />
static ProcessDefinition auctionProcess =
ProcessArchive.parse("org/jbpm/tdd/auction.par");
注意,必须在classes的org/jbpm/tdd/目录下有一个auction.par文g
2)xml文g方式
static ProcessDefinition auctionProcess =
JpdlXmlReader.parseFromResource("org/jbpm/tdd/auction.xml");
注意,必须在classes的org/jbpm/tdd/目录下有一个auction.xml文g
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>");
q种方式的本质和xml文g解析方式是一L.
作?杨洪?/p>
shark和jbpm配置文g处理方式比较
1.都用了单例模式
我想q个是最基本?一般的E序员写解析E序都会q样使用;要说明的?AgileFlow
除了使用单例模式,q实C配置文g的动态装?如果用户修改了配|文?它能够在
q行中动态的获取q些变化.
使用jbpm?W一句话p使用该模?JbpmServiceFactory.getInstance()....
2.都实C~省配置和定刉|?br />
Shark?~省配置攑֜一个深层次的目录中,定制配置攑֜config目录,两个配置
文g的内容差不多;
jbpm?~省配置攑֜代码中实?如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置攑֜config目录?为jbpm.properties
比较而言,jbpm的实现方式要?理由如下:
1)~省配置Ҏ扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多
3.都实C用一个单例实现多个单?br />
我在Shark学习pd的文章中讨论q这个功?jbpm是在JbpmConfiguration.java中实现的:
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.都用了单例模式
我想q个是最基本?一般的E序员写解析E序都会q样使用;要说明的?AgileFlow
除了使用单例模式,q实C配置文g的动态装?如果用户修改了配|文?它能够在
q行中动态的获取q些变化.
使用jbpm?W一句话p使用该模?JbpmServiceFactory.getInstance()....
2.都实C~省配置和定刉|?br />
Shark?~省配置攑֜一个深层次的目录中,定制配置攑֜config目录,两个配置
文g的内容差不多;
jbpm?~省配置攑֜代码中实?如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定制配置攑֜config目录?为jbpm.properties
比较而言,jbpm的实现方式要?理由如下:
1)~省配置Ҏ扑ֈ
2)定制配置很简?默认是没有配|的,比shark的要清爽很多
3.都实C用一个单例实现多个单?br />
我在Shark学习pd的文章中讨论q这个功?jbpm是在JbpmConfiguration.java中实现的:
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 );
}
~号 |
|
|
|
I00 |
★★?span lang="EN-US"> |
AWFQ北京炎黄盈动) |
嵌入式的工作^収ͼ功能不是太完善,主要研发实力不 |
I01 |
★★ |
DLFloQ上东兎ͼ |
2000开始做工作^収ͼ2002q推Zjava版本。但整体来看Q发展的不是很理?/span> |
I02 |
★★★★?span lang="EN-US"> |
LiveFlowQ上东兎ͼ |
?/span>DLFlo定位差不多,都面向二ơ开发^台。但是正个品还是停留在“workflow”功能层次。—?/span> 但是Q吸收了DLFlo的很多经验,所以其工作^台目前还是属于国内前?/span> |
I03 |
★★?span lang="EN-US"> |
BusinessWareQ北京麒麟远创) |
主要方向?/span>BPM?/span>BPIQ业务流E整合)。整个品是一?#8220;集成q_”?/span> |
I04 |
★★ |
e-cologyQ上h微) |
但从workflowq个层次来说Q泛微没有太多的特色?/span> |
I05 |
★★ |
eWay PlatformQ北京东Ҏl_ |
Eway的黄金时代已l一M复返了,自动“马毅”那个团队d以后。工作流的一些理念当时还是值得的,有些cMofbiz。表单处里采用二ơ开?/span>jsp面来处理?/span> |
I06 |
★★?/span> |
JKCFlowQ四川金U成Q?/span> |
JFCFlow从早期的工作品{Ud“业务基础软gq_”Q但是整个品^台目前还只能是Q一?/span>OA开发^台。在workflow?/span>model斚wq不是非常的?/span> |
I07 |
★★★★ |
JoinWorkQ上天际星Q?/span> |
Joinwork刚刚推出来,其开发者丁宏比较欣?/span>jBPMQ?/span>joinwork很多思想也是参考了jBPM。但功能上稍微弱了点。但是其ZSWT的设计思想很值得借鉴?/span> |
I08 |
★★★★ |
Koof MetaLogicQ北京世U金政) |
d推出?/span>workflow产品Q专做工作流q_Q虽然主要定位于oa和电子政务^収ͼ但工作流q一快,q是有很多克参考的功能?/span> |
I09 |
★★?span lang="EN-US"> |
RiseOfficeQ北京有生博大) |
当前版本riseoffice5.1Q整个工作流产品基本上ؓ“OA审批程”量n定做。其表单处里和权限控制很有特Ԍ以及审批历程的处理。整?/span>design端时采用web的,用的 addflow控g?/span> |
I10 |
★★★★?span lang="EN-US"> |
SunFlowQ杭州信雅达Q?/span> |
sunFlowq一两年发展很迅速,大有赶超SynchroFlow 势?/span> 其品最大的特色是采用基于域的联邦系l架构,对分布式理、运行支持较好。而且也是目前国内为数不多的可以支?#8220;仿真”的工作流pȝ?/span> |
I11 |
★★★★?/span> |
SynchroFlowQ西安协同数码) |
基本上非怸格遵循了wfmc的规范,interface1?span lang="EN-US">interface2?span lang="EN-US">interface3?span lang="EN-US">interface5?span lang="EN-US"> SunFlow?/span>SynchroFlow都有很多相像的地方,都遗留很多学院研I的特点Q这两个产品的最初原型都是在大学中诞生的Q?/span> |
I12 |
★★★★?span lang="EN-US"> |
UtimusQ国内) |
q入中国最早的国外工作品,整个产品采用逻辑的组l结构图Q工作流pȝ支持的功能也很强。其比较有特色的是其“事g条g?/span> |
目提交?: ernie .
ȝ审批 : bert
会签 : ernie , bert , grover
老板审批 : grover
正常程: 目金额 >= 500W RMB
提交目 --> ȝ审批 --> 会签 --> 老板审批 --> 审批通过(l束)
正常程: 目金额 < 500W RMB
提交目 --> ȝ审批 --> 会签 --> 审批通过(l束)
其中ȝ审批, 会签, 老板审批 , 不通过, 全部退回给目提交Z?
会签? 所有h全通过, 则通过. M一Z通过, 停止其他会签d.退回给提交?
程定义如下:
会签swimlane class
l束不通过时结束其他会{Q务实?
作者:Ni Yue
前一D|间做的一个jbpm和shark的featureҎQ今天整理笔记突然又看到q张记录U怺Qso post here and drop the paper.作比较的时候Shark?.0版本Q而Jbpm?.0版本Q现在已l出?.0了)
Shark |
Jbpm |
|
持久?/td> | Shark自己的一个ORM的方案DODSQ感觉不是很?/td> | 大名鼎鼎?HibernateQJbpm2中用的是Hibernate 2.1QJbpm3U用的是Hibernate3Q?/td> |
灉|?/td> | Sharklh的感觉就是庞大,需要独立的q行一个工作量引擎服务 | 相对更加灉|Q和OSWorkflow有的一比,也可以作为嵌入式的工作流引擎 |
后台理 | 其实q点和上面一Ҏ点相对应了,灉|性差其实是由于提供的功能太多的缘故,Shark自带了一个管理程序,界面虽然差了一点,但是功能满全面的 | Jbpm2中没有提供后台的理QJbpm3q没怎么用过Q好像是有的Q不知道具体功能如何 |
程定义的图形设计器 | Shark使用的WfMC定义的XPDL语言定义程Q有一个JaWE来图形化定义程Q不qXPDL是在是看h很难?/td> | Jbpm2中没有流E图形定义器Q不qJbpm3中已l有了,是基于Eclipse的一个插Ӟ可以使用它定义Jbpm使用的JPDLQ而且不仅是插件Ş式,后面q会出stand alone的版?/td> |
表单定制 | q个Shark可以借助XPDL来进行表单定Ӟ没看太懂是?/td> | Jbpm2不支持,原来看了Jbpm的MailList里面说在考虑Jbpm3中会加入q方面的内容Q现在似乎没有看到还 |
用户模型 | 好像必须采用Shark中的用户模型 | 灉|性的体现QQ意的用户模型。Jbpm3.1的roadmap里面考虑自带一个简单的用户模型供?/td> |
异构pȝ交互 | Shark可以开CORBA的服务,q个斚w的功能很强大 | 只能通过Java和异构系l的交互gQJava能做的Jbpmp |
学习成本 | Shark使用的XPDL很难看懂… | 相对?/td> |
文档 | 感觉是一片空白,l的那几个pdf都不什么用Q用两三个小时就全部看完了,l织的不是很好而且。相对其他的斚wQ这个是最大的~点?/td> | 挺全面的文Q一个chapter一个chapter的,看v来也方便 |