|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?WF中的毛病处置
WF中的毛病是以异步的体例来处置的。在举动中显式或隐式的抛出非常后,事情流运转时引擎会将捕获到的非常先保留到行列中,在以后的工夫再举行处置。这与一样平常的非常处置体例分歧在于,假如一个非常在try{}语句块中被抛出,在响应的catch{}语句块中没法截获该毛病,同时该毛病也不会当即抛出给用户。
非常的原因
以下几种情形大概会发生非常
- 原子事件超时
- 别的范例的事件失利
- 宿主程序经由过程ThrowActivity抛出非常
- 用户代码毛病。当事情流挪用内部的用户代码时,CLR类大概会抛出非常,假如这类非常在用户代码中没有被处置,它们终极会以事情流非常的的表式呈现。
- 别的范例的体系非常,比方保留失利,.net或体系非常,或数据转换毛病等
非常捕捉
毛病处置中,假如抛出非常的举动不克不及处置它,非常会被转交到它的上一级举动处置,直到它被处置为止,不然的话,事情流实例就会被事情流运转时引擎停止。
毛病处置是由FaultHandlerActivity举动来完成的。每一个FaultHandlerActivity举动都与一个.net非常范例相干联,而且它包括一系列的举动,假如毛病范例与某个FaultHandlerActivity联系关系的毛病范例婚配的话,就会实行为个FaultHandlerActivity举动。一个FaultHandlersActivity举动包括0-n个FaultHandlersActivity子举动,FaultHandlersActivity能够是任何复合举动的子举动。
WF中的毛病处置一般被视为一个反向的事情,由于它的方针是当非常产生时,打消举动中不乐成的部分的事情。FaultHandlerActivity的实行完成不克不及被以为是事件举动的乐成完成。事件举动会先被设置成毛病形态,然后是封闭形态。任何兄弟举动一样会被作废。同时,compensation也会成为不成用形态。
在事情流中利用Compensation(上面译为抵偿)
WF中关于已完成事件的抵偿形式,是对事情流中呈现的非常举行处置的历程,而且会在逻辑上打消已完成的事件。
WF抵偿有以下两种情势:
当非常没有被处置的时分,体系隐式的抵偿;
利用Compensate举动举行显式的抵偿。
在事情流中利用静态更新
静态更新使得我们能够在事情流实例运转的时分对它做出改动。做这些改动,多是因为计划时分的忽略,大概是属性的改动,举动的绑定,大概是营业逻辑失掉了增强和完美。假如你必要全部改动事情流,静态更新其实不合用,不然会招致事情流与最后的计划准绳完整分歧。在这类情形下,你应当计划一个新的事情流。
静态更新合用于事情流的单个实例。假如已有事情流实例运转,不克不及对事情流中的举行范例的改动。
你可使用静态更新来干面的事变:
- 改动正在运转的事情流实例;
- 改动运转时举动;
- 改动事情流布局,比方,增加或移除一个举动;
- 改动流程把持;
- 为对一个已存在的举动界说一个新的前提;
- 改动一个PolicyActivity的RuleSet;
- 假如在事情流在已部署和运转后,必要在事情流中增添一个新的营业历程,能够经由过程增加一个新的自界说举动,或InvokeWorkflowActivity举动来完成;
- 增加一个新的EventDrivenActivity来呼应一个新的事务,如一个附加切实其实认步骤;
对一个正在运转的事情流举行静态更新,大概会招致两个分歧的出口点:一个在事情流代码文件内,一个在事情流外,如事情流宿主程序。
事情流中的数据互换
WF通讯服务撑持在事情流服务情况内的数据互换,它使得事情流能够以办法和事务的情势,与内部体系经由过程动静举行通讯。
WF经由过程webserivce通讯来完成事情流之间的数据互换。
在事情流中利用脚色
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。 |
|