﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-clant-文章分类-workflow</title><link>http://www.blogjava.net/clant/category/10015.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 18:29:49 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 18:29:49 GMT</pubDate><ttl>60</ttl><item><title>Java版 工作流 实现技术大比拼</title><link>http://www.blogjava.net/clant/articles/85150.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Sun, 03 Dec 2006 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/85150.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/85150.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/85150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/85150.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/85150.html</trackback:ping><description><![CDATA[ Java版 工作流
<p>　　Shark</p><p>　　Shark是体系和功能最为复杂的代表。它是另一款遵循WfMC的XPDL标准开源工作流引擎，并且同时遵循OMG组织的Workflow Management Facility规范。在所有开源工作流引擎中，Shark的体系最为完备和复杂。其一直秉承着“模块化”的思想，所以比较容易扩展。但是自从被Together公司收购后，Shark的商业化色彩已经越来越浓，改称为Together Workflow Server，并仅以Community Edition的形式提供了部分开源代码供参考。</p><p>　　OSWorkflow</p><p>　　OSWorkflow是最轻量型的代表，也是一款非常灵活和低级别定位的工作流引擎的实现框架。低级别定位的意思是说，它不是定位在解决流程模型对象和运转场景，而是提供一套可维护调度的机制，供开发人员自主扩展。这个维护流程调度机制OSWorkflow选择的是基于行为(Action)的FSM理论，所以OSWorkflow更像是一个复杂而灵活的有限状态调度机。</p><p>　　OSWorkflow在国内项目应用得较多，很多国内的简易审批流程项目都是基于其引擎二次开发而来。这主要是由于OSWorkflow是基于Action驱动的，而国内的客户也很容易接受这样的操作习惯。但OSWorkflow所依赖的FSM模型对于分支、聚合、子流程的支持度很低，这一点在实施过程中需要注意。</p><p>　　jBpm</p><p>　　jBpm是最适合扩展的代表，是在所有开源引擎中最适宜被商业化应用的一款。首先其流程建模模型是基于Activity Diagram(活动图)的，并在引擎构建上融入了FSM和PetriNet思想，所以其内核和根基比较牢固扎实。其次，自从被JBoss收购后，其3. x系列的结构更加趋于微内核，Plug-in思想也更加深入。其同时还提供了对BPEL扩展，存储支持JBoss Hibernate实现，集成了JBoss seam，规则引擎准备采用JBoss rules，并准备集成JBoss Messaging。这样，不论从内核和外围应用，jBpm都具有了强劲的动力。</p><p>　　另外，jBpm对Token的应用也很有特色，巧妙地利用Parent-Child Token的机制处理分支、父子流程等复杂应用场景。这个设计思想很值得大家学习参考。</p><p>　　YAWL</p><p>　　YAWL是算法和模式最值得研究的代表，它是Alast力主倡导的一款基于PetriNet建模的工作流引擎，其将PetriNet的Token与And、XOR、OR算法进行了融合，并对Workflow Patterns(工作流模式)中所有模式提供支持。但YAWL本身仅是一个研究性项目，所以其结构和实现缺少了商业化应用的特点。但有必要研究一下YAWL，一方面可以加深对工作流模式的理解，另一方面，YAWL的一些建模思想、处理算法很值得推敲和吸纳。</p><p>　　ActiveBPEL</p><p>　　ActiveBPEL 是BPEL引擎的代表，也是一款可执行BPEL4WS规范的开源流程引擎，其结构和实现方式具有很高的参考价值。目前国内很多正在开发基于BPEL产品的中小型软件厂商，其实现的很多基础性内容和思想都参考自ActiveBPEL。受目前国内中小型客户对流程需求的限制，基于BPEL的开源引擎或小型产品被市场接受度还很低。但BPEL所围绕的业务流程及流程整合应用是一个发展趋势。</p><img src ="http://www.blogjava.net/clant/aggbug/85150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2006-12-03 10:07 <a href="http://www.blogjava.net/clant/articles/85150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三大工作流引擎对比</title><link>http://www.blogjava.net/clant/articles/41058.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Fri, 14 Apr 2006 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41058.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41058.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41058.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41058.html</trackback:ping><description><![CDATA[
		<p>1．从《功夫》说起 </p>
		<p>时下的新新人类看到我，一定会认为在下是个十足的老古董，这不，《功夫》这样的片子我到今年2月底才看。不过看过《功夫》，我想的一定比一般的人多：周星星浪迹江湖，和他胖子大哥出去敲竹杆时，为什么要他大哥胸前画两把斧头？找个假靠山呗！装是斧头帮的人才不会被人欺负啊。 </p>
		<p>这让我想到年前的一则新闻：jbpm joins jboss and becomes jboss-jbpm。也就是说了，jbpm找了个靠山jboss，以后不用自己在外流浪了。 </p>
		<p>好，我们转入正题，谈这里说的三大主流开源工作流引擎：Shark,osworkflow,jbpm。 </p>
		<p>Shark的靠山是Enhydra。Enhydra做过什么呢？多了！从j2ee应用服务器，到o/r mapping工具，到这个工作流引擎等等。为什么Shark的持久层采用DODS来实现？就是因为他们是一家人。 </p>
		<p>Jbpm的靠山是jboss。Jbpm3的持久层采用hibernate3来实现，也是因为这个原因吧。Jbpm3的图形化流程定义已经决定嵌入到jboss eclipse IDE中，大家看看jboss eclipse IDE preview 1.5版，我们已经可以用插件方式编辑一个jbpm3流程定义文件了。 </p>
		<p>Osworkflow的靠山是opensymphony。我是非常喜欢这个组织的，它做出了很多的好东西。在开发工作流管理系统时，我就推荐用它的另外一个东西：webwork2。笔者主持的开源工作流引擎AgileFlow就是基于ww2+spring+hibernate架构实现的。 </p>
		<p>完成本段时说句题外话：现在基本上所有的J2EE应用程序服务器都有自己的工作流引擎，如上面提到的Enhydra,jboss和没有提到的websphere和weblogic等，可见，学习工作流引擎技术的确是非常重要的。 </p>
		<p>2．如来神掌 </p>
		<p>光有靠山是不行的，周星星加入了斧头帮还不是被邪神打扁了头？要救自己，还是要靠如来神掌。 </p>
		<p>Shark的流程定义语言是XPDL，我们知道，XPDL的两个最重要的概念是Process和Activity。XPDL中的Activity是基于UML1.x中的活动图的概念。活动图天生的适于工作流程建模，它相对于状态图的一个最大的优点是容易做并发线程的分叉控制，这些并发线程可以同时执行也可以顺序执行；它还有一个优点是有泳道的概念，可以控制工作流引擎中的任务的产生。Shark的如来神掌是活动图。 </p>
		<p>Osworkflow的如来神掌又是什么呢？我们知道，它有个重要概念是State……呵呵，我们知道了，它的如来神掌是FSM。不知道FSM是什么东西？？那你读大学时肯定不是好学生；当然了，不知道也不打紧，你把他类似理解为状态图就可以了。Osworkflow中的State是由step和status联合表达的，一个State就是一个step中的某个status；而state的转换由action来驱动，类似状态图中的event,因为一个event对应一个action嘛。 </p>
		<p>Jbpm的如来神掌就没有上面的简单了，它结合应用了状态图+活动图+PetriNet的知识，而且，这里的活动图还是UML2.0版的。UML2.0的活动图中，节点不叫活动（Activity）而叫动作(action)，活动成了一个高层次的概念，它包含一个动作序列。一个活动图展现一系列的动作，这些动作组成了活动。Jbpm把action也改名了，称为state。Jbpm使用的状态图的概念有transition/event等，这个自己去看吧。Jbpm来内部实现中还采用了PetriNet的概念，如token,signal等。什么？又不知道PetriNet什么东东？那你大学是学计算机的吗？不是？那你可能是学文科的，学机械/电气/土木工程/交通运输等专业都有接触PetriNet的课程，如果没有学过，还是看看jbpm吧，反正我们也不搞理论，知道大致概念就行。 </p>
		<p>3．市场预测 </p>
		<p>做预测是件吃力不讨好的事情，好多国外的大师做的预测也是被人骂得……幸亏我去年年中在《工作流之大局势》中做的预测还是基本正确。那时我的预测是：Shark……将登上头号宝座。应该说，在那篇文章发表前，国内的工作流引擎使用率最高的是osworkflow;到去年年底，Shark就占有了明显的优势地位，我分析有如下原因： </p>
		<p>1.          国内的企业都看中XPDL，因为这意味着在产品说明书中又可以吹牛说“我们遵循WFMC……” </p>
		<p>2.          因为我自诩“Shark工作流引擎在国内的主要推广者”，大部分给我反馈工作流管理系统开发选用技术的朋友都是用的Shark </p>
		<p>3.          Shark的确是一套不错的工作流引擎，就算你只是想学习XPDL，你也可以从学习Shark开始 </p>
		<p>现在已经到了《工作流之大局势》中说的从封建社会向资本主义转型的时代，而驱动这一转型的，不是别人，正是上面说的jbpm。Jbpm3将在3月发布阿尔发版，jbpm3的最终版将支持bpel4ws的核心部分。所以，我估计，Shark将在引领风骚数百天后，被jbpm3赶下第一宝座。笔者的开源敏捷工作流开发框架AgileFlow将整合jbpm3，同时对agile引擎和jbpm3引擎提供支持。 </p>
		<p>但bpel4ws真的就和我们这么快的亲密接触了吗？没有。我估计在今年它是不会真正走进我们的生活的，那会是什么时候呢？这将是我下篇文章要预测的内容，我现在可不敢乱说，我现在考虑的是，是不是要自诩“jbpm3工作流引擎在国内的主要推广者”，呵呵。<br /><br /><a href="http://www.360doc.com/showWeb.aspx?ArticleID=4713">http://www.360doc.com/showWeb.aspx?ArticleID=4713</a></p>
<img src ="http://www.blogjava.net/clant/aggbug/41058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2006-04-14 12:10 <a href="http://www.blogjava.net/clant/articles/41058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Shark 问题解答</title><link>http://www.blogjava.net/clant/articles/41051.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Thu, 03 Nov 2005 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41051.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41051.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41051.html</trackback:ping><description><![CDATA[
		<strong>本人长期在国内的shark工作流QQ群中解答各种问题，以下是曾经解答过的问题汇总</strong>：<br />为了让shark适用于中国国情的工作流应用，目前已完成或改造技术点如下：<br />技术点名称 <br />1.交接班当班值长精确移交任务 <br />2. 取下一活动ID<br />3.查阅流程历史活动记录 <br />4.过期活动提示，有新任务弹出提示用户<br />5.根据当前活动取下一活动的参与者映射人员<br />6. 强大参与者映射，可映射外部(企业自己数据库)组织机构，人员， 角色，资格等<br />7. 任务关联业务数据<br />8. 任务只发给指定人<br />9. 各步骤流程图<br />10. 更简单化的流程配置文件<br />11 快速读取任务列表(比shark默认的方法快)<br />12. 根据不同活动跳转不同的URL<br />13. 根据当前活动决定页面可以编辑什么元素。<br />14. 根据页面编辑了什么元素，决定下一步活动的自动扭转。 <br />15.当前活动有人处理，其他此活动参与者只能浏览<br />16.避免数据库死锁，出现阻塞。<br />17. 流程图汉化<br />18. 给shark提速<br />19. 用简单方法实现会签功能<br />20. 带不同业务数据的首页任务(工作项)列表<br /><br />shark DEMO 下载： <a href="http://www.01g.net/download/shark.rar" target="_blank">http://www.01g.net/download/shark.rar</a><br /><br />(1)<strong> 我的shark server为什么在启动后会一直显示这句:NameServer is (re)started!</strong><br />答：因为你内存中有一个实例. 在任务管理器中关掉 namesrv 或者重启一次计算机就可以了。<br /><br />(2)<strong>我想修改admin的默认密码enhydra为别的值,在哪里可以改</strong><br />答：默认第一次启动时随便输入什么密码，以后都是这个密码。以后可以在Shark管理器里更改。<br /><br />(3)<strong>Shark的参与者映射是用好Shark的关键之一，你是怎么做到的？</strong><br />答：目前有三种模式，一是使用它的表，二是使用自己的组织机构人员表(改源码)，三使用自己的组织机构人员表(改配置)<br /><br />(4)<strong>如何在Shark中建立一个外部事务?</strong><br />答：SharkTransaction st = Shark.getInstance().createTransaction();<br /><br />(5)<strong>Shark的工作流数据集与属性各有何作用?</strong><br />答：工作流数据集用于流程活动之间交换数据用，是可变的，而属性只存在于每个活动，下个活动是不能访问得到的。<br /><br />(6)<strong>怎么实现流程的回退?</strong><br />答：如果回到上一步，可这个活动的参与者映射的人全部拒收这个任务，如果回到指定的活动，要在XPDL里定义，并根本条件流转。<br /><br />(7)<strong>在shark中，任务可以移交给一群人吗?</strong><br />答：不可以.一次只能移交一人。<br /><br />(8)<strong>Shark一定要用DODS来实现吗?</strong><br />答：还可以用Hibernate.<br /><br />(9)<strong>Shark可以实现完全自由的流程吗?</strong><br />答：不可以，因为一般工作流系统就是约束业务按流程走，如果太自由无规则的，就不需要工作流了。<br /><br />(10)<strong>在Shark中如何显示流程图信息?</strong><br />答：Shark提供了JAWE类可以用，但必须要将XPDL文件放到reposite/external目录中，JAWE类可以读取XPDL文件根据传来的包ID，流程ID，和活动ID来绘制流程图。<br /><br />(11)<strong>Shark支持会签流程吗?怎样实现?</strong><br />答：支持，这只与流程设计有关，在设计XPDL时多想想需求多动脑子来解决。<br /><br />(12)<strong>Shark的性能问题，如何提速?</strong><br />答：如果没必要用Corba，就不要打开Corba服务，可省内存，如果不想查看日志，就关掉DatabaseManger 和 SharkExcuction日志写入文件，另外内存等参数可在shark目录shark.conf中配置，还可以关掉审计流程，这些都可以提速不少。<br /><br />(13)<strong>在业务中如何调用Shark,或Shark如何执行业务方法?</strong><br />答：目前，有两种方式：一是在业务方法中调用shark函数推动流程，二是在shark中定义ToolAgent映射业务方法，到这个活动时自动调用业务方法。这两种方法各有利弊，应根据实际情况来做选择。<br /><br />(14)<strong>如何让业务事务与shark事务保持一致?</strong><br />答：可先执业务方法，再执行shark, 如果业务出错，回滚业务，而shark尚未执行。如果业务通过，shark推动流程出错,回滚shark和业务事务。将业务与shark放在一个try { }catch 中。<br /><br />(15)<strong>Shark支持EJB吗?</strong><br />答：支持，需要下载并安装 enhydra-enterprise-6.5-1.exe.<br /><br />(16)<strong>怎样让流程图显示中文?</strong><br />答：shark提供的JAWE类库可以生成流程图，但默认是UTF-8编码，必须要转成GBK才可以显示中文。<br /><br />(17)<strong>任务可以移交给角色吗?</strong><br />答：到1.1.2为止, shark没有提供这个业务方法，需要自己实现。<br /><br /><br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=8">http://www.01g.net/blog/default.asp?id=8</a><img src ="http://www.blogjava.net/clant/aggbug/41051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-03 16:41 <a href="http://www.blogjava.net/clant/articles/41051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]BPM≠Workflow＋EAI</title><link>http://www.blogjava.net/clant/articles/41052.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:52:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41052.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41052.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41052.html</trackback:ping><description><![CDATA[在谈完 BPM 相关标准之后，这次我想跟读者谈 BPMS 的架构、组成模块及其各自功能，让读者有全盘性的了解，希望能破除一般人对 BPMS 的迷思。 <br /><br />关于 BPM ，业界有些迷思。例如，常听到有人说 BPM = EAI + Workflow ； PBMS 只不过 Workflow 厂商的旧瓶新酒，换汤不换药，只要原来 WfMS 加上系统整合的 Adaptors 就变成 BPMS ；或是 EAI 厂商加上 Activity Modeling 的工具或者是 Routing Engine 重新包装一下，也可以称作 BPMS 。<br /><br />我认为 BPMS 不只是如此，而是一个生命周期。顺着 BPM 生命周期了解用户的操作场景 (Scenario) ，是理解 BPMS 的组成全貌最好且最直觉的方式。在本文中，我首先介绍完整 BPM 生命周期，并从其中的每一步骤接着介绍工作内容、使用到的工具及其功能、与用户的角色。最后，我会以一张完整的 BPMS 架构图，详细介绍其中组成的模块功能。 <br /><br />BPM ：也要谈生命周期 (Life Cycle) <br /><br />BPMS 强调让企业可以灵敏反应外部环境的变动并快速变动企业内部的流程作业，所以生命周期所强调的是持续性改善与周而复始的循环。 BPM 生命周期另一个含意就是，它是 BPMS 工具导入的方法论 (Methodology) 。 BPMS 解决方案最重要的核心就是方法论，它至少要包含思考哲理 (Philosophy) 、方法 / 步骤 (Methods / Steps ) 、与伴随的工具 (Tools/Utilities) 。因为没有任何两家的流程，组织，策略目标是全然一样的，因此怎样才能从策略目标规划到最后系统导入执行连贯一体，成功而有效地完成建置所依赖的才是合适的方法论。 <br /><br />目前各家 BPM 厂商所提出的生命周期不尽相同，乃是因为解决方案所面对的产业或应用领域不同，所以有了各自强调与专注的重点。例如， IBM HoloSofx 提出的是：建构 (Create) 、管理 (Manage) 、自动 (Automate) 、协同 (Collaborate) ； Howard Smith &amp; Peter Fingar 在 『 BPM - The Third Wave 』一书所提出的是；建模 (Model) 、布署 (Deploy) 、与管理 (Manage) ； Italio 提出的是发掘 (Discovery) 、建模 (Modeling) 、支援 (Supporting) 、 Monitoring ( 监控 ) 、及 Improvement ( 改善 ) 。在此我会提出较为完整的流程步骤，但不见得每家 BPM 厂商的都符合，读者可参考下图－ BPM 生命周期。 <br /><br /><br />图一、 BPM 生命周期 <br /><br />·阶段一、 流程发掘 (Discovery) : <br /><br />要导入 BPM 第一步骤当然要先清楚知道现行流程的作业方式与状况，尤其是流程内的信息流 (Message flow) 、事件流 (Event flow) 、或控制流 (Control flow) 。哪些流程可以自动化？哪些是人工流程？有哪些人参与？流程是在组织内部或外部被执行？ BPMS 在此步骤的主要特征是如何 自动找出系统的商业逻辑 。通常企业会聘请外部顾问师或领域专家来协助辅导，这个动作有人称为 流程评估 (BPA, Business Process Assessment) ，评估范围可能涵盖策略与管理目标与流程的连结。同时企业也会配合导入一些管理的主题而作 流程再造 (BPR, Business Process Reengineering) ，例如评分计分卡 (BSC, Balance Score Card) 、六个标准差 (Six Sigma) 、或 ISO 9000 品质管理系统。 <br /><br />· 阶段二、 流程设计 (Design) ： <br /><br />此阶段是一个包含四几个步骤的反复式的小循环 (Iterative mini-cycle) ：建模 (Modeling) 、 ( 分析 Analyzing) 、模拟 (Simulation) 、重构 (Redesigning) 流程。如前所述，面对外部的竞争压力与商机，为了让企业可以快速重构流程， 因此一些细致的流程变革 (Fine-grained process change) 只需利用此阶段的步骤就能作出实时的反应。<br /><br />流程 建模 所运用的工具称作 Process Designer 通常包含三个模块：组织 (Organization Chart) 、流程图 (Activity Diagram) 、与窗体 (e-Form) 设计工具。它们分别对应流程中三个最重要的元素：人、活动与文件 ( 有兴趣的读者可参阅 Process Modeling Conceptual Framework 有关的资料，后续容我在适当机会再做介绍 ) 。建模之后可以作执行动作前的 分析与仿真 来验证设计的流程是否正确合适或最佳化；此外它能还提供现行流程可能遇到的瓶颈信息，以避免执行后才发现问题进而导致很大的营运损失。如果分析模拟出来的结果并不满意，可以反复 重构 流程直到产出满意的结果。分析指的是从流程定义的语意与理论上的推论分析，仿真则可设定机率变量与行为假设让系统自动跑出期望值或变异差数据，有些则仅提供自动执行 (Animation) 或手动逐步执行以观测流程行为。 <br /><br />此阶段 BPMS 的主要特征是 图形化的接口 ，让非 IT 背景的用户可藉由拖曳方式也能轻松组装或分解流程；此外运用流程资产 (Process assets) 的观念，让流程定义隐含业界的最佳实务 (Best practices) 或流程样版 (Process Pattern) ，并且储存于流程仓储 (Process Repository) 以供随时再利用 (reuse) 。 <br /><br />· 阶段三、流程执行 (Execution) ： <br /><br />意指新上线的流程能被参与者顺利执行完成。负责控制执行的模块可称为工作流程引擎 (Workflow Engine) 或流程服务器 (Process Server) 。在此阶段 BPMS 主要的诉求是分布式交易 (Distributed transaction) 的管理，因为这些交易可能是复杂度高的跨巢状流程 (Nested process) 而且交织着新旧系统，甚至将既有的应用系统当成流程组件来执行。至于流程的执行者通常多是应用系统，可以不用人的参与 (human intervention) 而自动执行，也就是一般所称 流程自动化 (BPA, Business Process Automation) 。 <br /><br />此外，排程工具 (Scheduler) 可以应用来设定自动启动流程的时间与周期频率。有些 BPMS 的产品会提供规则引擎 (Rule Engine) 来负责商业规则判别与推理。此阶段另一个重要的特点就是在不用技术人员的参与下，依然可以让流程用户自行编辑与修改商业逻辑。例如，代理人的指派规则通常相当复杂，背后就需要有 Rule-based 的机制来支持。 <br /><br />流程布署 (Deployment) ：意指将设计好的流程推出上线让所有参与者 (Participant ，可能是人，应用系统，或其它流程 ) 来执行。这个步骤的主要特征就是能以最小的力气﹙ effort ﹚达成运算资源 (Computing Resource) 与组织人员的结合 (binding) ，如事先整合应用系统组件 (Application components) 。 <br /><br />与人互动 (Interaction) ：在流程的执行中很重要的就是与人的互动。并非所有流程都可以自动化，所以 BPMS 让人能管理自动流程与人工流程之间的接口。负责与人互动的接口称为工作项目的处理程序 (Workitem Handler) 。有时候流程接口本身也是一个流程，例如动态加会签或在窗体输入下一步流程的分派。过去 Workitem Handler 相当简单，然而现在有倾向丰富化与细致化的趋势。必要的时候还能让用户客制化或整合在不同系统的接口中。由于这个需求有快速提升的趋势，所以各家厂商纷纷提出丰富且个人化的流程入口网站 (Personalized process Portal) 。 <br /><br />碍于篇幅，下集我会继续将最后两个阶段介绍完，并把 BPMS 的系统架构与各功能模块作个整理，让读者轻易了解，下回待续.<br /><br />在这篇文章中我会继续将最后两个阶段介绍完，并把 BPMS 的系统架构与各功能模块作个整理，让读者有全盘性的了解。 <br /><br />第四阶段、管理维护 (Administration) ： <br /><br />当流程上线后伴随产生了管理维护的问题，如例外状况的介入处理、组织人员的变更、流程重新分派、或流程版本升级的影响。在此，有个重要的模块称作流程活动监控 (BAM, Business Activity Monitoring) ，它可以随时回报流程的执行状态与过程，而且用户也可以设定流程要追踪的关卡并主动回报，具有预警功能并能随时掌握问题处理的时效。另外服务器的流量与执行监控及流程仓储的数据维护的效能也相当重要。 <br /><br />第五阶段、流程最佳化 (Optimization) ： <br /><br />流程改善 (Improvement) 是个持续性的活动，不断反复朝向最佳化迈进。流程测量 (Measurement) 能提供流程的执行绩效 (Performance) ； BPMS 的报表工具 (Reporting Tools) 能让企业对自己的组织行为充分了解作为持续改善的依据，如此方能策划出改善与最佳化的策略。流程分析 / 仿真着重在执行前的分析，例如自动侦测瓶颈 (bottleneck) 、死结 (deadlock) 与流程定义的不一致 (Consistence) ；而流程测量则是执行后实际资料的分析，可以清楚知道流程消耗时间与资源。这个阶段跟商业智慧 (BI, Business Intelligence) 的技术与主题相似性很高的，差异在 BPMS 可以自动纪录与收集流程相关的数据。尤其 BPMS 所附含的流程绩效仪表版 (Dashboard) ，它提供一个全面式的概观让主管简单掌握且一目了然哪些流程是在标准差内，哪些是在失控状态。当然这些报表，都是用户可以自行定义或查询的，不用 IT 人员的参与。 <br /><br />BPM ＞ Workflow +EAI <br /><br />相信从上述的介绍，读者可以清楚认识到 BPM 绝对大于 Workflow 加 EAI 。 BPM 的主要精神在于企业流程的管理，且主要的焦点在于业务性用户 (business users) 而非技术性用户 (technical users) ；在于流程弹性实时调整而非数据与应用系统的整合。所以仅是工作流程自动化加上 EAI 企业应用软件的转换机制是不足以的涵盖企业管理流程中所有必要的环节。例如尚有让管理主管能实时掌握流程成本效率 (cost/effective) 评量与流程绩效 (Performance) 管理，业务性用户可以轻易调整组装流程以提供客户最佳业务服务，等等。 <br /><br />我将上述中的工具整合起来，架构如图二所述： <br /><br />BPMS 系统架构 (System Architecture) <br /><br /><br />图二、 BPMS 系统架构图 <br /><br />一个完整的 BPMS 系统需由流程设计环境 (Process Design Environment) 、流程仓储或储存库 (Process Repository) 、流程服务器 (Process Server) 、用户执行环境 (User Execution Environment) 等主要元素所架构而成。 <br /><br />· 流程设计环境 (Process Design Environment) <br /><br />流程设计环境扮演着流程设计阶段中最重要的流程建模工作，通常包含了「组织图」 (Organization chart) 、「电子化窗体」 (e-form) 、活动图 (Activity Diagram) 、与商业规则 (Business Rule) 等相关元素，并可透过直觉图形化的接口，协助流程设计者进行企业流程的建构。 <br /><br />组织图部份大多与组织目录服务系统 (Directory system) 相结合，以协助企业进行组织的调整与管理，如支持 LDAP 、 AD 等相关目录服务。而电子窗体指的是信息呈现的接口，一般而言可将应用系统的数据与流程相关的数据，透过所谓的电子窗体来展现，便于处理与人互动的部分，而呈现的方式可透过特定的工具快速的订制。在了解流程整体运作与规划中，透过活动图可清楚地规划与了解流程中的各个活动彼此的先后顺序与关联，并订定流程的运作条件与事件触发的相关动作，再透过结合商业逻辑（ Business Rule ）的方式，让企业更清楚流程的运作方式且易于修改，在采购流程中，若采购金额大于 100,000 台币者需签核至协理，其余仅需签至经理，就是个明显的例子。 <br /><br />流程仿真（ Simulator ）与流程设计分析（ Analyzer ），则是透过流程数据的仿真得以事先验证流程执行时的结果与流程设计关联的分析（如在复杂的流程中，重要的流程元素或关联未建立），达到流程执行前事先的预防，并确认设计的流程是否正确合适或最佳化。 <br /><br />· 流程数据储存库 (Process Repository) <br /><br />流程仓储包含了流程定义 (Process Definition) 、流程执行纪录 (Execution Log) 、与应用数据 (Application Data) 。流程定义包括了流程运作所有相关的数据，最明显的就是流程三要素：人、活动与文件，都纪录在流程定义中，藉由流程的规则引擎 (Rule Engine) 的参数即数据的变异数或是各个节点所制定的活动时间限制等定出合适的流程定义，最后透过流程服务器执行定义好的流程；流程执行纪录指的是流程执行过程中所有的纪录，有的 BPMS 将此部份内建于系统中，有的则是需另行将所需纪录抄写到数据库中；应用数据则是指在流程执行的过程中，所使用到其它系统的相关数据并随着流程纪录下来或有所关联，如请采购流程执行中，需依照既有 ERP 系统的相关数据进行逻辑判断，甚至需将其抄写至流程窗体中。而在此所指的应用性数据并没有只局限在内部数据库，也包含了根据流程的定义向组织外可能以 web service 的方式呼叫外部数据来应用。 <br /><br />· 流程引擎 / 服务器 (Process Engine/Server) <br /><br />流程引擎是整个 BPMS 中最重要的一环，它负责正确无误地将流程在正确的时间传送给正确的人或系统，而由于流程的运作为企业营运的核心，因此能处理复杂且大量的流程工作是流程引擎所必备的条件。分布式交易 (Distributed transaction) 的管理与负载平衡（ Load Balancing ）将是考量的重点。 <br /><br />· 用户执行环境 (User Execution Environment ) <br /><br />这边所说的用户环境指的就是用户与流程沟通的接口。一般简易的用户接口多藉由待办事项（ Work lists ）让用户使用流程工作。而由于企业入口网站的风行，一个面面俱到的 BPM 产品通常透过 Web-based 接口，并加入口网站（ Portal ）的概念，提供所谓的流程入口网站接口（ Process Portal ）作为用户使用流程的沟通接口。如此除了可清楚地看到透过流程引擎指派而产生的的各项任务或工作事项 (work items) 外，并可结合其它入口网站与应用系统整合的机制，如使用协同工作功能促进员工彼此沟通与交流，像是公布栏、行事历或讨论区等。另外也可透过待办事项的启动 (trigger) 能够呼叫 (invoke) 与之相关的应用程序 (applications) 甚至根据各清楚定义的个别关卡 (activity) 自动以 web service 的方式来跨组织地呼叫 (invoke) 外部数据作交易 (transaction) 达到名副其实的 SOA 技术架构概念。 <br /><br />此外藉由流程网站接口用户 ( 通常指中阶以上主管或部门主管 ) 可利用行政管理工具 (Administrator Tools) 与报表工具 (Reporting Tool) 。就行政管理工具来说，进入流程数据储存库捞取流程定义的信息所作出的制式化报表可以清楚的知道员工的工作负荷量的轻重程度；而各种的统计量表包含热门排行、单位时间工作量统计、单位工作量统计、部门工作量统计、流程工作量统计、项目工作量统计提供管理者使用，使管理人员随时了解企业流程运作的各种情况。用户也能以 web service 的方式捞取应用数据作出动态分析。而流程的监控与管理 (Activity Monitor) ，亦可让用户或管理者透过 Web 的方式，实时地追踪目前流程的进度或进行例外的处理以能做到修正或变动的因应。也就是说活动的监控对流程范例的执行提供了一个绩效量测的准则。最后透过上述工具使流程作到实时的修正达到最佳化让工作更有效率。 <br /><br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=6">http://www.01g.net/blog/default.asp?id=6</a><img src ="http://www.blogjava.net/clant/aggbug/41052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:52 <a href="http://www.blogjava.net/clant/articles/41052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]企业如何确定是否需要工作流？</title><link>http://www.blogjava.net/clant/articles/41053.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:47:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41053.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41053.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41053.html</trackback:ping><description><![CDATA[如果就业务流程管理（Business Process Management，BPM）请教不同的人，可能有得到不同的回答。有的认为BPM是用来帮助监控人的活动和自动化的业务流程，有的认为是用来将以前 的人工处理转化为自动化的流程，而有的人认为是用来管理一些以前是人工处理的事情或者处理一些现在仍然由人工处理的事情。<br /><br />为什么认识上的差距会如此不同呢？这不奇怪。Gartne认为，尽管当今世界上的BPM软件提供商不下百种，但几乎没有两家认为他们提供的产品一样。那么，到底哪种定义是正确的？“都对，”AMR研究室主任Eric Austvold认为，“只是对的程度不同。”在各种各样的有关应用软件的广告宣传中，BPM可能是最近以来厂商提到最多的一个词。但是，要让BPM软件真正对你有用，而不是浪费你的时间和金钱，选择合适的软件和项目非常重要。<br /><br />下面的这些工作是BPM软件能做的：你可以用BPM应用来监控你的业务流程，或者用来实现工作流的自动化，或者简单地把它当作集成（EAI）的工具。BPM软件可以帮助你鉴别你的哪些业务需要自动化、哪些需要改善，或者帮助你集成现有的IT基础设施。那些成功地部署了BPM应用的CIO们认为BPM可以显著提高效率。对于大部分用户而言BPM软件不算贵，经常不到10万美元，这就意味着如果确实需要的话，大多数企业用得起它们想要的软件版本。有些用户说，BPM给他们带来很高的回报，常常高达200%-300%。<br /><br />具体能得到多高的回报，主要取决于应用成功的程度。对于大多数BPM应用项目而言，要取得像前面所说的这么高的回报，前期需要做大量的准备工作。也许安装BPM软件可能只要一个月，但此前决定哪些流程准备应用BPM软件可能会需要花上6个月（Maneesh Gupta用BPM软件来改善人力资源部的工作效率，用来跟踪雇员的工作效率和状态）。在不少项目中，BPM项目的初期投资非常小，所以，即便项目的回报率能达到200%，最后对公司的利润贡献也很有限。在让CEO感受到效果前，你也许要做100多个这样的项目。<br /><br />因此，完全有必要从软件提供商们令人目眩的广告宣传中仔细分辨那些产品能给你帮助，如何能给你带来帮助。现在大多数企业的业务流程都是很复杂的，不是线型的，因此，BPM完全可以发挥它的作用。<br /><br />BPM是什么<br /><br />十年前，Michael Hammer提出，流程重组将是下一个商业变革，他说，如果企业能对它们的业务流程重新设计，这些企业的效率一定会提高。大多数相信这个观点的企业解雇了很多雇员，但是效率没有像预计的得到提高。部分原因在于，要让每一个被“遗弃者”同意改变他们的工作流程是非常困难的。但今天，Michael Hammer的观点在BPM中得到体现，BPM提供了一种监控和改善商务实践的效率的方法。BPM从公司的各种业务应用中提出数据，然后完成如下两件事情：<br /><br />1.跟踪信息是如何被用来完成业务的，据此来准确定位和了解现有的业务流程；<br />2.追踪信息在各种业务的流动，确保某一项业务流程被执行。<br /><br />从本质上说，现有的BPM软件可以分为三类：监控工具、工作流软件、EAI工具，下面将分别予以讨论。<br /><br />效率监控<br /><br />BPM监控软件就是上个世纪50年代，站在装配线边盯着秒表的效率顾问的计算机版本。BPM监控软件使用类似插件的编程技术，用统一的界面与公司的每个具体业务流程对应的应用系统连接起来（例如，跟踪订单，从它被发出直到货物被送走），看看哪个处理效率比较低。比如，一个公司可能会发现从货物列入装船计划到最终被送走，总是存在12个小时的间隔。接下来公司就要着手解决这个问题，可能是雇佣更多的码头装货工人，也可能是投资安装装船计划编制软件。监控软件也可以始终锁定一个业务流程，一旦这个业务流程出现异常马上发出警报。<br /><br />加拿大证券投资公司AIC从Sajus公司购买了BPM软件，用来加快客户账户的更新速度，保证一旦发生交易，马上更新客户账户。AIC是加拿大最大的私人拥有的证券投资公司，有120亿美元的资产要管理。他们以前的方法是，客户交易数据先在大型机上排队等待，等到晚上由AIC的股东管理系统统一进行数据的更新。这就意味着AIC的理财顾问通过Web方式登录AIC的客户证券管理系统时，看不到最新发生的交易信息。<br /><br />CIO Joe Sferrazza认为理财顾问应该看到这些信息，因此他建立了一个Web服务，用来实时更新客户证券管理系统上的客户账户信息。大型机上仍然是晚上一次性进行批处理，而客户证券管理系统再根据大型机上的主数据库进行调整。<br /><br />Sferrazza采用Sajus软件确保上述处理的顺利进行。BPM软件会对整个处理过程进行监控，如果出现问题，系统就会向合适的人发送警报要求解决，而不至于等到理财顾问要查看客户证据交易时才发现故障。如果不采用BPM监控软件，AIC将没有办法保证自动化的流程处理一定会被正确地执行。<br /><br />工作流软件<br /><br />BPM软件的另外一个变体是基于工作流的产品，Pegasystems、Metastorm、FileNet等软件公司都推出了这样的产品。这些产品实现了一些业务流程的自动化，同时指导人们完成部分业务流程的工作，保证其中某些流程被执行。例如，有一种工作流的BPM软件用来限制软件销售人员，只有客户没有账户才能给他建立一个新账户。要通过BPM软件的自动化技术来保证业务流程必须得到遵守的前提在于，使用这些系统的人必须对系统的业务流程有一个比较清楚的认识，能提出一个恰当的业务流程，因为系统本身只能做到流程的自动化，仅此而已。<br /><br />美国国家保险公司（ANICO）从Pegasystems购买了BPM工作流软件，用来改善它的呼叫中心的服务。在上个世纪90年代中后期，ANICO呼叫中心保险代理们的工作效率和客户满意度的下降，部分原因在于，保险代理们所需的客户资料很难及时获得。例如，在健康保险部门，客户个人信息、卫生维护组织的信息（HMO），以及相关的政策和规定等分别保存在不同的历史系统中。“在和客户进行电话沟通时，我们的保险代理们不得不在多个系统之间来回切换。” ANICO副总裁兼规划和支持部门经理Gray Kirkham解释说。<br /><br />1998年，Kirkham和Pegasystems公司合作安装了工作流系统（后来Pegasystems将此产品命名为BPM），用来给呼叫中心的雇员们提供一个合理的流程提示。这个系统从每一个历史遗留系统提出数据，再通过一个统一的用户界面提供给代理们。<br /><br />不过，在Kirkham实现任何自动化之前，呼叫中心的工作人员必须提出一个完整的业务处理流程。接下来，Kirkham需要和呼叫中心的工作人员进行广泛的交流，对这些项目进行解释，比如，这个项目将如何改变呼叫中心的工作人员服务客户的方式，为什么采用这些最佳实践非常重要。最后，就是提出这些业务流程并对其文档化。<br />现在，当一个客户打来电话就他（或她）的医疗保险问题咨询时，BPM软件提示客户服务人员，在访问打来电话者的保险信息前先确认其社会保险号。由于这个BPM软件可以增强工作流的规范性，提示保险代理下一步的工作流程，所以呼叫中心的工作人员们现在可以马上根据打电话者的不同，知道自己可以提供哪些服务了。<br /><br />由于呼叫中心的工作人员现在能够很快地解决客户的问题，这样他们也能为更多的客户服务。至从这个软件系统安装后，ANICO呼叫中心电话挂机率降低了71%，平均接电话解决问题的时间减少了60%。而且，这个项目具有相当大的可重复性。最开始Kirkham只是把这个软件用在卫生保健呼叫中心，现在这个软件也被用来支持ANICO其他保险产品。<br /><br />企业应用集成工具<br /><br />大的企业应用软件提供商和系统集成商充分利用了BPM软件具有应用编程接口（APIs）这个特点，把BPM软件当成企业应用集成（EAI）的工具，用来从企业现存的各种系统中提取信息。换言之：如果你正在集成各种系统，完全可以利用BPM软件提供的用户界面来集成各种中间件，而不用管这些中间件到底谁提供的。IBM、Tibco和不少集成商都已经购买了BPM软件公司，对这些公司的软件进行适当的调整后并入他们的产品中。<br /><br />从本质上说，EAI中使用的BPM技术和监控及工作流软件没有什么不同。例如，Tibco购买了工作流软件提供商Staffware。企业使用BPM来进行集成的方式也并非与其他的集成方式完全不同，不过这时通常要支持较大的项目。Forrester首席分析师Ken Vollmer说，“集成了EAI、BPM了软件包能支持更大的项目，因此通常也比单独只使用EAI或者BPM软件要昂贵。在只用BPM软件就能满足需要的场合，如果使用集成了EAI、BPM功能的软件包，可能会使项目成本增加30万美元以上。<br /><br />包括全球15条主要航线的星空联盟（Star Alliance）就采用了BPM来集成其各个成员的历史遗留系统。虽然这些成员同意采用统一的流程，但是如果对某些成员的业务流程进行改造以符合其他成员显然是不合适的，应该公平地采用一种能保护以前的投资的方式来进行。<br /><br />这里的挑战非常大，星空联盟的执行CIO Brian Cook说，有数十个历史遗留系统需要集成。例如，要提出一个针对“空中飞人”的新服务项目，可能需要IT部门整合9条航线、27个系统近90个独立的业务流程。<br /><br />这种整合很容易就会失去控制，但是使用BPM软件可以帮助人们提供一个如何共享分布在不同系统之中的数据的视图。星空联盟的IT和航线项目组使用BPM软件来记录各条航线如何来为旅客登记和处理他们的出行信息。然后，航线管理者可以根据这些信息，开发新的业务流程，找出这些流程与BPM应用的对应关系。在整合历史遗留系统是，这种对应关系可以帮助区分哪些是需要整合的点。<br /><br />如何鉴别BPM软件是否适合你<br /><br />商人们肯定会告诉你每个人都可以从BPM中受益，和很多广告一样，他们说的并不都可信。虽然每个企业都有一些业务要改善，但这里有一些具体问题你需要考虑。比如，你想要解决什么问题？你可能有多大投资？你的业务部门是否真正想提高工作效率，或者说，这种程度有多高？<br /><br />Forrester的Vollmer说，EAI/BPM软件属于一种在你现存的系统中挖潜的应用软件，因为这种解决方案不需你额外进行其他的技术投资就可以集成现有的应用。因此，这也给企业在选择做什么项目和选择哪个厂商的BPM软件提供了相当大地灵活性。但Vollmer也提醒说，在做最后的决定时，常识常常起着重要的作用。他举例说，如果你正在考虑一个企业应用集成项目，同时考虑一下是否可以上BPM是一种比较聪明的做法。因为大多数EAI提供商同时也提供BPM软件，CIO们在决定单独选择EAI或者BPM解决方案之前，应该仔细评估一下选择EAI和BPM的综合解决方案。<br />另外，大多数BPM用户喜欢从小项目开始做起。ANICO的Kirkham认为，一个原因在于流程的改变，特别是关键业务流程的改变，比如改变ANICO呼叫中心工作人员的工作习惯，是很难的。一次改变得太多可能会影响整个组织的生产效率，人们需要时间来学习新的流程以及如何使用BPM软件。正如“业务流程重组革命”失败一样，如果没有制度上的支持，BPM也会失败。Kirkham说，虽然ANICO的雇员们事先得到了培训，但是项目实施后整个部门的效率并没有马上见到真正提高。直到后来招了一批对旧流程一无所知的新人后，才看到了真正的效果。<br /><br />AIC的Sferrazza承认，虽然他的确计划在其他一些业务流程上使用Sajus的监控工具，但他的企业还没有真正大规模的开展BPM项目。“我们能够有效监控我们的系统，”他说，“但到目前为止，AIC关注的焦点还集中在不用监控措施就可以提高我们效率的地方。”他的另外一个担心是，他的公司会过多地依赖监控软件，从而增加IT成本。“我担心出现这么一天：我们如此依赖于这些软件，以至于我们必须有几个专门的人员来确保这些业务流程被监控。换句话说，如果监控成为自动化的关键，那么必须有人来监控这些监控软件。”<br /><br />在购买前你应了解什么？<br /><br />AMR的Austvold说，决定购买哪种类型的BPM软件最终取决于你的目标是什么。每个人都同意，现在的市场是买方市场，CIO们很容易就可以在BPM软件市场找到你想要的东西。但是不少CIO和分析人士都提醒说，我们不应该因为BPM项目较小就轻易做出购买决定。虽然和大型集成项目不同，BPM项目上的投资不大，却比较容易得到较高的ROI。<br /><br />目前，BPM的市场是非常稳定的，但是大多数推出BPM软件的公司比较小，它们的产品一般只解决某一类问题。因此有可能它们根本就了解你的业务，你只能靠自己来让这个软件运行起来。Austvold说，但通常小公司提供的产品性价比更好。<br />“你有多种选择，”对象管理集团（OMG）标准化组织的CEO Richard Soley说，“你可以选择比较大的软件提供商，这样不用担心他们倒闭，或者你选择那些小一些但符合标准的提供商，然后准备自我服务。不过，无论如何，我们必须做点什么，否则你就只能祈祷你的竞争对手也不用。”<br /><br />关于BPM，有几个标准，比如刚出现的业务流程执行语言（BPEL），和更成熟一些的Web标准，如Web服务描述语言、Java消息服务。Soley说，每一个提供商都可能会采用几种标准，你需要选择最适合你应用的那些标准。在购买前，要确信你厂商符合的标准是否适合你的流程。<br /><br />如何成功使用BPM<br /><br />要成功地应用BPM涉及到一下几方面：第一，在你的头脑对于需要使用BPM软件来改善哪一个业务流程，应该有一比较清楚的认识。第二，监控业务流程理解业务流程是如何执行的。（这方面可以用BPM监控软件做到）。第三，你和业务流程的负责人一起探讨如何来改善这个业务流程，重新设计流程。如果适当，你可以使用BPM工作流应用来管理新的流程。<br /><br />一个成功的BPM项目将会给企业留下一组业务规则，对于企业来说这些规则就是非常重要的知识产权，同时也为将来的IT项目提供了一个路线图。项目以信息的顺畅流动而结束，它将给以后的IT项目带来很好的影响，会让以后的项目更容易。<br /><br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=5">http://www.01g.net/blog/default.asp?id=5</a><img src ="http://www.blogjava.net/clant/aggbug/41053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:47 <a href="http://www.blogjava.net/clant/articles/41053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]工作流现状</title><link>http://www.blogjava.net/clant/articles/41054.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:35:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41054.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41054.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41054.html</trackback:ping><description><![CDATA[
		<table width="720" border="0">
				<tbody>
						<tr>
								<td width="100%">
										<hr />
										<p align="center">
												<font size="6">
														<span class="style1">
																<span class="style2">工作流</span>
														</span>
														<span class="style3">现状</span>
												</font> （<a href="http://jbpm.org/2/state.of.workflow.html" target="_blank">原文</a>） </p>
										<hr />
										<p align="right">
												<span style="WIDTH: 100%; TEXT-ALIGN: right">
														<b>作者<a href="http://jbpm.org/2/state.of.workflow.html#tombaeyens">Tom Baeyens </a>翻译<a href="http://www.joinwork.net/document/The%20State%20of%20Workflow2.htm#dinghong">dinghong</a></b>
												</span>
												<a href="http://www.joinwork.net/">
														<!-- =================================================================================== -->
												</a>
										</p>
										<h1>
												<font size="5">前言</font>
										</h1>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果数据库系统（ database systems）像受人尊敬的智者讲述的条理清晰的故事，那么<strong>工作流</strong>（<strong>workflow</strong>）就像一群乳臭未干的小子在大谈各自的&amp;ldquo;哲理&amp;rdquo;。之所以这样讲，我是想指出，<strong>工作流</strong>系统 （<strong>workflow</strong> management systems）还处于技术发展曲线（ <a href="http://www.ayeconference.com/wiki/scribble.cgi?read=HypeCycle">technology hype curve</a>）上的初级阶段。在这个领域我们将面临一个激动人心的阶段。 为了描述这一点，可以将<strong>工作流</strong>和关系数据库系统（RDBMS）做一个对比。当在软件开发团队中谈论RDBMS时，大部分人会有一个清晰的概念，在你和他们交流的时候，人们会通过轻微的点头表示认可或理解你所说的。可当使用工作流术语讨论<strong>工作流</strong>时，他们会摇头表示不同意，因为每个人对<strong>工作流</strong>术语都有不同的理解。</span>
										</p>
										<p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;导致形成这种状况的原因之一，是在<strong>工作流</strong>中使用了过多的概念。在这个领域中的大量规范和工具没有一个是相似的。当然，它们相互之间有重叠并且会相互参考引证。<br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在介绍<strong>工作流</strong>时有一个话题必须包括，那就是<strong>工作流</strong>和<strong>业务流程管理</strong>（BPM）的关系。术语&amp;ldquo;<strong>工作流</strong>&amp;rdquo;通常描述人与计算机系统的一系列相关交互。在开发人员中，<strong>工作流</strong>经常被提及。有时，<strong>工作流</strong>的意思是指一些不同的UI界面。业务流程管理的范围比较广，相比之下<strong>工作流</strong>多半局限于技术领域。业务流程管理还从管理人员的角度涉及了非技术问题，比如分析、组织的效率。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在本文中，我首先解释什么是<strong>工作流</strong>管理系统，然后介绍业务流程管理的优点。接下来描述一下为什么<strong>工作流</strong>市场乍看起来如此混乱。本文给出的主要结论是：选择<strong>工作流</strong>系统是想用<strong>工作流</strong>系统的公司，将要面对的最困难的事情。为此，本文的核心部分描述了一个流程定义（process definition）的四个层次，为你选择<strong>工作流</strong>提供一个基础。本文还用中立的语言描述了<strong>工作流</strong>和BPM的通用概念。最后，给出了一些规范和工具的指导性描述。</p>
										<span class="text2">
												<!-- =================================================================================== -->
										</span>
										<h1>
												<font size="5">什么是<strong>工作流</strong>管理系统（WFMS）</font>
										</h1>
										<h2>
												<font size="4">定义</font>
										</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<strong>工作流</strong>系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态,并在人和应用之间分派活动。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为了后面的描述，我们先定义一些基本的术语：流程定义（process definition）和流程实例（process instance）. <u>一个流程定义</u>是一个业务流程或过程的规格化描述。一个<u>流程实例</u>是流程定义的一个运行实体。 都目前为止，概念还比较清晰是不是？但当再深入一步时，我们就要小心使用文字了。如何阐述流程中的步骤，现在还没有一个统一的方式。这是各种<strong>工作流</strong>规范和工具之间主要的分歧。</p>
										<table cellspacing="25" cellpadding="8" border="0">
												<tbody>
														<tr>
																<td style="BORDER-RIGHT: black 1px dashed; BORDER-TOP: black 1px dashed; BORDER-LEFT: black 1px dashed; BORDER-BOTTOM: black 1px dashed" valign="top" width="100%">
																		<p id="activityshouldbebanned">
																				<b>为什么应当禁止使用术语&amp;ldquo;活动（activity）&amp;rdquo;...</b>
																				<br />
																				<span class="note">
																						<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>流程定义通常用一些活动表述。我认为这是导致工作流领域所有混乱的主要原因。我告诉你为什么：因为术语&amp;ldquo;活动&amp;rdquo;混淆了状态（state）和动作（action）之间的差异。在流程中，<u>状态</u> (或者说等待状态)代表了一种对外部参与者（actor）的依赖。在流程运行时，这意味着流程引擎必须等待，直到外部参与者通知工作流管理系统指定的状态完成了。比如，等待可进一步运行的认可。<u>动作</u>是在流程运行过程中，工作流系统为响应指定事件（event）运行的一段程序逻辑（programming logic）。当流程运行过程中指定的事件发生时，工作流系统启动并执行这些动作。比如，当状态分配给一个参与者时，发一封Email。你也能看出，状态和动作是如此不同，因此使用同样的术语去描述这些概念是一个坏习惯。我的建议是避免使用术语&amp;ldquo;活动&amp;rdquo;，使用&amp;ldquo;状态&amp;rdquo;或者&amp;ldquo;动作&amp;rdquo;代替它。</span>
																		</p>
																		<!-- END OF BORDER -->
																</td>
														</tr>
												</tbody>
										</table>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<strong>工作流系统</strong>另一个重要的职责是维护每一个流程运行的上下文信息。 <u>流程上下文变量（process context variable）</u> ，或简称变量，是与流程实例相关的变量。如，休假申请的开始日期、数据库中一条记录的键值、文档管理系统中一篇文档的索引等。通常在流程定义中声明这些变量，然后在流程实例生成时，这些流程变量被实例化。所有成熟的<strong>工作流管理系统</strong>都支持定制的变量类型。</p>
										<h2>目标领域（Target usage）</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;使用<strong>工作流管理系统</strong>的目的之一是作为企业应用系统集成（EAI）的平台。在当前大部分企业级IT架构中，各种各样的异构（heterogeneous）应用和数据库运行在企业内网中。在这些系统被应用到组织时，都有一个清晰的目标。例如，客户管理、文档管理、供应链、订单、支付、资源计划等等。让我们称这些系统为专门应用（ dedicated applications）。每一个专门应用都包含它们所支持业务流程的领域知识。这些专门应用中的自动化流程，被拼装到企业中更大的非自动化流程中。每当一个这样的专门应用安装并投入使用，都会带来涉及其他多个应用的新功能需求。企业应用系统集成（EAI）就是通过使用多个专门应用满足软件新需求的方法。有时，这只需要在两个应用之间提供数据通讯的通道。专门应用将很多业务流程硬编码在软件中。可以这么说，在你购买专门应用时，你是购买了一组固定的自动化业务流程。而<strong>工作流管理系统</strong>是不必事先知道问题域的相关信息的。<strong>工作流系统</strong>将业务流程描述作为输入并管理流程实例的执行，这使得它比专门应用更灵活（当然你也要花精力编写业务流程的规格化描述）。这就是为什么说<strong>工作流系统</strong>和专门系统是相互补充的。<strong>工作流系统</strong>可以用来管理全局的业务流程。如果专门应用支持你所需要的业务流程，那么使用专门应用。在此讨论的<strong>工作流系统</strong>的第一种使用方式就是：结合所有的专门应用，使用<strong>工作流系统</strong>构建一个EAI平台。</p>
										<p class="text2">
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>
												<strong>工作流系统</strong>能够发挥很大价值的第二个使用方式是：协助涉及多人相关任务<strong>工作流</strong>软件的开发。为了达到这个目的，大部分<strong>工作流系统</strong>都有一个方便的机制，来生成执行任务的表单。对于专注于<a href="http://www.iso.ch/iso/en/iso9000-14000/iso9000/iso9000index.html">ISO</a> 或者<a href="http://www.sei.cmu.edu/cmm/cmm.html">CMM</a>认证的组织，采用这种方式使用<strong>工作流系统</strong>能够显著提高生产率。 不用将过程用文字的形式写在纸上，<strong>工作流系统</strong>使你通过流程定义建模实现过程的自动化（如使用基于Web的应用）。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<strong>工作流系统</strong>的第三种使用方式是：将<strong>工作流引擎</strong>嵌入到其他应用中。在前面我们谈到，专门应用将指定问题域相关的业务流程固化在软件中。开发专门应用的公司也可以将<strong>工作流引擎</strong>嵌入到他们的软件中。在这里，<strong>工作流引擎</strong>只是作为一个软件组件，对于应用的最终用户是不可见的。将<strong>工作流引擎</strong>嵌入到应用中的主要原因是为了重用（不重复发明轮子）和应用软件的可维护性。</p>
										<!-- =================================================================================== -->
										<h1>
												<font size="5">The case for workflow</font>
										</h1>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对于引入<strong>工作流</strong>的组织，能够在软件开发和业务两个层次受益。</p>
										<h2>
												<font size="4">方便开发</font>
										</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<strong>工作流管理系统</strong>能够简化企业级软件开发甚至维护。 </p>
										<ul>
												<li>
														<span class="text2">
																<b>降低开发风险</b> - 通过使用状态和动作这样的术语，业务分析师和开发人员使用同一种语言交谈。这样开发人员就不必将用户需求转化成软件设计了。 </span>
												</li>
												<li>
														<span class="text2">
																<b>实现的集中统一</b> -业务流程经常变化，使用<strong>工作流</strong>系统的最大好处是：业务流程的实现代码，不再是散落在各种各样的系统中 。 </span>
												</li>
												<li class="text2">
														<b>加快应用开发</b> - 你的软件不用再关注流程的参与者，开发起来更快，代码更容易维护。 </li>
										</ul>
										<h2>
												<font size="4">业务流程管理 (BPM)</font>
										</h2>
										<p class="text2">
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>在自动化业务流程之前，分析并将它们规格化是一件艰苦但会有很好回报的工作。<a href="http://www.e-workflow.org/">e-workflow.org</a>对于分析流程能够带了的益处有不错的阐述：</p>
										<ul>
												<li>
														<span class="text2">
																<b>提高效率</b> - 许多流程在自动化过程中会去除一些不必要的步骤 </span>
												</li>
												<li class="text2">
														<b>较好的流程控制</b> - 通过标准的工作方法和跟踪审计，提高了业务流程的管理 
</li>
												<li>
														<span class="text2">
																<b>改进客户服务</b> - 因为流程的一致性，提高了对客户响应的可预见性 </span>
												</li>
												<li>
														<span class="text2">
																<b>灵活</b> - 跨越流程的软件控制，使流程可以按照业务的需要重新设计。 </span>
												</li>
												<li class="text2">
														<b>业务流程改进</b> - 对流程的关注，使它们趋向于流畅和简单 </li>
										</ul>
										<p class="text2">
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>我认为他们还遗漏了一个使用<strong>工作流</strong>系统最重要的因数：提高对迭代开发的支持。如果软件中业务流程部分不容易更改，组织就会花很大的精力在开发前的业务流程分析中，希望一次成功。但可悲的是，在任何软件项目开发中，这都很少能实现。<strong>工作流</strong>系统使得新业务流程很容易部署，业务流程相关的软件可以一种迭代的方式开发，因此使用<strong>工作流</strong>系统使开发更有效、风险更低。</p>
										<h2>缺失的一环（Missing link）</h2>
										<h2>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<font size="3">我确实认为工作流系统是企业应用开发中缺失的一环。将企业业务流程逻辑在企业级软件中实现的缺省方式是分散的。这意味着业务流程逻辑散布在各种系统中，如EJB、数据库触发器、消息代理等等。这样得到的软件难于维护，结果，企业只能将改变业务流程软件作为最后的选择。他们经常能够做的是，改变流程以适应软件。上述问题也适用于采用大型外部ERP软件包的企业。进一步，假设我们认识到这个问题，并打算将一个流程相关的代码都集中起来。对于一个流程来说这很不错，但当你要实现多个流程时，你会看到管理状态和流程变量的代码被到处复制。最后，我们会整理这些代码放到一个集中的库中。好，...这就是一个工作流管理系统了，不用费心自己来实现，你可以从本文后面的列表中选择一个</font></span>
												<font size="3">
														<span class="text2">。</span>
												</font>
										</h2>
										<h1>
												<font size="5">A closer look</font>
										</h1>
										<h2>WFMS interfaces</h2>
										<p class="text2">
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>一个<strong>工作流管理系统</strong>以流程定义作为输入。在这里，可以将流程定义看作UML活动图、UML状态图或者有限状态机。在提交一张费用单据、申请休假、要求一个报价、...之后，<strong>工作流</strong>系统负责维护这些流程定义的执行状态和上下文。为此，需要通知<strong>工作流</strong>系统状态的变化。运行流程的状态变化可以记录下来，以备监控管理。</p>
										<p>&amp;nbsp;</p>
										<center>
												<img alt="" src="http://www.joinwork.net/document/The%20State%20of%20Workflow.files/interfaces.gif" border="1" />
												<br />
												<i>Figure 2: Interfaces of a WFMS</i>
										</center>
										<p>&amp;nbsp;</p>
										<p>&amp;nbsp;</p>
										<ul>
												<li>
														<span class="text2">
																<b>定义</b>&amp;nbsp;&amp;nbsp;&amp;nbsp;<strong>工作流</strong>系统的定义接口使流程开发人员能够部署流程定义。注意，这里的&amp;ldquo;流程开发人员&amp;rdquo;可以是业务分析师和软件开发人员的组合。</span>
														<!-- START OF BORDER -->
														<table cellspacing="25" cellpadding="8" border="0">
																<tbody>
																		<tr>
																				<td style="BORDER-RIGHT: black 1px dashed; BORDER-TOP: black 1px dashed; BORDER-LEFT: black 1px dashed; BORDER-BOTTOM: black 1px dashed" valign="top" width="100%">
																						<p width="100%">
																								<b>圈套（Pitfall）</b>
																								<br />
																								<span class="note">许多<strong>工作流管理系统</strong>的开发商想使你相信，通过使用他们的图形化流程开发工具，只要业务分析师就可以生成流程定义。这种幻想源于&amp;ldquo;编程很难&amp;rdquo;这样的事实。开发商的销售人员喜欢说&amp;ldquo;看，你不用写一行代码&amp;rdquo;。不用写代码是好事，可大部分开发商在这点上走的太远，忽略了在某些场合提供一种将代码集成到流程定义中的机制是很适合的。在将<strong>工作流</strong>系统作为EAI平台时，必须在流程中集成代码。开发流程定义需要业务分析师和软件开发人员的合作。一个好的图形流程设计工具应该能够支持这种合作。</span>
																						</p>
																						<!-- END OF BORDER -->
																				</td>
																		</tr>
																</tbody>
														</table>
												</li>
												<li>
														<span class="text2">
																<b>执行</b>&amp;nbsp;&amp;nbsp;&amp;nbsp;执行接口使用户和系统可以操作流程实例。流程实例是流程定义的执行。流程定义的控制流通过状态机描述。执行接口的两个主要方法是启动一个流程实例和通知<strong>工作流</strong>系统一个状态结束了。 </span>
												</li>
												<li>
														<span class="text2">
																<b>应用</b>&amp;nbsp;&amp;nbsp;&amp;nbsp;应用接口代表了由<strong>工作流</strong>系统发起的<strong>工作流</strong>系统和外部系统之间的交互。当一个用户或系统操作一个流程实例的运行时，会生成一些事件（如一个迁移的执行）。流程定义中可以指定一段响应一个事件的可执行代码逻辑，这段代码和组织内外部的其他系统打交道。 </span>
												</li>
												<li class="text2">
														<b>监控</b>&amp;nbsp;&amp;nbsp;&amp;nbsp;管理人员通过监控接口获得流程运行的确切数据。有时，运行日志也可用于审计。 </li>
										</ul>
										<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这些是WfMC参考模型（<a href="http://www.wfmc.org/standards/model.htm">reference model of the WfMC</a>）中定义的五个接口中的四个。 </span>
										<h2>流程定义的四个层次</h2>
										<h2>
												<span class="text2">&amp;nbsp;<font size="3">&amp;nbsp;&amp;nbsp;&amp;nbsp;在下面这部分，我尝试回答这样的问题&amp;ldquo;什么是流程定义包括的内容？&amp;rdquo;。这是从各种规范和工具所使用模型的原则和概念中总结得来的，反映了大部分模型中通用的基本思想。流程定义的内容可以分为四个不同的层次：状态（state）、上下文（context）、程序逻辑（programming logic）和用户界面（UI）。</font></span>
										</h2>
										<h2>状态层</h2>
										<p class="text2">
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>所有状态和控制流的表述，都属于业务流程的状态层。标准编程语言中的控制流来源于Von Neuman体系。控制流定义了必须被执行的指令的顺序，控制流由我们书写的命令、if语句、循环语句等确定。在业务流程中的控制流基本与此一致。但在业务流程中不是使用命令而是使用状态作为基本元素。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在流程中，<u>状态</u> (或者说等待状态)代表了一种对外部参与者（actor）的依赖。状态的意思就像&amp;ldquo;现在X系统或某某人必须作某些事，在此等待直到参与者通知这些任务已完成&amp;rdquo;。状态定义了一种对外部提供结果的依赖。状态典型的例子是批准步骤（step）。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;流程定义中的状态也指定了执行依赖于哪个参与者。在活动图中，泳道（swimlanes）的标注代表这些参与者的名字。<strong>工作流</strong>系统使用这些信息构建任务列表，这是一般<strong>工作流</strong>系统都有的功能。如前所述，参与者可以是人也可以是系统。对于需要人参与的状态，<strong>工作流</strong>系统必须在运行时计算出具体的个人。这样的计算使<strong>工作流</strong>系统必须依赖于组织结构信息。关于这方面的一篇非常有趣的文章是在<a href="http://jbpm.org/2/state.of.workflow.html#furtherreading">further reading section</a>提到的&amp;ldquo;<strong>工作流</strong>应用中的组织管理&amp;rdquo;（ 'Organizational Management in Workflow Applications'）。</p>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;流程定义的控制流包含一组状态和它们之间的关系。状态之间的逻辑关系描述了哪些执行路径可以同时执行，那些不可以。同步执行路径用分叉（forks）和联合（joins）建模，异步执行路径用判断（decisions）和合并（ merges）建模。注意在大多数模型中，在每个状态之前都有一个隐式合并</span>。</p>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UML活动图经常被用来做业务流程建模。作为一种直观和通用的表达，活动图在图形表述上有一个主要问题，就是没有区分状态和动作，它们都用活动来表示。缺少这种区分（导致状态概念的缺失）是学术派对UML活动图的主要批评。UML活动图的第二个问题是在UML2.0版中引入的。当多个迁移（transitions）到达一个活动时，以前的版本规定这是一个缺省合并（merge），在2.0版中规定这是一个需要同步的缺省联合（join）。在我看来，UML活动图的图形部分仍旧可以用来对业务流程状态层次建模，只要使用时对两条构建语义作如下的变化：</span>
										</p>
										<ol>
												<li>
														<span class="text2">在用图形表述业务流程时，只建模状态层（状态和控制流），不要包括动作。这意味着图形中的矩形都是状态而不是活动 </span>
												</li>
												<li class="text2">如果多个迁移到达一个状态，缺省定义为不需要同步的合并（merges） </li>
										</ol>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在流程运行过程中，<strong>工作流</strong>系统用一个令牌（token）作为指针跟踪流程的状态。这相当于Von Neuman体系中的程序计数器。当令牌到达一个状态时，它被分配给<strong>工作流</strong>系统等待的外部参与者。外部参与者可以是个人、组织或者计算机系统。我们定义流程运行的执行人或系统为&amp;ldquo;参与者&amp;rdquo;（actor）。只有在<strong>工作流</strong>系统将令牌分配给一个参与者时，才需要访问组织结构信息。<strong>工作流</strong>系统通过分配令牌构建任务列表。</p>
										<h2>上下文层</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<u>流程上下文变量（process context variable）</u> ，或简称变量，是与流程实例相关的变量。流程开发人员可以使用流程变量存储跨越流程实例整个生命周期的数据。一些<strong>工作流管理系统</strong>有固定数目的数据类型，另一些你可以定义自己的数据类型。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意变量也可以用来存放引用（ references）。一个变量可以引用如数据库中的记录、网络上的文件。什么时候使用引用，取决于使用引用数据的其他应用。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;和流程变量相关的另一个令人感兴趣的方面是：<strong>工作流</strong>系统如何将数据转化为信息。<strong>工作流</strong>是用于组织内部跨越各种异构系统实现任务和数据协同的。对于业务流程中人工执行的任务，<strong>工作流</strong>系统负责从其他相关系统，如SAP、数据库、CRM系统、文档管理系统收集数据。在业务流程的每一个人工步骤，只有相关联的数据项被从异构系统中收集和计算。通过这种方式，从不同系统来的数据被转换并展现为信息。</p>
										<h2 id="programminglogic">程序逻辑层</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如前所述，<u>动作</u>是在流程运行过程中，<strong>工作流</strong>系统响应指定的事件（event）执行的一段程序逻辑（programming logic）。程序逻辑可以是二进制或源代码形式的、用任何语言或脚本编写的软件。程序逻辑层是所有这些软件片断和关于在什么事件发生时调用它们的信息的组合。程序逻辑的例子包括发Email、通过消息代理发消息、从ERP系统中拿数据和更新数据库。</p>
										<h2>用户界面层</h2>
										<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;一个参与者通过向流程变量中填充数据的事件，来触发结束一个状态。比如，在请假的例子中，老板提供&amp;ldquo;同意&amp;rdquo;或&amp;ldquo;不同意&amp;rdquo;数据到流程中。某些<strong>工作流</strong>系统允许指定哪些数据可以填充到流程中，以及它们如何在流程变量中存储。通过这些信息，可以生成从用户收集信息的UI表单。基于流程定义生成用户提交表单的Web应用例子，可以访问<a href="http://jbpm.org/demo.html">the jBpm online demo</a>。</span>
										<!-- =================================================================================== -->
										<h1>
												<font size="5">
														<strong>工作流</strong>全景</font>
										</h1>
										<h2>
												<font size="4">可执行流程与<strong>工作流管理系统</strong>的比较（Executional processes versus a WFMS）</font>
										</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当前在BPM领域中，关于可执行业务流程的规范有趋向于统一集中的趋势。 XLANG, WSFL 和BPML合并为基于交互（消息交换）的BPEL。BPEL在面向服务体系结构(SOA)的大背景下定义。它的前提条件之一是涉及的服务必须用WSDL声明。BPEL规定了一套XML语法，这套语法可以看作一种编程语言，用来描述包括对WSDL定义的服务调用的控制流。</p>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在可执行业务流程和基于状态的<strong>工作流管理系统</strong>所使用的方法中，我注意到了三点主要的区别：</span>
										</p>
										<ul>
												<li class="text2">
														<u>基于状态与面向消息</u>：基于状态的<strong>工作流</strong>系统以状态（或者活动）概念为中心。<strong>工作流引擎</strong>维护状态并计算从一个状态到另一个状态的迁移。另一方面，像BPEL这样的可执行流程以对输入消息响应的定义为中心。一组这些响应外加其他信息（other bells and whistles）可以看作一个业务流程。这也解释了为什么BPEL可以看作是对基于状态的<strong>工作流</strong>系统的某些方面的补充。一个响应输入消息的BPEL onMessage事件处理器，可以在<strong>工作流</strong>状态之间的迁移中执行。 
</li>
												<li>
														<span class="text2">
																<u>流程实例ID与消息相关处理</u>：可执行业务流程的复杂性之一来自消息相关性的处理。流程描述的一部分必须说明BPEL引擎如何从输入消息中确定具体流程的标识。这必须基于输入消息的一个数据项。而<strong>工作流</strong>系统在每个流程实例生成同时生成了实例ID，客户端在后续调用引擎API时使用这个ID。 </span>
												</li>
												<li class="text2">
														<u>
																<strong>工作流引擎</strong>API与抽象服务端点（endpoint）</u>：<strong>工作流</strong>系统提供一组集中的API，客户端通过调用API完成与所有流程实例的交互。在可执行业务流程中，每个流程表现为一个服务。这意味着对于每个流程定义都有一个不同的访问点。 </li>
										</ul>
										<h2>学术界</h2>
										<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;学术界对<strong>工作流</strong>的研究可以回溯到上个世纪七十年代。在当前，研究领域趋向于认为<a href="http://www.daimi.au.dk/PetriNets/">petr 网</a>是<a href="http://tmitwww.tm.tue.nl/research/patterns/main_conclusions.htm">所有流程定义语言之母</a>。关于petri网已有大量先进的分析技术，去年在 <a href="http://tmitwww.tm.tue.nl/bpm2003/">2003 conference on Business Process Management</a>上我有幸会晤了Petri教授。对于大部分人能够访问和理解的有关Petyri网最好的研究之一是<strong>工作流</strong>模式<a href="http://tmitwww.tm.tue.nl/research/patterns">(workflow patterns)</a>。<strong>工作流</strong>模式比较了大量的<strong>工作流管理系统</strong>并以petri网的术语表述了通用流程建模概念。</span>
										<h2 id="opensourceprojects">开放源代码项目</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最后我们看看真实世界中的<strong>工作流管理系统</strong>。选择一个<strong>工作流管理系统</strong>是一件困难的事情，但有选择总比没有选择好。:-) 本文阐述<strong>工作流</strong>基本概念的目的之一，就是使你能够作更好的选择。但我也意识到，对于现在的软件架构师来说，选择<strong>工作流</strong>系统是一件最具挑战性的工作。</p>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下面的列表来源于三个地方：<a href="http://jbpm.org/article.html">my previous article</a>, <a href="http://www.manageability.org/blog/stuff/workflow_in_java/view">the list of Carlos E Perez</a>, 和 <a href="http://www.topicus.nl/topwfm/Tooloverzicht.htm">list by Topicus</a>. </span>
										</p>
										<ul>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.jbpm.org/">jBpm</a>
																</b> - jBpm是本文作者编写的一个灵活可扩展的<strong>工作流管理系统</strong>。作为jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中。jBmp将<strong>工作流</strong>应用开发的便利性和杰出的企业应用集成（EAI）能力结合了起来。jBmp包括一个Web应用程序和一个日程安排程序。jBmp是一组J2SE组件，可以作为J2EE应用集群部署。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://openebxml.sourceforge.net/">OpenEbXML</a>
																</b> - OpenebXML项目致力于提供一个ebXML框架，主要支持不久将由 UN/CEFACT和OASIS发布的ebXML规范2.0版。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://werkflow.codehaus.org/">Werkflow</a>
																</b> - Werkflow是一个灵活可扩展的基于流程和状态的<strong>工作流引擎</strong>。它的目标是满足可以想象的所有工作流程，从企业级的业务流程到小范围的用户交互流程。通过使用可插拔和分层结构，可以方便地容纳各种<strong>工作流</strong>语义。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.opensymphony.com/osworkflow">OSWorkflow</a>
																</b> - OSWorkflow最独到之处是绝对的灵活。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://wfmopen.sourceforge.net/">wfmOpen</a>
																</b> - WfMOpen是WfMC和OMG中所谓<strong>工作流</strong>设施（workflow facility） (<strong>工作流引擎</strong>)的J2EE实现。<strong>工作流</strong>通过扩展的XPDL描述。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.ofbiz.org/docs/workflow.html">OFBiz</a>
																</b> - OFBiz<strong>工作流引擎</strong>基于WfMC和OMG的规范，使用XPDL作为流程定义语言。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://bonita.forge.objectweb.org/">ObjectWeb Bonita</a>
																</b> - Bonita是一个符合WfMC规范、灵活的协同<strong>工作流</strong>系统。 对于各种动作如流程概念建模、定义、实例化、流程控制和用户交互等提供了全面的集成图形工具。 100% 基于浏览器、使用SOAP和XML数据绑定技术的Web Services封装了已有的<strong>工作流</strong>业务方法并将它们以基于J2EE的Web Service形式发布。基于活动预测模型的第三代<strong>工作流引擎</strong>。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.bigbross.com/bossa/">Bigbross Bossa</a>
																</b> -速度非常快、轻量级的引擎，使用富有表达能力的Petri网定义<strong>工作流</strong>，不要求关系数据库，使用简单，能和Java应用集成。事实上，它是按嵌入式设计的。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://xflow.sourceforge.net/">XFlow</a>
																</b> - XFlow运行于EJB和servlet容器中。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://taverna.sourceforge.net/">Taverna</a>
																</b> - Taverna项目的目标是提供一种语言和软件工具，方便在eScience中使用<strong>工作流</strong>和分布计算技术。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://shark.enhydra.org/">Enhydra Shark</a>
																</b> - Shark完全基于WfMC和OMG标准，使用 XPDL作为<strong>工作流</strong>定义语言。流程和活动的存储使用Enhydra DODS。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.powerfolder.org/">PowerFolder</a>
																</b> - PowerFolder包括开发人员使用的studio，管理环境和一个运行时引擎。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.dstc.edu.au/Research/Projects/Pegamento/Breeze/breeze.html">Breeze</a>
																</b> - Breeze一个轻量级、跨平台、基于组件的<strong>工作流引擎</strong>原型。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.openbusinessengine.org/index.html">Open Business Engine</a>
																</b> - Open Business Engine是一个开放源码的Java<strong>工作流引擎</strong>，支持WfMC规范，包括接口1（XPDL）、接口2/3（WAPI）和接口5。OBE为活动的运行提供了一个可控的集中环境。OBE主要基于J2EE实现。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://openwfe.sourceforge.net/">OpenWFE</a>
																</b> - OpenWFE是一个开放源码的Java<strong>工作流引擎</strong>。 它包括可升级的三个组件：引擎、工作列表和Web界面。它的流程定义语言虽然使用XML格式，其灵感来源于 Scheme，一种Lisp方言。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://freefluo.sourceforge.net/">Freefluo</a>
																</b> - Freefluo是一个使用Web Service的<strong>工作流</strong>协同工具，可以处理WSDL的Web Service调用。支持两种XML格式的<strong>工作流</strong>语言：IBM的WSFL和XScufl。Freefluo非常灵活，它的核心是不与任何<strong>工作流</strong>语言或执行架构关联的可重用协同框架。 Freefluo包括可执行使用WSFL一个子集描述的<strong>工作流</strong>的运行库。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.tripodsoft.com/products/intro.htm">ZBuilder</a>
																</b> - ZBuilder3是第二代<strong>工作流</strong>开发管理系统，也是一个开放源码产品。它为不同的<strong>工作流引擎</strong>和<strong>工作流</strong>定义了一组标准的JMX管理接口。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.smartcomps.org/twister/">Twister</a>
																</b> - Twister的目标是提供新一代、易集成、应用Java领域中最新成果、面向B2B的<strong>工作流</strong>解决方案。流程引擎基于BPEL业务流程规范和Web Service标准。 </span>
												</li>
												<li class="text2">
														<b>
																<a href="http://con-cern.org/">Con:cern</a>
														</b> - con:cern<strong>工作流引擎</strong>基于扩展的案例（case）处理方法，流程由一组具有前后条件的活动组成。 </li>
										</ul>
										<h2 id="commercialvendors">商业软件提供商</h2>
										<ul>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://e-docs.bea.com/wlintegration/v2_1/interm/bpmhome.htm">Bea's WLI</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.carnot-usa.com/">Carnot</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.dralasoft.com/products/workflow/">Dralasoft</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.filenet.com/">Filenet</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.fsw.fujitsu.com/products/InterstageSuite/BPM/overview.html">Fujitsu's i-Flow</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www-106.ibm.com/developerworks/ibm/library/i-holo/">IBM's holosofx tool</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.intalio.com/products/index.html">Intalio</a>
														</span>
												</li>
												<li class="text2">
														<a href="http://www.intelliFlow.com.cn">intelliFlow&amp;nbsp;</a>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.lombardisoftware.com/">Lombardi</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://oakgrovesystems.com/">Oakgrove's reactor</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.oracle.com/ip/deploy/ias/integration/">Oracle's integration platform</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.qlinktech.com/">Q-Link</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.sap.com/solutions/netweaver/">SAP's NetWeaver</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.savvion.com/products/">Savvion</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.seebeyond.com/products/ICAN_productsEinsight.asp">Seebeyond</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.sonicsoftware.com/products/sonic_orchestration_server/">Sonic's orchestration server</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.staffware.com/products/">Staffware</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.ultimus.com/">Ultimus</a>
														</span>
												</li>
												<li style="PADDING-BOTTOM: 0px">
														<span class="text2">
																<a href="http://www.versata.com/products/inSuite/products.html">Versata</a>
														</span>
												</li>
												<li class="text2" style="PADDING-BOTTOM: 0px">
														<a href="http://www.webmethods.com/content/1,1107,Model,FF.html">WebMethod's process modeling</a>
												</li>
										</ul>
										<h2>工具目录</h2>
										<ul>
												<li>
														<span class="text2">
																<a href="http://dmoz.org/Computers/Software/Workflow/Products/">http://dmoz.org/Computers/Software/Workflow/Products/</a>
														</span>
												</li>
												<li class="text2">
														<a href="http://is.twi.tudelft.nl/~hommes/tools.html">A collection of links to tools for modelling business processes and workflows maintained by Bart-Jan Hommes at TU Delft, the Netherlands.</a>
												</li>
										</ul>
										<h2>规范</h2>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Michael zur Muehlen作了一个所有<strong>工作流</strong>相关规范的介绍性的<a href="http://www.wfmc.org/standards/docs/Process_Management_Standards_files/frame.htm" target="_blank">幻灯片</a>，很不错。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我同意<a href="http://www.staffware.com/understanding-bpm/useful-reading/The-Problem-with-Process-Management-Standards.asp?ComponentID=8058&amp;amp;SourcePageID=7348#1">John Pyke</a> 和 <a href="http://tmitwww.tm.tue.nl/research/patterns/download/ieeewebflow.pdf">Wil van der Aalst</a> 的观点：<strong>工作流</strong>标准还处于制定阶段。现在存在大量相互丛叠的规范。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在我看来，导致规范如此之多而同时每个规范的应用又很有限的原因是，在<strong>工作流</strong>最基础概念上大家达成的共识很少。<strong>工作流</strong>是最容易让你感到心烦的话题，因为<strong>工作流</strong>本身的概念会和其他相关概念和技术混淆在一起。可以举一个具体的例子，比如说<strong>工作流</strong>完全是对Web Service的补充。你可以通过暴露接口以Web Service的方式访问一个<strong>工作流</strong>管理系统，但是不能假定总是必须通过Web Service接口访问<strong>工作流</strong>系统接口。一些规范造成了这样的假设。除了Web Service，其他容易混淆的概念和技术包括：Email、流程之间的通讯、Web应用和组织结构。</p>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在<strong>工作流</strong>领域第一个致力于标准化工作的是<a href="http://wfmc.org/">Workflow Management Coalition</a> (WfMC)，开始于 1993。 WfMC发布的<a href="http://wfmc.org/standards/model.htm">参考模型</a>很不错，它定义了<strong>工作流管理系统</strong>和其他相关部分之间的接口。WfMC的另一项成果是<a href="http://www.wfmc.org/standards/docs/TC-1025_10_xpdl_102502.pdf">XPDL</a>规范。 XPDL定义了描述<strong>工作流</strong>声明部分（declarative part）的XML结构。我个人认为，参考模型和XPDL是目前最好的规范。</p>
										<ul>
												<li>
														<span class="text2">
																<a href="http://www.jcp.org/en/jsr/detail?id=207">
																		<b>JSR 207: Java的流程定义</b>
																</a> -是由<a href="http://www.jcp.org/">Java Community Process (JCP)</a> 发起，如何在J2EE应用服务器中实现业务流程自动化的标准。其基本模型是定义一个特殊类型的ejb session bean，作为一个业务流程的接口。JSR207标准化一组XML元标记（meta tags）作为JSR175元数据的一部分。JSR207 将session bean和元数据作为ejb容器的输入，然后生成绑定方法的代码，这些方法在元数据中描述。此规范还处于初级阶段，没有发布任何内容。专家小组成立于 March 2003. </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.wfmc.org/">WfMC's</a>
																		<a href="http://www.wfmc.org/standards/docs/TC-1025_10_xpdl_102502.pdf">XPDL</a>
																</b> - WfMC是由约300家成员参加的组织，基于参考模型定义了一系列的标准。参考模型用用例（use case）的形式描述了<strong>工作流</strong>系统和其他相关部分之间的关系。XPDL是WfMC制定的描述业务流程控制流（control flow ）的XML格式规范。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.ebxml.org/">ebXML's</a>
																		<a href="http://ebxml.org/specs/ebBPSS.pdf">BPSS</a>
																</b> - ebXML是协同流程的相关标准集，主要关注不同公司流程之间的通讯。可以看作EDI的继承者。 ebXML是由OASIS和UN/CEFACT联合发起。 BPSS 是ebXML的规范，其中的概念和本文阐述的很接近。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.bpmi.org/">BPMI's</a> BPML &amp;amp; WSCI</b> - (Intalio, Sun, SAP, ...)BPMI 也定义了一个规范 (BPMN) ，描述如何将&amp;ldquo;可执行&amp;rdquo;业务流程可视化的表现。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www-106.ibm.com/developerworks/library/ws-bpel/">BPEL</a>
																</b> - (Microsoft, BEA, IBM, SAP &amp;amp; Siebel) BPEL由一系列基于消息交换的规范（ XLANG, WSFL, BPML）产生。还有一个将此规范引入到Java的提案: <a href="http://www-106.ibm.com/developerworks/webservices/library/ws-bpelj/">BPELJ</a>。 此规范描述如何处理输入的消息，而不是对流程状态进行建模。就像本文提到的，它不是一个关于业务流程规格化定义的规范。简单的说，可以将它看作XML形式的编程语言，提供将WSDL-Services组合成控制流的能力。顾名思义，此规范重点在（也不只限于）Web Service。</span>
												</li>
												<li class="text2">
														<b>
																<a href="http://www.omg.org/docs/formal/00-05-02.pdf">OMG's Workflow management facility</a>
														</b> - 基于WfMC规范，定义如何向CORBA转换。 
</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.uml.org/">UML</a>
																</b> - UML定义了建模和设计软件系统的9类图。每类图包括可视化的表示和语义。其中活动图的目的就是要可视化的表现业务流程。 注意到在一个流程定义包含四个层次的内容，我想指出的是：一个流程定义包含的内容远远多于它的可视化部分。UML只涉及了可视化部分。 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.rosettanet.org/">RosettaNet</a>
																</b> - RosettaNet主要定义了一组 Partner Interface Processes (PIP). 一个 PIP 描述了一个有两个交易参与者、包括消息格式的流程。 </span>
												</li>
												<li class="text2">
														<b>
																<a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ubl">UBL</a>
														</b> - The Universal Business Language (UBL)定义了用于不同组织间通讯的XML文档标准库。可以看作是对ebXML的补充，因为ebXML只定义了建立组织间流程的基础。此规范的竞争对手是 RosettaNet标准中的一个子集。 </li>
										</ul>
										<!-- =================================================================================== -->
										<h1>
												<font size="5">结论</font>
										</h1>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我在本文中指出<strong>工作流</strong>市场还属于年轻而又混乱（young and wild）的阶段，但已经有可靠的工具存在了: </span>
										</p>
										<ol>
												<li>
														<span class="text2">到目前，像J2EE和.NET这样成熟的集成平台才可用。在这样一个平台上运行</span>
														<span class="style5">
																<strong>
																		<font size="2">工作流</font>
																</strong>
														</span>
														<span class="text2">
																<strong>管理系统</strong>才能真正发挥<strong>工作流</strong>系统的附加价值。这也是为什么只有在今天，<strong>工作流</strong>系统才被重新发现。 </span>
												</li>
												<li class="text2">在 'The case for workflow'一节，我们介绍了引入<strong>工作流管理系统</strong>，是如何同时在技术和业务上带来投资回报的。 
</li>
												<li>
														<span class="text2">
																<strong>工作流</strong>在技术发展曲线的位置表明，BPM和<strong>工作流</strong>中使用的概念还需要明确。 </span>
												</li>
												<li class="text2">&amp;ldquo;开放源代码项目&amp;rdquo;和&amp;ldquo;商业软件提供商&amp;rdquo;列表中的工具，可以让你获得<strong>工作流</strong>和<strong>业务流程管理</strong>的益处。 </li>
										</ol>
										<p>
												<span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从以上所有这些中能得到的结论是：</span>
										</p>
										<ol>
												<li>
														<span class="text2">规范还没有成熟，没有标准被大范围采用 </span>
												</li>
												<li>
														<span class="text2">对于现在想应用BPM的公司来讲，比较<strong>工作流</strong>系统是一个极其困难的挑战 </span>
												</li>
												<li class="text2">尽管标准化工作慢了一拍，可好的<strong>工作流管理系统</strong>还是有的。这对于已经在挑选<strong>工作流</strong>系统的组织来说是一个好消息。 </li>
										</ol>
										<p class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我希望本文能够激发你对<strong>工作流</strong>的兴趣并且能够为你进行有效的对比提供正确的背景知识。</p>
										<!-- =================================================================================== -->
										<h1 id="furtherreading">
												<font size="5">Further reading</font>
										</h1>
										<ul>
												<li>
														<span class="text2">
																<b>
																		<a href="http://tmitwww.tm.tue.nl/research/patterns/">Workflow Patterns</a>
																</b> -Wil van der Aalst教授的<strong>工作流</strong>模式学术研究网站 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.ebpml.org/">ebpml.org</a>
																</b> - 有关业务流程管理和<strong>工作流</strong>的网站，信息量大、全面 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.bpmg.org/">Business process management group</a>
																</b> - The Business Process Management Group (founded in 1992) is a global business club exchanging ideas and best practice in business process and change management. </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.enix.co.uk/">Enix</a>
																</b> - 英国流程管理顾问公司，在网站上有不错的内容 </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.ebizq.net/">ebizq.net</a>
																</b> - Commercial community that has booths, webinars and other interesting stuff put together in a nice website. </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://viking.gmu.edu/http/syst511/vg511/AppC.html">An introduction to petri nets</a>
																</b> - The title says it all. </span>
												</li>
												<li>
														<span class="text2">
																<b>
																		<a href="http://www.workflow-research.de/Publications/PDF/MIZU-ITM(2004).pdf">Organizational Management in Workflow Applications</a>- An interesting article that discusses the relation between business processes and the organisational data involved. 
<li><span class="text2"><b><a href="http://devresource.hp.com/drc/technical_white_papers/WSOrch/WSOrchestration.pdf">Web services orchestration</a></b> - an HP-paper that reviews the emerging technologies tools and standards. (Januari 2003) </span></li><li class="text2"><b><a href="http://www.webservicesarchitect.com/content/articles/oriordan01.asp">Business process standards for web services</a></b> - An article that discusses the various aspects involved in workflow and BPM. 
<h1><font size="5">Thanks</font></h1><span class="text2">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>A special thanks for Gustavo Maciel Dias Vieira and Jef Vanbockryck for their valuable feedback on the draft versions of this article. <!-- START OF BORDER --><table cellspacing="25" cellpadding="8" width="100%" border="0"><tbody><tr><td style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid" valign="top" width="100%"><p id="tombaeyens" width="100%"><b>about the author<br /><br />Tom Baeyens</b> leads the jBpm support organisation, specialized in Java, workflow and business process management. His expertises are both at a technical, analysis and at a business level. Tom is the founder of <a href="http://jbpm.org/">jbpm.org</a>, an open source workflow engine. Tom is also a member of the expertgroup of the JSR 207: <a href="http://www.jcp.org/en/jsr/detail?id=207">Process Definition for Java</a>. Tom Baeyens can be contacted at <b><font family="courier new">tom at jbpm.org</font></b></p><!-- END OF BORDER --></td></tr></tbody></table></li></b>
														</span>
												</li>
										</ul>A special thanks for Gustavo Maciel Dias Vieira and Jef Vanbockryck for their valuable feedback on the draft versions of this article. <!-- START OF BORDER --></td>
						</tr>
				</tbody>
		</table>
		<br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=4">http://www.01g.net/blog/default.asp?id=4</a><img src ="http://www.blogjava.net/clant/aggbug/41054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:35 <a href="http://www.blogjava.net/clant/articles/41054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]基于UML的工作流管理系统分析</title><link>http://www.blogjava.net/clant/articles/41055.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:29:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41055.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41055.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41055.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41055.html</trackback:ping><description><![CDATA[引言<br />随着社会生产的流程化，工作流起着越来越重要的作用。根据 WFMC 的定义，工作流（Workflow）就是自动运作的业务过程部分或整体，表现为参与者对文件、信息或任务按照规程采取行动，并令其在参与者之间传递。简单地说，工作流就是一系列相互衔接、自动进行的业务活动或任务。本文将详细介绍基于UML的工作流管理系统分析与建模。<br /><br />1 工作流概述<br />对工作流的研究起源于二十世纪七十年代，受网络的局限性，最初的工作流系统主要以企业内部的文档处理为主。到了二十世纪九十年代，随着Internet 技术的发展及应用，促进了电子商务应用的极大发展，使得公司与公司之间、公司内部部门之间以及子公司之间的业务相互处理成为可能，这为工作流的发展带来了很大的机遇和挑战。<br /><br />根据国际有关组织的预测，随着电子商务的发展，以数据处理为中心的数据库产品已经进入稳定发展期，以业务过程处理为中心的工作流产品将进入高速发展期。在国内，随着企业管理的规范化和规模的不断扩大，企业的计算机管理将不仅仅停留在信息资源管理上，而将向更复杂的业务过程管理迈进。<br /><br />为了实现组织目标，有关业务活动依时序或逻辑关系相互连接构成业务流程。在业务开展过程中，文档、信息或任务，依据组织规范在参与者之间传递、处理或执行。总体业务流程中，实现了基于计算机辅助处理而达到自动化的全部或部分称为工作流。也就是说，工作流是在计算机辅助下全部或部分自动执行的工作过程，该过程可运行于异质、分布的运行环境中，供多人协同工作。工作流服务器是供业务流程可视化设计、管理和控制业务流程的运行、并在实际执行过程中可动态修改业务流程的一种计算机软件平台。它使得快速开发、部署和运行企业业务管理系统、电子商务系统等成为可能。它也使得企业在复杂多变的市场环境中，为了快速适应市场的变化，在保存现有投资，现有系统不变的情况下，迅速调整业务或商务流程成为可能。如它可应用在：采购处理、各种申请、订单与报价处理、员工绩效考核、人事变动、贷款审批、索赔处理、B2B、电子商务等。<br /><br />2 工作流管理系统概述<br />工作流管理系统是定义、创建和执行工作流的系统，它是一种特殊的计算机支持的协同处理（CSCW，Computer Supported CooperativeWork）软件系统。<br /><br />工作流管理系统的产生<br /><br />工作流管理系统（WfMS，WorkflowManagementSystem）是以计算机支持的分布式、协同工作业务流程的自动或半自动化为研究目标的软件系统。随着计算机网络，特别是Internet/Intranet 的迅猛发展和应用，计算机支持的分布式、协同工作的工作流系统在企、事业单位中的地位显得越来越重要，也有着广阔的前景。<br /><br />工作流管理系统是定义、创建、执行工作流的系统。开发这类软件系统就是要协调分布式、协同处理的各个节点上的活动，按照预定义的控制流程进行执行，以达到对它们的自动执行和有效的管理。开发这类软件有很大的重复性，工作流管理系统就是将这类软件的公共的流程控制部分（工作流运行服务、引擎）、管理部分和其他公共部分抽象出来，形成一种软件开发平台，用户只需要将它们的控制流程描述出来，该平台软件就可对它们的控制流程进行自动执行和有效地管理，而不需要对每次不同的应用重复地开发。<br /><br />不同工作流管理系统可以有不同的实现方法，不同的底层通讯机制，应用的范围也可能有很大的差距，但所有的工作流管理系统从用户的应用层上来看，通用工作流管理系统应该能够提供以下三个方面的功能支持：<br /><br />首先是建造功能，即对工作流的业务流程及组成这些业务流程的活动进行定义和建模。<br /><br />其次是运行控制功能，即在一定的运行环境下，负责创建、执行和控制工作流实例，激活相应的资源和应用，并完成过程中从一个活动到另一个活动的控制转移。它是整个工作流管理系统的核心部分。<br /><br />最后是运行交互功能，即在工作流实例的运行中，工作流管理系统与工作流参与者（业务工作的参与者或控制者）及外部应用程序进行交互的功能。<br /><br />由于信息技术的发展和日趋激烈的商业竞争，人们不再满足于独立、零散的办公自动化和计算机应用，而是需要综合的、集成化的解决方案。作为一种对常规性事务进行管理、集成的技术，WfMS 的出现是必然的。它可以改进和优化业务流程，提高业务工作效率；实现更好的业务过程控制，提高顾客服务质量；提高业务流程的柔性等。<br /><br />3 工作流管理系统的组成<br />一个完整的工作流管理系统中主要包括如下七个部分的部件和数据。<br /><br />a.过程定义工具<br /><br />过程定义工具被用来创建计算机可处理的业务过程描述。它可以是形式化的过程定义语言或对象关系模型，也可以是简单地规定用户间信息传输的一组路由命令。<br /><br />b.过程定义<br /><br />过程定义（数据）包含了所有使业务过程能被工作流执行子系统执行的必要信息。这些信息包括起始和终止条件、各个组成活动、活动调度规则、各业务的参与者需要做的工作、相关应用程序和数据的调用信息等。<br /><br />c.工作流执行子系统和工作流引擎<br /><br />工作流执行子系统也称为（业务）过程执行环境，包括一个或多个工作流引擎。工作流引擎是WfMS 的核心软件组元。它的功能包括：解释过程定义，创建过程实例并控制其执行，调度各项活动，为用户工作表添加工作项，通过应用程序接口（API，Application Program Interface）调用应用程序，提供监督和管理功能等。工作流执行子系统可以包括多个工作流引擎，不同工作流引擎通过协作共同执行工作流。<br /><br />d.工作流控制数据<br /><br />指被工作流执行子系统和工作流引擎管理的系统数据，例如工作流实例的状态信息、每一活动的状态信息等。<br /><br />e.工作流相关数据<br /><br />指与业务过程相关的数据。WfMS 使用这些数据确定工作流实例的状态转移，例如过程调度决策数据、活动间的传输数据等。工作流相关数据既可以被工作流引擎使用，也可以被应用程序调用。<br /><br />f.工作表和工作表处理程序<br /><br />工作表列出了与业务过程的参与者相关的一系列工作项，工作表处理程序则对用户和工作表之间的交互进行管理。工作表处理程序完成的功能有：支持用户在工作表中选取一个工作项，重新分配工作项，通报工作项的完成，在工作项被处理的过程中调用相应的应用程序等。<br /><br />g.应用程序和应用数据<br /><br />应用程序可以直接被WfMS 调用或通过应用程序代理被间接调用。通过应用程序调用，WfMS 部分或完全自动地完成一个活动，或者对业务参与者的工作提供支持。与工作流控制数据和相关数据不同，应用数据对应用程序来讲是局部数据，对WfMS 的其他部件来说是不可见的。<br /><br /><br /><br />术语解释<br /><br />表1 工作流管理系统术语解释<br /><br />术语／缩写<br />解 释<br /><br />过程定义<br />由过程定义工具所定义的一个工作流过程<br /><br />过程实例<br />过程定义运行之后转化为过程实例，一个过程定义可以产生多个过程实例<br /><br />活动<br />一个相对独立的工作的描述，它是过程定义的一个重要组成部分<br /><br />活动实例<br />活动运行之后的一个实例<br /><br />工作项<br />在一个活动实例中，工作流参与者所需执行的工作<br /><br />工作项列表<br />一个参与者所负责的所有工作项的详细描述<br /><br />信牌箱<br />活动之间传递信息的驿站<br /><br />转移<br />从活动到信牌箱或从信牌箱到活动，描述信牌箱与活动之间关系的连接<br /><br />工作流控制数据<br />表示过程实例、活动实例的状态信息<br /><br />工作流相关数据<br />与业务过程相关的数据，工作流引擎根据它们来确定过程实例的状态转移<br /><br />日志数据<br />系统中所有发生的事件及相应数据的记录<br /><br />运行服务器<br />负责整个过程的运行、调度、查询及日志的记录等<br /><br />过程定义状态<br />表示过程定义目前所处的状态，如：是否已发布等<br /><br />过程实例状态<br />表示过程实例目前所处的状态，如：运行、挂起等<br /><br />活动实例状态<br />表示活动实例目前所处的状态，如：运行、挂起等<br /><br />工作项状态<br />表示工作项目前所处的状态，如：运行、挂起等<br /><br />引擎<br />运行服务器的核心，负责过程实例的执行、调度<br /><br />引擎容器<br />包含了多个引擎，并提供多引擎管理功能<br /><br /><br /><br /><br /><br />4 工作流管理系统功能分析<br />前面已经介绍过，一个完整的通用工作流管理系统应当包括七个部件，这里限于篇幅的原因，只对工作流管理系统的核心部分：工作流执行子系统和工作流引擎进行分析。<br /><br />工作流管理系统核心功能<br /><br />工作流管理系统的核心组成部分称为工作流执行子系统，它为创建、初始化和执行过程实例提供了一个运行环境。<br /><br />在一个工作流执行子系统中可以包括一个或多个工作流引擎，前者是一种集中式的实现方式，而后者是一种分布式的实现方式。分布式的实现方式又可以分为同构和异构两种不同的情况。所谓同构是指在一个运行服务系统中包含了多个兼容的工作流引擎；所谓异构是指在工作流管理系统中包含了两个以上异构的工作流执行子系统。<br /><br />工作流引擎是工作流管理系统的核心软件部件。它的主要功能有：解释过程定义，控制过程实例（创建、激活、挂起、终止等），按照过程定义已确定的业务逻辑调用各项活动，为用户工作表添加工作项，维护工作流控制数据和工作流相关数据，调用应用程序，提供监督，管理和审计功能。<br /><br />工作流执行子系统涉及四种数据：工作流控制数据、工作流相关数据、组织/角色模型数据和工作表。<br /><br />第一种，工作流控制数据。指只由工作流执行子系统维护的内部控制数据，主要用于表示过程实例与活动实例的状态信息。<br /><br />第二种，工作流相关数据。指与业务过程相关的数据，他们由应用程序或由用户通过工作项处理来产生和更新，工作流引擎根据相关数据来确定过程实例的状态转移，例如过程调度决策数据、活动间的传输数据等。<br /><br />第三种，组织/角色模型数据。是描述组织结构的数据，主要用于确定工作项的执行者。<br /><br />第四种，工作表。列出了与工作流参与者相关的一系列工作项。<br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=3">http://www.01g.net/blog/default.asp?id=3</a><img src ="http://www.blogjava.net/clant/aggbug/41055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:29 <a href="http://www.blogjava.net/clant/articles/41055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]工作流管理系统的分类</title><link>http://www.blogjava.net/clant/articles/41056.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:25:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41056.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41056.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41056.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41056.html</trackback:ping><description><![CDATA[目前已有上百种声称具有工作流管理功能的商品化软件或原型系统。为了对这些系统的功能、特点等有一具清晰的认识，可以根据工作流过程本身的特点、系统建模的方式、所使用的底层支撑技术、以及工作流过程的执行方式等的不同而对它们进行相应的分类如下： <br /><br />　　1、结构化的与即席的 <br />　　结构化工作流指的是在实际工作过程中会反复重复、严格按照某个固定的步骤进行的业务过程。定义此种工作流所需要的各种类型的信息可以通过对业务过程进行详细的分析而得到，从而得到完整的过程定义并在以后的应用过程中反复使用。大量的办公程序，如公文处理、审批等都属此类。即席工作流则是针对那些重复性不是很强或没有重复性的工作流程的，关于这类流程执行所需的有关参数(如参加者等)事先无法确定，而必须推迟到过程实例运行时才能确定，同时在执行过程中间还可能会发生一些意外的情况。这种动态多变的特点在提供更高灵活性的同时，也为过程的建模与执行带来更多的复杂性。 <br /><br />　　2、面向文档的与面向过程的 <br /><br />　　前者的侧着点在于将电子形式的文档、图像等在有关的人员之间进行分发，以便能够得到不同人的处理与审阅。现有的文档管理与映像管理系统均属此类。在面向过程的WfMS中，工作流被描述成一序列执行环节。与各环节相应都有待处理的数据对象。各环节的数据对象可以按不同的方式分发到其他环节中去，如可以将数据对象的值作为控制条件、或者依此数据对象组装成其他的数据对象等。高端的WfMS一般都属此类系统。 <br /><br />　　3、基于邮件和基于数据库 <br /><br />　　前者使用电子邮件来完成过程实例执行过程中消息的传递、数据的分发与事件的通知。低端的系统所使用的经常就是此种方法，它可以充分发挥电子邮件系统在广域环境下的数据分发功能，但整个系统将运行于一种松散耦合的模式下。在基于数据库的WfMS中，所有的数据都保存在某种类型的DBMS中，过程的执行实际上就是对这些数据的查询与处理。高端的大规模系统所使用的一般都是此种方法。 <br /><br />　　4、任务推动的与目标拉动的 <br /><br />　　前者指的是从过程的开始逐步地一个环节一个环节的执行，当某个活动实例被处理完之后，后续的有关活动将被创建并被激活，由此直至整个工作流程的完成。这是目前大多数面向过程的WfMS所使用的执行方式。而在目标拉动的WfMS中，一个业务流程被看成是一个目标。过程实例执行时，该目标将被分解得到多个相互之间按一定约束条件的关联起来的可执行的多个环节，其中各环节还可以当成是子目标而进一步进行分解。在各环节均执行完毕之后，整个过程也就完成了。目标拉动是一种全新的执行方式，下一代的WfMS将具有此种特征。应该说明的是：上述分类只是从不同的角度入手的。一般来说，后面那些特点将给WfMS带来更好的灵活性，同时也将成为那些能够支持跨机构的大规模复杂工作流管理、面向关键任务的WfMS不可缺少的特征。 <br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=2">http://www.01g.net/blog/default.asp?id=2</a><img src ="http://www.blogjava.net/clant/aggbug/41056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:25 <a href="http://www.blogjava.net/clant/articles/41056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]工作流之大局势</title><link>http://www.blogjava.net/clant/articles/41057.html</link><dc:creator>BPM </dc:creator><author>BPM </author><pubDate>Tue, 01 Nov 2005 23:22:00 GMT</pubDate><guid>http://www.blogjava.net/clant/articles/41057.html</guid><wfw:comment>http://www.blogjava.net/clant/comments/41057.html</wfw:comment><comments>http://www.blogjava.net/clant/articles/41057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/clant/comments/commentRss/41057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/clant/services/trackbacks/41057.html</trackback:ping><description><![CDATA[工作流之大局势<br />1. 从奴隶社会到封建后期<br />工作流(WorkFlow)的概念是在现代信息系统的建设中逐步形成的，它有一个从局部到整体、从初级到高级、从简单到复杂、从奴隶社会到封建盛世的发展过程，按其发展历程，我们一般把它分为三个阶段:<br /><br />﹡ EDF(电子数据流)阶段<br /><br />EDF(电子数据流)阶段是工作流的奴隶社会阶段。此时的工作流在信息技术中的应用,仅着眼于利用信息技术减轻人们在流程中的计算强度,如设计一个流程用来协调多个会计统计帐目。所以,EDF最主要的特点是仅对企业单项业务进行处理,基本不涉及管理的内容。<br /><br />﹡ TPF(事务处理流)阶段<br /><br />TPF(事务处理流)阶段是工作流的封建初期。TPF并没有形成对企业的全局业务的管理,而着眼于对企业局部业务的管理,比如,设计一套工作流程,来管理物资的采购和供应。<br /><br />﹡ IMF(信息管理流)阶段<br /><br />当今的工作流已经发展到封建后期-------IMF(信息管理流)阶段, IMF强调对企业业务的全局的整体性的管理。在这个阶段,工作流就是为了完成同一目标而相互衔接、自动进行的一系列业务活动或任务。目前,工作流技术与信息技术以及企业管理紧密结合,已经悄悄渗入MIS系统、ERP系统和CRM系统等企业级关键系统中,并迅速成为这些系统的核心。在这个阶段,保皇派工作流经历了大发展,革新派工作流也风涌而现。<br /><br />2. 保皇派与革新派<br />与其它信息技术相比,工作流技术属于较新的一个,它现在仍处于标准的制定阶段,目前已有的标准按采用的技术分为两大派别,第一派是保皇派,基于纯XML技术;第二派是革新派,基于Web服务技术。保皇派与革新派打得难分难解,所以,现在仍有一些工作流引擎没有采用任何标准而独立实现,也就是说,它们不依靠保皇派,也不依靠革新派。<br /><br />2.1 保皇派分支<br />﹡ XPDL（Xml Process Definition Language）<br /><br />XPDL是保皇派最得人心的一派,因为它是太子。在工作流领域第一个致力于标准化工作的是Workflow Management Coalition (WfMC)，它成立于1993年。1994年11月，wfmc发布了工作流管理系统的参考模型。参考模型提出了五类接口，有关过程模型的定义则构成了接口一的核心内容。接口一早期的标准为WPDL（Workflow Process Definition Language），后来,这一接口的规范变更为XPDL。XPDL是至今工作流领域最为重要的一个标准,目前大多数工作流引擎是依据该标准设计开发的。<br /><br />﹡ BPML(Business Process Model Language)<br /><br />因为对太子派的工作方式不满意，BPMI发布BPML规范,成立新的八爷党。由于八爷党发展的非常之快，WfMC和BPMI在2002年6月26日宣布将合作制定业务流程和工作流标准，即采用BPML来描述工作流过程，同时采用XPDL所定义的工作流模型。<br /><br />﹡ OMG的Workflow Management Facility<br /><br />四爷OMG是支持太子的,不过四爷这个人很有报负,在其他领域也做的有声有色。四爷OMG的Workflow Management Facility联合太子的WfMC规范，定义如何将工作流向CORBA转换---要知道, CORBA可是四爷的强项。现在很多老百姓支持四爷OMG的Workflow Management Facility。四爷这招,发展了自己的势力,又不惹太子生气,真是妙啊!<br /><br />保皇派其它分支势力很小,这里就不多说了。<br /><br />2.2 革新派分支<br />﹡ WSCI<br /><br />2002年6月26日，BEA,Intalio,SAP,Sun四家公司提出了基于xml的WSCI规范，推动Web服务进入了一个全新的阶段。这个规范主要描述了一个参与和其它服务进行协作交互的Web服务所交换的消息流。WSCI是第一个革新派,后来又发展了几个新的革新派,<br /><br />如WSFL(属IBM),Xlang(属MS),因有天生缺陷,均没有很大起色。<br /><br />﹡ ebXML<br /><br />ebXML是一组支持模块化电子商务框架的规范。ebXML支持一个全球化的电子市场，它使得任意规模的企业通过交换基于XML的信息，不受地域限制地接洽和处理生意。ebXML是联合国（UN/CEFACT，贸易促进和电子商务中心）和OASIS（结构化信息标准发展组织）共同倡导、全球参与开发和使用的规范。由于现在老百姓都不喜欢抬着羊去换米,而喜欢在网上来个B2C,所以革新派ebXML最近发展很快。<br /><br />﹡ BPEL<br /><br />2002年8月9日，Microsoft, BEA, IBM, SAP &amp; Siebel联合提交发布了BPEL规范。 BPEL联合了一系列革新派/保皇派力量（ XLANG, WSFL, BPML）。此规范描述如何处理输入的消息，它不是一个关于业务流程规格化定义的规范。简单的说，可以将它看作XML形式的编程语言，提供将WSDL-Services组合成控制流的能力。顾名思义，此规范重点在（也不只限于）Web Service。<br /><br />还有其它的革新派如RosettaNet等，因为势力很小,这里也不多说了。<br /><br />3. 大户人家<br />这里所谈的大户人家指工作流领域的商业软件供应商，他们都背靠靠山,或穷或富。我们这里按地区来划分他们。<br /><br />3.1中国之外的大户<br />﹡ BEA 的WLI<br /><br />﹡ Fujitsu的 i-Flow<br /><br />﹡ IBM的 Holosofx<br /><br />﹡ SAP 的NetWeaver<br /><br />﹡ Sonic 的Orchestration Server<br /><br />﹡ Ultimus<br /><br />﹡ Versata<br /><br />这些人家大都非常富有;如果需要,请自己搜索他们的信息。<br /><br />3.2国内的大户人家<br />﹡ 信雅达的SunFlow 这个公司留给我的印象很好,包括他们的总经理石总。<br /><br />﹡ 西安协同的协同工作流<br /><br />﹡ 上海东兰的DLFlo<br /><br />﹡ 东南融通intelliFlow（转载者加）<br /><br />这里对公司就不多介绍了,否则有做广告的嫌疑J。本人有国内工作流产品的比较报告,大家需要可以给我发邮件索取。<br /><br />4. 寒门傲骨<br />这里的寒门傲骨指的是开源工作流引擎的实现，寒门子弟也是有政治取向的,我们还是按保皇派和革新派来区分他们，而自由派指没有按固定的标准来实现的工作流门派。<br /><br />4.1保皇派寒门<br />﹡ OFBiz<br /><br />OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。其中包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。OFBiz先前的工作流引擎基于WfMC和OMG的规范，使用XPDL作为流程定义语言,也就是说,它是支持太子XPDL的,而且和十三爷OMG的关系非常之好。OFBiz新版的工作流引擎采用Shark工作流引擎,我们不建议再去学习OFBiz自身的工作流引擎。<br /><br />﹡ OBE<br /><br />OBE 是由Adrian Price主持开发的一个开放源码的Java工作流引擎，支持WfMC规范，包括接口1（XPDL）、接口2/3（WAPI）和接口5。OBE主要基于J2EE实现。OBE的接口1实现得非常好,可惜,OBE的载体公司Zaplet已经于前不久被合并，合并后的公司没有继续发展OBE的打算。Adrian Price离开了原来的公司,投奔我们前面说过的大户Versata。Versata也不打算继续OBE。OBE至今没有release版，很是可惜。<br /><br />﹡ Shark<br /><br />Shark是完全根据WFMC规范实施的，可扩展功能的工作流引擎，它利用xpdl来定义流程，同时还包括服务器端的用于活动节点执行的WFMC工具代理API。Shark中的每个组件例如持久层，事物管理器，脚本引擎，流程库，都是可以按照标准实施运用的，而且还可以被具体项目的模块扩展和替换。Shark和XPDL定义工具的事实标准JAWE同出名门,市场前景被很多人看好。OFBiz新版的工作流引擎采用Shark工作流引擎，OBE的载体公司Zaplet被合并，对Shark的发展将很有利。2004年9月9日，shark发布1.0版本,对它的发展无疑是一剂强心针。笔者从Shark发展的早期就在国内力推它,有幸成为Shark工作流引擎在国内的主要推广者之一(<a href="http://blog.csdn.net/hongbo781202/" target="_blank">http://blog.csdn.net/hongbo781202/</a>),感到十分荣幸。Shark的讨论请看<a href="http://211.95.124.238:22/cgi-bin/forums.cgi?forum=24" target="_blank">http://211.95.124.238:22/cgi-bin/forums.cgi?forum=24</a>。<br /><br />4.2 革新派寒门<br />﹡ OpenebXML<br /><br />OpenebXML项目致力于提供一个ebXML框架，主要支持 UN/CEFACT和OASIS发布的ebXML规范2.0版。<br /><br />﹡ Bonita<br /><br />Bonita是一个符合WfMC规范、灵活的协同工作流系统。Bonita基于浏览器、使用SOAP和XML数据绑定技术的Web Services封装了已有的工作流业务方法并将它们以基于J2EE的Web Service形式发布。<br /><br />﹡ Twister<br /><br />Twister的目标是提供新一代、易集成、应用Java领域中最新成果、面向B2B的工作流解决方案。流程引擎基于BPEL业务流程规范和Web Service标准。<br /><br />﹡ ActiveBpel<br /><br />ActiveBPEL引擎是一个于今年7月发布的健壮的运行时环境,它能执行用户按BPWL4WS规范编写的业务流程。ActiveBPEL引擎由Active Endpoints公司开发和维护,该公司同时在它的多个商业产品中使用了该技术。本人将密切观注ActiveBPEL引擎的技术发展和产品状态。<br /><br />4.3 自由派寒门<br />﹡ OSWorkflow<br /><br />OSWorkflow的最大特点是灵活<br /><br />﹡ OpenWFE<br /><br />OpenWFE是一个开放源码的Java工作流引擎。 它的思想来源于 Scheme，包括可升级的三个组件：引擎、工作列表和Web界面。<br /><br />﹡jBpm<br /><br />jBpm是tom baeyens编写的一个灵活可扩展的工作流管理系统。jBmp将工作流应用开发的便利性和杰出的企业应用集成（EAI）能力结合了起来。jBmp包括一个Web应用程序和一个日程安排程序。jBmp是一组J2SE组件，可以作为J2EE应用集群部署。国内目前有部分人研究jBpm。<br /><br />5 大局势<br />目前是封建社会后期，以太子党XPDL为首的保皇派还将辉煌一段时间。我个人认为，在Ofbiz投靠Shark，强势派OBE倒台，自由派不得人心的情况下，Shark工作流引擎依靠与XPDL定义工具JAWE的兄弟关系，将坐上保皇派头把交椅。<br /><br />目前，革新派和保皇派的争夺并不激烈。因为在现在的情况下, 革新派的根基Web服务并不劳靠，在老百姓中的影响不太大，所以革新派只求从保皇派嘴边分口食就行了。但随着社会的发展, Web服务将越来越流行，现在，MS/IBM/BEA等跨国巨头越来越主推BPEL4WS标准，并且已经发布基于BPEL4WS标准的系列产品，而且，他们还主推Integration/Portal的概念，这些概念将把工作流带入资本主义阶段。<br /><br /><br />文章来源:<a href="http://www.01g.net/blog/default.asp?id=1">http://www.01g.net/blog/default.asp?id=1</a><img src ="http://www.blogjava.net/clant/aggbug/41057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/clant/" target="_blank">BPM </a> 2005-11-02 07:22 <a href="http://www.blogjava.net/clant/articles/41057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>