??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
Shark是体pd功能最为复杂的代表。它是另一N循WfMC的XPDL标准开源工作流引擎Qƈ且同旉循OMGl织的Workflow Management Facility规范。在所有开源工作流引擎中,Shark的体pL为完备和复杂。其一直秉承着“模块化”的思想Q所以比较容易扩展。但是自从被Together公司收购后,Shark的商业化色彩已经来浓Q改UCؓTogether Workflow ServerQƈ仅以Community Edition的Ş式提供了部分开源代码供参考?/p>
OSWorkflow
OSWorkflow是最轻量型的代表Q也是一N常灵zd低别定位的工作引擎的实现框架。低U别定位的意思是_它不是定位在解决程模型对象和运转场景,而是提供一套可l护调度的机Ӟ供开发h员自L展。这个维护流E调度机制OSWorkflow选择的是Z行ؓ(Action)的FSM理论Q所以OSWorkflow更像是一个复杂而灵zȝ有限状态调度机?/p>
OSWorkflow在国内项目应用得较多Q很多国内的易审ҎE项目都是基于其引擎二次开发而来。这主要是由于OSWorkflow是基于Action驱动的,而国内的客户也很Ҏ接受q样的操作习惯。但OSWorkflow所依赖的FSM模型对于分支、聚合、子程的支持度很低Q这一点在实施q程中需要注意?/p>
jBpm
jBpm是最适合扩展的代表,是在所有开源引擎中最适宜被商业化应用的一ƾ。首先其程建模模型是基于Activity Diagram(zd?的,q在引擎构徏上融入了FSM和PetriNet思想Q所以其内核和根基比较牢固扎实。其ơ,自从被JBoss收购后,?. xpd的结构更加趋于微内核QPlug-in思想也更加深入。其同时q提供了对BPEL扩展Q存储支持JBoss Hibernate实现Q集成了JBoss seamQ规则引擎准备采用JBoss rulesQƈ准备集成JBoss Messaging。这P不论从内核和外围应用QjBpm都具有了强劲的动力?/p>
另外QjBpm对Token的应用也很有特色Qy妙地利用Parent-Child Token的机制处理分支、父子流E等复杂应用场景。这个设计思想很值得大家学习参考?/p>
YAWL
YAWL是算法和模式最值得研究的代表,它是Alast力主倡导的一Ƒ֟于PetriNet建模的工作流引擎Q其PetriNet的Token与And、XOR、OR法q行了融合,q对Workflow Patterns(工作模?中所有模式提供支持。但YAWL本n仅是一个研I性项目,所以其l构和实现缺了商业化应用的特点。但有必要研I一下YAWLQ一斚w可以加深对工作流模式的理解,另一斚wQYAWL的一些徏模思想、处理算法很值得推敲和吸U?/p>
ActiveBPEL
ActiveBPEL 是BPEL引擎的代表,也是一Ƒ֏执行BPEL4WS规范的开源流E引擎,其结构和实现方式h很高的参考h倹{目前国内很多正在开发基于BPEL产品的中型软g厂商Q其实现的很多基性内容和思想都参考自ActiveBPEL。受目前国内中小型客户对程需求的限制Q基于BPEL的开源引擎或型产品被市场接受度q很低。但BPEL所围绕的业务流E及程整合应用是一个发展趋ѝ?/p>
<h:inputText id="modelId" value="#{ModelBean.modelId}" />
<h:commandButton type="submit" value="Submit" action="#{ModelBean.showModel}" />
public String showModel() {
if (modelId > 0) {
ModelService modelService = new ModelService();
BeanUtils.copyProperties(this, modelService.create(modelId));
setFeatures(modelService.getFeatures(modelId));
}
...
}
<process>
<if test="${modelId > 0}">
<service name="modelService" operation="create">
<return name="model" />
</service>
<service name="modelService" operation="getFeatures">
<return name="features" />
</service>
</if>
</process>
public String showModel() {
ProcessInstance process = new ProcessInstance("process.xml");
ProcessContext context = new ProcessContext();
context.put("modelId", modelId);
process.execute(context);
BeanUtils.copyProperties(this, context.get("model"));
setFeatures((List) context.get("features"));
...
}
<process>
<subProcess path="page.xml" /> ---------- (1)
<subProcess path="model.xml" /> ---------- (2)
<service name="modelService" operation="getFeatures" /> ----- (3)
</process>
<process>
<service id="header" name="commonService" operation="getHeader" />
<service id="footer" name="commonService" operation="getFooter" />
<abstract id="contents" />
</process>
<process extends="page.xml">
<group id="contents">
<service name="modelService" operation="create" />
<abstract id="pageContents" />
</group>
</process>
<process extends="model.xml">
<service id="pageContents" name="modelService" operation="getFeatures" />
</process>
<process>
<service id="header" name="commonService" operation="getHeader" />
<service id="footer" name="commonService" operation="getFooter" />
<group id="contents">
<service name="modelService" operation="create" />
<service id="pageContents" name="modelService" operation="getFeatures" />
</group>
</process>
JBoss 宣布发布JBoss Transactions 4.2 和JBoss Rules 3.0 新版本?/p>
JBoss Transactions 是一Ƒּ源的分布式事务管理^収ͼ原来是属于Arjuna 的品。Arjuna Technologies 公司的事务引擎已?0q的历史Qƈ且已l被升到可以用Web服务事务?005QJBoss q通过收购Arjuna 而获得此Ҏ术?/p>
JBoss Rules 是JBoss的企业规则引擎品,前n是大安熟悉的Drools?005q?2月,JBoss的创始h兼总裁Marc Fleury在巴塞罗UD行的“JBoss 世界”的会议上发表的主题演讲中宣布收购Drools?从此QDrools 目以及该项目的主要负责人Mark Proctor 都加入了JBOSS?/p>
下蝲地址Q?a >http://jboss.org/jbossBlog/blog/mlittle/?permalink=JBoss_Transactions_4_2_Released.txt
在中国的区中,宽带的连接成为基本配|,所以老的C曄也有同样的问题,而大量的新社个问题就不存在了。即便有无线局域网的技术,有线宽带的接口还是都提供的。新C的好处就是可以在一开始就部v新技术,而不需要走老\?span lang="EN-US">
如今Q全世界都在嚷嚷SOAQ那我们也需要考察国人怎么部vSOAQ中国h怎么部v。研I这个问题,Ҏ们Y件公司还是对我们的客户都是有极大帮助的,以免再一ơ被我们?span lang="EN-US">?/span>L?/span>厂商误导。因为,国人如何部|?span lang="EN-US">SOA军_国SOA产品的特征,中国人怎么部v军_中国SOA产品的特性?span lang="EN-US">
SOA 的核心是把业务流E功能模块构件化Qƈ对外提供标准的服务,Zq些服务Q企业内部的不同业务部门或是不同企业之间的业务整合就更加Ҏ一些?span lang="EN-US">SOA的出现是׃互联|技术的出现Q将原来各自为阵?span lang="EN-US">EAI市场标准化?span lang="EN-US">
在美国由于多q的应用pȝQ企业的业务程大多C非标准的形式被掩藏在各种各样的应用系l之中,比如CRMpȝQ?span lang="EN-US">ERPpȝQ?span lang="EN-US">HRpȝQ信用评估系l等{。所以实?span lang="EN-US">SOA架构的第一步是那些掩藏在个应用系l之中的业务功能模块切割开来,加以包装之后成ؓ标准的服务构Ӟ然后q要分散在不同pȝ中的数据整合包装成ؓ数据服务Q最后根据业务的需要同q?span lang="EN-US">BPEL分散的服务q接成ؓ新的服务。所以美国实?span lang="EN-US">SOA的方法ؓQ?span lang="EN-US">
1 。对原有业务程的提取和包装成ؓ服务构gQ?span lang="EN-US">SCAQ;
2 。对原有数据的整合包装成为数据服务(SDOQ;
3 。用BPEL实现新的程?span lang="EN-US">
q个做法的可行性基于一个重要前提:原有的业务流E可以被切割包装Q代价问题)Q原有的数据可以在一定程度上被标准化包装成ؓ服务Q如果所有的pȝ都需要通过人工切割和包装则代h太大Q必d在一ơ切割多ơ复用的情况Q否则切割的环节无法产品化。由于美国企业的应用pȝ大量采用了有限厂商的产品比如SAPQ?span lang="EN-US">ORACLEQ?span lang="EN-US">SIEBLE{,一定程度的标准切割是存在的Q尤其是多年?span lang="EN-US">EAI实践Qؓ切割的标准化打下了基。尽如此,大量的基于h工服务的切割q是必须的,所以,印度人有饭吃。而这些切割的工作与中国Y件外包企业多半无兟?span lang="EN-US">
因此Q我们可以预见美国制造的SOA产品把h标准切割及打包功能作为重要的卖点Q也是品的价值所在。市场决定品的特征Q就q么单的逻辑?span lang="EN-US">
中国?/span> SOA 如何实现呢?我们的预见是多半是把pȝ按照SOA提供的标准来Q主是把系l徏设成?/span> SOA 标准的系l,而不是切割和包装Q那些需要切割和包装的系l绝大多C赖于服务而不是品。作个判断基两个前提Q?/span>
1Q??/span> 原有的系l很;
2Q??/span> 那些已经存在的系l很是能够被标准化切割的;
因此Q在中国开?/span> SOA 产品最重要的特征是如何在一个标准的q_上(框架内)构造企业所需要的所有标准服务,q且Ҏ理和发展(变化Q。中国市?/span> ( 客户 ) 面的主要问题有如下几条Q?/span>
考察中国的市场我们可以作出如下的预言Q?/span>
1Q??/span> SOA 被L市场接受成ؓ标准的体pȝ构;
2Q??/span> 国L?a target="_blank">SOA产品在中国会水土不服Q?/span>
3Q??/span> 原有pȝ主要依靠服务来切割Q或者推倒重来;
4Q??/span> 大量的新建系l将采用标准的小颗粒构g构造流E别的标准服务构gQ?/span>
5?。普元面向构件的中间件将成ؓ SOA L中的中国L?/span>