??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲码国产精品高潮在线,亚洲美女自拍视频,亚洲综合久久综合激情久久http://www.tkk7.com/wkling100/category/3700.html敢问技术之路再何方Q? zh-cnWed, 28 Feb 2007 18:33:58 GMTWed, 28 Feb 2007 18:33:58 GMT60Laszlo?/title><link>http://www.tkk7.com/wkling100/archive/2006/04/17/41422.html</link><dc:creator>星?/dc:creator><author>星?/author><pubDate>Mon, 17 Apr 2006 01:59:00 GMT</pubDate><guid>http://www.tkk7.com/wkling100/archive/2006/04/17/41422.html</guid><wfw:comment>http://www.tkk7.com/wkling100/comments/41422.html</wfw:comment><comments>http://www.tkk7.com/wkling100/archive/2006/04/17/41422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wkling100/comments/commentRss/41422.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wkling100/services/trackbacks/41422.html</trackback:ping><description><![CDATA[ <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">Laszlo</span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">是在<span lang="EN-US">WWW</span>环境中开发及(qing)发布<span lang="EN-US"><a ><a title="" >RIA</a></a></span>应用pȝ的源代码开发^収ͼ遵@<span lang="EN-US">OSI</span>认证?span lang="EN-US">CPL</span>许可<span lang="EN-US">(<a ><font color="#0000ff">Common Public License</font></a>)<?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span></span> <br /> <br /> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">Laszlo</span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">q_?span lang="EN-US">LZX</span>语言?span lang="EN-US">Laszlo</span>展示层服务器l成?span lang="EN-US"><o:p></o:p></span></span> </p> <ul type="disc"> <li id="7lhr1vz" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">LZX</span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">语言是一?span lang="EN-US">XML</span>?span lang="EN-US">JavaScript</span>描述语言l合Q本质上cM<span lang="EN-US">XUL</span>?span lang="EN-US">XAML</span>?span lang="EN-US">LZX</span>使用声明性的和基于文本的开发步骤,支持快速原型法和最佌Y件开发实c(din)?span lang="EN-US"><o:p></o:p></span></span> </li> <li id="19ztd3t" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"> <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">Laszlo</span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">展示层服务器<span lang="EN-US">(LPS)</span>是一?span lang="EN-US">Java Servlet</span>Q将<span lang="EN-US">LZX</span>应用E序~译为目标运行环境的可执行代码?span lang="EN-US">Laszlo</span>当前的运行环境目标ؓ(f)<span lang="EN-US"><a ><a title="" >flash</a></a></span>播放器,<span lang="EN-US">LPS</span>?span lang="EN-US">LZX</span>应用E序~译?span lang="EN-US"><a ><a title="" >flash</a></a></span>播放器的<span lang="EN-US">SWF</span>字节代码Qؓ(f)M嵌入<span lang="EN-US">Flash5</span>播放器或更高版本?span lang="EN-US">Web</span>览器提供已~译q的应用E序的代码和~存Qƈ且可以ؓ(f)应用E序代理h后台?span lang="EN-US">XML</span>数据?span lang="EN-US">Web</span>服务?span lang="EN-US"><o:p></o:p></span></span> </li> </ul> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">         <img height="300" hspace="5" src="http://dannyr.cnblogs.com/images/cnblogs_com/dannyr/lzx_screen.gif" width="400" align="center" /><br />使用<span lang="EN-US">Laszlo</span>你将可以Q?span lang="EN-US"><o:p></o:p></span></span> </p> <ul type="disc"> <li id="nbptt3r" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-list: l1 level1 lfo2; tab-stops: list 36.0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">使用Z<span lang="EN-US">XML</span>?span lang="EN-US">JavaScript</span>的标?span lang="EN-US"><a ><a title="" >RIA</a></a></span>应用<span lang="EN-US"><o:p></o:p></span></span> </li> <li id="5vx9xjf" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-list: l1 level1 lfo2; tab-stops: list 36.0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">可以应用部|到Mq行?span lang="EN-US">Linux</span>?span lang="EN-US">Unix</span>?span lang="EN-US">Windows</span>或?span lang="EN-US">Mac OS X</span>上的<span lang="EN-US">J2EE</span>应用服务器或<span lang="EN-US">Java Servlet</span>容器中?span lang="EN-US"><o:p></o:p></span></span> </li> <li id="jr79j3t" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-list: l1 level1 lfo2; tab-stops: list 36.0pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">可以应用展C在拥有<span lang="EN-US">97%</span>桌面<span lang="EN-US">Web</span>览客户端的<span lang="EN-US"><a ><a title="" >flash</a></a> 5</span>播放器或更高版本?span lang="EN-US"><o:p></o:p></span></span> </li> </ul> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt"> <font size="3"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US"> <font face="Times New Roman">2002</font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">qvQ基?/span> <span lang="EN-US"> <font face="Times New Roman">Laszlo</font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的应用程序已l被证明在百万用户的公?/span> <span lang="EN-US"> <font face="Times New Roman">Web</font> </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境中是可行的,q且是稳定可衡量的?/span> </font> </p> <img src ="http://www.tkk7.com/wkling100/aggbug/41422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wkling100/" target="_blank">星?/a> 2006-04-17 09:59 <a href="http://www.tkk7.com/wkling100/archive/2006/04/17/41422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作现?/title><link>http://www.tkk7.com/wkling100/archive/2005/10/13/15421.html</link><dc:creator>星?/dc:creator><author>星?/author><pubDate>Thu, 13 Oct 2005 06:35:00 GMT</pubDate><guid>http://www.tkk7.com/wkling100/archive/2005/10/13/15421.html</guid><wfw:comment>http://www.tkk7.com/wkling100/comments/15421.html</wfw:comment><comments>http://www.tkk7.com/wkling100/archive/2005/10/13/15421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wkling100/comments/commentRss/15421.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wkling100/services/trackbacks/15421.html</trackback:ping><description><![CDATA[<SPAN style="WIDTH: 100%; TEXT-ALIGN: right"><B>作?A >Tom Baeyens </A>译<A >dinghong</A></B></SPAN> <A ><!-- =================================================================================== --></A> <H1>前言</H1> <P><span id="399z9tz" class=text2>    如果数据库系l( database systemsQ像受h敬的智者讲q的条理清晰的故事,那么<STRONG>工作?/STRONG>Q?STRONG>workflow</STRONG>Q就像一^臭未q的子在大谈各自的“哲理”。之所以这栯Q我是想指出Q?STRONG>工作?/STRONG>pȝ Q?STRONG>workflow</STRONG> management systemsQ还处于技术发展曲U( <A >technology hype curve</A>Q上的初U阶Dc(din)在q个领域我们面临一个激动h心的阶段?Z(jin)描述q一点,可以?STRONG>工作?/STRONG>和关pL据库pȝQRDBMSQ做一个对比。当在Y件开发团队中谈论RDBMSӞ大部分h?x)有一个清晰的概念Q在你和他们交流的时候,Z?x)通过d的点头表C可或理解你所说的。可当用工作流术语讨论<STRONG>工作?/STRONG>Ӟ他们?x)摇头表CZ同意Q因为每个h?STRONG>工作?/STRONG>术语都有不同的理解?/SPAN></P> <P> <CENTER style="MARGIN-BOTTOM: 10px"><IMG alt="the technology hype graph" src="http://www.joinwork.net/document/The%20State%20of%20Workflow.files/hype-graph.gif" border=1><BR><I>Figure 1: Workflow vs. RDBMS positioned in the hype-curve</I> </CENTER> <P></P> <P class=text2>    D形成q种状况的原因之一Q是?STRONG>工作?/STRONG>中用了(jin)q多的概c(din)在q个领域中的大量规范和工h有一个是怼的。当?dng)它们怺之间有重叠ƈ且会(x)怺参考引证?BR>    在介l?STRONG>工作?/STRONG>时有一个话题必d括,那就?STRONG>工作?/STRONG>?STRONG>业务程理</STRONG>QBPMQ的关系。术语?STRONG>工作?/STRONG>”通常描述Z计算机系l的一pd相关交互。在开发h员中Q?STRONG>工作?/STRONG>l常被提?qing)。有Ӟ<STRONG>工作?/STRONG>的意思是指一些不同的UI界面。业务流E管理的范围比较q,相比之下<STRONG>工作?/STRONG>多半局限于技术领域。业务流E管理还从管理h员的角度涉及(qing)?jin)非技术问题,比如分析、组l的效率?/P> <P class=text2>    在本文中Q我首先解释什么是<STRONG>工作?/STRONG>理pȝQ然后介l业务流E管理的优点。接下来描述一下ؓ(f)什?STRONG>工作?/STRONG>?jng)场乍看h如此混ؕ。本文给出的主要l论是:(x)选择<STRONG>工作?/STRONG>pȝ是想?STRONG>工作?/STRONG>pȝ的公司,要面对的最困难的事情。ؓ(f)此,本文的核心部分描qC(jin)一个流E定义(process definitionQ的四个层次Qؓ(f)你选择<STRONG>工作?/STRONG>提供一个基。本文还用中立的语言描述?STRONG>工作?/STRONG>和BPM的通用概念。最后,l出?jin)一些规范和工具的指导性描q?/P><span id="hnpljnd" class=text2><!-- =================================================================================== --></SPAN> <H1>什么是<STRONG>工作?/STRONG>理pȝQWFMSQ?/H1> <H2>定义</H2> <P class=text2>    <STRONG>工作?/STRONG>pȝ是以规格化的程描述作ؓ(f)输入的Y件组?它维护流E的q行状?q在人和应用之间分派zd?/P> <P class=text2>    Z(jin)后面的描qͼ我们先定义一些基本的术语Q流E定义(process definitionQ和程实例Qprocess instanceQ? <U>一个流E定?/U>是一个业务流E或q程的规格化描述。一?U>程实例</U>是流E定义的一个运行实体?都目前ؓ(f)止,概念q比较清晰是不是Q但当再深入一步时Q我们就要小心用文字了(jin)。如何阐q流E中的步骤,现在q没有一个统一的方式。这是各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>Z么应当禁止用术语“活动(activityQ?..</B><BR><span id="nbbjtnv" class=note><span id="9rvvfnn" class=text2>    </SPAN>程定义通常用一些活动表q。我认ؓ(f)q是D工作领域所有؜q主要原因。我告诉你ؓ(f)什么:(x)因ؓ(f)术语“活动”؜淆了(jin)状态(stateQ和动作QactionQ之间的差异。在程中,<U>状?/U> (或者说{待状?代表?jin)一U对外部参与者(actorQ的依赖。在程q行Ӟq意味着程引擎必须{待Q直到外部参与者通知工作管理系l指定的状态完成了(jin)。比如,{待可进一步运行的认可?U>动作</U>是在程q行q程中,工作系lؓ(f)响应指定事gQeventQ运行的一D늨序逻辑Qprogramming logicQ。当程q行q程中指定的事g发生Ӟ工作系l启动ƈ执行q些动作。比如,当状态分配给一个参与者时Q发一Email。你也能看出Q状态和动作是如此不同,因此使用同样的术语去描述q些概念是一个坏?fn)惯。我的徏议是避免使用术语“活动”,使用“状态”或者“动作”代替它?/SPAN></P><!-- END OF BORDER --></TD></TR></TBODY></TABLE> <P class=text2>    <STRONG>工作系l?/STRONG>另一个重要的职责是维护每一个流E运行的上下文信息?<U>程上下文变量(process context variableQ?/U> Q或U变量,是与程实例相关的变量。如Q休假申L(fng)开始日期、数据库中一条记录的键倹{文档管理系l中一文档的索引{。通常在流E定义中声明q些变量Q然后在程实例生成Ӟq些程变量被实例化。所有成熟的<STRONG>工作管理系l?/STRONG>都支持定制的变量cd?/P> <H2>目标领域QTarget usageQ?/H2> <P class=text2>    使用<STRONG>工作管理系l?/STRONG>的目的之一是作Z业应用系l集成(EAIQ的q_。在当前大部分企业IT架构中,各种各样的异构(heterogeneousQ应用和数据库运行在企业内网中。在q些pȝ被应用到l织Ӟ都有一个清晰的目标。例如,客户理、文档管理、供应链、订单、支付、资源计划等{。让我们U这些系lؓ(f)专门应用Q?dedicated applicationsQ。每一个专门应用都包含它们所支持业务程的领域知识。这些专门应用中的自动化程Q被DC业中更大的非自动化流E中。每当一个这L(fng)专门应用安装q投入用,都会(x)带来涉及(qing)其他多个应用的新功能需求。企业应用系l集成(EAIQ就是通过使用多个专门应用满软g新需求的Ҏ(gu)。有Ӟq只需要在两个应用之间提供数据通讯的通道。专门应用将很多业务程编码在软g中。可以这么说Q在你购C门应用时Q你是购C(jin)一l固定的自动化业务流E。?STRONG>工作管理系l?/STRONG>是不必事先知道问题域的相关信息的?STRONG>工作系l?/STRONG>业务流E描qC入ƈ理程实例的执行,q得它比专门应用更灉|Q当然你也要q力编写业务流E的规格化描qͼ(j)。这是Z么说<STRONG>工作系l?/STRONG>和专门系l是怺补充的?STRONG>工作系l?/STRONG>可以用来理全局的业务流E。如果专门应用支持你所需要的业务程Q那么用专门应用。在此讨论的<STRONG>工作系l?/STRONG>的第一U用方式就是:(x)l合所有的专门应用Q?STRONG>工作系l?/STRONG>构徏一个EAIq_?/P> <P class=text2><span id="nhhz1tt" class=text2>    </SPAN><STRONG>工作系l?/STRONG>能够发挥很大价值的W二个用方式是Q协助涉?qing)多人相关Q?STRONG>工作?/STRONG>软g的开发。ؓ(f)?jin)达到这个目的,大部?STRONG>工作系l?/STRONG>都有一个方便的机制Q来生成执行d的表单。对于专注于<A >ISO</A> 或?A >CMM</A>认证的组l,采用q种方式使用<STRONG>工作系l?/STRONG>能够显著提高生率?不用过E用文字的Ş式写在纸上,<STRONG>工作系l?/STRONG>使你通过程定义建模实现q程的自动化Q如使用ZWeb的应用)(j)?/P> <P class=text2>    <STRONG>工作系l?/STRONG>的第三种使用方式是:(x)?STRONG>工作引?/STRONG>嵌入到其他应用中。在前面我们谈到Q专门应用将指定问题域相关的业务程固化在Y件中。开发专门应用的公司也可以将<STRONG>工作引?/STRONG>嵌入C们的软g中。在q里Q?STRONG>工作引?/STRONG>只是作ؓ(f)一个Y件组Ӟ对于应用的最l用h不可见的。将<STRONG>工作引?/STRONG>嵌入到应用中的主要原因是Z(jin)重用Q不重复发明轮子Q和应用软g的可l护性?/P><!-- =================================================================================== --> <H1>The case for workflow</H1> <P class=text2>    对于引入<STRONG>工作?/STRONG>的组l,能够在Y件开发和业务两个层次受益?/P> <H2>方便开?/H2> <P class=text2>    <STRONG>工作管理系l?/STRONG>能够化企业软g开发甚至维护?</P> <UL> <LI><span id="7rzbtdd" class=text2><B>降低开发风?/B> - 通过使用状态和动作q样的术语,业务分析师和开发h员用同一U语a交谈。这样开发h员就不必用户需求{化成软g设计?jin)?</SPAN> <LI><span id="b7l3bzn" class=text2><B>实现的集中统一</B> -业务程l常变化Q?STRONG>工作?/STRONG>pȝ的最大好处是Q业务流E的实现代码Q不再是散落在各U各L(fng)pȝ??</SPAN> <li id="htdlp7v" class=text2><B>加快应用开?/B> - 你的软g不用再关注流E的参与者,开发v来更快,代码更容易维护?</LI></UL> <H2>业务程理 (BPM)</H2> <P class=text2><span id="z7nhzz1" class=text2>    </SPAN>在自动化业务程之前Q分析ƈ它们规格化是一件艰苦但?x)有很好回报的工作?A >e-workflow.org</A>对于分析程能够带了(jin)的益处有不错的阐qͼ(x)</P> <UL> <LI><span id="hdp3lj3" class=text2><B>提高效率</B> - 许多程在自动化q程中会(x)去除一些不必要的步?</SPAN> <li id="hllvdvx" class=text2><B>较好的流E控?/B> - 通过标准的工作方法和跟踪审计Q提高了(jin)业务程的管? <LI><span id="rjtppjz" class=text2><B>改进客户服务</B> - 因ؓ(f)程的一致性,提高?jin)对客户响应的可预见?</SPAN> <LI><span id="l7n3vld" class=text2><B>灉|</B> - 跨越程的Y件控Ӟ使流E可以按照业务的需要重新设计?</SPAN> <li id="t3b7rh9" class=text2><B>业务程改进</B> - Ҏ(gu)E的xQ它们向于流畅和?</LI></UL> <P class=text2><span id="vpxpzr7" class=text2>    </SPAN>我认Z们还遗漏?jin)一个?STRONG>工作?/STRONG>pȝ最重要的因敎ͼ(x)提高对P代开发的支持。如果Y件中业务程部分不容易更改,l织׃(x)花很大的_֊在开发前的业务流E分析中Q希望一ơ成功。但可?zhn)的是Q在M软g目开发中Q这都很能实现?STRONG>工作?/STRONG>pȝ使得C务流E很Ҏ(gu)部vQ业务流E相关的软g可以一UP代的方式开发,因此使用<STRONG>工作?/STRONG>pȝ使开发更有效、风险更低?/P> <H2>~失的一环(Missing linkQ?/H2> <H2><span id="7vx3nnh" class=text2>    我确实认?STRONG>工作?/STRONG>pȝ是企业应用开发中~失的一环。将企业业务程逻辑在企业软g中实现的~省方式是分散的。这意味着业务程逻辑散布在各U系l中Q如EJB、数据库触发器、消息代理等{。这样得到的软g难于l护Q结果,企业只能改变业务流EY件作为最后的选择。他们经常能够做的是Q改变流E以适应软g。上q问题也适用于采用大型外部ERP软g包的企业。进一步,假设我们认识到这个问题,q打将一个流E相关的代码都集中v来。对于一个流E来说这很不错,但当你要实现多个程Ӟ你会(x)看到理状态和程变量的代码被到处复制。最后,我们?x)整理这些代码放C个集中的库中。好Q?..q就是一?STRONG>工作管理系l?/STRONG>?jin),不用费心自己来实玎ͼ你可以从本文后面的列表中选择一?/SPAN><span id="vrr1bzl" class=text2>?/SPAN> </H2> <H1>A closer look</H1> <H2>WFMS interfaces</H2> <P class=text2><span id="7v3zjl3" class=text2>    </SPAN>一?STRONG>工作管理系l?/STRONG>以流E定义作入。在q里Q可以将程定义看作UMLzd图、UML状态图或者有限状态机。在提交一张费用单据、申请休假、要求一个报仗?..之后Q?STRONG>工作?/STRONG>pȝ负责l护q些程定义的执行状态和上下文。ؓ(f)此,需要通知<STRONG>工作?/STRONG>pȝ状态的变化。运行流E的状态变化可以记录下来,以备监控理?/P> <P> <CENTER><IMG 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></P> <P> <UL> <LI><span id="h139hj3" class=text2><B>定义</B>   <STRONG>工作?/STRONG>pȝ的定义接口ɋ程开发h员能够部|流E定义。注意,q里的“流E开发h员”可以是业务分析师和软g开发h员的l合?/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>圈套QPitfallQ?/B><BR><span id="xdvxzzj" class=note>许多<STRONG>工作管理系l?/STRONG>的开发商想你相信,通过使用他们的图形化程开发工P只要业务分析师就可以生成程定义。这Ux于“编E很䏀这L(fng)事实。开发商的销售h员喜Ƣ说“看Q你不用写一行代码”。不用写代码是好事,可大部分开发商在这点上走的太远Q忽略了(jin)在某些场合提供一U将代码集成到流E定义中的机制是很适合的。在?STRONG>工作?/STRONG>pȝ作ؓ(f)EAIq_Ӟ必须在流E中集成代码。开发流E定义需要业务分析师和Y件开发h员的合作。一个好的图形流E设计工具应该能够支持这U合作?/SPAN></P><!-- END OF BORDER --></TD></TR></TBODY></TABLE> <LI><span id="b3ptn7j" class=text2><B>执行</B>   执行接口使用户和pȝ可以操作程实例。流E实例是程定义的执行。流E定义的控制通过状态机描述。执行接口的两个主要Ҏ(gu)是启动一个流E实例和通知<STRONG>工作?/STRONG>pȝ一个状态结束了(jin)?</SPAN> <LI><span id="tpzzzjj" class=text2><B>应用</B>   应用接口代表?jin)?STRONG>工作?/STRONG>pȝ发v?STRONG>工作?/STRONG>pȝ和外部系l之间的交互。当一个用hpȝ操作一个流E实例的q行Ӟ?x)生成一些事Ӟ如一个迁Uȝ执行Q。流E定义中可以指定一D响应一个事件的可执行代码逻辑Q这D代码和l织内外部的其他pȝ打交道?</SPAN> <li id="lxf9dxf" class=text2><B>监控</B>   理人员通过监控接口获得程q行的确切数据。有Ӟq行日志也可用于审计?</LI></UL><span id="13prttv" class=text2>    q些是WfMC参考模型(<A >reference model of the WfMC</A>Q中定义的五个接口中的四个?</SPAN> <H2>程定义的四个层?/H2> <H2><span id="jt9pbj9" class=text2>    在下面这部分Q我试回答q样的问题“什么是程定义包括的内容?”。这是从各种规范和工h使用模型的原则和概念中ȝ得来的,反映?jin)大部分模型中通用的基本思想。流E定义的内容可以分ؓ(f)四个不同的层ơ:(x)状态(stateQ、上下文QcontextQ、程序逻辑Qprogramming logicQ和用户界面QUIQ?/SPAN> </H2> <H2>状态层</H2> <P class=text2><span id="zrbdxvx" class=text2>    </SPAN>所有状态和控制的表述Q都属于业务程的状态层。标准编E语a中的控制来源于Von Neuman体系。控制流定义?jin)必被执行的指令的序Q控制流由我们书写的命o(h)、if语句、@环语句等定。在业务程中的控制基本与此一致。但在业务流E中不是使用命o(h)而是使用状态作为基本元素?/P> <P class=text2>    在流E中Q?U>状?/U> (或者说{待状?代表?jin)一U对外部参与者(actorQ的依赖。状态的意思就像“现在Xpȝ或某某h必须作某些事Q在此等待直到参与者通知q些d已完成”。状态定义了(jin)一U对外部提供l果的依赖。状态典型的例子是批准步骤(stepQ?/P> <P class=text2>    程定义中的状态也指定?jin)执行依赖于哪个参与者。在zd图中Q泳道(swimlanesQ的标注代表q些参与者的名字?STRONG>工作?/STRONG>pȝ使用q些信息构徏d列表Q这是一?STRONG>工作?/STRONG>pȝ都有的功能。如前所qͼ参与者可以是Z可以是系l。对于需要h参与的状态,<STRONG>工作?/STRONG>pȝ必须在运行时计算出具体的个h。这L(fng)计算?STRONG>工作?/STRONG>pȝ必须依赖于组l结构信息。关于这斚w的一非常有的文章是在<A >further reading section</A>提到的?STRONG>工作?/STRONG>应用中的l织理”( 'Organizational Management in Workflow Applications'Q?/P> <P><span id="tf3jjdd" class=text2>    程定义的控制流包含一l状态和它们之间的关pR状态之间的逻辑关系描述?jin)哪些执行\径可以同时执行,那些不可以。同步执行\径用分叉QforksQ和联合QjoinsQ徏模,异步执行路径用判断(decisionsQ和合ƈQ?mergesQ徏模。注意在大多数模型中Q在每个状态之前都有一个隐式合q?/SPAN>?/P> <P><span id="b7f33xf" class=text2>    UMLzd囄常被用来做业务流E徏模。作ZU直观和通用的表达,zd囑֜囑Ş表述上有一个主要问题,是没有区分状态和动作Q它们都用活动来表示。缺这U区分(D状态概늚~失Q是学术z֯UMLzd囄主要批评。UMLzd囄W二个问题是在UML2.0版中引入的。当多个q移QtransitionsQ到达一个活动时Q以前的版本规定q是一个缺省合qӞmergeQ,?.0版中规定q是一个需要同步的~省联合QjoinQ。在我看来,UMLzd囄囑Ş部分仍旧可以用来对业务流E状态层ơ徏模,只要使用时对两条构徏语义作如下的变化Q?/SPAN> <OL> <LI><span id="1blvxxp" class=text2>在用囑Ş表述业务程Ӟ只徏模状态层Q状态和控制)(j)Q不要包括动作。这意味着囑Ş中的矩Ş都是状态而不是活?</SPAN> <li id="xjxhrrl" class=text2>如果多个q移到达一个状态,~省定义Z需要同步的合ƈQmergesQ?</LI></OL> <P class=text2>    在流E运行过E中Q?STRONG>工作?/STRONG>pȝ用一个o(h)牌(tokenQ作为指针跟t流E的状态。这相当于Von Neuman体系中的E序计数器。当令牌到达一个状态时Q它被分配给<STRONG>工作?/STRONG>pȝ{待的外部参与者。外部参与者可以是个h、组l或者计机pȝ。我们定义流E运行的执行人或pȝ为“参与者”(actorQ。只有在<STRONG>工作?/STRONG>pȝo(h)牌分配给一个参与者时Q才需要访问组l结构信息?STRONG>工作?/STRONG>pȝ通过分配令牌构徏d列表?/P> <H2>上下文层</H2> <P class=text2>    <U>程上下文变量(process context variableQ?/U> Q或U变量,是与程实例相关的变量。流E开发h员可以用流E变量存储跨流E实例整个生命周期的数据。一?STRONG>工作管理系l?/STRONG>有固定数目的数据cdQ另一些你可以定义自己的数据类型?/P> <P class=text2>    注意变量也可以用来存攑ּ用( referencesQ。一个变量可以引用如数据库中的记录、网l上的文件。什么时候用引用,取决于用引用数据的其他应用?/P> <P class=text2>    和流E变量相关的另一个o(h)人感兴趣的方面是Q?STRONG>工作?/STRONG>pȝ如何数据{化ؓ(f)信息?STRONG>工作?/STRONG>是用于组l内部跨各U异构系l实CQ务和数据协同的。对于业务流E中人工执行的Q务,<STRONG>工作?/STRONG>pȝ负责从其他相关系l,如SAP、数据库、CRMpȝ、文档管理系l收集数据。在业务程的每一个h工步骤,只有相关联的数据被从异构系l中攉和计。通过q种方式Q从不同pȝ来的数据被{换ƈ展现Z息?/P> <H2 id=programminglogic>E序逻辑?/H2> <P class=text2>    如前所qͼ<U>动作</U>是在程q行q程中,<STRONG>工作?/STRONG>pȝ响应指定的事ӞeventQ执行的一D늨序逻辑Qprogramming logicQ。程序逻辑可以是二q制或源代码形式的、用M语言或脚本编写的软g。程序逻辑层是所有这些Y件片断和关于在什么事件发生时调用它们的信息的l合。程序逻辑的例子包括发Email、通过消息代理发消息、从ERPpȝ中拿数据和更新数据库?/P> <H2>用户界面?/H2><span id="7l7pjrz" class=text2>    一个参与者通过向流E变量中填充数据的事Ӟ来触发结束一个状态。比如,在请假的例子中,老板提供“同意”或“不同意”数据到程中。某?STRONG>工作?/STRONG>pȝ允许指定哪些数据可以填充到流E中Q以?qing)它们如何在程变量中存储。通过q些信息Q可以生成从用户攉信息的UI表单。基于流E定义生成用h交表单的Web应用例子Q可以访?A >the jBpm online demo</A>?/SPAN><!-- =================================================================================== --> <H1><STRONG>工作?/STRONG>全景</H1> <H2>可执行流E与<STRONG>工作管理系l?/STRONG>的比较(Executional processes versus a WFMSQ?/H2> <P class=text2>    当前在BPM领域中,关于可执行业务流E的规范有趋向于l一集中的趋ѝ?XLANG, WSFL 和BPML合ƈ为基于交互(消息交换Q的BPEL。BPEL在面向服务体pȝ?SOA)的大背景下定义。它的前提条件之一是涉?qing)的服务必须用WSDL声明。BPEL规定?jin)一套XML语法Q这套语法可以看作一U编E语aQ用来描q包括对WSDL定义的服务调用的控制?/P> <P><span id="pvdxphj" class=text2>    在可执行业务程和基于状态的<STRONG>工作管理系l?/STRONG>所使用的方法中Q我注意C(jin)三点主要的区别:(x)</SPAN> <UL> <li id="vz79dtd" class=text2><U>Z状态与面向消息</U>Q基于状态的<STRONG>工作?/STRONG>pȝ以状态(或者活动)(j)概念Z心?STRONG>工作引?/STRONG>l护状态ƈ计算从一个状态到另一个状态的q移。另一斚wQ像BPELq样的可执行程以对输入消息响应的定义ؓ(f)中心。一l这些响应外加其他信息(other bells and whistlesQ可以看作一个业务流E。这也解释了(jin)Z么BPEL可以看作是对Z状态的<STRONG>工作?/STRONG>pȝ的某些方面的补充。一个响应输入消息的BPEL onMessage事g处理器,可以?STRONG>工作?/STRONG>状态之间的q移中执行? <LI><span id="b9pbb9v" class=text2><U>程实例ID与消息相兛_?/U>Q可执行业务程的复杂性之一来自消息相关性的处理。流E描q的一部分必须说明BPEL引擎如何从输入消息中定具体程的标识。这必须Z输入消息的一个数据项。?STRONG>工作?/STRONG>pȝ在每个流E实例生成同时生成了(jin)实例IDQ客L(fng)在后l调用引擎API时用这个ID?</SPAN> <li id="9f7vn3r" class=text2><U><STRONG>工作引?/STRONG>API与抽象服务端点(endpointQ?/U>Q?STRONG>工作?/STRONG>pȝ提供一l集中的APIQ客L(fng)通过调用API完成与所有流E实例的交互。在可执行业务流E中Q每个流E表Cؓ(f)一个服务。这意味着对于每个程定义都有一个不同的讉K炏V?</LI></UL> <H2>学术?/H2><span id="bdvfp19" class=text2>    学术界对<STRONG>工作?/STRONG>的研I可以回溯到上个世纪七十q代。在当前Q研I域趋向于认ؓ(f)<A >petr |?/A>?A >所有流E定义语a之母</A>。关于petri|已有大量先q的分析技术,d?<A >2003 conference on Business Process Management</A>上我有幸?x)晤了(jin)Petri教授。对于大部分够访问和理解的有关Petyri|最好的研究之一?STRONG>工作?/STRONG>模式<A >(workflow patterns)</A>?STRONG>工作?/STRONG>模式比较?jin)大量?STRONG>工作管理系l?/STRONG>q以petri|的术语表述?jin)通用程建模概念?/SPAN> <H2 id=opensourceprojects>开放源代码目</H2> <P class=text2>    最后我们看看真实世界中?STRONG>工作管理系l?/STRONG>。选择一?STRONG>工作管理系l?/STRONG>是一件困隄事情Q但有选择L没有选择好?-) 本文阐述<STRONG>工作?/STRONG>基本概念的目的之一Q就是你能够作更好的选择。但我也意识刎ͼ对于现在的Y件架构师来说Q选择<STRONG>工作?/STRONG>pȝ是一件最h战性的工作?/P> <P><span id="lrzhj97" class=text2>    下面的列表来源于三个地方Q?A >my previous article</A>, <A >the list of Carlos E Perez</A>, ?<A >list by Topicus</A>. </SPAN></P> <UL> <LI><span id="b7vhhtt" class=text2><B><A >jBpm</A></B> - jBpm是本文作者编写的一个灵zd扩展?STRONG>工作管理系l?/STRONG>。作为jBpmq行时server输入的业务流E用简单强大的语言表达q打包在程档案中。jBmp?STRONG>工作?/STRONG>应用开发的便利性和杰出的企业应用集成(EAIQ能力结合了(jin)h。jBmp包括一个Web应用E序和一个日E安排程序。jBmp是一lJ2SElgQ可以作为J2EE应用集群部v?</SPAN> <LI><span id="zt39b9j" class=text2><B><A >OpenEbXML</A></B> - OpenebXML目致力于提供一个ebXML框架Q主要支持不久将?UN/CEFACT和OASIS发布的ebXML规范2.0版?</SPAN> <LI><span id="hlv7xp9" class=text2><B><A >Werkflow</A></B> - Werkflow是一个灵zd扩展的基于流E和状态的<STRONG>工作引?/STRONG>。它的目标是满可以惌的所有工作流E,从企业的业务流E到范围的用户交互程。通过使用可插拔和分层l构Q可以方便地容纳各种<STRONG>工作?/STRONG>语义?</SPAN> <LI><span id="fjj1trb" class=text2><B><A >OSWorkflow</A></B> - OSWorkflow最独到之处是绝对的灉|?</SPAN> <LI><span id="d3hz391" class=text2><B><A >wfmOpen</A></B> - WfMOpen是WfMC和OMG中所?STRONG>工作?/STRONG>设施Qworkflow facilityQ?(<STRONG>工作引?/STRONG>)的J2EE实现?STRONG>工作?/STRONG>通过扩展的XPDL描述?</SPAN> <LI><span id="lhzzj9n" class=text2><B><A >OFBiz</A></B> - OFBiz<STRONG>工作引?/STRONG>ZWfMC和OMG的规范,使用XPDL作ؓ(f)程定义语言?</SPAN> <LI><span id="797jbbd" class=text2><B><A >ObjectWeb Bonita</A></B> - Bonita是一个符合WfMC规范、灵zȝ协同<STRONG>工作?/STRONG>pȝ?对于各种动作如流E概念徏模、定义、实例化、流E控制和用户交互{提供了(jin)全面的集成图形工兗?100% Z览器、用SOAP和XML数据l定技术的Web Services装?jin)已有?STRONG>工作?/STRONG>业务Ҏ(gu)q将它们以基于J2EE的Web Service形式发布。基于活动预模型的W三?STRONG>工作引?/STRONG>?</SPAN> <LI><span id="hlddxv7" class=text2><B><A >Bigbross Bossa</A></B> -速度非常快、轻量的引擎,使用富有表达能力的Petri|定?STRONG>工作?/STRONG>Q不要求关系数据库,使用单,能和Java应用集成。事实上Q它是按嵌入式设计的?</SPAN> <LI><span id="5rlxldn" class=text2><B><A >XFlow</A></B> - XFlowq行于EJB和servlet容器中?</SPAN> <LI><span id="jxxp7rr" class=text2><B><A >Taverna</A></B> - Taverna目的目标是提供一U语a和Y件工P方便在eScience中?STRONG>工作?/STRONG>和分布计技术?</SPAN> <LI><span id="xlnxfhx" class=text2><B><A >Enhydra Shark</A></B> - Shark完全ZWfMC和OMG标准Q?XPDL作ؓ(f)<STRONG>工作?/STRONG>定义语言。流E和zd的存储用Enhydra DODS?</SPAN> <LI><span id="xvfd1d3" class=text2><B><A >PowerFolder</A></B> - PowerFolder包括开发h员用的studioQ管理环境和一个运行时引擎?</SPAN> <LI><span id="hnvf1vz" class=text2><B><A >Breeze</A></B> - Breeze一个轻量、跨q_、基于组件的<STRONG>工作引?/STRONG>原型?</SPAN> <LI><span id="3fz9zpx" class=text2><B><A >Open Business Engine</A></B> - Open Business Engine是一个开放源码的Java<STRONG>工作引?/STRONG>Q支持WfMC规范Q包括接?QXPDLQ、接?/3QWAPIQ和接口5。OBE为活动的q行提供?jin)一个可控的集中环境。OBE主要ZJ2EE实现?</SPAN> <LI><span id="dtddxxx" class=text2><B><A >OpenWFE</A></B> - OpenWFE是一个开放源码的Java<STRONG>工作引?/STRONG>?它包括可升的三个组Ӟ(x)引擎、工作列表和W(xu)eb界面。它的流E定义语a虽然使用XML格式Q其灉|来源?SchemeQ一ULisp方言?</SPAN> <LI><span id="71phhh9" class=text2><B><A >Freefluo</A></B> - Freefluo是一个用Web Service?STRONG>工作?/STRONG>协同工具Q可以处理WSDL的Web Service调用。支持两UXML格式?STRONG>工作?/STRONG>语言QIBM的WSFL和XScufl。Freefluo非常灉|Q它的核心是不与M<STRONG>工作?/STRONG>语言或执行架构关联的可重用协同框架?Freefluo包括可执行用WSFL一个子集描q的<STRONG>工作?/STRONG>的运行库?</SPAN> <LI><span id="bhzhjdd" class=text2><B><A >ZBuilder</A></B> - ZBuilder3是第二代<STRONG>工作?/STRONG>开发管理系l,也是一个开放源码品。它Z同的<STRONG>工作引?/STRONG>?STRONG>工作?/STRONG>定义?jin)一l标准的JMX理接口?</SPAN> <LI><span id="rzp1397" class=text2><B><A >Twister</A></B> - Twister的目标是提供C代、易集成、应用Java领域中最新成果、面向B(ti)2B?STRONG>工作?/STRONG>解决Ҏ(gu)。流E引擎基于BPEL业务程规范和W(xu)eb Service标准?</SPAN> <li id="lhjbvnl" class=text2><B><A >Con:cern</A></B> - con:cern<STRONG>工作引?/STRONG>Z扩展的案例(caseQ处理方法,程׃l具有前后条件的zdl成?</LI></UL> <H2 id=commercialvendors>商业软g提供?/H2> <UL> <LI style="PADDING-BOTTOM: 0px"><span id="9x7lv3r" class=text2><A s WLI</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="flt1bbl" class=text2><A >Carnot</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="j9zzhp9" class=text2><A >Dralasoft</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="1xz3zpp" class=text2><A >Filenet</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="vjjtvnv" class=text2><A s i-Flow</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="r7pzjrj" class=text2><A s holosofx tool</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="trr1r3l" class=text2><A >Intalio</A> </SPAN> <li id="vlxz7hr" class=text2><A class=style4 target=_blank><STRONG>Joinwork</STRONG></A> Q译者加:-) Q? <LI style="PADDING-BOTTOM: 0px"><span id="rfn3xfh" class=text2><A >Lombardi</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="7rlvdn3" class=text2><A s reactor</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="zxxzrhz" class=text2><A s integration platform</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="rfpfhj1" class=text2><A >Q-Link</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="hff1919" class=text2><A s NetWeaver</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="rzpxh77" class=text2><A >Savvion</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="z79t9t9" class=text2><A >Seebeyond</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="x937dt9" class=text2><A s orchestration server</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="zp793nx" class=text2><A >Staffware</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="zxhzpz1" class=text2><A >Ultimus</A> </SPAN> <LI style="PADDING-BOTTOM: 0px"><span id="rrtf7dv" class=text2><A >Versata</A> </SPAN> <li id="xvndfp1" class=text2 style="PADDING-BOTTOM: 0px"><A s process modeling</A> </LI></UL> <H2>工具目录</H2> <UL> <LI><span id="lj3n7ld" class=text2><A >http://dmoz.org/Computers/Software/Workflow/Products/</A> </SPAN> <li id="njtt1zl" class=text2><A >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>    Michael zur Muehlen作了(jin)一个所?STRONG>工作?/STRONG>相关规范的介l性的<A target=_blank>qȝ?/A>Q很不错?/P> <P class=text2>    我同?A >John Pyke</A> ?<A >Wil van der Aalst</A> 的观点:(x)<STRONG>工作?/STRONG>标准q处于制定阶Dc(din)现在存在大量相互丛叠的规范?/P> <P class=text2>    在我看来Q导致规范如此之多而同时每个规范的应用又很有限的原因是Q在<STRONG>工作?/STRONG>最基础概念上大家达成的p很少?STRONG>工作?/STRONG>是最Ҏ(gu)让你感到心烦(ch)的话题,因ؓ(f)<STRONG>工作?/STRONG>本n的概念会(x)和其他相x念和技术؜淆在一赗可以D一个具体的例子Q比如说<STRONG>工作?/STRONG>完全是对Web Service的补充。你可以通过暴露接口以Web Service的方式访问一?STRONG>工作?/STRONG>理pȝQ但是不能假定L必须通过Web Service接口讉K<STRONG>工作?/STRONG>pȝ接口。一些规范造成?jin)这L(fng)假设。除?jin)Web ServiceQ其他容易؜淆的概念和技术包括:(x)Email、流E之间的通讯、Web应用和组l结构?/P> <P class=text2>    ?STRONG>工作?/STRONG>领域W一个致力于标准化工作的?A >Workflow Management Coalition</A> (WfMC)Q开始于 1993?WfMC发布?A >参考模?/A>很不错,它定义了(jin)<STRONG>工作管理系l?/STRONG>和其他相关部分之间的接口。WfMC的另一Ҏ(gu)果是<A >XPDL</A>规范?XPDL定义?jin)描q?STRONG>工作?/STRONG>声明部分Qdeclarative partQ的XMLl构。我个h认ؓ(f)Q参考模型和XPDL是目前最好的规范?/P> <UL> <LI><span id="r9bdvdx" class=text2><A ><B>JSR 207: Java的流E定?/B></A> -是由<A >Java Community Process (JCP)</A> 发vQ如何在J2EE应用服务器中实现业务程自动化的标准。其基本模型是定义一个特D类型的ejb session beanQ作Z个业务流E的接口。JSR207标准化一lXML元标讎ͼmeta tagsQ作为JSR175元数据的一部分。JSR207 session bean和元数据作ؓ(f)ejb容器的输入,然后生成l定Ҏ(gu)的代码,q些Ҏ(gu)在元数据中描q。此规范q处于初U阶D,没有发布M内容。专家小l成立于 March 2003. </SPAN> <LI><span id="pnnpz1x" class=text2><B><A s</A> <A >XPDL</A></B> - WfMC是由U?00家成员参加的l织Q基于参考模型定义了(jin)一pd的标准。参考模型用用例Quse caseQ的形式描述?STRONG>工作?/STRONG>pȝ和其他相关部分之间的关系。XPDL是WfMC制定的描qC务流E控制流Qcontrol flow Q的XML格式规范?</SPAN> <LI><span id="l79jjd3" class=text2><B><A s</A> <A >BPSS</A></B> - ebXML是协同流E的相关标准集,主要x不同公司程之间的通讯。可以看作EDI的承者?ebXML是由O(jin)ASIS和UN/CEFACT联合发v?BPSS 是ebXML的规范,其中的概念和本文阐述的很接近?</SPAN> <LI><span id="tj11hj3" class=text2><B><A s</A> BPML & WSCI</B> - (Intalio, Sun, SAP, ...)BPMI 也定义了(jin)一个规?(BPMN) Q描q如何将“可执行”业务流E可视化的表现?</SPAN> <LI><span id="fp79dlp" class=text2><B><A >BPEL</A></B> - (Microsoft, BEA, IBM, SAP & Siebel) BPEL׃pdZ消息交换的规范( XLANG, WSFL, BPMLQ生。还有一个将此规范引入到Java的提? <A >BPELJ</A>?此规范描q如何处理输入的消息Q而不是对程状态进行徏模。就像本文提到的Q它不是一个关于业务流E规格化定义的规范。简单的_(d)可以它看作XML形式的编E语aQ提供将WSDL-Servicesl合成控制流的能力。顾名思义Q此规范重点在(也不只限于)(j)Web Service?/SPAN> <li id="fnhpppv" class=text2><B><A s Workflow management facility</A></B> - ZWfMC规范Q定义如何向CORBA转换? <LI><span id="r99hbbh" class=text2><B><A >UML</A></B> - UML定义?jin)徏模和设计软gpȝ?cd。每cd包括可视化的表示和语义。其中活动图的目的就是要可视化的表现业务程?注意到在一个流E定义包含四个层ơ的内容Q我x出的是:(x)一个流E定义包含的内容q远多于它的可视化部分。UML只涉?qing)?jin)可视化部分?</SPAN> <LI><span id="xnnhj1j" class=text2><B><A >RosettaNet</A></B> - RosettaNet主要定义?jin)一l?Partner Interface Processes (PIP). 一?PIP 描述?jin)一个有两个交易参与者、包括消息格式的程?</SPAN> <li id="j9dl3j9" class=text2><B><A >UBL</A></B> - The Universal Business Language (UBL)定义?jin)用于不同组l间通讯的XML文档标准库。可以看作是对ebXML的补充,因ؓ(f)ebXML只定义了(jin)建立l织间流E的基础。此规范的竞争对手是 RosettaNet标准中的一个子集?</LI></UL><!-- =================================================================================== --> <H1>l论</H1> <P><span id="r31btl7" class=text2>    我在本文中指?STRONG>工作?/STRONG>?jng)场q属于年轻而又混ؕQyoung and wildQ的阶段Q但已经有可靠的工具存在? </SPAN> <OL> <LI><span id="dnf9b9f" class=text2>到目前,像J2EE?NETq样成熟的集成^台才可用。在q样一个^Cq行</SPAN><span id="7fffhxb" class=style5><STRONG><FONT face=Simsun size=2>工作?/FONT></STRONG></SPAN><span id="d773vlx" class=text2><STRONG>理pȝ</STRONG>才能真正发挥<STRONG>工作?/STRONG>pȝ的附加h(hun)倹{这也是Z么只有在今天Q?STRONG>工作?/STRONG>pȝ才被重新发现?</SPAN> <li id="7zz3hz9" class=text2>?'The case for workflow'一节,我们介绍?jin)引?STRONG>工作管理系l?/STRONG>Q是如何同时在技术和业务上带来投资回报的? <LI><span id="xn1rv9r" class=text2><STRONG>工作?/STRONG>在技术发展曲U的位置表明QBPM?STRONG>工作?/STRONG>中用的概念q需要明?</SPAN> <li id="zrjvlf7" class=text2>“开放源代码目”和“商业Y件提供商”列表中的工P可以让你获得<STRONG>工作?/STRONG>?STRONG>业务程理</STRONG>的益处?</LI></OL> <P><span id="nxrtlb5" class=text2>    从以上所有这些中能得到的l论是:(x)</SPAN> <OL> <LI><span id="f17xhht" class=text2>规范q没有成熟,没有标准被大范围采用 </SPAN> <LI><span id="vld17fx" class=text2>对于现在惛_用BPM的公司来Ԍ比较<STRONG>工作?/STRONG>pȝ是一个极其困隄挑战 </SPAN> <li id="tlvxffz" class=text2>管标准化工作慢?jin)一拍,可好?STRONG>工作管理系l?/STRONG>q是有的。这对于已经在挑?STRONG>工作?/STRONG>pȝ的组l来说是一个好消息?</LI></OL> <P class=text2>    我希望本文能够激发你?STRONG>工作?/STRONG>的兴ƈ且能够ؓ(f)你进行有效的Ҏ(gu)提供正确的背景知识?/P><!-- =================================================================================== --> <H1 id=furtherreading>Further reading</H1> <UL> <LI><span id="nvnfhpt" class=text2><B><A >Workflow Patterns</A></B> -Wil van der Aalst教授?STRONG>工作?/STRONG>模式学术研究|站 </SPAN> <LI><span id="ltbnxx9" class=text2><B><A >ebpml.org</A></B> - 有关业务程理?STRONG>工作?/STRONG>的网站,信息量大、全?</SPAN> <LI><span id="bttvxp1" class=text2><B><A >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><span id="ppzj7f3" class=text2><B><A >Enix</A></B> - 英国程理N公司Q在|站上有不错的内?</SPAN> <LI><span id="jj1frzl" class=text2><B><A >ebizq.net</A></B> - Commercial community that has booths, webinars and other interesting stuff put together in a nice website. </SPAN> <LI><span id="f7r7b93" class=text2><B><A >An introduction to petri nets</A></B> - The title says it all. </SPAN> <LI><span id="fnhtblv" class=text2><B><A >Organizational Management in Workflow Applications</A>- An interesting article that discusses the relation between business processes and the organisational data involved. </SPAN> <LI><span id="dtdfxhz" class=text2><B><A >Web services orchestration</A></B> - an HP-paper that reviews the emerging technologies tools and standards. (Januari 2003) </SPAN> <li id="j71tdxf" class=text2><B><A >Business process standards for web services</A></B> - An article that discusses the various aspects involved in workflow and BPM. </LI></UL> <H1>Thanks</H1><span id="7fp3zh7" class=text2>    </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 >jbpm.org</A>, an open source workflow engine. Tom is also a member of the expertgroup of the JSR 207: <A >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> <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><A name=dinghong></A>译?BR><BR>dinghong</B>嵌入式Java工作系l?A target=_blank>Joinwork</A>的设计开发者之一。emailQ?A href="mailto:dinghong@joinwork.net">dinghong@joinwork.net</A>?</P><!-- END OF BORDER --></TD></TR> <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> <P class=text2>以下者加Q?/P> <P class=text2>1、网友flyislandҎ(gu)文的<A target=_blank>可视化展?/A>Q很直观Q?/P></TD></TR></TBODY></TABLE></B><img src ="http://www.tkk7.com/wkling100/aggbug/15421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wkling100/" target="_blank">星?/a> 2005-10-13 14:35 <a href="http://www.tkk7.com/wkling100/archive/2005/10/13/15421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表现层框? Struts/Tapestry/JSF 架构比较http://www.tkk7.com/wkling100/archive/2005/10/10/15140.html星?/dc:creator>星?/author>Mon, 10 Oct 2005 07:48:00 GMThttp://www.tkk7.com/wkling100/archive/2005/10/10/15140.htmlhttp://www.tkk7.com/wkling100/comments/15140.htmlhttp://www.tkk7.com/wkling100/archive/2005/10/10/15140.html#Feedback0http://www.tkk7.com/wkling100/comments/commentRss/15140.htmlhttp://www.tkk7.com/wkling100/services/trackbacks/15140.html  其实QJSF和Tapestry也ƈ不是那种头碰头的相同竞争性技术,两者还是各有侧重点的,不过比较l微Q但是这U细微点在实C个大工程时可能带来不同的感受和变化?/P>

  首先Q我们从一个高度来抽象一下表现层框架应有的技术架构,下图可以说所有表现层框架技术都必须实现的功能架构图Q?/P>

  当然Q我们不必废话罗嗦MVC模式QMVC模式是基准模式,现在框架技术已l不必再拼是否是MVC模式?jin)?在上图MVC模式基础上,一个表现层框架无外乎要实现图中的三个功能:(x)

1.在当前页面能够显CZ个组件对象的内容Q而不是象UJSP那样Q需要在Jsp面写入“调用对象方法”的Java代码?/P>

2.当用h下页面的提交按扭或链接后Q事件发生,q时应该触发服务器端q将当前面的参数提交给服务器。这U机制表现在Form表单提交和有参数的链?lt;a href=""></a>

3.从一个页面视囄接蟩转到另外一个页面视图,单纯的导航作用?/P>

我们通过下表来比较这 三种框架在实C囑֐个功能时技术细节,从而得Z们的异同点和偏重炏V?/P>
  Struts Tapestry3.0 JSF
在View昄的组件要?/TD>

lg必须l承ActionForm

分显式调用和隐式调用
lg必须l承BaseComponent
普通POJO
无需l承
Managed Bean
lg在View昄_度 View面只能昄与表单对应的ActionFormQ配|中Action ActionForm 面一般只?:1:1关系?/TD> 可将lg嵌入面M一行,对用组件数量无限制?/TD> 同Tapestry
面分区tiles 使用Tiles标签库实玎ͼ需要另外tiles-def.xml配置文g lg有自q视图面Q通过调用lg即直接实现多个页面组合。强大自然的面l合是其特点?/TD> 通过lg+标签库实现Subview,但如需重用Layout,q要l合Tiles.
面跌{ 使用标签库html:link中写明目标URLQURL名称需要对照配|文件的path命名,与组件Action耦合?/TD> URL名称是目标的lg名称Q不涉及(qing)URL和\径等操作Q方便稳固?/TD> cMStrutsQ也需要在配置文g中查?与组件分R?/TD>
参数传?/TD> 使用html:link时传递参数超q一个以上处理麻?ch)?/TD> 直接调用lgQ直接赋予参敎ͼ没有参数个数限制 参数分离传递给lg
事g触发 通过表单提交submitȀz,不能l化到表单里字段?/TD> 能够l于表单每个字段贴一个事Ӟ事glg必须实现PageListener接口

Strutslg~程模型

  Struts实现lg~程时有一些复杂:(x)l常Z个页面中需要引入多个组件而头|因ؓ(f)Struts中无法直接引入多个组Ӟ必须l一些圈?

  一般分两种情况Q如果同一个Action可以对付这些组Ӟ那么在这U情况下有两个办法:(x)

1.这多个lg装入一个ActionForm中,如?SPAN class=unnamed3>MapForm{机Ӟ

2.手工多个组件装入request/session{scope中,然后Ҏ(gu)其名U在jsp中获得?/P>

  q两个方法都有缺点:(x) W一U办法经怸个ActionForm弄得面目全非Q变成一个大杂烩Q违反了(jin)OO分派装的原则;W?U办法其实又回到jsp~程Q?/P>

  W二U情况,如果q些lg必须有预先由不同的Action来处理,每个lg必须l过Action -->ActionForm程Q在q种情况下有两种办法Q?/P>

1.使用Tiles, 不同程输出到同一个页面的不同区域。是一Uƈ行处理方式?/P>

2. 对多个流E首q,W一Action forwardl果是第二个ActionQ最后输Z个JspQ在q个jsp中就可以使用前面多个程的多个ActionForm?jin),q属于串行方式?/P>

Strutslg模型~点

  Strutslg~程必须限定在Action/ActionForm/JSPq三个框框中做文章,隑ֺ相对比较大,而Tapestry/JSF则没有太多这些技术框框限Ӟ两者在lg~程斚w更让~程者自׃些,方便一些,q也是组件型框架的优势吧?/P>

Struts标签?/STRONG>

  在Struts中,l常需要用标{ֺ来显C组件ActionForm中内容,q就涉及(qing)C个结合的问题Q标{ֺ是别人写的,参考Struts的标{ֺ用法Q而组件是自己的,隑ֺ和麻?ch)就体现在这个结合点上?/P>

  JSF基本思\和Struts差不多,只不q换?jin)不同标{ֺQ也需要标{ֺ+lg的结合思考,不过因ؓ(f)lgq里是通用lgQ没有什么限Ӟ所以这hStruts要轻松一些?/P>

  Tapestry使用?jin)组件库概念替代了(jin)标{ֺQ没有标{ֺ概念Q这样就没有标签库和自己的组仉要结合的问题Q都是组件的使用Q组件中分Tapestry标准lg和自己定义的lgQ这也是接触?jin)Jsp体系的h学习(fn)Tapestry面(f)的一个思\转换?/P>

  具体以页面蟩转ؓ(f)例子Q页面蟩转是靠链?lt;a href="目标"></a> 实现Q链接是面l常使用的元素?/P>

  Struts提供的html:link在频J用就特别不方便,其在传递多个参数时Q其中h(hun)tml:link的page|是蟩转对斚w面或Action的pathQ这个path一般需要到struts-config.xml查找Action的相应path,一旦配|文件pathg改,涉及(qing)到这个所有相关页面都要修攏V?/P>

  JSF链接概念划分两个方面:(x)D性质和事件激z,在导航方面还是需要到配置faces-config查询Navigation的from-outcome的倹{?/P>

  ׃Tapestry没有标签库概念,只有lg或页面两个概念,因此Q链接蟩转目标要么是lgQ要么是面Q简z简单,它没有多余的path概念Q就是组件名Q也是对象名称Q组件名U和path名称合二Z?/P>

ȝ

  JSF在很大程度上cMStrutsQ而不是类似TapestryQ可以说是一UStruts 2.0Q都是采取标{ֺ+lg的Ş式,只是JSF的组件概忉|有象Struts那样必须l承ActionForm的限ӞJSF在事件粒度上要细腻,不象Struts那样Q一个表单一个事ӞJSF可以l化到表单中的每个字D上?/P>

  JSF只有在组件和事g机制q个概念上类似TapestryQ但是不似Tapestry那样是一个完全组件的框架Q所以,如果你做一个对面要求灉|度相当高的系l,选用Tapestry是第一考虑?/P>

  Struts/JSF则适合在一般的数据面录入的系l中Q对于Struts和JSF的选用Q我目前个h观点是:(x)如果你是一个新的系l,可以直接从JSF开始;如果你已l用StrutsQ不必{换,如果需要切换,可以JSF和Tapestry一赯(g)虑?/P>

  另外QJSF/Tapestry不只是支持HtmlQ也支持多种客户端语a如WML或XUI{?/P>

  q三者之间关p:(x)如果说Struts是左z;那Tapestry则是xQ而JSF则是中间z,中庸M是SUN联盟的一贯策略?/P>

  当然Q你也可以发表你在实践中q三者Q何一个的使用感受Q以使得后来者有一个比较?/P>

 



]]>
վ֩ģ壺 ޹Ʒһ| ܻƺ۵վ| ѾƵ߹ۿ| ѹҹ| ۺ| Ƶѹۿ| žȾþƵ| avպۺһ| Ƶһ| 㽶þۺӰ| ѿԻ40| ҹƵվ| 뾫Ʒһ | 99þ99þþƷѹۿ| һëƬڲ| ŮҺƵ| ҸŮˬ߳Ƭ | ӰԺѹۿ| պƵ߹ۿ| ߾Ʒ| Ƶ97| ձҳַ߿Ѳ| ŷƷרþ| ޹һ| ˺ձjizz| AV| ޳aƬëƬ| ƷպAV| ձһ| ޻ɫƵ| Ƶѿ| ޾Ʒ| պƷAV| ҹþ| ޴߶ר| Ʒһֱ| ɫƵ15| һƷƵ߲ | ޾Ʒþþþȥq| Ʒһ| ޹Ʒһһҳ|