??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美自偷自拍另类视,亚洲午夜爱爱香蕉片,亚洲午夜无码久久http://m.tkk7.com/alex/category/14020.html不求多得,只求一? about java,hibernate,spring,design,database,linux,etc. <br/><br/> 最q关心的内容关键?web快速开发方案,建模,workshop studio,Ajax zh-cnTue, 27 Feb 2007 14:56:15 GMTTue, 27 Feb 2007 14:56:15 GMT60[zt]OSWorkflow的用D?/title><link>http://m.tkk7.com/alex/archive/2006/08/15/63715.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Tue, 15 Aug 2006 08:25:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2006/08/15/63715.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/63715.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2006/08/15/63715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/63715.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/63715.html</trackback:ping><description><![CDATA[     摘要: OSWorkflow的第一支程? (史帝? 2005/6/4, hi.steven@gmail.com) 自從C的聖E版以Hello WorldE式開始引導初學者學程式語a以來Q?..  <a href='http://m.tkk7.com/alex/archive/2006/08/15/63715.html'>阅读全文</a><img src ="http://m.tkk7.com/alex/aggbug/63715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2006-08-15 16:25 <a href="http://m.tkk7.com/alex/archive/2006/08/15/63715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]工作管理系l概q?/title><link>http://m.tkk7.com/alex/archive/2006/08/11/63071.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Fri, 11 Aug 2006 10:26:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2006/08/11/63071.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/63071.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2006/08/11/63071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/63071.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/63071.html</trackback:ping><description><![CDATA[ <div id="pjxxfzr" class="postText"> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; line-height: 150%;"> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <span style="">一.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span> </span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%; font-family: 宋体;">概述</span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">? 业在q行业务处理Ӟ政府在进行公文审ҎQ都是以程形式而进行的Q在信息化的q程中,企业、政府也这些业务处理、公文审批的q程信息化了Q早期通常 是通过E序编码的方式来处理这些业务、公文的{Q随着业务、公文的复杂的处理情况不断出C及需求的不断变更Q这U硬~码的方式显然已无法应对Q这? 时候工作流理pȝ应运而生Q掀起了一股工作流理pȝ的热潮?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span style="font-family: 宋体;">那么到底工作管理系l能够带来什么好处?工作管理系l通过对业务、公文流转进行分析以及抽象,不变和变化的部分进行划分,用户可轻杄通过可视化的工具对事的程、流E环节涉及的人员</span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">角色</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">、流E环节的表单、流E环节的操作q行修改Q从而到达了应对不断变化的需求的目的Q而工作流理pȝ通常提供的流E监控、查询统计模块更是极大程度的为用户优化流E提供支持,以提高企业、政府的工作效率?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span style="font-family: 宋体;">本文主要描述工作管理系l通常的结构、参考模型以及通常使用的调度算法?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; line-height: 150%;"> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <span style="">?<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span> </span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%; font-family: 宋体;">构成</span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">工作管理系l,U?/span> <span lang="EN-US">WFMS</span> <span style="font-family: 宋体;">Q? l过对业务、公文流转过E的分析以及抽象Q工作流理pȝ围绕业务交互逻辑、业务处理逻辑以及参与者三个问题进行解冻I业务交互逻辑对应的ؓ业务的流转过 E,在工作流理pȝ中对应的提出了工作流引擎、工作流设计器、流E操作来解决业务交互逻辑的问题,业务处理逻辑对应业务{q程中的表单、文档等的处 理,在工作流理pȝ中对应的提出了表单设计器、与表单的集成来解决业务处理逻辑的问题,参与者对应到的ؓ{q程中环节对应的人或E序Q在工作管理系 l中通过与应用程序的集成来解军_与者的问题?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">工作管理系lؓ方便业务交互逻辑、业务处理逻辑以及参与者的修改Q多数通过提供可视化的程设计器以及表单设计器来实玎ͼ为实现工作流理pȝ的扩展性,多数提供了一pd?/span> <span lang="EN-US">API</span> <span style="font-family: 宋体;">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">一个完整的工作管理系l通常由工作流引擎、工作流设计器、流E操作、工作流客户端程序、流E监控、表单设计器、与表单的集成以及与应用E序的集成八个部分组成?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.1.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">工作引?/span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">? 作流引擎作ؓ工作管理系l的核心部分Q主要提供了对于工作定义的解析以及程{的支持。工作流定义文g描述了业务的交互逻辑Q工作流引擎通过解析? 工作定义文件按照业务的交互逻辑q行业务的流转,工作引擎通常通过参考某U模型来q行设计Q通过调度法来进行流E的{</span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">程的启动、终止、挂赗恢复等</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q通过各种环节调度法</span> <span lang="EN-US">(SPLIT</span> <span style="font-family: 宋体;">?/span> <span lang="EN-US">AND</span> <span style="font-family: 宋体;">?/span> <span lang="EN-US">OR</span> <span style="font-family: 宋体;">{?/span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">来实现对于环节的{</span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">环节的合q、分叉、选择、条件性的选择{?/span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.2.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">工作设计器</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">工作设计器为可视化的流E设计工P用户通过拖放{方式来l制程Qƈ通过对于环节的配|来实现环节操作、环节表单、环节参与者的配置?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">工作设计器为用户以及开发商提供了快速绘制、修ҎE的方式Q工作流设计器的好坏军_到工作流理pȝ的易用性?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.3.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">程操作</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">程操作指所支持的对于流E环节的操作Q如启动程、终止流E、挂hE、直、分?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">单h办理</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">、ƈ?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">多h同时办理</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">、联审等Q象q些程操作都是可直接基于引擎所提供的环节调度算法来直接支持的,而在实际的需求中Q通常需要自q对于程q行q涉Q如取回、回退、蟩转、追加、传阅、传阅办理等Q而这些流E操作对于工作流引擎来说是不合理的,因此必须单独的去实现?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">程操作支持的好坏直接决定到一个工作流理pȝ的实用性?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.4.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">工作客LE序</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">工作客LE序为工作流pȝ的表现Ş式,通常使用</span> <span lang="EN-US">Web</span> <span style="font-family: 宋体;">方式q行展现Q通过提供待办列表、已办列表、执行流E操作、查看流E历史信息等来展现工作流pȝ的功能?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.5.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">程监控</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">程监控通过提供囑Ş化的方式来对程执行q程q行监控Q包括流E运转状况,每个环节所耗费的时间等{,而通过q些可相应的q行程的优化,以提高工作效率?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.6.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">表单设计?/span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">表单设计器ؓ可视化的表单设计工具Q用户通过拖放的方式来l制业务所需的表单,q可相应的进行表单数据的l定?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">表单设计器ؓ客户以及开发商提供了快速修改表单的ҎQ表单设计器的易用与否以及功能的完善与否影响到工作流理pȝ的易用性?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.7.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">与表单的集成</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">通常业务{需要表单来表达实际的业务,因此需要与表单q行集成来实C务意义,与表单的集成通常包括表单数据的自动获取、存储、修改,表单域的权限控制、流E相x据的l护以及程环节表单的绑定?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">与表单的集成的好坏媄响到工作管理系l是否能提高开发效率?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">2.8.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">与应用程序的集成</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; line-height: 150%;"> <span style="font-family: 宋体;">通过与应用程序的集成来完善工作流理pȝ的业务意义,主要涉及到的是与权限pȝ以及l织机构的集成。流E环节需要相应的l定不同的执行角Ԍ而流E操作通常需要与权限pȝ、组l机构进行关联?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; line-height: 150%;"> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <span style="">?<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span> </span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%; font-family: 宋体;">参考模?/span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">工作系l通常通过参考一些标准的模型来进行设计,主要的有</span> <span lang="EN-US">WFMC</span> <span style="font-family: 宋体;">?/span> <span lang="EN-US">OMG</span> <span style="font-family: 宋体;">Q在q里主要介绍一?/span> <span lang="EN-US">WFMC</span> <span style="font-family: 宋体;">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">3.1.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US">WFMC<o:p></o:p></span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 27pt; line-height: 150%;"> <span lang="EN-US">WFMC</span> <span style="font-family: 宋体;">是国际工作流理联盟Q它?/span> <span lang="EN-US">1993</span> <span style="font-family: 宋体;">q成立,发布了一pd的工作流定义、Y件接口的草案文本Q是目前世界上公认的最h威性的工作标准制定机构,得到了广泛的支持和应用?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 27pt; line-height: 150%;"> <st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="10" year="2002"> <span lang="EN-US">2002</span> <span style="font-family: 宋体;">q?/span> <span lang="EN-US">10</span> <span style="font-family: 宋体;">?/span> <span lang="EN-US">25</span> <span style="font-family: 宋体;">?/span> </st1:chsdate> <span style="font-family: 宋体;">Q?/span> <span lang="EN-US">WFMC</span> <span style="font-family: 宋体;">发布了基?/span> <span lang="EN-US">XML</span> <span style="font-family: 宋体;">的流E定义语a</span> <span lang="EN-US">1.0</span> <span style="font-family: 宋体;">版的最l文本(</span> <span lang="EN-US">Workflow Process Definition Interface----XML Process Definition Language  </span> <span style="font-family: 宋体;">文档~号Q?/span> <span lang="EN-US">WFMC-TC-1025</span> <span style="font-family: 宋体;">Q,以及此前发布的工作流应用软g接口规范</span> <span lang="EN-US">WFMC-TC-1009, WFMC-TC-1013</span> <span style="font-family: 宋体;">{系列文Ӟ构成了工作流定义及系l的设计标准?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 27pt; line-height: 150%;"> <span style="font-family: 宋体;">Z实现不同工作品之间的互操作,</span> <span lang="EN-US">WfMC</span> <span style="font-family: 宋体;">? 工作管理系l的相关术语、体pȝ构及应用~程接口{方面制定了一pd标准。工作流理联盟l出的工作流定义是:工作是指整个或部分l营q程在计机? 持下的全自动或半自动化。在实际情况中可以更q泛地把凡是p机软gpȝQ工作流理pȝQ控制其执行的过E都UCؓ工作?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 27pt; line-height: 150%;"> <span style="font-family: 宋体;">一 个工作流包括一l活动及它们的相互顺序关p,q包括过E及zd的启动和l止条gQ以及对每个zd的描q。工作流理pȝ指运行在一个或多个工作引擎上? 于定义、实现和理工作运行的一套Y件系l,它与工作执行者(人、应用)交互Q推q工作流实例的执行,q监控工作流的运行状态?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 27pt; line-height: 150%;"> <span lang="EN-US">WFMC</span> <span style="font-family: 宋体;">主要提出了五个接口与工作执行服务一起共同组成了工作系l:</span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 48pt; text-indent: -21pt; line-height: 150%;"> <span style="font-family: Wingdings;" lang="EN-US"> <span style="">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span> </span> <span style="font-family: 宋体;">接口一</span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">工作定义交?/span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q用于在建模和定义工具与执行服务之间交换工作定义。主要是数据交换格式?/span> <span lang="EN-US">API</span> <span style="font-family: 宋体;">。数据交换通过</span> <span lang="EN-US">XPDL</span> <span style="font-family: 宋体;">Q?/span> <span lang="EN-US">API</span> <span style="font-family: 宋体;">通过</span> <span lang="EN-US">WAPI</span> <span style="font-family: 宋体;">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 48pt; text-indent: -21pt; line-height: 150%;"> <span style="font-family: Wingdings;" lang="EN-US"> <span style="">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span> </span> <span style="font-family: 宋体;">接口?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">工作客L应用接口</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q用于工作流客户端应用访问工作流引擎和工作列表,通过</span> <span lang="EN-US">WAPI</span> <span style="font-family: 宋体;">完成?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 48pt; text-indent: -21pt; line-height: 150%;"> <span style="font-family: Wingdings;" lang="EN-US"> <span style="">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span> </span> <span style="font-family: 宋体;">接口?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">被调用的应用接口</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q用于调用不同的应用pȝ?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 48pt; text-indent: -21pt; line-height: 150%;"> <span style="font-family: Wingdings;" lang="EN-US"> <span style="">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span> </span> <span style="font-family: 宋体;">接口?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">工作系l互操作接口</span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q用于不同工作流pȝ之间的互操作?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 48pt; text-indent: -21pt; line-height: 150%;"> <span style="font-family: Wingdings;" lang="EN-US"> <span style="">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span> </span> <span style="font-family: 宋体;">接口?/span> <span lang="EN-US">(</span> <span style="font-family: 宋体;">pȝ理和监?/span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">Q用于系l管理应用访问工作流执行服务?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; line-height: 150%;"> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <span style="">?<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span> </span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%; font-family: 宋体;">核心调度法</span> </b> <b style=""> <span style="font-size: 14pt; line-height: 150%;" lang="EN-US"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.25pt; line-height: 150%;"> <span style="font-family: 宋体;">通常程引擎采用的核心调度算法主要有</span> <span lang="EN-US">FSM</span> <span style="font-family: 宋体;">以及</span> <span lang="EN-US">PetriNet</span> <span style="font-family: 宋体;">两种Q基于调度算法来完成程的流转?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">4.1.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US">FSM(</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">有限状态机</span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US">)<o:p></o:p></span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span lang="EN-US">FSM</span> <span style="font-family: 宋体;">的定义ؓ包含一l状态集Q?/span> <span lang="EN-US">states</span> <span style="font-family: 宋体;">Q、一个v始状态(</span> <span lang="EN-US">start state</span> <span style="font-family: 宋体;">Q、一l输入符号集Q?/span> <span lang="EN-US">alphabet</span> <span style="font-family: 宋体;">Q、一个映输入符号和当前状态到下一状态的转换函数Q?/span> <span lang="EN-US">transition function</span> <span style="font-family: 宋体;">Q的计算模型。当输入W号Ԍ模型随即q入起始状态。它要改变到新的状态,依赖于{换函数。在有限状态机中,会有有许多变量,例如Q状态机有很多与动作Q?/span> <span lang="EN-US">actions</span> <span style="font-family: 宋体;">Q{?/span> <span lang="EN-US">(Mealy</span> <span style="font-family: 宋体;">?/span> <span lang="EN-US">)</span> <span style="font-family: 宋体;">或状态(摩尔机)兌的动作,多重起始状态,Z没有输入W号的{换,或者指定符号和状态(非定有限状态机Q的多个转换Q指z接收状态(识别者)的一个或多个状态,{等?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span style="font-family: 宋体;">遵@</span> <span lang="EN-US">FSM</span> <span style="font-family: 宋体;">程引擎通过状态的切换来完成流E的{?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 1cm; text-indent: -1cm; line-height: 150%;"> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US"> <span style="">4.2.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> </b> <b style=""> <span style="font-size: 12pt; line-height: 150%;" lang="EN-US">PetriNet<o:p></o:p></span> </b> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span style="font-family: 宋体;">信息的一个抽象的、Ş式的模型。指Zpȝ的静态和动态性质?/span> <span lang="EN-US">petrinet</span> <span style="font-family: 宋体;">通常表示成图。图中有两类用弧彼此相连的结点(UCؓ地点和变换)和指C其动态性能的标讎ͼUCؓ记号Q?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; line-height: 150%;"> <span style="font-family: 宋体;">遵@</span> <span lang="EN-US">PetriNet</span> <span style="font-family: 宋体;">程引擎通过令牌来决定流E的{?/span> </p> </div> <img src ="http://m.tkk7.com/alex/aggbug/63071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2006-08-11 18:26 <a href="http://m.tkk7.com/alex/archive/2006/08/11/63071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]工作大局?/title><link>http://m.tkk7.com/alex/archive/2006/08/11/63070.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Fri, 11 Aug 2006 10:25:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2006/08/11/63070.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/63070.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2006/08/11/63070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/63070.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/63070.html</trackback:ping><description><![CDATA[ <b>1. 从奴隶社会到徏后期</b> <br /> <br />工作?WorkFlow)的概忉|在现代信息系l的中逐步形成的,它有一个从局部到整体、从初到高U、从单到复杂、从奴隶C会到封建盛世的发展q程Q按其发展历E,我们一般把它分Z个阶D?<br /><br /><b>H?EDF(电子数据?阶段</b><br /><br />EDF(电子数据?阶段是工作流的奴隶社会阶Dc此时的工作在信息技术中的应?仅着g利用信息技术减Mh们在程中的计算强度,如设计一个流E用来协调多个会计统计帐目。所?EDF最主要的特Ҏ仅对企业单项业务q行处理,基本不涉及管理的内容?br /><br /><b>H?TPF(事务处理?阶段</b><br /><br />TPF(事务处理?阶段是工作流的封建初期。TPFq没有Ş成对企业的全局业务的管?而着g对企业局部业务的理,比如,设计一套工作流E?来管理物资的采购和供应?br /><br /><b>H?IMF(信息理?阶段</b><br /><br />? 今的工作已l发展到徏后期-------IMF(信息理?阶段, IMF对企业业务的全局的整体性的理。在q个阶段,工作就是ؓ了完成同一目标而相互衔接、自动进行的一pd业务zd或Q务。目?工作技术与? 息技术以及企业管理紧密结?已经悄悄渗入MISpȝ、ERPpȝ和CRMpȝ{企业关键pȝ?q迅速成些系l的核心。在q个阶段,保皇zַ作流 l历了大发展,革新zַ作流也风涌而现?br /><br /><b>2. 保皇z与革新z?/b><br /><br />与其它信息技术相?工作技术属于较新的 一? 它现在仍处于标准的制定阶D?目前已有的标准按采用的技术分Z大派?W一z是保皇z?ZUXML技?W二z是革新z?ZWeb服务技术。保皇派 与革新派打得隑ֈ难解,所?现在仍有一些工作流引擎没有采用M标准而独立实?也就是说,它们不依靠保皇派,也不依靠革新z?br /><br /><b>2.1 保皇zֈ?/b><br /><br /><b>H?XPDLQXml Process Definition LanguageQ?/b><br /><br />XPDL 是保皇派最得h心的一z?因ؓ它是太子。在工作领域第一个致力于标准化工作的是Workflow Management Coalition (WfMC)Q它成立?993q?994q?1月,wfmc发布了工作流理pȝ的参考模型。参考模型提Z五类接口Q有兌E模型的定义则构成了? 口一的核心内宏V接口一早期的标准ؓWPDLQWorkflow Process Definition LanguageQ,后来,q一接口的规范变更ؓXPDL。XPDL是至今工作流领域最为重要的一个标?目前大多数工作流引擎是依据该标准设计开发的?br /><br /><b>H?BPML(Business Process Model Language)</b><br /><br />因ؓ对太子派的工作方式不满意QBPMI发布BPML规范,成立新的八爷党。由于八爷党发展的非怹快,WfMC和BPMI?002q??6日宣布将合作制定业务程和工作流标准Q即采用BPML来描q工作流q程Q同旉用XPDL所定义的工作流模型?br /><br /><b>H?OMG的Workflow Management Facility</b><br /><br />? 爷OMG是支持太子的,不过四爷q个人很有报?在其他领域也做的有声有色。四爷OMG的Workflow Management Facility联合太子的WfMC规范Q定义如何将工作向CORBA转换---要知? CORBA可是四爷的强V现在很多老百姓支持四爷OMG的Workflow Management Facility。四爯?发展了自q势力,又不惹太子生?真是妙啊!<br /><br />保皇zօ它分支势力很?q里׃多说了?br /><br /><b>2.2 革新zֈ?/b><br /><br /><b>H?WSCI</b><br /><br />2002 q??6日,BEA,Intalio,SAP,Sun四家公司提出了基于xml的WSCI规范Q推动Web服务q入了一个全新的阶段。这个规范主要描q? 了一个参与和其它服务q行协作交互的Web服务所交换的消息流。WSCI是第一个革新派,后来又发展了几个新的革新z?<br /><br />如WSFL(属IBM),Xlang(属MS),因有天生~陷,均没有很大v艌Ӏ?br /><br /><b>H?ebXML</b><br /><br />ebXML 是一l支持模块化电子商务框架的规范。ebXML支持一个全球化的电子市场,它得Q意规模的企业通过交换ZXML的信息,不受地域限制地接z和处理? 意。ebXML是联合国QUN/CEFACTQN易促q和电子商务中心Q和OASISQ结构化信息标准发展l织Q共同倡导、全球参与开发和使用的规范。由 于现在老百姓都不喜Ƣ抬着去换米,而喜Ƣ在|上来个B2C,所以革新派ebXML最q发展很快?br /><br /><b>H?BPEL</b><br /><br />2002 q??日,Microsoft, BEA, IBM, SAP & Siebel联合提交发布了BPEL规范? BPEL联合了一pd革新z?保皇z֊量( XLANG, WSFL, BPMLQ。此规范描述如何处理输入的消息,它不是一个关于业务流E规格化定义的规范。简单的_可以它看作XML形式的编E语aQ提供将WSDL- Servicesl合成控制流的能力。顾名思义Q此规范重点在(也不只限于)Web Service?br /><br />q有其它的革新派如RosettaNet{,因ؓ势力很小,q里也不多说了?br /><br /><b>3. 大户人家</b><br /><br />q里所谈的大户人家指工作流领域的商业Y件供应商Q他们都背靠靠山,或穷或富。我们这里按地区来划分他们?br /><br /><b>3.1中国之外的大?/b><br /><br />H?BEA 的WLI<br /><br />H?Fujitsu?i-Flow<br /><br />H?IBM?Holosofx<br /><br />H?SAP 的NetWeaver<br /><br />H?Sonic 的Orchestration Server<br /><br />H?Ultimus<br /><br />H?Versata<br /><br />q些人家大都非常富有;如果需?误己搜索他们的信息?br /><br /><b>3.2国内的大户h?/b><br /><br />H?信雅辄SunFlow q个公司留给我的印象很好,包括他们的ȝ理石怅R?br /><br />H?西安协同的协同工作流<br /><br />H?上v东兰的DLFlo<br /><br />q里对公司就不多介绍?否则有做q告的嫌疑J。本人有国内工作品的比较报告,大家需要可以给我发邮g索取?br /><br /><b>4. 寒门傲骨</b><br /><br />q里的寒门傲骨指的是开源工作流引擎的实玎ͼ寒门子弟也是有政d向的,我们q是按保皇派和革新派来区分他们,而自由派指没有按固定的标准来实现的工作流门派?br /><br /><b>4.1保皇z֯?/b><br /><br />H?OFBiz<br /><br />OFBiz 最主要的特ҎOFBiz提供了一整套的开发基于Java的web应用E序的组件和工具。其中包括实体引? 服务引擎, 消息引擎, 工作引? 规则引擎{。OFBiz先前的工作流引擎ZWfMC和OMG的规范,使用XPDL作ؓ程定义语言,也就是说,它是支持太子XPDL?而且和十三爷 OMG的关p非怹好。OFBiz新版的工作流引擎采用Shark工作引?我们不徏议再d习OFBiz自n的工作流引擎?br /><br />H?OBE<br /><br />OBE 是由Adrian PriceL开发的一个开放源码的Java工作引擎,支持WfMC规范Q包括接?QXPDLQ、接?/3QWAPIQ和接口5。OBE主要Z J2EE实现。OBE的接?实现得非常好,可惜,OBE的蝲体公司Zaplet已经于前不久被合qӞ合ƈ后的公司没有l箋发展OBE的打? Adrian Priced了原来的公司,投奔我们前面说过的大户Versata。Versata也不打算l箋OBE。OBE至今没有release版,很是可惜?br /><br />H?Shark<br /><br />Shark 是完全根据WFMC规范实施的,可扩展功能的工作引擎,它利用xpdl来定义流E,同时q包括服务器端的用于zd节点执行的WFMC工具代理API? Shark中的每个lg例如持久层,事物理器,脚本引擎Q流E库Q都是可以按照标准实施运用的Q而且q可以被具体目的模块扩展和替换。Shark? XPDL定义工具的事实标准JAWE同出名门,市场前景被很多h看好。OFBiz新版的工作流引擎采用Shark工作引擎,OBE的蝲体公? Zaplet被合qӞ对Shark的发展将很有利?004q??日,shark发布1.0版本,对它的发展无疑是一剂强心针。笔者从Shark发展? 早期在国内力推?有幸成ؓShark工作引擎在国内的主要推q者之一(http://blog.csdn.net/hongbo781202/), 感到十分荣幸。Shark的讨看http://211.95.124.238:22/cgi-bin/forums.cgi?forum=24?br /><br /><b>4.2 革新z֯?/b><br /><br />H?OpenebXML<br /><br />OpenebXML目致力于提供一个ebXML框架Q主要支?UN/CEFACT和OASIS发布的ebXML规范2.0版?br /><br />H?Bonita<br /><br />Bonita是一个符合WfMC规范、灵zȝ协同工作系l。BonitaZ览器、用SOAP和XML数据l定技术的Web Services装了已有的工作业务方法ƈ它们以ZJ2EE的Web Service形式发布?br /><br />H?Twister<br /><br />Twister的目标是提供C代、易集成、应用Java领域中最新成果、面向B2B的工作流解决Ҏ。流E引擎基于BPEL业务程规范和Web Service标准?br /><br />H?ActiveBpel<br /><br />ActiveBPEL 引擎是一个于今年7月发布的健壮的运行时环境,它能执行用户按BPWL4WS规范~写的业务流E。ActiveBPEL引擎由Active Endpoints公司开发和l护,该公司同时在它的多个商业产品中用了该技术。本人将密切观注ActiveBPEL引擎的技术发展和产品状态?br /><br /><b>4.3 自由z֯?/b><br /><br />H?OSWorkflow<br /><br />OSWorkflow的最大特Ҏ灉|<br /><br />H?OpenWFE<br /><br />OpenWFE是一个开放源码的Java工作引擎?它的思想来源?SchemeQ包括可升的三个组Ӟ引擎、工作列表和Web界面?br /><br />HjBpm<br /><br />jBpm 是tom baeyens~写的一个灵zd扩展的工作流理pȝ。jBmp工作流应用开发的便利性和杰出的企业应用集成(EAIQ能力结合了h。jBmp包括一 个Web应用E序和一个日E安排程序。jBmp是一lJ2SElgQ可以作为J2EE应用集群部v。国内目前有部分人研IjBpm?br /><br /><b>5 大局?/b><br /><br />目前是封建社会后期,以太子党XPDL为首的保皇派q将辉煌一D|间。我个h认ؓQ在Ofbiz投靠SharkQ强势派OBE倒台Q自由派不得人心的情况下QShark工作引擎依靠与XPDL定义工具JAWE的兄弟关p,坐上保皇派头把交椅?br /><br />? 前,革新z֒保皇z争夺q不Ȁ烈。因为在现在的情况下, 革新z根基Web服务q不劳靠Q在老百姓中的媄响不太大Q所以革新派只求从保皇派嘴边分口食就行了。但随着C会的发? Web服务越来越行Q现在,MS/IBM/BEA{跨国巨头越来越LBPEL4WS标准Qƈ且已l发布基于BPEL4WS标准的系列品,而且Q他 们还LIntegration/Portal的概念,q些概念把工作带入资本主义阶Dc?img src ="http://m.tkk7.com/alex/aggbug/63070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2006-08-11 18:25 <a href="http://m.tkk7.com/alex/archive/2006/08/11/63070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]利用osworkflow实现业务程http://m.tkk7.com/alex/archive/2006/08/11/63068.htmlAlexAlexFri, 11 Aug 2006 10:16:00 GMThttp://m.tkk7.com/alex/archive/2006/08/11/63068.htmlhttp://m.tkk7.com/alex/comments/63068.htmlhttp://m.tkk7.com/alex/archive/2006/08/11/63068.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/63068.htmlhttp://m.tkk7.com/alex/services/trackbacks/63068.htmlOsworkflow完全用java语言~写的开放源代码的工作流引擎Q具有显著的灉|性及完全面向有技? 背景的用L特点。用户可以根据自w的需求利用这Ƒּ源Y件设计简单或是复杂的工作。通过使用Q用户就可以把工作中心放在业务和规则的定义上Q而不需? q硬~码的方式实C个Petri|或是一个有I动机。用户可以以最的代h把osworkflow整合到自qE序中来。Osworkflow几乎? 供了所有用户可能在实际程定义中需要用到的工作构成元素,如:环节QstepQ、条ӞconditionsQ、@环(loopsQ、分? QspiltsQ、合qӞjoinsQ、角ԌrolesQ等{?假如读者对q些概念q不熟悉Q笔者将在Osworkflow基本概念一节中q行单描 q?

但是Q这Ƒּ源Y件的文档十分匮乏Q而且在大多数现实情Ş中ƈ不适用。本文将试者填q_际的用例需求与十分单的说明文档间的鸿沟?br />
用户可以在OpenSymphony的网站上下蝲osworkflow的发布。当前的最高版本是2.7Q译者注Q最新版本ؓ2.8Q? 解压~发布的软g包,卛_Cq制E序、源代码、API文档、说明文档等。用户可以在软g的论坛和l基上获得进一步的帮助?br />
版权声明QQ何获得Matrix授权的网站,转蝲时请务必保留以下作者信息和链接
作?Diego Naya;bugaboo(作者的blog:http://blog.matrix.org.cn/page/bugaboo)
Matrix原文:http://www.matrix.org.cn/resource/article/44/44467_osworkflow.html
关键?osworkflow;business

什么是工作?

l基癄QWikipediaQWPQ把工作定义ؓ“一份工作的操作q程”:d如何l成、如何操作、相关顺序如何、如何同步、信息如何流动以支持q些d、以及Q务如何被跟踪{?br />一个工作流引擎实现了业务的程处理。用户应可以自动跟踪q程Q这得引擎更h率。同时用户可以对工作进行徏模,监控及统计引擎数据等?br />
CZ业务q程Q贷Ƅ?/span>

? 文的CZ业务q程研究一个贷Ƒֺ用程序的实例。我们将通过一个利用osworkflow工作引擎的工作来实现它。这个过E会在每安行及金融机构中出 ? 其区别仅仅体Cؓ有更q的部门或更多地文档需要处? 在本CZ? 我们会用量单的Ҏ来实现这个业务流E以便于用户理解。图一描述了这个业务流E?br />
image
图一 h业务程

q程非常单,分ؓ如下4步,如下所C:
1Q        填写表|银行客户填写表格甌h?br />2Q        风险分析:一位风险分析家评估不良h的风险?br />3Q        胦务历史审查:财务理官员负责查客户历史贷ƾ、应付̎单、信用卡历史U录{信息?br />4Q        最l决定(同意/拒绝Q:银行部门ȝҎ风险分析情况及胦务历史审查情冉|l决定是否贷Ƅ该客戗?br />
正如我们之前看到的,每个工作都包含角色Q每个角色都包含被分配的d。下文说明了业务程中涉及到的角Ԍ
1Q        前台职员:在某个银行部门向֮提供信贷甌表的雇员?br />2Q        胦务官员:负责查申误历史胦务情况(往期贷ƾ、未支付帐单{等Q的职员?br />3Q        风险分析家Q负责分析将q予借贷甌者的外部因素Q比如社会经情늭Q及借贷者本人的个h情况?br />4Q        银行部门经理:负责最l决定是否给予借贷者贷Ƅl理?br />误住,“信L误”是一个重要的概念Q我们将在系l实C节看到其重要性)因ؓ它是经整个工作的业务数据?br />
基本工作概?/span>

W者在开曾介绍osworkflow提供了一些特有的构造,现在W者将逐一介绍它们?br />
? 先,在osworkflow中读者需要了解得最重要的概忉|环节Q每个工作流包含了多个环节,读者可以把环节惌成工作流中每一个重要的zd。每个环节可 以有一些诸如“已完成”、“正在处理”、“已d臛_理队列”、“未处理”等的状态,设计工作的人可以根据需要自己定义状态?br />
在每个环节,动作被用h定ؓ自动或手动地执行。每个动作执行后Q都有一个结果(resultQ。结果决定了工作的{方向Q可以停留在同一环节Q蟩转到另一环节Q蟩转到一个分支,或者汇集到一个合q等?br />最后两个概忉|及用户对业务程的ƈ发执行,分支把工作流分解Z个ƈ行的环节Q合q则在用h一定条件后Q把两个q行的环节合q成一个?br />
? 作的执行代表了业务流E的执行Q每个动作都有一l预处理功能Qpre-functionsQ和一l后处理功能Qpost-functionsQ。其作用? 如读者想象的那样Q一个在动作触发之前执行Q一个在动作触发之后执行。一个简单的例子是:可以在预处理功能中检验申误格数据的正确性,而后在后处理贡功 能中把经验的数据保存x据库?br />
动作的执行结果可以是有条件的QconditionalQ或无条件的QunconditionalQ? 对于有条件的l果Q引擎将首先查是否条件被满Q然后再交给工作来处理。如果条件不满的话Q引擎将q一步判断下一个有条gl果是否得到满Q以此类 推,直到pȝ最l执行到无条件结果进行处理?br />
读者可能会问,如果所有的条gl果都没有得到满会如何呢?事实上,每个动作都强制要求具有唯一一个无条gl果。与此对应的Q可以有多个有条件的l果?br />
业务规则常常在最l结果中带有条g判断Q比如,“如果申h自于一个老客P则流转到环节1”或者“如果当前系l的用户的角色是l理的话Q直接流转道最后一个环节”?br />
最 后一个重要的概念是步骤状态(process stateQ,在osworkflow中,当前步骤状态是所有当前环节状态的集合。读者可能会认ؓ工作在q行q程中只能有一个状态,但现实的情况是:? 为对分支和合q的支持Q引擎能够做到对环节的ƈ发控Ӟ因此工作的当前状态就可能出现Q“等待风险分析及已核查胦务历叜y的情况?br />Ȁzd作的用户被顺理成章地UCؓ触发者(callerQ,每个环节都有一个所有者(ownerQ,以代表在当前环节中负责执行动作的角色或用戗?br />
当用户在环节中运转流E的时候,已完成的环节被保存至历史表中QhistoryQ,用户当前所处的环节成ؓ当前环节Qcurrent stepsQ?br />
最 后,读者可能注意到Q在osworkflow中ƈ不存在其他工作流引擎中所包含的工作项QworkitemQ的概念。这是因为osworkflow是“十 分底层”的工作实玎ͼ怎样实现或定义工作项完全交由用户来决定。笔者认为工作项的概念太q抽象,用业务数据来U呼它或许更切一些?br />
Osworkflow 的文档中介绍了更多的构造元素,如寄存器QRegistersQ,qҎQcommon functionsQ等Q但W者徏议在建立好第一个工作流以后再去研究它们。它们是osworkflow基本元素外的高Ҏ,而我们前面所认识的元素则 是osworkflow的根本所在?br />

Osworkflow体系l构

我们在本节分析控制osworkflow的体pȝ构,我们需要理解它是怎样适用到我们的E序中来的。如我们所猜想的,Osworkflow最主要的接口是WorkflowQ这个接口也是整个工作流引擎的入口点。是整个pȝ的门面(facadeQ?br />
接口的实C要关注具体的业务操作能力Q这个接口定义了工作查询,获取当前的可执行动作Q执行动作,昄历史环节{?br />工作被持久化在工作存储体QWorkflow StoreQ中Qosworkflow提供了几U持久化的方法,包括Hibernate持久化集成,JDBC持久化集成等。一个存储体包含了环节信息,变量Q工作流自n的描qC息等{?br />
用户可能遇到的最常见的应用模式如下所C:
1Q通过l定的状态在工作存储体中查询工作流信息Q通常q根据某一个工作流E中h需执行动作的用hq行查询。这U查询时通过WorkflowQuery对象中的Workflow.query()Ҏ实现的?br />2Q通过getAvailableActions()Ҏ列出所有在满条g查询l果中可执行的操作?br />3Q通过doAction()Ҏ执行用户选择的动作。在执行动作的时候一些执行参数可以以java.util.Map的Ş式传递,以实现在工作定义的q行期进行信息的传递?br />4Q用户可以有选择地通过调用initialize()实例化一个工作流?br />
在理x况下Q由业务逻辑层负责调用osworkflow中的ҎQ如图二所C:

image
图二 在业务逻辑中集成工作流

在osworkflow 中,业务逻辑描述在一个XML文g中,UCؓ工作描q符Qworkflow descriptor.Q。我们将在实现小节中建立一个简单的描述W。在工作描q符中的功能QfunctionsQ和条gQconditionsQ中Q? 用户可以定义自己的业务逻辑。笔者将在把工作集成到应用E序中一节中q行?br />
实现

本小节介l如何把一个业务逻辑抽象成一个工作流。首先我们要在业务流E图中识别出工作的环节。如图一所C,昄Q我们共有四个环节,同时包含一个分支及一个合q。在下面的bank.xml文g中,读者将看到它们在描q符中是如何被表C的?br />
建立好环节以后,必须在每个环节中d一些动作以便于工作运转。每个动作有唯一的无条gl果Q条件结果由读者有选择地来实现?br />
<step id="1" name="Form Filling">
<actions>
  <action id="2" name="Fill Form">
   <results>
        <unconditional-result old-status="Finished" split="1"/>
   </results>
  </action>
</actions>
</step>


接下来要q行地执行风险分析和财务历史核查Q这里是攄分支的最理想地点?br />
<splits>
<split id="1">
  <unconditional-result old-status="Finished"
    status="Underway" owner="Risk Analyst" step="2"/>
  <unconditional-result old-status="Finished"
    status="Underway" owner="Financial Officer" step="3"/>
</split>
</splits>


? 部门l理最l确认以前,q发的工作流环节必须得到合ƈ。我们可以通过应用一个合qӞjoinQ来实现它,合ƈ通过一个条件告诉工作流引擎Q是否可以合qƈ q行C一环节。在本例中,我们假设q个条g为:前面两个环节都已h“Finished”的l束状态。即当风险分析或财务审核M一个未完成前,不能q? 行到下一步:
<joins>
<join id="1">
  <conditions type="AND">
   <condition type="beanshell">
    <arg name="script"><![CDATA[
     "Finished".equals(jn.getStep(2).getStatus()) &&
        "Finished".equals(jn.getStep(3).getStatus())
      ]]></arg>
    </condition>
   </conditions>
  <unconditional-result old-status="Finished"
    status="Underway" owner="Manager" step="4"/>
</join>
</joins>


下面在描q符中加入每个环节的所有者,正如我们在基本概念一节看到的那样Q所有者通常代表了环节间交互的角Ԍ角色的引入默认情况下通过osuser框架来实现?br />用户既可以手写XML描述W文Ӟ也可以通过osworkflow提供的设计器来实现。读者可以在OpenSymphony的网站上试用q个工具?br />
试实现
试Ӟ我们可以应用osworkflow提供的例子,把bank.xml攑ֈWEB-INF/classes文g夹下Q在文gworkflows.xml中添加一行以使引擎能够识别这个工作流?br />
把工作流集成到应用程?/b>

在徏模及试工作之后,我们卛_以通过下面的几行代码把osworkflow集成到我们的E序中?br />
orkflow wf = new BasicWorkflow(username); 
HashMap inputs = new HashMap();
inputs.put("docTitle", request.getParameter("title"));
wf.initialize("workflowName", 1, inputs);


inputs 哈希表包含了初始工作动作中需要传出的参数,有几个实CWorkflow接口的类Q其中BasicWorkflow是不支持事务的简单实现。在工作? 执行q程中可以在程中调用外部的ҎQ这U方法应该是实现了FunctionProvider接口的方法类。然后我们就可以用以下的方式调用它:

<action id="1" name="Execute business rule">
<pre-functions>
  <function type="class">
   <arg name="class.name">java.net.DroolsExecutorFunction</arg>
   <arg name="ruleBaseName">BusinessRules.drl</arg>
  </function>
</pre-functions>
...


用户可以通过实现Condition接口Q添加自q条g控制。FunctionProvider及Condition接口可以调用工作中的已知方法,q两个接口都可以接受来自于XML描述W文件中的参数?br />
l论

? 一个业务流E抽象成一个工作流的Q务ƈ不容易,需要好的方法和合适的工具Qosworkflow是一个ؓ我们提供了许多可重用l构的理惛_兗希望通过? 本文的阅读,读者能够理解最基本的osworkflow概念。本文论q过E中所采用的方法非常基和简单,但却值得借鉴?/span>

Alex 2006-08-11 18:16 发表评论
]]>
վ֩ģ壺 þһ| ޾Ʒרþþ| ˳77777߲| þþƷһ99| ԻȫƵ߹ۿ| Ƶѹۿ| ߿һ| Ʒվ| ˳վ߹ۿ| һ߲| ҹƬ߹ۿ| ĻѴƬ| ŷһ| 67paoǿ| ޾ƷҹƵ| ŮƵ77777| aŹavۺav| 99þѹƷػ| A޾VƷ| պһ| ˿1ҳ| ĻѴƬa| Ѿþþþþþ| þþþAVվ| Aѹۿ| Ժ޺Ժ߹ۿ| ɫ7777Ƶ߹ۿ| ˳ӰԺ߹ۿ| ձһ| ҹþþþ| ޹ۺϾþ| һëƬȫѲ| avɫ| Ƶ߹ۿ | ޹˳վߵӰ | aëƬëƬѹۿ| 67paoǿ67194ҹ| Ұ߹ۿƵ| ŷ޾Ʒþ| 2019ĻߵӰ | պߵһҳ|