﻿<?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>博客园-Windows Workflow Foundation</title><link>http://www.cnblogs.com/foundation/</link><description>  WXWinter  ——  兰竹菊梅★春夏秋冬☆</description><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 08:08:39 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 08:08:39 GMT</pubDate><ttl>60</ttl><item><title>WF4.0 Beta1 异常处理</title><link>http://www.cnblogs.com/foundation/archive/2009/07/05/1517077.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sun, 05 Jul 2009 02:10:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/07/05/1517077.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1517077.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/07/05/1517077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1517077.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1517077.html</trackback:ping><description><![CDATA[<p style="text-align: center"><h1><span style="font-family:宋体">WF4.0 Beta1 异常处理
</span></h1></p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p style="text-align: justify"><a href="#_Toc234551793"><span style="font-size:10pt"><span style="font-family:宋体">1</span>    <span style="font-family:宋体">WF4.0 Beta1 异常处理</span>    1
</span></a></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc234551794"><span style="font-size:10pt">1.1    产生异常    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc234551795"><span style="font-size:10pt">1.2    Throw    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc234551796"><span style="font-size:10pt"><span style="font-family:宋体">1.3</span>    OnUnhandledException 的处理方式    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551797"><span style="font-size:10pt">1.3.1    UnhandledExceptionAction.Cancel    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551798"><span style="font-size:10pt">1.3.2    UnhandledExceptionAction.Abort    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551799"><span style="font-size:10pt">1.3.3    UnhandledExceptionAction.Terminate    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc234551800"><span style="font-size:10pt">1.4    TryCatch 与 Catch&lt;T&gt; 异常捕获    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551801"><span style="font-size:10pt">1.4.1    TryCatch    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551802"><span style="font-size:10pt"><span style="font-family:宋体">1.4.2</span>    Catch&lt;T&gt;    6</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc234551803"><span style="font-size:10pt">1.4.3    例    6</span></a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><h2>产生异常
</h2><p><span style="font-family:宋体">WF的异常可由以下两种方式产生
</span></p><p><span style="font-family:宋体">1.使用[</span>Throw Activity] 抛出异常,
</p><p>
		<img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta11.png" alt=""/>
	</p><p>  使用[Throw]抛出异常,不会使宿主崩溃,异常可被实例的[OnUnhandledException]方法捕获
</p><p>
 </p><p>2.由[Activity]中的代码运行错误产生异常<span style="font-family:宋体">
		</span></p><div style="margin-left: 13pt"><table style="border-collapse:collapse" border="0"><colgroup><col style="width:550px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">     public class myActivity : CodeActivity
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            int v = 1 - 1;
</span></p><p><span style="font-family:宋体; font-size:10pt">            double i = 1 / v;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr></tbody></table></div><p><span style="font-family:宋体"> 代码运行错误产生异常</span>,不会使宿主崩溃,异常可被实例的[OnUnhandledException]方法捕获<span style="font-family:宋体">
		</span></p><p>
 </p><h2>Throw 
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta12.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><p><span style="font-family:宋体">类名:System.Activities.Statements.Throw
</span></p><p><span style="font-family:宋体">基类:CodeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明: 1.工作流中的引发异常,不会使宿主崩溃</span>
	</p><p>      2.如果使用VS调试,不会在[Throw]处断住,
</p><p>      3.异常可被实例的[OnUnhandledException]方法捕获<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">      4.[</span>Throw] 的<span style="font-family:宋体"> [Exception 属性] 用于指定要抛出的异常</span>
	</p><div style="margin-left: 13pt"><table style="border-collapse:collapse" border="0"><colgroup><col style="width:550px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">   public  class myException : System.Exception 
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">      public myException(string ms):base(ms)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">      {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">       }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta13.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">   class Program
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>  
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnCompleted = completed;
</span></p><p> 
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnUnhandledException = unhandledException;
</span></p><p> 
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnAborted = aborted;
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p>            
 </p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.WriteLine("completed");
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">        static void aborted(WorkflowAbortedEventArgs e)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.WriteLine("aborted",e.Reason.Message);
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">        static UnhandledExceptionAction unhandledException(WorkflowUnhandledExceptionEventArgs e)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.WriteLine("unhandledException{0}",e.UnhandledException.Message);
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">           // return UnhandledExceptionAction.Terminate;
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            //return UnhandledExceptionAction.Cancel;
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            return UnhandledExceptionAction.Abort;
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta14.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2>OnUnhandledException 的处理方式<span style="font-family:宋体">
		</span></h2><p><span style="font-family:宋体">WF的异常可以被实例的</span>OnUnhandledException处理.
</p><p>OnUnhandledException的处理结果的以下三种
</p><p>
 </p><h3>UnhandledExceptionAction.Cancel
</h3><p>   1.如果<span style="font-family:宋体">异常出现在[</span>CancellationScope 取消容器]中,当<span style="font-family:宋体">[</span>UnhandledExceptionAction]方法<span style="font-family:宋体">的返回值为[</span>Cancel]时,会调用[CancellationScope]的<span style="font-family:宋体">[CancelHandler]部分
</span></p><p><span style="font-family:宋体">   2.完成[CancelHandler]部分后,流程结束.会调用实例的[</span>OnCompleted ]<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">   3.对[</span>Throw Activity]<span style="font-family:宋体">与[代码运行错误</span>]都有效
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:85px"/><col style="width:907px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">自定义异常</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  public  class myException : System.Exception 
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">      public myException(string ms):base(ms)
</span></p><p><span style="font-family:宋体; font-size:10pt">      {
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta15.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>  
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted = completed;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnUnhandledException = unhandledException;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnAborted = aborted;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p>            
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("completed");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static void aborted(WorkflowAbortedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("aborted",e.Reason.Message);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static UnhandledExceptionAction unhandledException(WorkflowUnhandledExceptionEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("unhandledException{0}",e.UnhandledException.Message);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            return UnhandledExceptionAction.Cancel;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta16.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h3>UnhandledExceptionAction.Abort
</h3><p>   1.当<span style="font-family:宋体">[</span>UnhandledExceptionAction]方法<span style="font-family:宋体">的返回值为[</span>Abort]时,<span style="font-family:宋体">流程终止.会调用实例的[OnAborted</span>]<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">   2.对[</span>Throw Activity]<span style="font-family:宋体">与[代码运行错误</span>]都有效
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>  
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted = completed;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnUnhandledException = unhandledException;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnAborted = aborted;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p>            
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("completed");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static void aborted(WorkflowAbortedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("aborted",e.Reason.Message);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static UnhandledExceptionAction unhandledException(WorkflowUnhandledExceptionEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("unhandledException{0}",e.UnhandledException.Message);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            return UnhandledExceptionAction.Abort;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta17.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h3>UnhandledExceptionAction.Terminate
</h3><p>   1.当<span style="font-family:宋体">[</span>UnhandledExceptionAction]方法<span style="font-family:宋体">的返回值为[</span>Terminate]时,<span style="font-family:宋体">流程结束.会调用实例的[completed</span>]<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">   2.对[</span>Throw Activity]<span style="font-family:宋体">与[代码运行错误</span>]都有效
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>  
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted = completed;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnUnhandledException = unhandledException;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnAborted = aborted;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p>            
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("completed");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static void aborted(WorkflowAbortedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("aborted",e.Reason.Message);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static UnhandledExceptionAction unhandledException(WorkflowUnhandledExceptionEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("unhandledException{0}",e.UnhandledException.Message);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            return UnhandledExceptionAction.Terminate;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta18.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p>
 </p><h2>TryCatch 与 Catch&lt;T&gt; 异常捕获
</h2><p><span style="font-family:宋体">对[</span>Throw Activity]<span style="font-family:宋体">与[代码运行错误</span>]都有效
</p><p>如果异常被捕获,就不会被抛出,流程会继续向下执行
</p><p>
 </p><h3>TryCatch
</h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta19.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.TryCatch
</span></p><p><span style="font-family:宋体">基类:NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明: 1. [TryCatch] 类似于 C# 中的 Try  catch 构造, 执行 Try 块中出现异常时将执行与该异常最匹配的 Catch 块 ,找到不匹配的 catch 时会将捕获的异常继续抛出,工作流将被终止
</span></p><p><span style="font-family:宋体">      2. [TryCatch] 有一个  [Try],用于放置要执行的[Activity]
</span></p><p><span style="font-family:宋体">      3. [TryCatch] 有一个  [Catches],用于放置捕获异常的[</span>Catch&lt;T&gt;],如果<span style="font-family:宋体"> [TryCatch]中没的[</span>Catch&lt;T&gt;],<span style="font-family:宋体">异常将会被直接抛出
</span></p><p><span style="font-family:宋体">      3. [TryCatch] 有一个 [Finally] 块在 [Try] ,[Catchs]完成后执行。无论是否有异常,都会执行 [Finally]
</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta110.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h3> Catch&lt;T&gt;<span style="font-family:宋体">
		</span></h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta111.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.</span>Catch&lt;T&gt;<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">基类:</span>Catch:object<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明: 1.</span> [Catch&lt;T&gt;] <span style="font-family:宋体">只能在 [TryCatch] 内部的[Catches]中使用
</span></p><p><span style="font-family:宋体">      2.[</span>Catch&lt;T&gt;] <span style="font-family:宋体">表示要在[ TryCatch ]中使用的一个 catch 块。 
</span></p><p><span style="font-family:宋体">      3.如果在执行[Try] 块中出现异常时，[TryCatch] 会查找匹配的[ Catch]的异常的类型。
</span></p><p><span style="font-family:宋体">      4.使用[</span>Catch&lt;T&gt;]时,要指定要用其捕获的异常类型,<span style="font-family:宋体">可以使用[System.Exception]捕获所有异常
</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta112.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h3>例
</h3><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:85px"/><col style="width:907px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">自定义异常</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  public  class myException : System.Exception 
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">      public myException(string ms):base(ms)
</span></p><p><span style="font-family:宋体; font-size:10pt">      {
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta113.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>  
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted = completed;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnUnhandledException = unhandledException;
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnAborted = aborted;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p>            
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("completed");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static void aborted(WorkflowAbortedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("aborted",e.Reason.Message);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        static UnhandledExceptionAction unhandledException(WorkflowUnhandledExceptionEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("unhandledException{0}",e.UnhandledException.Message);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            return UnhandledExceptionAction.Abort;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta114.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">没有异常的结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta115.png" alt=""/><img src="http://images.cnblogs.com/cnblogs_com/foundation/070509_0209_WF40Beta116.png" alt=""/></p></td></tr></tbody></table></div><p><span style="font-family:宋体">
		</span> </p><img src ="http://www.cnblogs.com/foundation/aggbug/1517077.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 集合操作</title><link>http://www.cnblogs.com/foundation/archive/2009/06/30/1513851.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 30 Jun 2009 04:24:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/30/1513851.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1513851.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/30/1513851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1513851.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1513851.html</trackback:ping><description><![CDATA[<p>
 </p><p style="text-align: center"><h1><span style="font-family:宋体">WF4.0 Beta1 集合操作
</span></h1></p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p><a href="#_Toc234127908"><span style="font-family:宋体">1</span><span style="font-size:10pt">    </span><span style="font-family:宋体">WF4.0 Beta1 集合操作</span>    1<span style="font-size:10pt">
			</span></a></p><p style="margin-left: 11pt"><a href="#_Toc234127909">1.1<span style="font-size:10pt">    </span>建议使用的集合    1</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 22pt"><a href="#_Toc234127910">1.1.1<span style="font-size:10pt">    </span>SortedSet&lt;T&gt;集合    1</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 22pt"><a href="#_Toc234127911">1.1.2<span style="font-size:10pt">    </span>SortedList&lt;K,V&gt; 集合    2</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127912">1.2<span style="font-size:10pt">    </span>AddtoCollection 添加到集合    2</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127913">1.3<span style="font-size:10pt">    </span>RemoveFromCollection&lt;T&gt; 从集合移出    3</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127914">1.4<span style="font-size:10pt">    </span>ExistsInCollection&lt;T&gt;  在集合中存在    4</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127915">1.5<span style="font-size:10pt">    </span>ClearCollection&lt;T&gt; 清除集合    4</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127916"><span style="font-family:宋体">1.6</span><span style="font-size:10pt">    </span>例:查找,移除集合中的元素    5</a><span style="font-size:10pt">
		</span></p><p style="margin-left: 11pt"><a href="#_Toc234127917">1.7<span style="font-size:10pt">    </span>例:复杂对象集合添加元素,清除集合中的元素    6</a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><h2>建议使用的集合
</h2><h3>SortedSet&lt;T&gt;集合
</h3><p>  System.Collections.Generic.SortedSet&lt;T&gt;
</p><p>  将忽略添加到集合中的重复项,如果是复杂对像,要实现SortedSet的接口
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt"> class Program
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Collections.Generic.SortedSet&lt;myData&gt; list = new System.Collections.Generic.SortedSet&lt;myData&gt;(new myDataComparer());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            list.Add(new myData() { myValue = "wxd" });
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            list.Add(new myData() { myValue = "lzm" });
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            list.Add(new myData() { myValue = "wxd" });
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            foreach (var v in list)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">                System.Console.WriteLine(v.myValue);
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.Read();
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    public class myData
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        public string myValue
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        { set; get; }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">    public class myDataComparer : System.Collections.Generic.IComparer&lt;myData&gt;
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        public int Compare(myData x, myData y)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            if (x.myValue == y.myValue)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">                return 0;
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            else
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">                return 1;
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>WF中的使用
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta11.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta12.png" alt=""/>
	</p><p>
 </p><h3>SortedList&lt;K,V&gt; 集合
</h3><p>  System.Collections.Generic.SortedList&lt;K,V&gt;
</p><p>  键值对集合,如果的重复的key,会报错
</p><p>
 </p><p>集合
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta13.png" alt=""/>
	</p><p>键值对
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta14.png" alt=""/>
	</p><p>
 </p><h2>AddtoCollection 添加到集合
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta15.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.AddToCollection&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类: CodeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明:1.[</span>AddtoCollection]可以将一个项添加到集合中,在使用<span style="font-family:宋体">[</span>AddtoCollection]时,要先指定要操作集合的类型
</p><p>
		<img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta16.png" alt=""/>
	</p><p>
		<span style="font-family:宋体">2.[</span>AddtoCollection]的[Collection]属性用于指定要操作的集合
</p><p>    3.<span style="font-family:宋体">[</span>AddtoCollection]的[Item]属性用于指定要添加到集合中的项<span style="font-family:宋体">
		</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta17.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><p><span style="color:red; font-family:宋体; font-size:15pt">不知为何,:可用这种方式添加,但不能添加多个:
</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta18.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h2>RemoveFromCollection&lt;T&gt; 从集合移出
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta19.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.RemoveFromCollection&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类: CodeActivity&lt;bool&gt;
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明:1.[</span>RemoveFromCollection]可以<span style="font-family:宋体">从集合中移除一项</span>,在使用<span style="font-family:宋体">[</span>RemoveFromCollection]时,要先指定要操作集合的类型<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">
			<img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta110.png" alt=""/>
		</span></p><p><span style="font-family:宋体">    2.[</span>RemoveFromCollection]的[Collection]属性用于指定要操作的集合
</p><p>    3.<span style="font-family:宋体">[</span>RemoveFromCollection]的[Item]属性用于指定要添加到集合中的项
</p><p>    4.<span style="font-family:宋体">[</span>RemoveFromCollection]的[Result]属性表示操作结果,如果操作成功返回[True],如果操作不成功,返回[False]<span style="font-family:宋体">
		</span></p><p>
 </p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta111.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h2>ExistsInCollection&lt;T&gt;  在集合中存在
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta112.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.ExistsInCollection&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类: CodeActivity&lt;bool&gt;
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[</span>ExistsInCollection]可以<span style="font-family:宋体">验证在集合中是否存在指定项</span>,在使用<span style="font-family:宋体">[</span>ExistsInCollection]时,要先指定要操作集合的类型<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">
			<img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta113.png" alt=""/>
		</span></p><p><span style="font-family:宋体">    2.[</span>ExistsInCollection]的[Collection]属性用于指定要操作的集合
</p><p>    3.<span style="font-family:宋体">[</span>ExistsInCollection的[Item]属性用于指定要查找的项
</p><p>    4.<span style="font-family:宋体">[</span>ExistsInCollection]的[Result]属性表示查找结果,如果找到返回[True],没找到,返回[False]<span style="font-family:宋体">
		</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta114.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h2>ClearCollection&lt;T&gt; 清除集合
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta115.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名:System.Activities.Statements.ClearCollection&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类: CodeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[</span>ExistsInCollection]可<span style="font-family:宋体">清除集合的所有项</span>,在使用<span style="font-family:宋体">[</span>ExistsInCollection]时,要先指定要操作集合的类型<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">
			<img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta116.png" alt=""/>
		</span></p><p><span style="font-family:宋体"> 2.[</span>ClearCollection]的[Collection]属性用于指定要操作的集合
</p><p><span style="font-family:宋体">
			<img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta117.png" alt=""/>
		</span></p><h2>例:查找,移除集合中的元素<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta118.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h2>例:复杂对象集合添加元素,清除集合中的元素
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:75px"/><col style="width:992px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">数据类</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">   public  class myData
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">       public string myValue
</span></p><p><span style="font-family:宋体; font-size:10pt">       { set; get; }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">   public class myDataComparer : System.Collections.Generic.IComparer&lt;myData&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">   {
</span></p><p><span style="font-family:宋体; font-size:10pt">       public int Compare(myData x, myData y)
</span></p><p><span style="font-family:宋体; font-size:10pt">       {
</span></p><p><span style="font-family:宋体; font-size:10pt">           if (x.myValue == y.myValue)
</span></p><p><span style="font-family:宋体; font-size:10pt">           {
</span></p><p><span style="font-family:宋体; font-size:10pt">               return 0;
</span></p><p><span style="font-family:宋体; font-size:10pt">           }
</span></p><p><span style="font-family:宋体; font-size:10pt">           else
</span></p><p><span style="font-family:宋体; font-size:10pt">           {
</span></p><p><span style="font-family:宋体; font-size:10pt">               return 1;
</span></p><p><span style="font-family:宋体; font-size:10pt">           }
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p><span style="font-family:宋体; font-size:10pt">   }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta119.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/063009_0423_WF40Beta120.png" alt=""/></p></td></tr></tbody></table></div><p><span style="font-family:宋体">
		</span> </p><img src ="http://www.cnblogs.com/foundation/aggbug/1513851.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 调用PowerShell</title><link>http://www.cnblogs.com/foundation/archive/2009/06/28/1512542.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sun, 28 Jun 2009 02:43:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/28/1512542.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1512542.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/28/1512542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1512542.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1512542.html</trackback:ping><description><![CDATA[<p>WF4.0 Beta1 调用PowerShell
</p><p>需要系统中安装PowerShell,本例中我使用的是PowerShell 2.0
</p><p>
 </p><p>本例使用的PowerShell命令介绍
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">得到系统进程
</span></p><p><span style="font-size:10pt">get-process </span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062809_0242_WF40Beta1P1.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2> InvokePowerShell
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062809_0242_WF40Beta1P2.png" alt=""/>
	</p><p><span style="font-family:宋体">类名:System.Management.Automation.Activities.InvokePowerShell
</span></p><p><span style="font-family:宋体">基类:
</span></p><p><span style="font-family:宋体">文件: System.Activities.Extended.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明:1.调用 PowerShell Cmdlet和脚本。
</span></p><p><span style="font-family:宋体">     2.可以将参数和输入的对象传递给 cmdlet
</span></p><p>
 </p><p>
 </p><h2>InvokePowerShell&lt;T&gt;
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062809_0242_WF40Beta1P3.png" alt=""/>
	</p><p><span style="font-family:宋体">类名:System.Management.Automation.Activities.InvokePowerShell&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类:
</span></p><p><span style="font-family:宋体">文件: System.Activities.Extended.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明:1.可得到</span> PowerShell Cmdlet 的结果输出
</p><p>     2.其他使用方式同<span style="font-family:宋体">InvokePowerShell</span>
	</p><p>
 </p><h3>例:使用InvokePowerShell&lt;T&gt;得到系统进程,并打印在屏目上
</h3><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:24px"/><col style="width:544px"/></colgroup><tbody valign="top"><tr><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062809_0242_WF40Beta1P4.png" alt=""/></p></td></tr><tr><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>
 </p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p>           
 </p><p><span style="font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062809_0242_WF40Beta1P5.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1512542.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>System.IAsyncResult 接口</title><link>http://www.cnblogs.com/foundation/archive/2009/06/26/1511444.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 26 Jun 2009 02:19:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/26/1511444.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1511444.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/26/1511444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1511444.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1511444.html</trackback:ping><description><![CDATA[<p>System.IAsyncResult 接口
</p><p>
&#160;</p><p>System.IAsyncResult接口编写异步方法中常用的一个接口,我在WF的InvokeMethod , WorkflowInvoker 例子中也用到了这个接口.由于有些朋友对System.IAsyncResult接口不了解,我特别写了一个实现System.IAsyncResult 接口的例子
</p><p>
&#160;</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">class</span>
								<span style="color:#2b91af">myAsyncResult</span> : System.<span style="color:#2b91af">IAsyncResult
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">object</span> AsyncState
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">get</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">set</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">        System.Threading.<span style="color:#2b91af">WaitHandle</span> asyncWaitHandle = <span style="color:blue">new</span>
								<span style="color:#2b91af">AutoResetEvent</span>(<span style="color:blue">false</span>);
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span> System.Threading.<span style="color:#2b91af">WaitHandle</span> AsyncWaitHandle
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">get</span> { <span style="color:blue">return</span> asyncWaitHandle; }
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">bool</span> CompletedSynchronously
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">get</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">set</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">bool</span> IsCompleted
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">get</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">set</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">int</span> _myValue;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">int</span> myValue
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">set
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">            { _myValue = <span style="color:blue">value</span>; }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">get
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">            {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:green">// if (IsCompleted)
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">                {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">return</span> _myValue;
</span></p><p><span style="font-family:新宋体; font-size:9pt">                }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            }
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">class</span>
								<span style="color:#2b91af">myClass
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">AsyncCallback</span> asyncCallback;
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myAsyncResult</span> asyncResult;
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span> myClass()
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">            asyncCallback = <span style="color:blue">new</span>
								<span style="color:#2b91af">AsyncCallback</span>(callback);
</span></p><p><span style="font-family:新宋体; font-size:9pt">            asyncResult = <span style="color:blue">new</span>
								<span style="color:#2b91af">myAsyncResult</span>();
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">void</span> callback(<span style="color:#2b91af">IAsyncResult</span> asyncResult)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myAsyncResult</span> temp = asyncResult <span style="color:blue">as</span>
								<span style="color:#2b91af">myAsyncResult</span>;
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            ((<span style="color:#2b91af">AutoResetEvent</span>)temp.AsyncWaitHandle).Set();
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:#2b91af">myAsyncResult</span> myAsyncMethod(<span style="color:blue">int</span> value, <span style="color:blue">object</span> asyncState)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"run myAsyncMethod"</span>);
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">this</span>.asyncResult.AsyncState = asyncState;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">this</span>.asyncResult.myValue = value;
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Thread</span> t = <span style="color:blue">new</span>
								<span style="color:#2b91af">Thread</span>(<span style="color:blue">new</span>
								<span style="color:#2b91af">ThreadStart</span>(myThread));
</span></p><p><span style="font-family:新宋体; font-size:9pt">            t.Start();
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">return</span>
								<span style="color:blue">this</span>.asyncResult;
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">void</span> myThread()
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"begin myThread"</span>);
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">for</span> (<span style="color:blue">int</span> i = 0; i &lt; 5; i++)
</span></p><p><span style="font-family:新宋体; font-size:9pt">            {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Console</span>.WriteLine(i);
</span></p><p><span style="font-family:新宋体; font-size:9pt">                asyncResult.myValue = asyncResult.myValue + i;
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Thread</span>.Sleep(500);
</span></p><p><span style="font-family:新宋体; font-size:9pt">            }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"end myThread"</span>);
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            asyncCallback(<span style="color:blue">this</span>.asyncResult);
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p>
&#160;</p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">class</span>
								<span style="color:#2b91af">Program
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">static</span>
								<span style="color:blue">void</span> Main(<span style="color:blue">string</span>[] args)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myClass</span> obj = <span style="color:blue">new</span>
								<span style="color:#2b91af">myClass</span>();
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myAsyncResult</span> r = obj.myAsyncMethod(100, <span style="color:blue">null</span>);
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            r.AsyncWaitHandle.WaitOne();
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            System.<span style="color:#2b91af">Console</span>.WriteLine(r.myValue);
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            System.<span style="color:#2b91af">Console</span>.WriteLine(<span style="color:#a31515">"完成"</span>);
</span></p><p>
&#160;</p><p><span style="font-family:新宋体; font-size:9pt">            System.<span style="color:#2b91af">Console</span>.Read();
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">    }
</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062609_0218_SystemIAsyn1.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p> <img src ="http://www.cnblogs.com/foundation/aggbug/1511444.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 WorkflowInvoker</title><link>http://www.cnblogs.com/foundation/archive/2009/06/25/1510971.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Thu, 25 Jun 2009 06:38:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/25/1510971.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1510971.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/25/1510971.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1510971.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1510971.html</trackback:ping><description><![CDATA[<h1> WorkflowInvoker
</h1><h2>使用 WorkflowInvoker.Invoke静态方法
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">public static IDictionary&lt;string, object&gt; Invoke(WorkflowElement workflow);
</span></p><p>    
 </p><p><span style="font-size:10pt">public static IDictionary&lt;string, object&gt; Invoke(WorkflowElement workflow, IDictionary&lt;string, object&gt; inputs);
</span></p><p>      
 </p><p><span style="font-size:10pt">public static IDictionary&lt;string, object&gt; Invoke(WorkflowElement workflow, TimeSpan timeout);
</span></p><p>
 </p><p><span style="font-size:10pt">public static IDictionary&lt;string, object&gt; Invoke(WorkflowElement workflow, IDictionary&lt;string, object&gt; inputs, TimeSpan timeout);
</span></p><p><span style="font-size:10pt">
							</span> </p></td></tr></tbody></table></div><p>
 </p><h3>例1:传入参数,并得到结果
</h3><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:50px"/><col style="width:518px"/></colgroup><tbody valign="top"><tr><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">public sealed class Add : CodeActivity&lt;int&gt;
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; X { get; set; }
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; Y { get; set; }
</span></p><p>
 </p><p><span style="font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            int x = X.Get(context);
</span></p><p><span style="font-size:10pt">            int y = Y.Get(context);
</span></p><p>
 </p><p><span style="font-size:10pt">            context.SetValue(base.Result, x + y);
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr><tr><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">调用</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p> 
 </p><p><span style="font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-size:10pt">        {
</span></p><p>        
 </p><p><span style="font-size:10pt">            var p=  new Dictionary&lt;string, object&gt; { { "X", 1 }, { "Y", 2 }};
</span></p><p>           
 </p><p><span style="font-size:10pt">            IDictionary&lt;string, object&gt; results = WorkflowInvoker.Invoke(new Add(), p);
</span></p><p><span style="font-size:10pt">            Console.WriteLine( results["Result"]);
</span></p><p>           
 </p><p><span style="font-size:10pt">            Console.ReadLine();
</span></p><p><span style="font-size:10pt">        }</span></p></td></tr></tbody></table></div><p>
 </p><h2>使用 WorkflowInvoker实例
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">       public WorkflowInvoker(WorkflowElement workflow);
</span></p><p>
 </p><p><span style="font-size:10pt">       public Collection&lt;object&gt; Extensions { get; }
</span></p><p>
 </p><p><span style="font-size:10pt">       public event EventHandler&lt;InvokeCompletedEventArgs&gt; InvokeCompleted;
</span></p><p>
 </p><p><span style="font-size:10pt">        public IAsyncResult BeginInvoke(AsyncCallback callback, object state);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public IAsyncResult BeginInvoke(IDictionary&lt;string, object&gt; inputs, AsyncCallback callback, object state);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public IAsyncResult BeginInvoke(TimeSpan timeout, AsyncCallback callback, object state);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public IAsyncResult BeginInvoke(IDictionary&lt;string, object&gt; inputs, TimeSpan timeout, AsyncCallback callback, object state);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public IDictionary&lt;string, object&gt; EndInvoke(IAsyncResult result);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public IDictionary&lt;string, object&gt; Invoke();
</span></p><p>       
 </p><p><span style="font-size:10pt">        public IDictionary&lt;string, object&gt; Invoke(IDictionary&lt;string, object&gt; inputs);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public IDictionary&lt;string, object&gt; Invoke(TimeSpan timeout);      
</span></p><p>             
 </p><p><span style="font-size:10pt">        public IDictionary&lt;string, object&gt; Invoke(IDictionary&lt;string, object&gt; inputs, TimeSpan timeout);        
</span></p><p>            
 </p><p><span style="font-size:10pt">        public void InvokeAsync();
</span></p><p>      
 </p><p><span style="font-size:10pt">        public void InvokeAsync(IDictionary&lt;string, object&gt; inputs);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public void InvokeAsync(object userState);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public void InvokeAsync(TimeSpan timeout);
</span></p><p>        
 </p><p><span style="font-size:10pt">        public void InvokeAsync(IDictionary&lt;string, object&gt; inputs, object userState);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public void InvokeAsync(IDictionary&lt;string, object&gt; inputs, TimeSpan timeout);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public void InvokeAsync(TimeSpan timeout, object userState);
</span></p><p>       
 </p><p><span style="font-size:10pt">        public void InvokeAsync(IDictionary&lt;string, object&gt; inputs, TimeSpan timeout, object userState);
</span></p></td></tr></tbody></table></div><p>
 </p><h3>例1:InvokeAsync方法与invokeCompleted事件
</h3><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:38px"/><col style="width:530px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">public sealed class Add : CodeActivity&lt;int&gt;
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; X { get; set; }
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; Y { get; set; }
</span></p><p>
 </p><p><span style="font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            int x = X.Get(context);
</span></p><p><span style="font-size:10pt">            int y = Y.Get(context);
</span></p><p>
 </p><p><span style="font-size:10pt">            context.SetValue(base.Result, x + y);
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">调用</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">         static void Main(string[] args)
</span></p><p><span style="font-size:10pt">        {
</span></p><p>
 </p><p><span style="font-size:10pt">            WorkflowInvoker myInvoker = new WorkflowInvoker(new Add());
</span></p><p>
 </p><p><span style="font-size:10pt">            var p =  new Dictionary&lt;string, object&gt; { { "X", 1 }, { "Y", 2 }};
</span></p><p>
 </p><p><span style="font-size:10pt">            myInvoker.InvokeCompleted += new EventHandler&lt;InvokeCompletedEventArgs&gt;(myInvoker_InvokeCompleted);
</span></p><p>
 </p><p><span style="font-size:10pt">            myInvoker.InvokeAsync(p);
</span></p><p>           
 </p><p><span style="font-size:10pt">            Console.ReadLine();
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        static void myInvoker_InvokeCompleted(object sender, InvokeCompletedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            Console.WriteLine(e.Outputs["Result"]);
</span></p><p><span style="font-size:10pt">        }</span></p></td></tr></tbody></table></div><p>
 </p><h3>例2:BeginInvoke方法与EndInvoke方法
</h3><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:49px"/><col style="width:519px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">public sealed class Add : CodeActivity&lt;int&gt;
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; X { get; set; }
</span></p><p><span style="font-size:10pt">        public InArgument&lt;int&gt; Y { get; set; }
</span></p><p>
 </p><p><span style="font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            int x = X.Get(context);
</span></p><p><span style="font-size:10pt">            int y = Y.Get(context);
</span></p><p>
 </p><p><span style="font-size:10pt">            context.SetValue(base.Result, x + y);
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">调用</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-size:10pt">        {
</span></p><p>
 </p><p><span style="font-size:10pt">            WorkflowInvoker myInvoker = new WorkflowInvoker(new Add());
</span></p><p>
 </p><p><span style="font-size:10pt">            var p =  new Dictionary&lt;string, object&gt; { { "X", 1 }, { "Y", 2 }};
</span></p><p>   
 </p><p><span style="font-size:10pt">            IAsyncResult ir=  myInvoker.BeginInvoke(p, new AsyncCallback(callback), myInvoker);
</span></p><p>
 </p><p><span style="font-size:10pt">            var r = myInvoker.EndInvoke(ir);
</span></p><p>
 </p><p><span style="font-size:10pt">            System.Console.WriteLine(r["Result"]);
</span></p><p>           
 </p><p><span style="font-size:10pt">            Console.ReadLine();
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p>
 </p><p>
 </p><p><span style="font-size:10pt">       static  void callback(IAsyncResult asyncResult)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">           System.Threading.ManualResetEvent mr = asyncResult.AsyncWaitHandle as System.Threading.ManualResetEvent;
</span></p><p>
 </p><p><span style="font-size:10pt">           System.Console.WriteLine("callback");
</span></p><p><span style="font-size:10pt">        }</span></p></td></tr></tbody></table></div><p>
 </p><p>后面我会写一组
</p><p>用WorkflowInvoker实现调用子流程的例
</p><p>与
</p><p>用WorkflowInvoker以回溯方做流程全路径测试的例子
</p><img src ="http://www.cnblogs.com/foundation/aggbug/1510971.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod&lt;T&gt; 使用</title><link>http://www.cnblogs.com/foundation/archive/2009/06/23/1508775.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 22 Jun 2009 17:17:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/23/1508775.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1508775.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/23/1508775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1508775.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1508775.html</trackback:ping><description><![CDATA[<p><span style="font-family:宋体">WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod&lt;T&gt; 使用
</span></p><h2><span style="font-family:宋体">InvokeMethod 调用方法
</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced1.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.InvokeMethod
</span></p><p><span style="font-family:宋体">基类: CodeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明:1. 可以使用类方式, 对象方式调用方法
</span></p><p><span style="font-family:宋体">     2. 可以调用实例方法,静态方法
</span></p><p><span style="font-family:宋体">     3. 支持参数数组
</span></p><p><span style="font-family:宋体">     4. 支持方法泛型参数
</span></p><p><span style="font-family:宋体">     5. 支持</span>out<span style="font-family:宋体">参数,ref 参数
</span></p><p><span style="font-family:宋体">     6. 支持等待异步方法调用完成
</span></p><h3>以类方式调用方法
</h3><p><span style="font-family:宋体">这种方式,即使在同一个流程中,每调用一次,也会重新创建一次所要调用的类
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1062px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>
 </p><ul><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">TargetType 属性 : 方法的类名(浏览方式),不能与TargetObject共存
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">MethotName 属性 : 方法名 (字串方式)
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Parameters  属性 : 方法的参数,按方法参数顺序,可以绑定到流程的参数上
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Result 属性 : 方法的返回值,可以绑定到流程的参数上
</span></div></li></ul></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced2.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><ul><li><h4><span style="font-family:宋体">例
</span></h4><p><span style="font-family:宋体">1.定义[myClass]与[myMethod]方法,实现加法功能
</span></p><p><span style="font-family:宋体">2.定义In参数[inputV1,inputV2]与Out参数[value]
</span></p><p><span style="font-family:宋体">3.启动流程时传入[inputV1,inputV2]的值,
</span></p><p><span style="font-family:宋体">4.在流程中用[InvokeMethod]实现对[myClass.myMethod]的调用
</span></p><p><span style="font-family:宋体">5.用[WriteLine]的打印[value]值
</span></p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:41px"/><col style="width:527px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法类</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">namespace myArgumentsTest
</span></p><p><span style="font-family:宋体; font-size:10pt">{
</span></p><p><span style="font-family:宋体; font-size:10pt">   public class myClass
</span></p><p><span style="font-family:宋体; font-size:10pt">   {
</span></p><p><span style="font-family:宋体; font-size:10pt">       public int myMethod(int v1, int v2)
</span></p><p><span style="font-family:宋体; font-size:10pt">       {
</span></p><p><span style="font-family:宋体; font-size:10pt">           return v1 + v2;
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }
</span></p><p><span style="font-family:宋体; font-size:10pt">}</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="myArgumentsTest.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:m="clr-namespace:myArgumentsTest;assembly=myArgumentsTest" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">    &lt;x:Property Name="inputV1" Type="p:InArgument(x:Int32)" /&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">    &lt;x:Property Name="inputV2" Type="p:InArgument(x:Int32)" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt"><span style="color:red">    &lt;x:Property Name="value" Type="p:OutArgument(x:Int32)" /&gt;</span>
									</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
										<span style="color:red"> &lt;p:InvokeMethod MethodName="myMethod" TargetType="m:myClass"&gt;
</span></span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InvokeMethod.Result&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">        &lt;p:OutArgument x:TypeArguments="x:Int32"&gt;[value]&lt;/p:OutArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;/p:InvokeMethod.Result&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InArgument x:TypeArguments="x:Int32"&gt;[inputV1]&lt;/p:InArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InArgument x:TypeArguments="x:Int32"&gt;[inputV2]&lt;/p:InArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">    &lt;/p:InvokeMethod&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine&gt;[value.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;();
</span></p><p>          
 </p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("inputV1", 123);
</span></p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("inputV2", 456);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(),inputCollection);
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }
</span></p><p><span style="font-family:宋体; font-size:10pt">}</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced3.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p><h3>以对象方式调用实例方法
</h3></p><p><span style="font-family:宋体">这种方式,每次,都使用指定的对象调用,不会创建新对象
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1062px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>
 </p><ul><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">TargetObject 属性 : 对象名,绑定到流程的参数上(浏览方式),不能与TargetType共存
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">MethotName 属性 : 方法名 (字串方式)
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Parameters  属性 : 方法的参数,按方法参数顺序,可以绑定到流程的参数上
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Result 属性 : 方法的返回值,可以绑定到流程的参数上
</span></div></li></ul></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced4.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p></li><li><h4><span style="font-family:宋体">例
</span></h4><p>
 </p><p><span style="font-family:宋体">1.定义[myClass]与[myMethod]方法,实现加法功能
</span></p><p><span style="font-family:宋体">2.定义In参数[inputV1,inputV2]与Out参数[value]
</span></p><p><span style="font-family:宋体">3.定义In参数[callObject],类型为[myClass]
</span></p><p><span style="font-family:宋体">4.在外部实现一个[myClass]的子类[a],并[override myMethod]方法,本步只是为了测试是否兼容这种方式
</span></p><p><span style="font-family:宋体">5.启动流程时传入[inputV1,inputV2,callObject]的值,
</span></p><p><span style="font-family:宋体">6.在流程中用[InvokeMethod]实现对callObject]对象的[myMethod]调用
</span></p><p><span style="font-family:宋体">7.用[WriteLine]的打印[value]值
</span></p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:49px"/><col style="width:519px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法基类</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">namespace myArgumentsTest
</span></p><p><span style="font-family:宋体; font-size:10pt">{
</span></p><p><span style="font-family:宋体; font-size:10pt">   public class myClass
</span></p><p><span style="font-family:宋体; font-size:10pt">   {
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">       public virtual  int myMethod(int v1, int v2)
</span></p><p><span style="font-family:宋体; font-size:10pt">       {
</span></p><p><span style="font-family:宋体; font-size:10pt">           return v1 + v2;
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }
</span></p><p><span style="font-family:宋体; font-size:10pt">}</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable=""
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="myArgumentsTest.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:m="clr-namespace:myArgumentsTest;assembly=myArgumentsTest" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;x:Property Name="inputV1" Type="p:InArgument(x:Int32)" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;x:Property Name="inputV2" Type="p:InArgument(x:Int32)" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;x:Property Name="value" Type="p:OutArgument(x:Int32)" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
										<span style="color:red">&lt;x:Property Name="callObject" Type="p:InArgument(m:myClass)" /&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">    &lt;p:InvokeMethod MethodName="myMethod"&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InvokeMethod.Result&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">        &lt;p:OutArgument x:TypeArguments="x:Int32"&gt;[value]&lt;/p:OutArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;/p:InvokeMethod.Result&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InvokeMethod.TargetObject&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">        &lt;p:InArgument x:TypeArguments="m:myClass"&gt;[callObject]&lt;/p:InArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;/p:InvokeMethod.TargetObject&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InArgument x:TypeArguments="x:Int32"&gt;[inputV1]&lt;/p:InArgument&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;p:InArgument x:TypeArguments="x:Int32"&gt;[inputV2]&lt;/p:InArgument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt"><span style="color:red">    &lt;/p:InvokeMethod&gt;</span>
									</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine&gt;[value.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr style="height: 136px"><td rowspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    public class a : myClass
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        public override int myMethod(int v1, int v2)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            return (v1 + v2) * 10;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }  </span></p></td></tr><tr style="height: 372px"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;();
</span></p><p>          
 </p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("inputV1", 123);
</span></p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("inputV2", 456);
</span></p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("callObject", new a());
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(),inputCollection);
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced5.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p><h3>调用静态方法
</h3></p><p><span style="font-family:宋体">与[以类方式调用方法</span>]的操作方式一样<span style="font-family:宋体">
				</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1062px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>
 </p><ul><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">TargetType 属性 : 方法的类名(浏览方式),不能与TargetObject共存
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">MethotName 属性 : 方法名 (字串方式)
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Parameters  属性 : 方法的参数,按方法参数顺序,可以绑定到流程的参数上
</span></div></li><li><div style="text-align: justify"><span style="font-family:宋体; font-size:10pt">Result 属性 : 方法的返回值,可以绑定到流程的参数上
</span></div></li></ul></td></tr></tbody></table></div><li><h4><span style="font-family:宋体">例
</span></h4><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:85px"/><col style="width:936px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    public class myClass
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        public myClass()
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("new");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        public <span style="color:red">static</span> int add(int v1, int v2)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            return v1 + v2;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced6.png" alt=""/></p></td></tr><tr style="height: 130px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>            
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed"); };
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced7.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p><h3>调用out参数方法
</h3></p><p>设置<span style="font-family:宋体">[Parameters] 集合,[Direction] 设为 [Out]</span>
				</p><p>
 </p></li><li><h4><span style="font-family:宋体">例
</span></h4><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:23px"/><col style="width:545px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">调用方法</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">    public class myClass
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        public void myMethod(string v1,out string v2)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            v2 = v1 + "wxd";
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced8.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed"); };
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced9.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p><h3>调用params参数方法
</h3></p><p>设置<span style="font-family:宋体">[Parameters] 集合,以指方法的参数</span>
				</p><p>
 </p></li><li><h4><span style="font-family:宋体">例
</span></h4><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:24px"/><col style="width:544px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">    public class myClass
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        public void myMethod(params string[] list)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p>           
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            for (int i = 0; i &lt; list.Length; i++)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">                Console.WriteLine(list[i]);
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced10.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed"); };
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced11.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p><h3>调用范型方法
</h3></p><p><span style="font-family:宋体">[InvokeMethod ]可以调用范型方法</span>,设置<span style="font-family:宋体">[GenericTypeArguments]集合,以指定范型方法的范型参数</span>
				</p><p>设置<span style="font-family:宋体">[Parameters] 集合,以指方法的参数</span>
				</p></li><li><h4><span style="font-family:宋体">例
</span></h4><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:24px"/><col style="width:544px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">    public class myClass
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        public  void myGenericMethod&lt;T1, T2&gt;(T1 param1, T2 param2)
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">        {
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            Console.WriteLine("T1 Type: {0} , param1 Type :{1} , param1 :{2}", typeof(T1), param1.GetType(), param1.ToString());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            Console.WriteLine("T2 Type: {0} , param2 Type :{1} , param2 :{2}", typeof(T2), param2.GetType(), param2.ToString());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">         }
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced12.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:Times New Roman; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed"); };
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:Times New Roman; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced13.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p><h3>等待调用的方法中的线程
</h3></p><p><span style="font-family:宋体">当[InvokeMethod]所调用的方法中的线程时,可以将[InvokeMethod]的[RunAsynchronously]属性设为[True]以实现等待调用的方法中的线程完成.
</span></p><p><span style="font-family:宋体">要使[RunAsynchronously]属性有效,需要用如下方式设计方法
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">1.为要实现该功能的方法添加如下两个方法
</span></p><p><span style="font-family:宋体; font-size:10pt"> [IAsyncResult Begin<span style="color:red">[原使方法]</span>  (<span style="color:red">[原使方法参数]</span>, AsyncCallback callback, object asyncState)]
</span></p><p><span style="font-family:宋体; font-size:10pt"> void End<span style="color:red">[原使方法]</span> (IAsyncResult r)
</span></p><p><span style="font-family:宋体"><span style="font-size:10pt">2.当</span><span style="font-size:10pt">[RunAsynchronously]属性设为[False]时,</span><span style="font-size:10pt"> [InvokeMethod]调用<span style="color:red">[原使方法]
</span></span></span></p><p><span style="font-family:宋体"><span style="font-size:10pt">3.当</span><span style="font-size:10pt">[RunAsynchronously]属性设为[True]时,</span><span style="font-size:10pt"> [InvokeMethod]调用对应的[Begin]与[End]方法
</span></span></p><p><span style="font-family:宋体; font-size:10pt">4.如果没的提供与[调用方法]对应的[Begin]与[End]方法, [InvokeMethod]将忽略[RunAsynchronously]属性的值</span></p></td></tr></tbody></table></div><li><h4><span style="font-family:宋体">例
</span></h4><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:93px"/><col style="width:475px"/></colgroup><tbody valign="top"><tr><td rowspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">调用方法</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">   public class myClass
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        AsyncCallback callback;
</span></p><p><span style="font-family:宋体; font-size:10pt">        IAsyncResult asyncResult;
</span></p><p><span style="font-family:宋体; font-size:10pt">        int value;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public void  <span style="color:#00b050">myCall</span>(<span style="color:#00b050">int value</span>)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("myCall:{0}",value);          
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public IAsyncResult <span style="color:red">Begin</span><span style="color:#00b050">myCall</span>(<span style="color:#00b050">int value</span>, <span style="color:red">AsyncCallback callback, object asyncState</span>)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine("BeginmyCall:{0}", value);
</span></p><p><span style="font-family:宋体; font-size:10pt">            this.value = value;
</span></p><p><span style="font-family:宋体; font-size:10pt">            this.callback = callback;
</span></p><p><span style="font-family:宋体; font-size:10pt">            this.asyncResult = new myAsyncResult() { AsyncState = asyncState };
</span></p><p><span style="font-family:宋体; font-size:10pt">            Thread thread = new Thread(new ThreadStart(myProcessThread));
</span></p><p><span style="font-family:宋体; font-size:10pt">            thread.Start();
</span></p><p><span style="font-family:宋体; font-size:10pt">            return this.asyncResult;
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public void <span style="color:red">End</span><span style="color:#00b050">myCall</span>(<span style="color:red">IAsyncResult r</span>)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            Console.WriteLine("EndmyCall");
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public void myProcessThread()
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            for (int i = 0; i &lt;= 10; i++)
</span></p><p><span style="font-family:宋体; font-size:10pt">            {
</span></p><p><span style="font-family:宋体; font-size:10pt">                System.Console.WriteLine(i);
</span></p><p><span style="font-family:宋体; font-size:10pt">                System.Threading.Thread.Sleep(500);
</span></p><p><span style="font-family:宋体; font-size:10pt">            }
</span></p><p><span style="font-family:宋体; font-size:10pt">              this.callback(this.asyncResult);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    class myAsyncResult : IAsyncResult
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        public object AsyncState
</span></p><p><span style="font-family:宋体; font-size:10pt">        {            get;           set;        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public WaitHandle AsyncWaitHandle
</span></p><p><span style="font-family:宋体; font-size:10pt">        {            get;            set;        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public bool CompletedSynchronously
</span></p><p><span style="font-family:宋体; font-size:10pt">        {            get { return true; }        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public bool IsCompleted
</span></p><p><span style="font-family:宋体; font-size:10pt">        {            get { return true; }        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">  myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed"); };
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">  myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">  System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">[RunAsynchronously]属性设为[False]</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced14.png" alt=""/><span style="font-family:Times New Roman; font-size:10pt">
											</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced15.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">[RunAsynchronously]属性设为[True]</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced16.png" alt=""/><span style="font-family:Times New Roman; font-size:10pt">
											</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced17.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p><h2>InvokeMethod&lt;T&gt; 调用方法
</h2></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced18.png" alt=""/><span style="font-family:宋体">
						</span></p><p>
 </p><p><span style="font-family:宋体">类名: System.Activities.Statements.InvokeMethod&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">基类: CodeActivity&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:sealed
</span></p><p><span style="font-family:宋体">说明:1.使用方式与[InvokeMethod]想同 
</span></p><p><span style="font-family:宋体">     2.使用[</span>InvokeMethod&lt;T&gt;]时,会要求指定方法的返回值类型<span style="font-family:宋体">
						</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062209_1716_WF4B1Proced19.png" alt=""/><span style="font-family:宋体">
						</span></p><p><span style="font-family:宋体">
						</span> </p></li></li></li></ul><img src ="http://www.cnblogs.com/foundation/aggbug/1508775.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 CancellationScope 取消容器</title><link>http://www.cnblogs.com/foundation/archive/2009/06/20/1507391.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sat, 20 Jun 2009 08:06:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/20/1507391.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1507391.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/20/1507391.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1507391.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1507391.html</trackback:ping><description><![CDATA[<p><span style="font-family:宋体">WF4.0 Beta1 </span>CancellationScope 取消容器<span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><span style="font-family:宋体">在WF4中,可以使用[</span>Parallel] 并行执行多条分支,当<span style="font-family:宋体">[</span>Parallel]中的所有分支都执行完成后,<span style="font-family:宋体">[</span>Parallel]结束.
</p><p><span style="font-family:宋体">在WF4中,可以使用</span>[Pick]实现多条等待分支的单线执行,当一条分支被触发后,其它分支就不会被触发了,当触发的分支完成后,[Pick]结束
</p><p>但有时我们会的这样一种需求,我们需要并行执行多条分支,当并行分支中的一条或几条分支满足指定条件时,其它正在执行的分支就不执了.同时,为了保证数据的完整性,我们需要在那些可能要取消的分支中余留一组代码.这组代码用于在该分支被取消后做一些收尾工做.
</p><h2>CancellationScope 取消容器
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca1.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.CancellationScope
</span></p><p><span style="font-family:宋体">基类: NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1. 在WF4中,可以使用[</span>Parallel] 并行执行多条分支,当<span style="font-family:宋体">[</span>Parallel]中的所有分支都执行完成后,<span style="font-family:宋体">[</span>Parallel]结束.
</p><p>         可以使用[Pick]实现多条等待分支的单线执行,当一条分支被触发后,其它分支就不会被触发了,当触发的分支完成后,[Pick]结束
</p><p>         但有时我们会的这样一种需求,我们需要并行执行多条分支,当并行分支中的一条或几条分支满足指定条件时,其它正在执行的分支就不执了.同时,为了保证数据的完整性,我们需要在那些可能要取消的分支中余留一组代码.这组代码用于在该分支被取消后做一些收尾工做.
</p><p><span style="font-family:宋体">      2. [CancellationScope]由[Body]与 [CancelHandler] 两部分组成,[Body]为正常执行路径, 如果取消执行会调用 [CancelHandler]中的内容
</span></p><p><span style="font-family:宋体">      3. 可以在[</span>Parallel]容器中使用[<span style="font-family:宋体">CancellationScope],当[</span>Parallel]的[CompletionCondition]属性为[True]时,<span style="font-family:宋体">[</span>Parallel]容器会在其内部<span style="font-family:宋体">[CancellationScope]容器执行完成后,结束其它正在执行的并行分支.如果其它正在执行的并行分支是[CancellationScope],则会调用该[CancellationScope]的[CancelHandler]
</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca2.png" alt=""/><span style="font-family:宋体">
		</span></p><h3>例
</h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca3.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca4.png" alt=""/><span style="font-family:宋体">
		</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:90px"/><col style="width:478px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity 
</span></p><p><span style="font-family:宋体; font-size:10pt">mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">x:Class="WorkflowConsoleApplication4.Sequence1" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" xmlns:__Sequence1="clr-namespace:WorkflowConsoleApplication4;" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red">   &lt;p:Parallel CompletionCondition="[True]"&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:CancellationScope DisplayName="CancellationScope:A"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:Cancel A"&gt;["Cancel A"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:begin A"&gt;["begin A"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Delay DisplayName="Delay:5"&gt;[New TimeSpan(0, 0, 5)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:end A"&gt;["end A"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:CancellationScope&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:CancellationScope DisplayName="CancellationScope:B"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:Cancel B"&gt;["Cancel B"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:begin B"&gt;["begin B"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Delay DisplayName="Delay:10"&gt;[New TimeSpan(0, 0, 10)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:end B"&gt;["end B"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:CancellationScope&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:CancellationScope DisplayName="CancellationScope:C"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:Cancel C"&gt;["Cancel C"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:CancellationScope.CancelHandler&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:begin C"&gt;["begin C"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Delay DisplayName="Delay:3"&gt;[New TimeSpan(0, 0, 3)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:WriteLine DisplayName="WriteLine:end C"&gt;["end C"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:CancellationScope&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:Sequence DisplayName="Sequence:D"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine DisplayName="WriteLine:begin D"&gt;["begin D"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Delay DisplayName="Delay:8"&gt;[New TimeSpan(0, 0, 8)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine DisplayName="WriteLine:end D"&gt;["end D"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:Parallel&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine DisplayName="WriteLine:wxwinter"&gt;["wxwinter"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt"> WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt"> myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { System.Console.WriteLine("Completed "); };
</span></p><p>             
&#160;</p><p><span style="font-family:宋体; font-size:10pt"> myInstance.Run();
</span></p><p>
&#160;</p><p><span style="font-family:宋体; font-size:10pt"> System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca5.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">[</span><span style="font-family:Times New Roman">Parallel]</span><span style="font-family:宋体">的</span><span style="font-family:Times New Roman">[CompletionCondition]</span><span style="font-family:宋体">属性为</span><span style="font-family:Times New Roman">[False]</span><span style="font-family:宋体">时</span><span style="font-family:Times New Roman">
								</span></span></p><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">[</span><span style="font-family:Times New Roman">Parallel]</span><span style="font-family:宋体">的</span><span style="font-family:Times New Roman">[CompletionCondition]</span><span style="font-family:宋体">属性为</span><span style="font-family:Times New Roman">[False]</span><span style="font-family:宋体">时</span><span style="font-family:Times New Roman">
								</span></span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca6.png" alt=""/><span style="font-family:Times New Roman; font-size:10pt">
							</span></p><p>
&#160;</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/062009_0806_WF40Beta1Ca7.png" alt=""/></p></td></tr></tbody></table></div><p><span style="font-family:宋体">
		</span>&#160;</p> <img src ="http://www.cnblogs.com/foundation/aggbug/1507391.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47995/" target="_blank">Google Voice 上手</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>新版本工作流平台的 (二) 权限算法(组织结构部分)</title><link>http://www.cnblogs.com/foundation/archive/2009/06/09/1499388.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 09 Jun 2009 02:32:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/09/1499388.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1499388.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/09/1499388.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1499388.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1499388.html</trackback:ping><description><![CDATA[摘要: 新版本工作流平台的 (二) 权限算法(组织结构部分)目录部门透明度    1组织结构管理方式    1		添加人员    1		添加部门    1		为人员分配部门    2		解除绑定职能人员关系    2		解除部门人员关系    3		删除人员    3		删除部门职能人员的约束    4		职能与职能关系    4		数据结构 powerRelationDuty    4		示意图    &nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/06/09/1499388.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1499388.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47994/" target="_blank">Google号召社区力量为互联网加速</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 流程设计器与Activity Designer</title><link>http://www.cnblogs.com/foundation/archive/2009/06/09/1499363.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 09 Jun 2009 02:16:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/09/1499363.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1499363.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/09/1499363.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1499363.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1499363.html</trackback:ping><description><![CDATA[<p>WF4.0 Beta1 流程设计器与Activity Designer
</p><h1>数据类
</h1><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">    public class myData
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public string 结果
</span></p><p><span style="font-size:10pt">        { set; get; }
</span></p><p>
 </p><p><span style="font-size:10pt">        public string 说明
</span></p><p><span style="font-size:10pt">        { set; get; }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h1>自定义Activity
</h1><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">public sealed class 节点&lt;T&gt; : NativeActivity&lt;myData&gt;
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public 节点()
</span></p><p><span style="font-size:10pt">            : base()
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            this.DisplayName = "";
</span></p><p>            
 </p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        string _n = "mywait";
</span></p><p><span style="font-size:10pt">        public string 节点名
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            get { return _n; }
</span></p><p><span style="font-size:10pt">            set { _n = value; }
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        string _s = "请输入内容";
</span></p><p><span style="font-size:10pt">        public string 内容
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            get { return _s; }
</span></p><p><span style="font-size:10pt">            set { _s = value; }
</span></p><p><span style="font-size:10pt">        }
</span></p><p>      
 </p><p><span style="font-size:10pt">        protected override void Execute(ActivityExecutionContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            System.Console.WriteLine("内容:{0}", 内容);
</span></p><p><span style="font-size:10pt">            context.CreateNamedBookmark(节点名, new BookmarkCallback(bookmarkCallback));
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        void bookmarkCallback(ActivityExecutionContext context, Bookmark bookmark, object obj)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myData r = obj as myData;
</span></p><p>
 </p><p><span style="font-size:10pt">            if (r.结果 == "a")
</span></p><p><span style="font-size:10pt">            {
</span></p><p><span style="font-size:10pt">                System.Console.WriteLine("{0},请处理以下问题:", r.说明);
</span></p><p><span style="font-size:10pt">            }
</span></p><p><span style="font-size:10pt">              this.Result.Set(context, r);          
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><h1>自定义Designer
</h1><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;sad:WorkflowElementDesigner x:Class="WpfApplication1.myDesigner"
</span></p><p><span style="font-size:10pt">    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
</span></p><p><span style="font-size:10pt">    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="font-size:10pt">    xmlns:sad="clr-namespace:System.Activities.Design;assembly=System.Activities.Design"
</span></p><p><span style="font-size:10pt">    xmlns:sadv="clr-namespace:System.Activities.Design.View;assembly=System.Activities.Design"&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">    &lt;sad:WorkflowElementDesigner.Resources&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">        &lt;DataTemplate x:Key="d1"&gt;
</span></p><p><span style="font-size:10pt">            &lt;StackPanel&gt;
</span></p><p><span style="font-size:10pt">                &lt;TextBlock Margin="0,5,0,0" Text="内容:" /&gt;
</span></p><p><span style="font-size:10pt">                &lt;TextBox Height="50" AcceptsReturn="True"  Text="{Binding Path=ModelItem.内容}" /&gt;
</span></p><p><span style="font-size:10pt">            &lt;/StackPanel&gt;
</span></p><p>            
 </p><p><span style="font-size:10pt">        &lt;/DataTemplate&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">    &lt;/sad:WorkflowElementDesigner.Resources&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">    &lt;Grid &gt;
</span></p><p><span style="font-size:10pt">        &lt;ContentPresenter  ContentTemplate="{DynamicResource d1}"   Content="{Binding}"/&gt;
</span></p><p><span style="font-size:10pt">    &lt;/Grid&gt;
</span></p><p><span style="font-size:10pt">&lt;/sad:WorkflowElementDesigner&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h1>流程设计器
</h1><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;Window x:Class="WpfApplication1.Window1"
</span></p><p><span style="font-size:10pt">        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
</span></p><p><span style="font-size:10pt">        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="font-size:10pt">        Title="Window1" &gt;
</span></p><p><span style="font-size:10pt">    &lt;StackPanel&gt;
</span></p><p><span style="font-size:10pt">        &lt;StackPanel Orientation="Horizontal" &gt;
</span></p><p><span style="font-size:10pt">            &lt;Button  Content="启动流程"  Width="80" Height="30" Click="Button_Click" /&gt;
</span></p><p><span style="font-size:10pt">            &lt;TextBlock Margin="20,0,0,0" Text="办理" /&gt;
</span></p><p>           
 </p><p><span style="font-size:10pt">            &lt;Button Name="yes" Content="同意"  Width="80" Height="30" Click="yes_Click" /&gt;
</span></p><p><span style="font-size:10pt">            &lt;Button  Name="nextUser" Content="交指定人再议"  Width="80" Height="30" Click="nextUser_Click" /&gt;
</span></p><p><span style="font-size:10pt">            &lt;TextBox Name="tb" Width="200" /&gt;
</span></p><p><span style="font-size:10pt">        &lt;/StackPanel&gt;
</span></p><p> 
 </p><p><span style="font-size:10pt">    &lt;StackPanel Orientation="Horizontal" Loaded="StackPanel_Loaded"&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">        &lt;StackPanel  xmlns:sad="clr-namespace:System.Activities.Design;assembly=System.Activities.Design"&gt;
</span></p><p><span style="font-size:10pt">                &lt;StackPanel Name="propertyPanel" /&gt;
</span></p><p><span style="font-size:10pt">                &lt;sad:ToolboxControl Width="250" Height="400" Name="toolbox" /&gt;
</span></p><p><span style="font-size:10pt">         &lt;/StackPanel&gt;
</span></p><p><span style="font-size:10pt">        &lt;ContentControl Height="800" Width="800"    Name="desienerPanel"  /&gt;
</span></p><p><span style="font-size:10pt">    &lt;/StackPanel&gt;
</span></p><p><span style="font-size:10pt">    &lt;/StackPanel&gt;
</span></p><p><span style="font-size:10pt">&lt;/Window&gt;</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">  public partial class Window1 : Window
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public Window1()
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            InitializeComponent();
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">        WorkflowDesigner designer;
</span></p><p><span style="font-size:10pt">        private void StackPanel_Loaded(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            ToolboxCategoryItemsCollection toolList=new ToolboxCategoryItemsCollection("基本工具");
</span></p><p><span style="font-size:10pt">            toolbox.Categories.Add(toolList);
</span></p><p><span style="font-size:10pt">            toolList.Add(new ToolboxItemWrapper(typeof(节点&lt;myData&gt;), "节点"));
</span></p><p><span style="font-size:10pt">            toolList.Add(new ToolboxItemWrapper(typeof(System.Activities.Statements.FlowSwitch), "分支"));
</span></p><p><span style="font-size:10pt">            toolList.Add(new ToolboxItemWrapper(typeof(System.Activities.Statements.WriteLine), "输出"));
</span></p><p><span style="font-size:10pt">            //======
</span></p><p>          
 </p><p><span style="font-size:10pt">            DesignerMetadata dm = new DesignerMetadata();
</span></p><p><span style="font-size:10pt">            dm.Register();
</span></p><p><span style="font-size:10pt">            //-
</span></p><p>
 </p><p><span style="font-size:10pt">            AttributeTableBuilder builder = new AttributeTableBuilder();
</span></p><p><span style="font-size:10pt">            builder.AddCustomAttributes(typeof(节点&lt;myData&gt;), new DesignerAttribute(typeof(myDesigner)));
</span></p><p><span style="font-size:10pt">            MetadataStore.AddAttributeTable(builder.CreateTable());
</span></p><p>
 </p><p><span style="font-size:10pt">            //==========
</span></p><p>
 </p><p><span style="font-size:10pt">            designer = new WorkflowDesigner();
</span></p><p>
 </p><p><span style="font-size:10pt">            var root = new System.Activities.Statements.Flowchart();
</span></p><p>
 </p><p><span style="font-size:10pt">            var v = new System.Activities.Variable&lt;myData&gt;();
</span></p><p><span style="font-size:10pt">            v.Name = "content";
</span></p><p><span style="font-size:10pt">            v.Default = new myData();
</span></p><p><span style="font-size:10pt">            root.Variables.Add(v);
</span></p><p><span style="font-size:10pt">            designer.Load(root);
</span></p><p>
 </p><p><span style="font-size:10pt">            desienerPanel.Content=designer.View;
</span></p><p><span style="font-size:10pt">            propertyPanel.Children.Add(designer.PropertyInspectorView);
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        WorkflowInstance myInstance;
</span></p><p><span style="font-size:10pt">        public WorkflowInstance createInstanceFromXamlString(string xaml)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding();
</span></p><p><span style="font-size:10pt">            byte[] bs = utf8.GetBytes(xaml);
</span></p><p><span style="font-size:10pt">            System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(bs);
</span></p><p><span style="font-size:10pt">            WorkflowElement activity = WorkflowXamlServices.Load(memoryStream);
</span></p><p><span style="font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(activity);
</span></p><p><span style="font-size:10pt">            return myInstance;
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p>
 </p><p>
 </p><p><span style="font-size:10pt">        private void Button_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            System.Console.Clear();
</span></p><p><span style="font-size:10pt">            myInstance = createInstanceFromXamlString(designer.Text);
</span></p><p><span style="font-size:10pt">            myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs ee) { System.Console.WriteLine("end"); };        
</span></p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p>
 </p><p><span style="font-size:10pt">        private void yes_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myData date = new myData();
</span></p><p><span style="font-size:10pt">            date.结果 = "a";
</span></p><p><span style="font-size:10pt">            date.说明 = tb.Text;
</span></p><p>            
 </p><p><span style="font-size:10pt">            myInstance.ResumeBookmark("mywait", date);
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        private void nextUser_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myData date = new myData();
</span></p><p><span style="font-size:10pt">            date.结果 = "b";
</span></p><p><span style="font-size:10pt">            date.说明 = tb.Text;
</span></p><p><span style="font-size:10pt">            myInstance.ResumeBookmark("mywait", date);
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h1>设计流程
</h1><p>设计如下流程
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta11.png" alt=""/>
	</p><p>
 </p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta12.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta13.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta14.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta15.png" alt=""/>
	</p><p>
 </p><p>
 </p><h1>运行说明
</h1><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta16.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta17.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta18.png" alt=""/>
	</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060909_0215_WF40Beta19.png" alt=""/>
	</p><img src ="http://www.cnblogs.com/foundation/aggbug/1499363.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47994/" target="_blank">Google号召社区力量为互联网加速</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark</title><link>http://www.cnblogs.com/foundation/archive/2009/06/08/1498624.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 08 Jun 2009 04:58:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/08/1498624.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1498624.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/08/1498624.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1498624.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1498624.html</trackback:ping><description><![CDATA[<p>WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark
</p><p>
 </p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p style="text-align: justify"><a href="#_Toc232229085"><span style="font-size:10pt">1    NativeActivity&lt;T&gt;    1
</span></a></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229086"><span style="font-size:10pt">1.1    定义有返回值的Activity    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229087"><span style="font-size:10pt">1.2    使用    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc232229088"><span style="font-size:10pt">2    Bookmark说明    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc232229089"><span style="font-size:10pt">3    Bookmark    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229090"><span style="font-size:10pt">3.1    定义Activity    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229091"><span style="font-size:10pt">3.2    定义工作流    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229092"><span style="font-size:10pt">3.3    宿主    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229093"><span style="font-size:10pt">3.4    结果    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc232229094"><span style="font-size:10pt">4    Bookmark(有返回值)    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229095"><span style="font-size:10pt">4.1    定义Activity    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229096"><span style="font-size:10pt">4.2    定义工作流    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229097"><span style="font-size:10pt">4.3    宿主    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc232229098"><span style="font-size:10pt">4.4    结果    5</span></a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><p style="text-align: center"><h1>NativeActivity&lt;T&gt;
</h1></p><p>
 </p><p><span style="font-family:宋体">类名:System.Activities.NativeActivity&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">基类:System.Activities.WorkflowElement&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
</span></p><p>
 </p><h2>定义有返回值的Activity
</h2><p>场景说明:有两个[Int]参数v1,v2,返回值为v1+v2
</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    public class myActivity&lt;T&gt; : NativeActivity&lt;int&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        public System.Activities.InArgument&lt;int&gt; v1
</span></p><p><span style="font-family:宋体; font-size:10pt">        { set; get; }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public System.Activities.InArgument&lt;int&gt; v2
</span></p><p><span style="font-family:宋体; font-size:10pt">        { set; get; }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(ActivityExecutionContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            int r =(int)v1.Get(context) + (int)v2.Get(context);
</span></p><p><span style="font-family:宋体; font-size:10pt">            this.Result.Set(context, r);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-family:宋体">说明:
</span></p><p><span style="font-family:宋体">当在设计器中添加有返回值的</span>Activity时,会出现一个对话框,要求指定返回值的类型<span style="font-family:宋体">
		</span></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act1.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h2>使用
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:24px"/><col style="width:544px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act2.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>          
 </p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act3.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p style="text-align: center"><h1>Bookmark说明
</h1></p><p>Bookmark可使用流程Idle并触发流程的OnIdle
</p><p style="text-align: center"><h1>Bookmark
</h1></p><p>
 </p><p>
 </p><p>要定义具备Bookmark的Activit,可从 NativeActivity继承
</p><p>
 </p><p><span style="font-family:宋体">类名:System.Activities.NativeActivity
</span></p><p><span style="font-family:宋体">基类:System.Activities.WorkflowElement
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
</span></p><p>
 </p><h2>定义Activity
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
 </p><p><span style="font-size:10pt">    public class myBookmark : NativeActivity
</span></p><p><span style="font-size:10pt">    {
</span></p><p>
 </p><p><span style="font-size:10pt">        public string bookmarkName { get; set; }
</span></p><p><span style="font-size:10pt">        protected override void Execute(ActivityExecutionContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            context.CreateNamedBookmark(bookmarkName);
</span></p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2>定义工作流
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act4.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-size:10pt">x:Class="WorkflowConsoleApplication1.Sequence2" 
</span></p><p><span style="font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-size:10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-size:10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-size:10pt">xmlns:w="clr-namespace:WorkflowConsoleApplication1;assembly=WorkflowConsoleApplication1" 
</span></p><p><span style="font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="font-size:10pt">&gt;
</span></p><p><span style="font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-size:10pt">    &lt;p:WriteLine DisplayName="WriteLine:begin"&gt;["begin"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-size:10pt">    &lt;w:myBookmark bookmarkName="mywait" /&gt;
</span></p><p><span style="font-size:10pt">    &lt;p:WriteLine DisplayName="WriteLine:end"&gt;["end"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h2>宿主
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;Window x:Class="WpfApplication1.Window1"
</span></p><p><span style="font-size:10pt">        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
</span></p><p><span style="font-size:10pt">        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="font-size:10pt">        Title="Window1" Height="300" Width="300"&gt;
</span></p><p><span style="font-size:10pt">    &lt;StackPanel&gt;
</span></p><p><span style="font-size:10pt">        &lt;Button Content="启动" Height="23"  Name="button1"  Width="75" Click="button1_Click" /&gt;
</span></p><p><span style="font-size:10pt">        &lt;Button Content="继续" Height="23" Name="button2"  Width="75" Click="button2_Click" /&gt;
</span></p><p>
 </p><p><span style="font-size:10pt">    &lt;/StackPanel&gt;
</span></p><p> 
 </p><p><span style="font-size:10pt">&lt;/Window&gt;</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">        WorkflowInstance myInstance;
</span></p><p><span style="font-size:10pt">        private void button1_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myInstance = new WorkflowInstance(new Sequence2());
</span></p><p><span style="font-size:10pt">            myInstance.OnIdle += idel;
</span></p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">        IdleAction idel()
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            System.Console.WriteLine("等待提交.....");
</span></p><p><span style="font-size:10pt">            return IdleAction.Nothing;
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        private void button2_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myInstance.ResumeBookmark("mywait",null);
</span></p><p><span style="font-size:10pt">        }</span></p></td></tr></tbody></table></div><h2>结果
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act5.png" alt=""/>
	</p><p>
 </p><p style="text-align: center"><h1>Bookmark(有返回值)
</h1></p><p>要定义具备有返回值的Bookmark  Activit,可从 NativeActivity&lt;T&gt;继承
</p><p>
 </p><p><span style="font-family:宋体">类名:System.Activities.NativeActivity&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">基类:System.Activities.WorkflowElement&lt;TResult&gt;
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型:abstract (void Execute(System.Activities.ActivityExecutionContext context))
</span></p><p>
 </p><h2>定义Activity
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">    public sealed class bookmark&lt;T&gt; : NativeActivity&lt;T&gt;
</span></p><p><span style="font-size:10pt">    {
</span></p><p><span style="font-size:10pt">        public bookmark()
</span></p><p><span style="font-size:10pt">            : base()
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        public string bookmarkName { get; set; }
</span></p><p>
 </p><p><span style="font-size:10pt">        protected override void Execute(ActivityExecutionContext context)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            context.CreateNamedBookmark(bookmarkName, new BookmarkCallback(bookmarkCallback));
</span></p><p>            
 </p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        void bookmarkCallback(ActivityExecutionContext context, Bookmark bookmark, object obj)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            this.Result.Set(context, (T)obj);
</span></p><p>           
 </p><p><span style="font-size:10pt">        }
</span></p><p><span style="font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><h2>定义工作流
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act6.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-size:10pt">            x:Class="myBookmarks.Sequence1" 
</span></p><p><span style="font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-size:10pt">            xmlns:m="clr-namespace:myBookmarks;assembly=myBookmarks" 
</span></p><p><span style="font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"
</span></p><p><span style="font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="font-size:10pt">    &lt;p:Sequence.Variables&gt;
</span></p><p><span style="font-size:10pt">      &lt;p:Variable x:TypeArguments="x:String" Name="rs" /&gt;
</span></p><p><span style="font-size:10pt">    &lt;/p:Sequence.Variables&gt;
</span></p><p><span style="font-size:10pt">    &lt;p:WriteLine DisplayName="开始"&gt;["请提交意见"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-size:10pt">    &lt;m:bookmark x:TypeArguments="x:String" DisplayName="等待意见" Result="[rs]" bookmarkName="mywait" /&gt;
</span></p><p><span style="font-size:10pt">    &lt;p:WriteLine DisplayName="显示结果"&gt;[rs]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h2>宿主
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;Window x:Class="WpfApplication1.Window1"
</span></p><p><span style="font-size:10pt">        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
</span></p><p><span style="font-size:10pt">        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="font-size:10pt">        Title="Window1" Height="300" Width="300"&gt;
</span></p><p><span style="font-size:10pt">    &lt;Canvas&gt;
</span></p><p><span style="font-size:10pt">        &lt;Button Canvas.Left="27" Canvas.Top="31" Content="启动流程" Height="23" Name="button1" Width="75" Click="button1_Click" /&gt;
</span></p><p><span style="font-size:10pt">        &lt;Button Canvas.Left="27" Canvas.Top="111" Content="继续" Height="23" Name="button2" Width="75" Click="button2_Click" /&gt;
</span></p><p><span style="font-size:10pt">        &lt;TextBox Canvas.Left="123" Canvas.Top="112.157" Height="23" Name="textBox1" Width="120" /&gt;
</span></p><p><span style="font-size:10pt">    &lt;/Canvas&gt;
</span></p><p><span style="font-size:10pt">&lt;/Window&gt;</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">        WorkflowInstance myInstance;
</span></p><p><span style="font-size:10pt">        private void button1_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-size:10pt">            myInstance.OnIdle += idel;
</span></p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        IdleAction idel()
</span></p><p><span style="font-size:10pt">        {          
</span></p><p><span style="font-size:10pt">            System.Console.WriteLine("等待提交.....");
</span></p><p><span style="font-size:10pt">            return IdleAction.Nothing;
</span></p><p><span style="font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-size:10pt">        private void button2_Click(object sender, RoutedEventArgs e)
</span></p><p><span style="font-size:10pt">        {
</span></p><p><span style="font-size:10pt">            myInstance.ResumeBookmark("mywait", this.textBox1.Text);
</span></p><p><span style="font-size:10pt">        }</span></p></td></tr></tbody></table></div><p>
 </p><h2>结果
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act7.png" alt=""/><img src="http://images.cnblogs.com/cnblogs_com/foundation/060809_0458_WF4B1Act8.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1498624.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47989/" target="_blank">Twitter无处不在 魔兽世界Twitter发送器插件发布</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>新版本工作流平台的 (一) 组织结构部分(Silverlight UI) </title><link>http://www.cnblogs.com/foundation/archive/2009/06/05/1496801.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 05 Jun 2009 03:18:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/05/1496801.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1496801.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/05/1496801.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1496801.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1496801.html</trackback:ping><description><![CDATA[<p>我的新版本工作流平台(Silverlight UI) 的(一)组织结构部分
</p><p>
 </p><p>平台的UI部分全部用Silverlight搭建,使用了大量的光影动画
</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_1.png" alt=""/>
	</p><p>
 </p><p>三维旋转的导航栏
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_2.png" alt=""/>
	</p><p>
 </p><p>后台服务使用开放式挂接方式
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_3.png" alt=""/>
	</p><p>
 </p><p>内置了许多辅助功能,下图是在线手写(在线会议时,可只接对页面数据做标注)
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_4.png" alt=""/>
	</p><p>
 </p><p>图形化的组织结构分析
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_5.png" alt=""/>
	</p><p>
 </p><p>图形化的部门关系分析
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_6.png" alt=""/>
	</p><p>
 </p><p>部门管理(部门与子部门可基于权限隔离)
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_7.png" alt=""/>
	</p><p>
 </p><p>职能管理(本版本将职能的数据结构升级为图关系,下图的树显示只是图的一个视角)
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_8.png" alt=""/>
	</p><p>
 </p><p>另一个职能关系视角
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_9.png" alt=""/>
	</p><p>人员管理(人员是多部门多职能)
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_10.png" alt=""/>
	</p><p>
 </p><p>人员查询
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_11.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_12.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>UI权限使用数据自描述方式,用(部门,职能,Action)的方式附加到业务数据上,而不是传统的单纯锁页面控件.
</p><p>(业务操作页面是根据数据与权限自动生成的)
</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_13.png" alt=""/>
	</p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060509_0317_14.png" alt=""/>
	</p><img src ="http://www.cnblogs.com/foundation/aggbug/1496801.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47988/" target="_blank">Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 用表达式关联变量与参数</title><link>http://www.cnblogs.com/foundation/archive/2009/06/04/1496209.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Thu, 04 Jun 2009 07:06:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/04/1496209.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1496209.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/04/1496209.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1496209.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1496209.html</trackback:ping><description><![CDATA[<p>
&#160;</p><p style="text-align: center"><h1>[In 参数] 与 [变量]
</h1></p><h2>[In 参数] 可以用 [表达式方式] 关联 [变量]
</h2><p>
&#160;</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:55px"/><col style="width:513px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">有[In参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta11.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">工作流</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta12.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta13.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><p>
&#160;</p><h2>如果[Int 参数]的关联变量修改,[Int 参数]不会更改
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta14.png" alt=""/>
	</p><p>
&#160;</p><p><span style="font-family:宋体">下面用一个例子说明:
</span></p><p><span style="font-family:宋体">1.定义一个有[Int参数]的Activity,该Activity内不停的打印[Int参数]的值
</span></p><p><span style="font-family:宋体">2.定义一个流程,流程中创建一个变量, 流程中添加一个并行容器,
</span></p><p><span style="font-family:宋体">3.并行容器中的一个分只添加上步所创建的Activity,将该Activity的[Int参数]与流程中创建的变量关联
</span></p><p><span style="font-family:宋体">4.并行容器中的另一个分只,不停的改变变量的值
</span></p><p><span style="font-family:宋体">5.预期:看到不变的数据
</span></p><p>
&#160;</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:70px"/><col style="width:1073px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">有[Out参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta15.png" alt=""/></p></td></tr><tr style="height: 801px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta16.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
&#160;</p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta17.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><p>
&#160;</p><p style="text-align: center"><h1>[Out 参数]与[变量]
</h1></p><h2>[Out 参数] 可以用 [表达式方式] 关联到 [变量]
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:53px"/><col style="width:516px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">有[Out参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta18.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">工作流</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta19.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta110.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><h2>如果内部修改[Out 参数] ,会更新其关联的变量
</h2><p>
&#160;</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta111.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><span style="font-family:宋体">下面用一个例子说明:
</span></p><p><span style="font-family:宋体">1.定义一个有[Out参数]的Activity,该Activity内不停的改变[Out参数]的值
</span></p><p><span style="font-family:宋体">2.定义一个流程,流程中创建一个变量, 流程中添加一个并行容器,
</span></p><p><span style="font-family:宋体">3.并行容器中的一个分只添加上步所创建的Activity,将该Activity的[Out参数]与流程中创建的变量关联
</span></p><p><span style="font-family:宋体">4.并行容器中的另一个分只,不停的打印流程中创建的变量
</span></p><p><span style="font-family:宋体">5.预期:看到变化的数据
</span></p><p>
&#160;</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:70px"/><col style="width:1073px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">有[Out参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta112.png" alt=""/></p></td></tr><tr style="height: 801px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta113.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
&#160;</p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta114.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><h2>如果[Out 参数]的关联变量修改,[Out 参数]也会更改<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta115.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><span style="font-family:宋体">下面用一个例子说明:
</span></p><p><span style="font-family:宋体">1.定义一个有[Out参数]的Activity,该Activity内不停的打印[Out参数]的值
</span></p><p><span style="font-family:宋体">2.定义一个流程,流程中创建一个变量, 流程中添加一个并行容器,
</span></p><p><span style="font-family:宋体">3.并行容器中的一个分只添加上步所创建的Activity,将该Activity的[Out参数]与流程中创建的变量关联
</span></p><p><span style="font-family:宋体">4.并行容器中的另一个分只,不停的改变变量的值
</span></p><p><span style="font-family:宋体">5.预期:看到变化的数据
</span></p><p>
&#160;</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:70px"/><col style="width:1073px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">有[Out参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta116.png" alt=""/></p></td></tr><tr style="height: 801px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta117.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
&#160;</p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta118.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><p>
&#160;</p><p style="text-align: center"><h1>[In/Out 参数] 与 [变量]
</h1></p><h2>[In/Out 参数] 可以用 [表达式方式] 关联 [变量]
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:53px"/><col style="width:516px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">有[In/Out参数]的Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta119.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">工作流</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta120.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta121.png" alt=""/></p></td></tr></tbody></table></div><p>
&#160;</p><h2>如果内部修改[Out 参数] ,会更新其关联的变量
</h2><p>
&#160;</p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta122.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><span style="font-family:宋体">下面用一个例子说明:
</span></p><p><span style="font-family:宋体">1.定义一个有[In/Out参数]的Activity,该Activity内不停的改变[In/Out参数]的值
</span></p><p><span style="font-family:宋体">2.定义一个流程,流程中创建一个变量, 流程中添加一个并行容器,
</span></p><p><span style="font-family:宋体">3.并行容器中的一个分只添加上步所创建的Activity,将该Activity的[In/Out参数]与流程中创建的变量关联
</span></p><p><span style="font-family:宋体">4.并行容器中的另一个分只,不停的打印流程中创建的变量
</span></p><p><span style="font-family:宋体">5.预期:看到变化的数据
</span></p><p><span style="font-family:宋体">(例子:同 </span>[Out 参数]与[变量] )<span style="font-family:宋体">
		</span></p><p>
&#160;</p><h2> 如果[In/Out 参数]的关联变量修改,[In/Out 参数]也会更改<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060409_0705_WF40Beta123.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
&#160;</p><p><span style="font-family:宋体">下面用一个例子说明:
</span></p><p><span style="font-family:宋体">1.定义一个有[</span>In/Out<span style="font-family:宋体">参数]的Activity,该Activity内不停的打印[</span>In/Out<span style="font-family:宋体">参数]的值
</span></p><p><span style="font-family:宋体">2.定义一个流程,流程中创建一个变量, 流程中添加一个并行容器,
</span></p><p><span style="font-family:宋体">3.并行容器中的一个分只添加上步所创建的Activity,将该Activity的[</span>In/Out<span style="font-family:宋体">参数]与流程中创建的变量关联
</span></p><p><span style="font-family:宋体">4.并行容器中的另一个分只,不停的改变变量的值
</span></p><p><span style="font-family:宋体">5.预期:看到变化的数据
</span></p><p><span style="font-family:宋体">(例子:同 </span>[Out 参数]与[变量] )<span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">
		</span>&#160;</p> <img src ="http://www.cnblogs.com/foundation/aggbug/1496209.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47987/" target="_blank">预测：Twitter最可能收购的十家公司</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1  变量 Variables</title><link>http://www.cnblogs.com/foundation/archive/2009/06/03/1495604.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Wed, 03 Jun 2009 10:59:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/03/1495604.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1495604.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/03/1495604.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1495604.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1495604.html</trackback:ping><description><![CDATA[<p>
 </p><h2>只有具备[Variables]属性的Activity才可以定义变量
</h2><p><span style="font-family:宋体">[Variables] 的数据类型为System.Collections.ObjectModel.Collection&lt;System.Activities.Variable&gt;
</span></p><p>
 </p><h2>变量添加
</h2><p>在WF设计器中添加
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060309_1059_WF40Beta11.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>变量存放在所在[Activity]的内部,
</h2><p> 
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">x:Class="WorkflowConsoleApplication3.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:w="clr-namespace:WorkflowConsoleApplication3;assembly=WorkflowConsoleApplication3" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;w:myElement&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">      &lt;w:myElement.Variables&gt;
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">        &lt;p:Variable x:TypeArguments="x:String" Default="[&amp;quot;i am wxd&amp;quot;]" Name="wxd" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt"><span style="color:red">      &lt;/w:myElement.Variables&gt;</span>
							</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/w:myElement&gt; 
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h2>在定义变量的[Activity]内部的[Activity]可以访问变量,在定义变量的[Activity]外部的[Activity]无法访问变量
</h2><p>
 </p><h2>无法通过启动传参方式为[变量]赋值.无法在流程完成事件中接收[变量]的值
</h2><p>
 </p><p style="text-align: center"><h1>定义具有[Variables]属性的Activity<span style="font-family:宋体">
			</span></h1></p><div style="margin-left: 6pt"><table style="border-collapse:collapse" border="0"><colgroup><col style="width:49px"/><col style="width:510px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">自定义</span>Activity</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  public class myNative :NativeActivity
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        private Collection&lt;Variable&gt; variables;
</span></p><p><span style="font-family:宋体; font-size:10pt">        private Variable&lt;int&gt; lastIndexHint;
</span></p><p><span style="font-family:宋体; font-size:10pt">        public myNative()
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">           this.variables = new WorkflowElement.DesignTimeAwareCollection&lt;Variable&gt;(this);
</span></p><p><span style="font-family:宋体; font-size:10pt">           this.lastIndexHint = new Variable&lt;int&gt; { Modifiers = VariableModifiers.SuppressTracking };
</span></p><p><span style="font-family:宋体; font-size:10pt">       }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void OnGetEnvironmentVariables(IList&lt;Variable&gt; variables)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            for (int i = 0; i &lt; this.Variables.Count; i++)
</span></p><p><span style="font-family:宋体; font-size:10pt">            {
</span></p><p><span style="font-family:宋体; font-size:10pt">                variables.Add(this.Variables[i]);
</span></p><p><span style="font-family:宋体; font-size:10pt">            }
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void OnGetPrivateVariables(IList&lt;Variable&gt; variables)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            variables.Add(this.lastIndexHint);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        public Collection&lt;Variable&gt; Variables
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            get
</span></p><p><span style="font-family:宋体; font-size:10pt">            {
</span></p><p><span style="font-family:宋体; font-size:10pt">                return this.variables;
</span></p><p><span style="font-family:宋体; font-size:10pt">            }
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(ActivityExecutionContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            foreach (var v in variables)
</span></p><p><span style="font-family:宋体; font-size:10pt">            {
</span></p><p><span style="font-family:宋体; font-size:10pt">                System.Console.WriteLine("{0}:{1}",v.Name,v.Get(context));
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            }
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060309_1059_WF40Beta12.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>
 </p><p><span style="font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>    
 </p><p><span style="font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-size:10pt">            System.Console.Read();
</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060309_1059_WF40Beta13.png" alt=""/></p></td></tr></tbody></table></div><p><span style="font-family:宋体">
		</span> </p><img src ="http://www.cnblogs.com/foundation/aggbug/1495604.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47986/" target="_blank">网易澄清:与暴雪合资公司仅提供技术支持</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4.0 Beta1 参数 Arguments </title><link>http://www.cnblogs.com/foundation/archive/2009/06/02/1494828.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 02 Jun 2009 12:01:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/02/1494828.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1494828.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/02/1494828.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1494828.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1494828.html</trackback:ping><description><![CDATA[<p>
 </p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p style="text-align: justify"><a href="#_Toc231736100"><span style="font-size:10pt">1    [In，Out，In/Out]参数使用说明    1
</span></a></p><p style="text-align: justify"><a href="#_Toc231736101"><span style="font-size:10pt">2    定义Arguments    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc231736102"><span style="font-size:10pt">3    In参数    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736103"><span style="font-size:10pt">3.1    [In参数]是[System.Activities.InArgument&lt;T&gt;]类型的属性,    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736104"><span style="font-size:10pt"><span style="font-family:宋体">3.2</span>    <span style="font-family:宋体">设计时,可以在属性框中</span>,<span style="font-family:宋体">对</span>[In参数]的赋值,[In参数]的赋值要使用"表达式"方式    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736105"><span style="font-size:10pt"><span style="font-family:宋体">3.3</span>    运行时,可以启动参数的方式<span style="font-family:宋体">对</span>[In参数]赋值    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736106"><span style="font-size:10pt">3.4    [In参数]不能在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736107"><span style="font-size:10pt"><span style="font-family:宋体">3.5</span>    [In参数]不能用[Assign]赋值    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736108"><span style="font-size:10pt"><span style="font-family:宋体">3.6</span>    [In参数]可以在流程内部被其它[表达式]引用    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc231736109"><span style="font-size:10pt"><span style="font-family:宋体">4</span>    Out 参数    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736110"><span style="font-size:10pt">4.1    [Out参数]是[System.Activities.OutArgument&lt;T&gt;]类型的属性,    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736111"><span style="font-size:10pt">4.2    [Out参数]可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736112"><span style="font-size:10pt"><span style="font-family:宋体">4.3</span>    运行时,可以启动参数的方式<span style="font-family:宋体">对</span>[Out 参数]赋值    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736113"><span style="font-size:10pt"><span style="font-family:宋体">4.4</span>    <span style="font-family:宋体">设计时,不能在属性框中</span>,<span style="font-family:宋体">对</span>[In参数]的赋值    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736114"><span style="font-size:10pt"><span style="font-family:宋体">4.5</span>    [out参数]可用[Assign]赋值    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736115"><span style="font-size:10pt"><span style="font-family:宋体">4.6</span>    [out参数]可以在流程内部被其它[表达式]引用    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc231736116"><span style="font-size:10pt"><span style="font-family:宋体">5</span>    In/Out参数    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736117"><span style="font-size:10pt">5.1    1.[In/Out参数]是[System.Activities.InOutArgument&lt;T&gt;]类型的属性    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736118"><span style="font-size:10pt">5.2    2.运行时,可以启动参数的方式对[IN/Out 参数]赋值,可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到[IN/Out 参数]值    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736119"><span style="font-size:10pt"><span style="font-family:宋体">5.3</span>    <span style="font-family:宋体">设计时,不能在属性框中</span>,<span style="font-family:宋体">对</span>[In/Out参数]的赋值    6</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736120"><span style="font-size:10pt"><span style="font-family:宋体">5.4</span>    [In/Out参数]可用[Assign]赋值    6</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231736121"><span style="font-size:10pt">5.5    [In/Out参数]可以在流程内部被其它[表达式]引用    6</span></a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><p><span style="font-family:宋体">Arguments是WF的输出和输入接口.参数属性Direction，有In，Out，In/Out,Propery选项</span>
	</p><p style="text-align: center"><h1>[In，Out，In/Out]参数使用说明
</h1></p><p><span style="font-family:宋体">
			<table style="border-collapse:collapse" border="0"><colgroup><col style="width:67px"/><col style="width:91px"/><col style="width:128px"/><col style="width:88px"/><col style="width:91px"/><col style="width:103px"/></colgroup><tbody valign="top"><tr style="height: 32px"><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"> </td><td vAlign="middle" style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">启动传参</span></p></td><td vAlign="middle" style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt">OnCompleted 事件访问</span></p></td><td vAlign="middle" style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">属性栏赋值</span></p></td><td vAlign="middle" style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">表达式访问</span></p></td><td vAlign="middle" style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt">Assign 赋值</span></p></td></tr><tr style="height: 32px"><td style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt"><strong>In</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="color:red; font-family:宋体; font-size:10pt"><strong>X</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="color:red; font-family:宋体; font-size:10pt"><strong>X</strong></span></p></td></tr><tr style="height: 32px"><td style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt"><strong>Out</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="color:red; font-family:宋体; font-size:10pt"><strong>X</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td></tr><tr style="height: 32px"><td style="background: #d9d9d9; padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-size:10pt"><strong>In/Out</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="color:red; font-family:宋体; font-size:10pt"><strong>X</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt"><strong>V</strong></span></p></td></tr></tbody></table><p>
 </p><p>
 </p><p>
 </p><p style="text-align: center"><h1>定义</h1></p></span>Arguments<h1>
		</h1></p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta11.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><p>
 </p><p style="text-align: center"><h1>In参数
</h1></p><h2>[In参数]是[System.Activities.InArgument&lt;T&gt;]类型的属性,
</h2><p>
 </p><p>代码定义方式
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">   public class myElement : CodeActivity
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            string v = s.Get(context);
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine(v);
</span></p><p>       
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>      
 </p><p><span style="font-family:宋体; font-size:10pt">        public System.Activities.InArgument&lt;string&gt; s
</span></p><p><span style="font-family:宋体; font-size:10pt">        { set; get; }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-family:宋体">xaml定义方式
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta12.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-size:10pt">x:Class="WorkflowConsoleApplication3.myActivity" 
</span></p><p><span style="font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-size:10pt">xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;" 
</span></p><p><span style="font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-size:10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-size:10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-size:10pt">
								<span style="color:red">  &lt;x:Property Name="s" Type="p:InArgument(x:String)" /&gt;
</span></span></p><p><span style="font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-size:10pt">  &lt;p:WriteLine&gt;[s]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2><span style="font-family:宋体">设计时,可以在属性框中</span>,<span style="font-family:宋体">对</span>[In参数]的赋值,[In参数]的赋值要使用"表达式"方式<span style="font-family:宋体">
		</span></h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:26px"/><col style="width:542px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta13.png" alt=""/></p></td></tr><tr style="height: 48px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">       WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">       myInstance.Run();</span></p></td></tr><tr style="height: 136px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta14.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>运行时,可以启动参数的方式<span style="font-family:宋体">对</span>[In参数]赋值<span style="font-family:宋体">
		</span></h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:59px"/><col style="width:509px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  System.Collections.Generic.Dictionary&lt;string, object&gt; d = new Dictionary&lt;string, object&gt;();
</span></p><p><span style="font-family:宋体; font-size:10pt">  d.Add("s", "wxwinter");
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">   WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);
</span></p><p><span style="font-family:宋体; font-size:10pt">  myInstance.Run();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta15.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>[In参数]不能在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到
</h2><p>
 </p><h2>[In参数]不能用[Assign]赋值<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta16.png" alt=""/><span style="font-family:宋体">
		</span></p><h2>[In参数]可以在流程内部被其它[表达式]引用<span style="font-family:宋体">
		</span></h2><p style="text-align: center"><h1>Out 参数<span style="font-family:宋体">
			</span></h1></p><h2>[Out参数]是[System.Activities.OutArgument&lt;T&gt;]类型的属性,
</h2><p>代码定义方式如下:
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">   public class myElement : CodeActivity
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            string v = s.Get(context);
</span></p><p><span style="font-family:宋体; font-size:10pt">              s.Set(context, "wxd:" + v);
</span></p><p>       
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>     
 </p><p><span style="font-family:宋体; font-size:10pt">        public System.Activities.OutArgument&lt;string&gt; s
</span></p><p><span style="font-family:宋体; font-size:10pt">        { set; get; }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }
</span></p><p><span style="font-family:宋体; font-size:10pt">}</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-family:宋体">xaml定义方式
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta17.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">x:Class="WorkflowConsoleApplication3.myActivity" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red"> &lt;x:Property Name="s" Type="p:OutArgument(x:String)" /&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:WriteLine&gt;[s]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h2>[Out参数]可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1011px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">  class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new myElement());
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted += completed;
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine(e.Outputs["s"].ToString());
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta18.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>运行时,可以启动参数的方式<span style="font-family:宋体">对</span>[Out 参数]赋值<span style="font-family:宋体">
		</span></h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:54px"/><col style="width:514px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt"> class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Collections.Generic.Dictionary&lt;string, object&gt; d = new Dictionary&lt;string, object&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            d.Add("s", "wxwinter");
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted += completed;
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine(e.Outputs["s"].ToString());
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta19.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2><span style="font-family:宋体">设计时,不能在属性框中</span>,<span style="font-family:宋体">对</span>[In参数]的赋值<span style="font-family:宋体">
		</span></h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1011px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta110.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>[out参数]可用[Assign]赋值<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta111.png" alt=""/><span style="font-family:宋体">
		</span></p><h2>[out参数]可以在流程内部被其它[表达式]引用<span style="font-family:宋体">
		</span></h2><p style="text-align: center"><h1>In/Out参数<span style="font-family:宋体">
			</span></h1></p><h2>1.[In/Out参数]是[System.Activities.InOutArgument&lt;T&gt;]类型的属性
</h2><p>代码定义方式
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">    public class myElement : CodeActivity
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        protected override void Execute(CodeActivityContext context)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            string v = s.Get(context);
</span></p><p>  
 </p><p><span style="font-family:宋体; font-size:10pt">            s.Set(context, "wxd:" + v);
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>     
 </p><p><span style="font-family:宋体; font-size:10pt">        public System.Activities.InOutArgument&lt;string&gt; s
</span></p><p><span style="font-family:宋体; font-size:10pt">        { set; get; }
</span></p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p>xoml方式
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1011px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta112.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">x:Class="WorkflowConsoleApplication3.myActivity" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red">   &lt;x:Property Name="s" Type="p:InOutArgument(x:String)" /&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:WriteLine&gt;[s]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h2>2.运行时,可以启动参数的方式对[IN/Out 参数]赋值,可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到[IN/Out 参数]值
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1011px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:宋体; font-size:10pt">   class Program
</span></p><p><span style="font-family:宋体; font-size:10pt">    {
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void Main(string[] args)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p><span style="font-family:宋体; font-size:10pt">            System.Collections.Generic.Dictionary&lt;string, object&gt; d = new System.Collections.Generic.Dictionary&lt;string, object&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            d.Add("s", "wxwinter");
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.OnCompleted += completed;
</span></p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p><span style="font-family:宋体; font-size:10pt">        static void completed(WorkflowCompletedEventArgs e)
</span></p><p><span style="font-family:宋体; font-size:10pt">        {
</span></p><p>           
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.WriteLine(e.Outputs["s"].ToString());
</span></p><p><span style="font-family:宋体; font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta113.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2><span style="font-family:宋体">设计时,不能在属性框中</span>,<span style="font-family:宋体">对</span>[In/Out参数]的赋值<span style="font-family:宋体">
		</span></h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:1011px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta114.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>[In/Out参数]可用[Assign]赋值<span style="font-family:宋体">
		</span></h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060209_1200_WF40Beta115.png" alt=""/><span style="font-family:宋体">
		</span></p><h2>[In/Out参数]可以在流程内部被其它[表达式]引用
</h2><img src ="http://www.cnblogs.com/foundation/aggbug/1494828.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4B1 的Procedural Activity 之Sequence,Delay,Pick,PickBranch,Parallel,ForEach,ForEach&lt;T&gt;使用</title><link>http://www.cnblogs.com/foundation/archive/2009/06/01/1493832.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 01 Jun 2009 08:18:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/06/01/1493832.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1493832.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/06/01/1493832.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1493832.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1493832.html</trackback:ping><description><![CDATA[<p>WF4B1 的Procedural Activity 之Sequence,Delay,Pick,PickBranch,Parallel,ForEach,ForEach&lt;T&gt;使用
</p><p>
 </p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636346"><span style="font-size:10pt">1.1    Sequence 顺序容器    1
</span></a></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636347"><span style="font-size:10pt">1.2    Delay 延时    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636348"><span style="font-size:10pt">1.2.1    例    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636349"><span style="font-size:10pt">1.3    Pick 与 PickBranch    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636350"><span style="font-size:10pt">1.3.1    Pick 中的 PickBranch是单线执行的    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636351"><span style="font-size:10pt">1.3.2    例    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636352"><span style="font-size:10pt">1.4    Parallel 并行容器    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636353"><span style="font-size:10pt">1.4.1    例    4</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636354"><span style="font-size:10pt">1.5    ForEach 循环    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636355"><span style="font-size:10pt">1.5.1    Values属性    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636356"><span style="font-size:10pt">1.5.2    例    6</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231636357"><span style="font-size:10pt">1.6    ForEach&lt;T&gt; 循环    7</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231636358"><span style="font-size:10pt">1.6.1    例    7</span></a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><h2>Sequence 顺序容器
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced1.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.Sequence
</span></p><p><span style="font-family:宋体">基类: NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[Activities]集合,可以存放Activity
</span></p><p><span style="font-family:宋体">2.[Activities]集合中的Activity按顺序从上向下执行</span>
	</p><p>3.默认为[顺序工作流]的根容器<span style="font-family:宋体">
		</span></p><p>
 </p><h2>Delay 延时
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced2.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><p><span style="font-family:宋体">类名: System.Activities.Statements.Delay
</span></p><p><span style="font-family:宋体">基类: NativeActivity ,
</span></p><p><span style="font-family:宋体">接口: System.Activities.IActivityExtensionProvider
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.延迟，按指定的时间阻止当前的工作流执行。 持续时间过期后，工作流继续执行
</span></p><p><span style="font-family:宋体">      2.[Duration]属性,类型为System.Activities.InArgument&lt;System.TimeSpan&gt;,表示阻止当前的工作流执行的时间
</span></p><p><span style="font-family:宋体">
			<span style="color:red"> 3.不触发[OnIdel]
</span></span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced3.png" alt=""/><span style="font-family:宋体">
		</span></p><h3>例
</h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced4.png" alt=""/>
	</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:34px"/><col style="width:534px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="WorkflowConsoleApplication3.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:__Sequence1="clr-namespace:WorkflowConsoleApplication3;"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;p:WriteLine DisplayName="WriteLine(print:begin+Now)"&gt;["begin:" + System.DateTime.Now.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;p:Delay DisplayName="Delay(10秒)"&gt;[New TimeSpan(0, 0, 10)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;p:WriteLine DisplayName="WriteLine(print:begin+Now)"&gt;["end:" + System.DateTime.Now.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt"> &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced5.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>Pick 与 PickBranch 
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced6.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.Pick
</span></p><p><span style="font-family:宋体">基类: NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[Pick]触发容器,提供了基于事件的控制流。 
</span></p><p><span style="font-family:宋体">2.[Branches]集合的类型为[System.Collections.ObjectModel.Collection&lt;System.Activities.Statements.PickBranch&gt;]
</span></p><p><span style="font-family:宋体">  是子控件集合, 只能添加[PickBranch]
</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced7.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.PickBranch
</span></p><p><span style="font-family:宋体">基类: object
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[Pick]触发容器的分支。  [PickBranch] 只可添加到[Pick]中
</span></p><p><span style="font-family:宋体">      2.[Trigger] 属性,只能放入触发类Activity
</span></p><p><span style="font-family:宋体">      3.[Action] 当[Trigger] 被触发时,所要执行的Activity
</span></p><p>
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced8.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h3> Pick 中的 PickBranch是单线执行的
</h3><p><span style="font-family:宋体">1. 只要有一个[</span>PickBranch]的[<span style="font-family:宋体">Trigger</span>]被触发,其他<span style="font-family:宋体">[</span>PickBranch]就不会被触发了
</p><p><span style="font-family:宋体">2. 即使在被执行的[</span>PickBranch]还没完成时,其他<span style="font-family:宋体">[</span>PickBranch]也不会被触发<span style="font-family:宋体">
		</span></p><p>
 </p><h3>例
</h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced9.png" alt=""/>
	</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:34px"/><col style="width:534px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="WorkflowConsoleApplication3.Sequence1"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:__Sequence1="clr-namespace:WorkflowConsoleApplication3;" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine&gt;["begin"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:Pick&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:PickBranch&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:PickBranch.Trigger&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Delay&gt;[New TimeSpan(0, 0, 10)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:PickBranch.Trigger&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine&gt;["10"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:PickBranch&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:PickBranch&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:PickBranch.Trigger&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Delay&gt;[New TimeSpan(0, 0, 5)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:PickBranch.Trigger&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine&gt;["5"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:PickBranch&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:Pick&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine&gt;["end"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">       WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">       myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">           System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced10.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>Parallel 并行容器
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced11.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.Parallel
</span></p><p><span style="font-family:宋体">基类: object
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.[Branches]集合的类型为System.Collections.ObjectModel.Collection&lt;System.Activities.WorkflowElement&gt;,容器会并行执行容器内的所有Activity
</span></p><p><span style="font-family:宋体">      2.[CompletionCondition] 属性[System.Activities.WorkflowElement&lt;bool&gt;],当[ CompletionCondition 属性]为真时,完成
</span></p><p>     
 </p><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced12.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><h3>例
</h3><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced13.png" alt=""/><span style="font-family:宋体">
		</span></p><p>
 </p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:34px"/><col style="width:534px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="WorkflowConsoleApplication3.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:__Sequence1="clr-namespace:WorkflowConsoleApplication3;" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence &gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine DisplayName="WriteLine(print:begin+Now)"&gt;["begin:" + System.DateTime.Now.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:Parallel&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Delay DisplayName="Delay(10秒)"&gt;[New TimeSpan(0, 0, 10)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine DisplayName="WriteLine(print:&amp;quot;A&amp;quot;)"&gt;["A"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:Delay DisplayName="Delay(15秒)"&gt;[New TimeSpan(0, 0, 15)]&lt;/p:Delay&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine DisplayName="WriteLine(print:&amp;quot;B&amp;quot;)"&gt;["B"]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:Parallel&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:WriteLine DisplayName="WriteLine(print:begin+Now)"&gt;["end:" + System.DateTime.Now.ToString()]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">       WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
</span></p><p><span style="font-family:宋体; font-size:10pt">       myInstance.Run();
</span></p><p><span style="font-family:宋体; font-size:10pt">           System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced14.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><h2>ForEach 循环
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced15.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.ForEach
</span></p><p><span style="font-family:宋体">基类: NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明: 1.循环[Values]属性所指定的集合中的值,[Values]属性可指定到[object]对象上
</span></p><p><span style="font-family:宋体">      2.可在[ForEach]内部添加[Activity]用以操作循环的[item],只能添加一个[Activity],[Activity]内部的子[Activity]也可访问[item]
</span></p><p><span style="font-family:宋体">      3.使用[ForEach]时,内部[item]在表达式输入框中为[object]类型,可以使用[ForEach&lt;T&gt;],这样内部[item]在表达式输入框中为&lt;T&gt;
</span></p><p><span style="font-family:宋体">
			<img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced16.png" alt=""/>
		</span></p><p>
 </p><h3>Values属性
</h3><p><span style="font-family:宋体">有时设不上,要到xaml中手写
</span></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:568px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced17.png" alt=""/></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity 
</span></p><p><span style="font-family:宋体; font-size:10pt">mc:Ignorable="" x:Class="WorkflowConsoleApplication5.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:s="clr-namespace:System;assembly=mscorlib" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"  
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red">  &lt;x:Property Name="myInputCollection" Type="p:InArgument(scg:IEnumerable(x:String))" /&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:ForEach Values="<span style="color:red">[myInputCollection]</span>"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:ActivityAction x:TypeArguments="s:Object"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Variable x:TypeArguments="s:Object" Name="item" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine&gt;[item]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:ActivityAction&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:ForEach&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr></tbody></table></div><p>
 </p><h3> 例
</h3><p>
 </p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:38px"/><col style="width:530px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity 
</span></p><p><span style="font-family:宋体; font-size:10pt">mc:Ignorable="" x:Class="WorkflowConsoleApplication5.Sequence1" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" 
</span></p><p> 
 </p><p><span style="font-family:宋体; font-size:10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:s="clr-namespace:System;assembly=mscorlib" 
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"  
</span></p><p><span style="font-family:宋体; font-size:10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</span></p><p><span style="color:red; font-family:宋体; font-size:10pt">xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
</span></p><p><span style="font-family:宋体; font-size:10pt">&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red">  &lt;x:Property Name="myInputCollection" Type="p:InArgument(scg:IEnumerable(x:String))" /&gt;
</span></span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:ForEach Values="<span style="color:red">[myInputCollection]</span>"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:ActivityAction x:TypeArguments="s:Object"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Variable x:TypeArguments="s:Object" Name="item" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine&gt;[item]&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:ActivityAction&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:ForEach&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            List&lt;string&gt; list = new List&lt;string&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            list.Add("wxd");
</span></p><p><span style="font-family:宋体; font-size:10pt">            list.Add("lzm");
</span></p><p><span style="font-family:宋体; font-size:10pt">            list.Add("wxwinter");
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("myInputCollection", list );
</span></p><p>           
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(), inputCollection);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">               System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced18.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p>
 </p><h2>ForEach&lt;T&gt; 循环
</h2><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced19.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">类名: System.Activities.Statements.ForEach&lt;T&gt;
</span></p><p><span style="font-family:宋体">基类: NativeActivity
</span></p><p><span style="font-family:宋体">文件: System.Activities.dll
</span></p><p><span style="font-family:宋体">类型: sealed
</span></p><p><span style="font-family:宋体">说明:  1.与[ForEach]不同的是,内部[item]在表达式输入框中为&lt;T&gt;
</span></p><p><span style="font-family:宋体">       2.在添加[ForEach&lt;T&gt;]时,需要为内部[item]指定类型
</span></p><p style="margin-left: 51pt"><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced20.png" alt=""/><span style="font-family:宋体">
		</span></p><p><span style="font-family:宋体">       3.其他使用与[ForEach]相同
</span></p><p>
 </p><p>
 </p><h3>例
</h3><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:28px"/><col style="width:540px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">流程</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">&lt;p:Activity mc:Ignorable="" 
</span></p><p><span style="font-family:宋体; font-size:10pt">            x:Class="WorkflowConsoleApplication5.Sequence1"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:s="clr-namespace:System;assembly=mscorlib"
</span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" 
</span></p><p><span style="font-family:宋体; font-size:10pt">
								<span style="color:red">  xmlns:w="clr-namespace:WorkflowConsoleApplication5;assembly=WorkflowConsoleApplication5" 
</span></span></p><p><span style="font-family:宋体; font-size:10pt">            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;x:Property Name="myInputCollection" Type="p:InArgument(s:Object)" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/x:Members&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;p:ForEach <span style="color:red">x:TypeArguments="w:myType"</span> Values="[myInputCollection]"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;p:ActivityAction x:TypeArguments="w:myType"&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">          &lt;p:Variable x:TypeArguments="w:myType" Name="item" /&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;/p:ActivityAction.Argument&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">        &lt;p:WriteLine&gt;<span style="color:red">[item.myValue]</span>&lt;/p:WriteLine&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">      &lt;/p:ActivityAction&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">    &lt;/p:ForEach&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">  &lt;/p:Sequence&gt;
</span></p><p><span style="font-family:宋体; font-size:10pt">&lt;/p:Activity&gt;</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">宿主</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">            Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            List&lt;string&gt; list = new List&lt;string&gt;();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            list.Add("wxd");
</span></p><p><span style="font-family:宋体; font-size:10pt">            list.Add("lzm");
</span></p><p><span style="font-family:宋体; font-size:10pt">            list.Add("wxwinter");
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            inputCollection.Add("myInputCollection", list );
</span></p><p>           
 </p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(), inputCollection);
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">            myInstance.Run();
</span></p><p>
 </p><p><span style="font-family:宋体; font-size:10pt">               System.Console.Read();</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">结果</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><img src="http://images.cnblogs.com/cnblogs_com/foundation/060109_0817_WF4B1Proced21.png" alt=""/></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1493832.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47984/" target="_blank">《商业周刊》:Mozilla的志愿者开发模式被复制</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF4B1 的Procedural Activity 之Assign,WriteLine,IF,While,DoWhile,Switch&lt;T&gt;使用</title><link>http://www.cnblogs.com/foundation/archive/2009/05/31/1493244.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sun, 31 May 2009 13:53:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/05/31/1493244.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1493244.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/05/31/1493244.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1493244.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1493244.html</trackback:ping><description><![CDATA[<p><span style="color: #365f91; font-size: 14pt"><strong>目录 </strong></span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570045"><span style="font-size: 10pt"><span style="font-family: 宋体">1.1</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">Assign 赋值</span>&nbsp;&nbsp;&nbsp;&nbsp;1 </span></a></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570046"><span style="font-size: 10pt">1.1.1&nbsp;&nbsp;&nbsp;&nbsp;参数,变量赋值&nbsp;&nbsp;&nbsp;&nbsp;1</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570047"><span style="font-size: 10pt"><span style="font-family: 宋体">1.1.2</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">例</span>&nbsp;&nbsp;&nbsp;&nbsp;1</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570048"><span style="font-size: 10pt"><span style="font-family: 宋体">1.2</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">WriteLine 输出</span>&nbsp;&nbsp;&nbsp;&nbsp;2</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570049"><span style="font-size: 10pt"><span style="font-family: 宋体">1.2.1</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">Text属性</span>&nbsp;&nbsp;&nbsp;&nbsp;2</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570050"><span style="font-size: 10pt"><span style="font-family: 宋体">1.2.2</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">TextWriter 属性</span>&nbsp;&nbsp;&nbsp;&nbsp;2</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570051"><span style="font-size: 10pt"><span style="font-family: 宋体">1.2.3</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">例</span>&nbsp;&nbsp;&nbsp;&nbsp;3</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570052"><span style="font-size: 10pt">1.3&nbsp;&nbsp;&nbsp;&nbsp;IF 条件&nbsp;&nbsp;&nbsp;&nbsp;3</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570053"><span style="font-size: 10pt">1.3.1&nbsp;&nbsp;&nbsp;&nbsp;例&nbsp;&nbsp;&nbsp;&nbsp;4</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570054"><span style="font-size: 10pt">1.4&nbsp;&nbsp;&nbsp;&nbsp;While 条件循环&nbsp;&nbsp;&nbsp;&nbsp;4</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570055"><span style="font-size: 10pt">1.4.1&nbsp;&nbsp;&nbsp;&nbsp;例&nbsp;&nbsp;&nbsp;&nbsp;5</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570056"><span style="font-size: 10pt">1.5&nbsp;&nbsp;&nbsp;&nbsp;DoWhile 条件循环&nbsp;&nbsp;&nbsp;&nbsp;6</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 22pt"><a href="#_Toc231570057"><span style="font-size: 10pt">1.6&nbsp;&nbsp;&nbsp;&nbsp;Switch&lt;T&gt; 分支选择&nbsp;&nbsp;&nbsp;&nbsp;6</span></a><span style="font-size: 10pt"> </span></p>
<p style="text-align: justify; margin-left: 44pt"><a href="#_Toc231570058"><span style="font-size: 10pt">1.6.1&nbsp;&nbsp;&nbsp;&nbsp;例&nbsp;&nbsp;&nbsp;&nbsp;7</span></a><span style="font-size: 10pt"> </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="font-family: 宋体">Assign 赋值 </span></h2>
<p><span style="font-family: 宋体"><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced1.png" /> </span></p>
<p><span style="font-family: 宋体">类名:System.Activities.Statements.Assign </span></p>
<p><span style="font-family: 宋体">基类:CodeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型:sealed </span></p>
<p><span style="font-family: 宋体">说明: 1.可以对流程内定义的参数,变量赋值 </span></p>
<p><span style="font-family: 宋体">2. </span></p>
<h3>参数,变量赋值 </h3>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 568px"></colgroup>
<tbody valign="top">
<tr style="height: 75px">
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p>&nbsp;</p>
<ul><li>
<div style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">To 属性 : 要赋值的对象 </span></div></li><li>
<div style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">Value 属性 : 要赋的值,可以使用表达式方式</span></div></li></ul></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced2.png" /><span style="font-family: 宋体; font-size: 10pt"> <img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced3.png" /></span></p></td></tr></table></div>
<p>&nbsp;</p>
<h3><span style="font-family: 宋体">例 </span></h3>
<p><span style="font-family: 宋体; font-size: 10pt">1.定义In参数[myInput]与Out参数[myOutpot] </span></p>
<p><span style="font-family: 宋体">2.启动流程时传入[myInput]的值, </span></p>
<p><span style="font-family: 宋体">3.在流程中用[Assign]将[myInput]的值加上["wxwinter"]并赋给[myOutpot], </span></p>
<p><span style="font-family: 宋体">4.在流程完成事件中读取[myOutpot]的值 </span></p>
<p>&nbsp;</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 33px">
<col style="width: 535px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">流程</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Activity mc:Ignorable="" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">x:Class="myArgumentsTest.Sequence1" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:__Sequence1="clr-namespace:myArgumentsTest;" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;x:Members&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;x:Property Name="myInput" Type="p:InArgument(x:String)" /&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt"><span style="color: red">&lt;x:Property Name="myOutpot" Type="p:OutArgument(x:String)" /&gt;</span> </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/x:Members&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;p:Assign&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;p:Assign.To&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;p:OutArgument x:TypeArguments="x:String"&gt;[myOutput]&lt;/p:OutArgument&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;/p:Assign.To&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;p:Assign.Value&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;p:InArgument x:TypeArguments="x:String"&gt;[myInput + "wxwinter"]&lt;/p:InArgument&gt; </span></p>
<p><span style="font-family: 宋体; color: red; font-size: 10pt">&lt;/p:Assign.Value&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt"><span style="color: red">&lt;/p:Assign&gt;</span> </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Activity&gt;</span>&nbsp;</p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">宿主</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">class Program </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">static void Main(string[] args) </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">inputCollection.Add("myInput", "wxd"); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(),inputCollection); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.OnCompleted += completed; </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.Run(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.Read(); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">} </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">static void completed(WorkflowCompletedEventArgs e) </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.WriteLine(e.Outputs["myOutput"].ToString()); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">} </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">}</span>&nbsp;</p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">结果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced4.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="font-family: 宋体">WriteLine 输出 </span></h2>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced5.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">类名:System.Activities.Statements.WriteLine </span></p>
<p><span style="font-family: 宋体">基类:CodeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型:sealed </span></p>
<p><span style="font-family: 宋体">说明:1.调用[TextWriter 属性]所指定的[System.IO.TextWriter 对像]输出[Text 属性] 的值 </span></p>
<p><span style="font-family: 宋体">2.如果没指定[TextWriter 属性],默认为控制台输出[Text 属性] 的值 </span></p>
<h3><span style="font-family: 宋体">Text属性 </span></h3>
<p><span style="font-family: 宋体">要输出的值,可以使用表达式 </span></p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 568px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced6.png" /><span style="font-family: 宋体; font-size: 10pt"> </span></p></td></tr></table></div>
<p>&nbsp;</p>
<h3><span style="font-family: 宋体">TextWriter 属性 </span></h3>
<p><span style="font-family: 宋体">System.Activities.InArgument&lt;TextWriter&gt; </span></p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 55px">
<col style="width: 513px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">自定义 </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">TextWriter</span>&nbsp;</p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">public class myTextWriter : System.IO.TextWriter </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">public override Encoding Encoding </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">get { return Encoding.UTF8; } </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">} </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">public override void WriteLine(string value) </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.WriteLine("wxwinter:" + value); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">} </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">}</span>&nbsp;</p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">使用</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced7.png" /></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">xaml</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine TextWriter="[New test.myTextWriter()]"&gt;["wxd"]&lt;/p:WriteLine&gt;</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p><span style="font-family: 宋体; font-size: 10pt">效果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced8.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span style="font-family: 宋体">例 </span></h3>
<p><span style="font-family: 宋体; font-size: 10pt">1.定义In参数[myInput] </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced9.png" /><span style="font-family: 宋体; font-size: 10pt"> </span></p>
<p><span style="font-family: 宋体">2.启动流程时传入[myInput]的值 </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">3.在流程中用[WriteLine]将[myInput]的值以格式化的方式在屏幕打印 </span></p>
<p>&nbsp;</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 38px">
<col style="width: 530px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">流程</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Activity mc:Ignorable="" x:Class="myArgumentsTest.Sequence1" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:__Sequence1="clr-namespace:myArgumentsTest;" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;x:Members&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt"><span style="color: red">&lt;x:Property Name="myInput" Type="p:InArgument(x:String)" /&gt; </span></span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/x:Members&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence &gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt"><span style="color: red">&lt;p:WriteLine&gt;[String.Format("myInput值:{0}", myInput)]&lt;/p:WriteLine&gt; </span></span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Activity&gt;</span>&nbsp;</p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">宿主</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">class Program </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">static void Main(string[] args) </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">{ </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">inputCollection.Add("myInput", "wxd"); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(),inputCollection); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.Run(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.Read(); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">} </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">}</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">结果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced10.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<h2>IF 条件 </h2>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced11.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">类名: System.Activities.Statements.If </span></p>
<p><span style="font-family: 宋体">基类: NativeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型: sealed </span></p>
<p><span style="font-family: 宋体">说明: 1. [Condition]属性的类型为[ System.Activities.InArgument&lt;bool&gt; ],可以接受一个结果为[bool]的表达式 </span></p>
<p><span style="font-family: 宋体">2. [Then] 属性 Activity容器,如果[Condition]的表达式结果为[True],执行该容器内的[Activity] </span></p>
<p><span style="font-family: 宋体">3. [Else] 属性 Activity容器,如果[Condition]的表达式结果为[False],执行该容器内的[Activity] </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced12.png" /><span style="font-family: 宋体"> </span></p>
<h3>例 </h3>
<p><span style="font-family: 宋体">1.定义In参数[myInput] </span></p>
<p><span style="font-family: 宋体">2.启动流程时传入[myInput]的值为["wxd"], </span></p>
<p><span style="font-family: 宋体">3.在流程中添加[If],[Condition]属性的值为[myInput = "wxd"] </span></p>
<p><span style="font-family: 宋体">在[Else]容器中添加[WriteLine],输出值为["false"] </span></p>
<p><span style="font-family: 宋体">在[Then]容器中添加[WriteLine],输出值为["true"] </span></p>
<p>&nbsp;</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 34px">
<col style="width: 534px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">流程</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Activity mc:Ignorable="" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">x:Class="WorkflowConsoleApplication1.Sequence1" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;x:Members&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;x:Property Name="myInput" Type="p:InArgument(x:String)" /&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/x:Members&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:If Condition="[myInput = &amp;quot;wxd&amp;quot;]"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:If.Else&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine&gt;["false"]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:If.Else&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:If.Then&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine&gt;["true"]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:If.Then&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:If&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Activity&gt;</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">宿主</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">Dictionary&lt;string, object&gt; inputCollection = new Dictionary&lt;string, object&gt;(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">inputCollection.Add("myInput", "wxd"); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(), inputCollection); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.Run(); </span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.Read();</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">结果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced13.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>While 条件循环 </h2>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced14.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">类名: System.Activities.Statements.While </span></p>
<p><span style="font-family: 宋体">基类: NativeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型: sealed </span></p>
<p><span style="font-family: 宋体">说明: 1. [Condition]属性的类型为[ System.Activities.InArgument&lt;bool&gt; ],可以接受一个结果为[bool]的表达式 </span></p>
<p><span style="font-family: 宋体">2. [Body] 属性 Activity容器,如果[Condition]的表达式结果为[True],执行该容器内的[Activity] </span></p>
<p><span style="font-family: 宋体">3. [Variables]属性的类型为只读[System.Collections.ObjectModel.Collection&lt;System.Activities.Variable&gt;] </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced15.png" /><span style="font-family: 宋体"> </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>例 </h3>
<p><span style="font-family: 宋体">1.定义变量[myVariable],默认值为[0] </span></p>
<p><span style="font-family: 宋体">2.在流程中添加[</span>While<span style="font-family: 宋体">],[Condition]属性的值为[myVariable &lt;= 10] </span></p>
<p><span style="font-family: 宋体">在[Body]容器中添加[Sequence]容器 </span></p>
<p><span style="font-family: 宋体">在[Sequence]容器添加[WriteLine],输出值为[myVariable.ToString()] </span></p>
<p><span style="font-family: 宋体">在[Sequence]容器添加[Assign],为[myVariable =myVariable +1] </span></p>
<p>&nbsp;</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 23px">
<col style="width: 545px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">流程</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Activity mc:Ignorable="" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">x:Class="WorkflowConsoleApplication1.Sequence1" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence.Variables&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Variable x:TypeArguments="x:Int32" Default="[0]" Name="myVariable" /&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence.Variables&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:While Condition="[myVariable &amp;lt;= 10]"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine&gt;[myVariable.ToString()]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Assign&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Assign.To&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:OutArgument x:TypeArguments="x:Int32"&gt;[myVariable]&lt;/p:OutArgument&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Assign.To&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Assign.Value&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:InArgument x:TypeArguments="x:Int32"&gt;[myVariable + 1]&lt;/p:InArgument&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Assign.Value&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Assign&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:While&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Activity&gt;<img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced16.png" /></span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">宿主</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">WorkflowInstance myInstance = new WorkflowInstance(new Sequence1()); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.Run(); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.Read();</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">结果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced17.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<h2>DoWhile 条件循环 </h2>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced18.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">类名: System.Activities.Statements.While </span></p>
<p><span style="font-family: 宋体">基类: NativeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型: sealed </span></p>
<p><span style="font-family: 宋体">说明: 1. [Condition]属性的类型为[ System.Activities.InArgument&lt;bool&gt; ],可以接受一个结果为[bool]的表达式 </span></p>
<p><span style="font-family: 宋体">2. [Body] 属性 Activity容器,如果[Condition]的表达式结果为[True],执行该容器内的[Activity] </span></p>
<p><span style="font-family: 宋体">3. [Variables]属性的类型为只读[System.Collections.ObjectModel.Collection&lt;System.Activities.Variable&gt;] </span></p>
<p><span style="font-family: 宋体">4. 与[While]不同的是无论[Condition]属性的结果是[True]或[False],[Body] 中的[Activity]都会执行一次 </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced19.png" /><span style="font-family: 宋体"> </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Switch&lt;T&gt; 分支选择 </h2>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced20.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">类名: System.Activities.Statements.Switch&lt;T&gt; </span></p>
<p><span style="font-family: 宋体">基类: NativeActivity </span></p>
<p><span style="font-family: 宋体">文件: System.Activities.dll </span></p>
<p><span style="font-family: 宋体">类型: sealed </span></p>
<p><span style="font-family: 宋体">说明:&nbsp;</span></p>
<p><span style="font-family: 宋体">1.[Expression]属性的类型为[System.Activities.InArgument&lt;T&gt;],是case的 表达式 </span></p>
<p><span style="font-family: 宋体">2.在添加[</span>Switch&lt;T&gt;<span style="font-family: 宋体">]时,需要为case 表达式 [Expression属性] 指定类型 </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced21.png" /><span style="font-family: 宋体"> </span></p>
<p><span style="font-family: 宋体">3.[Default] 属性 是Activity容器,当 [Expression属性] 没有对应的case时,执行该容器内的[Activity] </span></p>
<p><span style="font-family: 宋体">4.[Cases]集合类型为[System.Collections.Generic.IDictionary&lt;T, System.Activities.WorkflowElement&gt;],是case的分支集合 </span></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced22.png" /><span style="font-family: 宋体"> </span></p>
<p>&nbsp;</p>
<h3>例 </h3>
<p><span style="font-family: 宋体">1.定义变量[myVariable],默认值为[1] </span></p>
<p><span style="font-family: 宋体">2.在流程中添加[</span>Switch&lt;T&gt;<span style="font-family: 宋体">],类型选[Int32] </span></p>
<p><span style="font-family: 宋体">[Expression]属性的值为[myVariable] </span></p>
<p><span style="font-family: 宋体">在[Default]执行容器中添加[WriteLine],输出值为["no case"] </span></p>
<p><span style="font-family: 宋体">添加case 分支,[case]为[1],执行容器中添加[WriteLine],输出值为["case 1"] </span></p>
<p><span style="font-family: 宋体">添加case 分支,[case]为[2],执行容器中添加[WriteLine],输出值为["case 2"] </span></p>
<p>&nbsp;</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 34px">
<col style="width: 534px"></colgroup>
<tbody valign="top">
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">流程</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: 0.5pt solid; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Activity mc:Ignorable="" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">x:Class="WorkflowConsoleApplication1.Sequence1" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence &gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Sequence.Variables&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Variable x:TypeArguments="x:Int32" Default="[1]" Name="myVariable" /&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence.Variables&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Switch x:TypeArguments="x:Int32" Expression="[myVariable]"&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:Switch.Default&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine&gt;["no case"]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Switch.Default&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine x:Key="1"&gt;["case 1"]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;p:WriteLine x:Key="2"&gt;["case 2"]&lt;/p:WriteLine&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Switch&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Sequence&gt; </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">&lt;/p:Activity&gt;</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">宿主</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><span style="font-family: 宋体; font-size: 10pt">WorkflowInstance myInstance = new WorkflowInstance(new Sequence1()); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">myInstance.Run(); </span></p>
<p><span style="font-family: 宋体; font-size: 10pt">System.Console.Read();</span></p></td></tr>
<tr>
<td style="border-bottom: 0.5pt solid; border-left: 0.5pt solid; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid" valign="middle">
<p style="text-align: justify"><span style="font-family: 宋体; font-size: 10pt">结果</span></p></td>
<td style="border-bottom: 0.5pt solid; border-left: medium none; padding-left: 7px; padding-right: 7px; border-top: medium none; border-right: 0.5pt solid">
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/foundation/053109_1352_WF4B1Proced23.png" /></p></td></tr></table></div>
<p>&nbsp;</p>
<p><span style="font-family: 宋体"></span>&nbsp;</p><img src ="http://www.cnblogs.com/foundation/aggbug/1493244.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47977/" target="_blank">Mono 的Virtual PC 虚拟机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WF,WPF,Silverlight的DependencyProperty 附加属性</title><link>http://www.cnblogs.com/foundation/archive/2009/03/10/1407428.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 09 Mar 2009 17:23:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/03/10/1407428.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1407428.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/03/10/1407428.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1407428.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1407428.html</trackback:ping><description><![CDATA[摘要: 注意,是DependencyProperty 附加属性,而不是绑定属性&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/03/10/1407428.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1407428.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>用游戏杆控制WPF中三维模型</title><link>http://www.cnblogs.com/foundation/archive/2009/03/02/1401377.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 02 Mar 2009 03:45:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/03/02/1401377.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1401377.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/03/02/1401377.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1401377.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1401377.html</trackback:ping><description><![CDATA[摘要: 今天心情比较好,不写WF的文章了,换个主题.写一个我最最最擅长的内容.&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/03/02/1401377.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1401377.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>再发一个WF综合技术演示的例子</title><link>http://www.cnblogs.com/foundation/archive/2009/02/27/1399657.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 27 Feb 2009 08:32:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/27/1399657.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1399657.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/27/1399657.html#Feedback</comments><slash:comments>33</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1399657.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1399657.html</trackback:ping><description><![CDATA[摘要: 发一个以WF为中心的综合技术演示的例子,在这个例子我分别用WPF,WinForm,ASP.NET,Silverlight实现了四个客户端,每个客户端的UI风格与功能完全一样,便于大家使用&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/02/27/1399657.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1399657.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>无题</title><link>http://www.cnblogs.com/foundation/archive/2009/02/27/1399417.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 27 Feb 2009 04:46:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/27/1399417.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1399417.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/27/1399417.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1399417.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1399417.html</trackback:ping><description><![CDATA[<p>一个20年前DOS下的游戏,模拟城市,1989年Maxis Software开发
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022709_0444_1.png" alt=""/>
	</p><p>
 </p><p>本来写了很多,却又都删掉了,有些话还是留在心里默默的激励自已吧
</p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1399417.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_流程的层次</title><link>http://www.cnblogs.com/foundation/archive/2009/02/24/1397111.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 24 Feb 2009 04:50:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/24/1397111.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1397111.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/24/1397111.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1397111.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1397111.html</trackback:ping><description><![CDATA[<h1>基于WF设计业务流程平台_流程的层次
</h1><p>
 </p><p>我在[同一流程多种状态]中谈了同一流程,由于观察者的不同,会出现不同的状态.
</p><p>
 </p><p>本文我还是从流程的视角上淡一下流程的层次这个问题.
</p><p>
 </p><p>
 </p><p>注意,在这里,我说的[流程的层次]与我常说的功能封装不是一个概念,下图是一个功能封装的例子
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF1.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>在这个例子中,[通知]与[发电了邮件],[发短信] 不是同一范围的概念,
</p><p>[通知]是一业务行为,
</p><p>对做出人来讲是一种义务,告知义务
</p><p>对接收人来讲是一种权利.知情权
</p><p>
 </p><p>而[发电了邮件],[发短信] 只是一种手段,是实现[通知]这种业务行为的一种具体实现手段
</p><p>
 </p><p>而我要说的流程的层次是指业务范畴上的层次
</p><p>
 </p><p>先看一个例子:
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF2.png" alt=""/>
	</p><p>这是一个没的层次的流程,虽然,事情就是按照上面的流程办理的.但由于设计时没有考虑流程的层次,将带来很大的弊端(弊端我以后再谈),
</p><p>
 </p><p>下面看一下我的改进
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF3.png" alt=""/>
	</p><p>这是一个有层次的流程的流程,从流程的上层管理者看,流程只的三个阶段[方案制定阶段],[方案审批阶段],[方案实施阶段]
</p><p>
 </p><p>下面是展开效果:
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF4.png" alt=""/>
	</p><p>展开后,在[方案制定阶段],[方案审批阶段],[方案实施阶段],各自有各自独立的空间.
</p><p>在这里,
</p><p>[A部门]知道制定方案的过程 :  [业务员提交方案 -&gt; 主管理审核方案]
</p><p>[B部门]知道审批方案的过程 :  [主管理分配分析方案的任务 -&gt; 业务员分析方案 -&gt; 主管理审批方案]
</p><p>
 </p><p>在这里,[A部门]内部永远不知道[B部门]是如何工作的,甚至可以不知道[B部门]的存在
</p><p>而[A部门]内部办事方式的变化,出不用告知[B部门],[B部门]只关心[A部门]何时将什么交给他们
</p><p>
 </p><p>这时,其实我们有了四个流程:
</p><ul><li><div style="text-align: justify">[方案制定 -&gt;  方案审批 -&gt; 方案实施] 流程
</div></li><li><div style="text-align: justify">[A部门方案制定] 子流程
</div></li><li><div style="text-align: justify">[B部门方案审批] 子流程
</div></li><li><div style="text-align: justify">[C部门方案实施] 子流程
</div></li></ul><p>
 </p><p>当然,[方案制定 -&gt;  方案审批 -&gt; 方案实施] 这个流程也可能是其它流程的一部分
</p><p>[B部门方案审批] 中的[审批方案] 也可能有下一级的子流程,比如会签
</p><p>
 </p><p>这种设计的最大好处是每个层面可以独立设计,内部的修改不会影响其它环节
</p><p>
 </p><p>下面看一个例子:
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF5.png" alt=""/>
	</p><p>其中
</p><p>[准备材料],[会签],[实施方案],都是调用对应的子流程
</p><p>
 </p><p>再看一个例子:
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/022409_0448_WF6.png" alt=""/>
	</p><p>
 </p><p>上面是一个流程分层的例子
</p><p>
 </p><p>小学的校长只关心如何收钱,收了多少就行了.
</p><p>小学生只要把钱交到学校就行了
</p><p>在每个层面上,每个人都完成自已的工作.不需要去过问别人的工作.而事实上某个小学生的捐款有可能推动了社会主义初级阶段向共产主义过渡的大流程
</p><p>
 </p><p>
 </p><p>流程的分层可以让处于不同层次的人各司其责,互不干扰.
</p><p>
 </p><p>但由于层的不透明,让事项在办现过种程中出现了很多的黑盒,由于黑盒的存在,就出现了很多的弊端.
</p><p>
 </p><p>比如那个捐款的小学生永远不知道他交的10元钱最终花到那里了
</p><p>
 </p><p>所以我们在设计流程的层次时,同时还要考虑一个问题,流程的透明度
</p><p>
 </p><p>我在下一篇文章中会谈流程透明度这个问题
</p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1397111.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>我们为什么需要WF</title><link>http://www.cnblogs.com/foundation/archive/2009/02/20/1394522.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 20 Feb 2009 00:56:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/20/1394522.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1394522.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/20/1394522.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1394522.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1394522.html</trackback:ping><description><![CDATA[摘要: &#160;本文是[我们为什么需要工作流]的姊妹篇,我使了类似的文风,我们为什么需要WF&#160;&#160;以前有人对我说,WF很难用,明明很简单的一个功能,用WF去做却那么繁琐,有这种想法,那我觉得有两种可能,一,你要实现的这个功能确实太简单二,你把这个功能的实现过程想的太简单先看一组列子这是一组非常简单的例子,分别是四个主题,分别代表程序发展的四个阶段什么是程序什么是具有控制流语句程序的控&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/02/20/1394522.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1394522.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>换一个角度再谈一下WF</title><link>http://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Thu, 12 Feb 2009 03:48:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1388929.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1388929.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1388929.html</trackback:ping><description><![CDATA[摘要: &nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1388929.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>关于[一个基于WF的业务流程平台]表设计的说明</title><link>http://www.cnblogs.com/foundation/archive/2009/02/11/1388722.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Wed, 11 Feb 2009 15:54:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/11/1388722.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1388722.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/11/1388722.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1388722.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1388722.html</trackback:ping><description><![CDATA[<p>
 </p><p>
 </p><h2>数据库的主键设计说明
</h2><p>在我发布的例子 <a href="http://www.cnblogs.com/foundation/archive/2009/01/17/1377404.html"><span style="color:blue"><span style="font-family:宋体">一个基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">的业务流程平台</span></span></a> 中,
</p><p>
 </p><p>N12345B 问到
</p><p>//
</p><p>所有的数据结构都几乎使用了Guid这一数据类型作为ID，而这个ID的作用仅仅作为流水号吗？所有表之间的关系都并未用到这一ID标识，而使用的是 xxxNo之类的
</p><p>//
</p><p>
 </p><p>在这里,我对这个Guid的使用原因说明一下
</p><h3>为什么为每个表都加一个Guid列
</h3><p>这是因为我要处理并发,说明如下:
</p><p>使用了Guid列,是为了让每条记录在全开库有一个唯一标识,
</p><p>
 </p><p>我通常会在内存中根据需要维护这样一张表
</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:283px"/><col style="width:130px"/><col style="width:178px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">Guid</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">UserID</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">State</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">76C43F0D-F39E-458b-9E40-D4D70703FF2E</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">001</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"> </td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">76C43F0D-F39E-458b-9E40-D4D70703FF2E</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">002</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"> </td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">76C43F0D-F39E-458b-9E40-D4D70703FF2E</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">003</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"> </td></tr></tbody></table></div><p>
 </p><p>当用户[001]查询某条记录时,如果他选中[他人修改后立即通知我],选项时.
</p><p>服务器端会将该用户查询的记录的Guid与UserID添加到上面的表中.
</p><p>
 </p><p>当某条记录被修改后,系统会到上面的表中查找该记录的Guid是否被注册,如果被注册,则向对应的UserID发一通知.
</p><p>
 </p><p>当然,这只是这个Guid的一个应用,我在做并发修改仲裁时,也用这个Guid,关于这方面,我以后专门写一篇文章介绍
</p><p>
 </p><h3>为什么Guid列要做主键
</h3><p>先鄙视一下自已的懒惰(^_^)
</p><p>
 </p><p>在使用Linq To Sql时,表要的主键,主键不能修改,所以我就用Guid做主键了,而业务主键就让我做成了唯一键
</p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1388722.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_同一流程多种状态</title><link>http://www.cnblogs.com/foundation/archive/2009/02/06/1385122.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 06 Feb 2009 02:32:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/02/06/1385122.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1385122.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/02/06/1385122.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1385122.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1385122.html</trackback:ping><description><![CDATA[<h1>基于WF设计业务流程平台_同一流程多种状态
</h1><p>
 </p><p>
 </p><p>状态图是工作流设计中经常要用到的一个设计图形,
</p><p>
 </p><p>许多流程设计人员在与我谈论状态图时,常对我说对UML中状态图的个种图例都已熟练的掌握了,但每次画业务流程的状态图时,总是觉得画得不随手.
</p><p>
 </p><p>其实,在画业务流程的状态图时,很多人都犯了一个错误,想用一个状态图表现出流程的所的状态
</p><p>
 </p><p>而在实际应用中,同一个流程是用多组状态的,在同一流程和不同参与者眼中,流程的状态各不一样
</p><p>
 </p><p>下面,我用一个例子加以说明:
</p><p>
 </p><p>先说一下场景:
</p><p>
 </p><p>A公司(一家商业公司),要举行一次商业活动,由[市场部]提出,[管理层]批准,[策划部]策划,[实施部]实施的一个流程
</p><p>
 </p><p>
 </p><p>先看一下全景流程
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/020609_0231_WF1.png" alt=""/>
	</p><p>
 </p><p>这是一个最常见的流程
</p><p>
 </p><p>该流程是一个多部门多职能参与的公事流程 
</p><p>在这个流程中体现了
</p><ol><li><div style="text-align: justify">业务升级:[意向]-&gt;[需求]-&gt;[方案]-&gt;[实施计划]-&gt;[实施]
</div></li><li><div style="text-align: justify">对外职能对等,
</div></li><li><div style="text-align: justify">以牵头部门[市场部]不中新的业务旋转移交
</div></li></ol><p>等标准特性.
</p><p>
 </p><p>这是传统的企业管理中常用的一种模式,这种业务流程模式与扁平管理模式的业务流程,有着很大的为同.最大的特点就是不透表(其它不同我会在后面的文章中介绍)
</p><p>
 </p><p>当然不透明并不代表不好,很多时候,业务出于保密等原因需要在一定的区间内对外封闭,因此不同参与者眼中流程的状态是不一样的
</p><p>
 </p><p>本例中参与者有:
</p><ul><li><div style="text-align: justify">市场部.业务人员
</div></li><li><div style="text-align: justify">市场部.主管
</div></li><li><div style="text-align: justify">管理层.业务负责人
</div></li><li><div style="text-align: justify">策划部.策划人员
</div></li><li><div style="text-align: justify">策划部.客服人员
</div></li><li><div style="text-align: justify">策划部.主管
</div></li><li><div style="text-align: justify">实施部.主管
</div></li><li><div style="text-align: justify">实施部.计划人员
</div></li><li><div style="text-align: justify">实施部.实施人员
</div></li></ul><p>
 </p><p>以下是每个参与者眼中的流程状态
</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:32px"/><col style="width:559px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">市场部.业务人员</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/020609_0231_WF2.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">市场部.主管</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/020609_0231_WF3.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">管理层.业务负责人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/020609_0231_WF4.png" alt=""/></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">策划部.策划人员</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">策划部.客服人员</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">策划部.主管</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">实施部.主管</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">实施部.计划人员</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">实施部.实施人员</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-size:10pt">略</span></p></td></tr></tbody></table></div><p>
 </p><p>从上面的一组状态图可以看出,同一个流程在实施的过程中,在不同的参与者面前,流程的状态在不同.
</p><p>这就是我说的同一个流程是,多组状态
</p><p>
 </p><p>每个参与者对流程的认识只是片面的,如果流程制做人员只是根据某个参与者对流程的描述就去构建流程,那一定会出问题.
</p><p>"不识庐山真面目,只原身在此山中",就是这个道理
</p><p>
 </p><p>本文只是一篇概述性文章.
</p><p>
 </p><p>如何为不同的参与者,涉众,管理者,监督者,考核者设置各自的状态,我将在[流程透明度]一文中具体讲解
</p><p>
 </p><p>以下流程的透明原则我也会在以后的文章中具本介绍
</p><ul><li><div style="text-align: justify">上行文的流程
</div></li><li><div style="text-align: justify">下行文的流程
</div></li><li><div style="text-align: justify">平行文的流程
</div></li><li><div style="text-align: justify">公对公的流程
</div></li><li><div style="text-align: justify">私对公的流程
</div></li><li><div style="text-align: justify">公对私的流程
</div></li><li><div style="text-align: justify">扁平管理中的流程
</div></li><li><div style="text-align: justify">各司其责的流程
</div></li><li><div style="text-align: justify">松散协做的流程
</div></li><li><div style="text-align: justify">牵头协做的流程
</div></li></ul><p>
 </p><p>
 </p><p>本例中没有涉及结点间的[补齐补正]与[退回重做]的状态,
</p><p>[基于WF设计业务流程平台_特殊事项,烦恼的花瓣],[基于WF设计业务流程平台_业务是不能回退的],两篇文章会谈这部分问题
</p><p>
 </p><p>还有,我为大家提供的例子中,已经提供了多状态的流程设计支持,只是那个WF的客户端UI中没的实现图形化的展现,在以后的升级中我会加上
</p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1385122.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>回家</title><link>http://www.cnblogs.com/foundation/archive/2009/01/21/1379490.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Wed, 21 Jan 2009 07:01:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/21/1379490.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1379490.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/21/1379490.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1379490.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1379490.html</trackback:ping><description><![CDATA[<p>2008年过的好累.....</p>
<p>有300多天是在宾馆中渡过的,剩余的60多天则是在各类交通工具上渡过的....</p>
<p>12月的时候忙里偷闲回了一趟家,原本决定经年春节不会家了,在房间里好好睡上几天,然后把09年要干的几个项目的思路整理一下....</p>
<p>当我问宾馆的服务员初一是否有早餐时,发现她正在用一种怜悯的眼光在看我......</p>
<p>我决定要回家,明天就回!</p>
<p>谁也阻挡不了我回家的路!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/foundation/aggbug/1379490.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>InfoPath访问WCF</title><link>http://www.cnblogs.com/foundation/archive/2009/01/20/1378915.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 20 Jan 2009 06:31:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/20/1378915.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1378915.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/20/1378915.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1378915.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1378915.html</trackback:ping><description><![CDATA[<p>例子下载: <a href="http://files.cnblogs.com/wxwinter/WFInfoPath.rar">http://files.cnblogs.com/wxwinter/WFInfoPath.rar</a>
	</p><p>
 </p><p><span style="color:#365f91; font-size:14pt"><strong>目录
</strong></span></p><p style="text-align: justify"><a href="#_Toc220224435"><span style="font-size:10pt">InfoPath访问WCF    1
</span></a></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224436"><span style="font-size:10pt">先说一下例子的场景    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224437"><span style="font-size:10pt">功能说明    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224438"><span style="font-size:10pt">扩展说明    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc220224439"><span style="font-size:10pt">服务端    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224440"><span style="font-size:10pt">数据模型    1</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224441"><span style="font-size:10pt">内存数据缓存    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224442"><span style="font-size:10pt">WCF    2</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc220224443"><span style="font-size:10pt">客户端    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224444"><span style="font-size:10pt">InfoPath申请单    3</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224445"><span style="font-size:10pt">InfoPath查询单    5</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224446"><span style="font-size:10pt">InfoPath审核单    8</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224447"><span style="font-size:10pt">InfoPath审批单    12</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify"><a href="#_Toc220224448"><span style="font-size:10pt">使用说明    15</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224449"><span style="font-size:10pt">申请    15</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224450"><span style="font-size:10pt">审核    16</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224451"><span style="font-size:10pt">审批    18</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224452"><span style="font-size:10pt">查询    20</span></a><span style="font-size:10pt">
		</span></p><p style="text-align: justify; margin-left: 22pt"><a href="#_Toc220224453"><span style="font-size:10pt">在服务器上查看数据    21</span></a><span style="font-size:10pt">
		</span></p><p>
 </p><p>
 </p><h1>InfoPath访问WCF
</h1><h2>先说一下例子的场景
</h2><p>
 </p><p>一个审批的过程
</p><p>
 </p><p>申请  -&gt; 审核 -&gt; 审批 
</p><p>
 </p><p>数据表单的结构为表中表
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:113px"/><col style="width:455px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid #c00000 0.5pt; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>表单编号</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #c00000 0.5pt; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b050; font-size:10pt">[申请时添写]</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>申请内容说明</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b050; font-size:10pt">[申请时添写]</span></p></td></tr><tr style="height: 106px"><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>申请内容项</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><table style="border-collapse:collapse" border="0"><colgroup><col style="width:219px"/><col style="width:161px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #c00000 0.5pt; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>内容项 </strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid #c00000 0.5pt; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>备注</strong></span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b050; font-size:10pt">[申请时添写]</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b0f0"><span style="font-size:10pt">[</span><span style="font-family:新宋体; font-size:9pt">审核</span><span style="font-size:10pt">时添写]</span></span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b050; font-size:10pt">[申请时添写]</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b0f0"><span style="font-size:10pt">[</span><span style="font-family:新宋体; font-size:9pt">审核</span><span style="font-size:10pt">时添写]</span></span></p></td></tr><tr><td colspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-size:10pt">可根据需要添加项…..</span></p></td></tr></tbody></table></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>审核意见</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#00b0f0"><span style="font-size:10pt">[</span><span style="font-family:新宋体; font-size:9pt">审核</span><span style="font-size:10pt">时添写]</span></span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid #c00000 0.5pt; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="font-family:新宋体; font-size:9pt"><strong>审批意见</strong></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid #c00000 0.5pt; border-right:  solid #c00000 0.5pt"><p><span style="color:#002060"><span style="font-size:10pt">[</span><span style="font-family:新宋体; font-size:9pt">审批</span><span style="font-size:10pt">时添写]</span></span></p></td></tr></tbody></table></div><p>
 </p><h2>功能说明
</h2><ul><li><div style="text-align: justify">没用使用SharePoint或IIS
</div></li><li><div style="text-align: justify">WCF服务使用Winform发布,InfoPath表单以磁盘文件的方式发布
</div></li><li><div style="text-align: justify">InfoPath表单直接通过WCF与数据服务通信
</div></li><li><div style="text-align: justify">没的使用数据库,使用一全局集合做临时数据库
</div></li><li><div style="text-align: justify">InfoPath表单中提供了只读锁写与必填验证
</div></li></ul><h2>扩展说明
</h2><p>在真实使用时,建议将InfoPath表单发布到WEB网站或SharePoint中
</p><p>临时数据库可用Linq To SQL 或 Linq To Entity 替换
</p><p>如果要加流程控制,可将齐与WF挂接
</p><h1>服务端
</h1><h2>数据模型
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF1.png" alt=""/>
	</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:590px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">  [System.Runtime.Serialization.<span style="color:#2b91af">DataContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">class</span>
								<span style="color:#2b91af">myDataForm
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 表单编号
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>;  <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 申请内容说明
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">myDataFormItem</span>&gt; 申请内容项
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 审核意见
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 审批意见
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>  
 </p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">    [System.Runtime.Serialization.<span style="color:#2b91af">DataContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">class</span>
								<span style="color:#2b91af">myDataFormItem
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 内容项
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [System.Runtime.Serialization.<span style="color:#2b91af">DataMember</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">string</span> 备注
</span></p><p><span style="font-family:新宋体; font-size:9pt">        { <span style="color:blue">set</span>; <span style="color:blue">get</span>; }
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><h2>内存数据缓存
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:590px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">class</span>
								<span style="color:#2b91af">myDB
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">      {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">static</span>
								<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">myDataForm</span>&gt; db = <span style="color:blue">new</span>
								<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">myDataForm</span>&gt;();
</span></p><p><span style="font-family:新宋体; font-size:9pt">      }</span></p></td></tr></tbody></table></div><p>
 </p><h2>WCF
</h2><p>使用basicHttpBinding
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:590px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">   [<span style="color:#2b91af">ServiceContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">interface</span>
								<span style="color:#2b91af">IWCFService
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">        [<span style="color:#2b91af">OperationContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myDataForm</span> getmyDataForm(<span style="color:blue">string</span> myID);
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [<span style="color:#2b91af">OperationContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">void</span> createmyDataForm(<span style="color:#2b91af">myDataForm</span> myData);
</span></p><p>
 </p><p><span style="font-family:新宋体; font-size:9pt">        [<span style="color:#2b91af">OperationContract</span>]
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">void</span> updatemyDataForm(<span style="color:#2b91af">myDataForm</span> myData);
</span></p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">class</span>
								<span style="color:#2b91af">WCFService</span> : <span style="color:#2b91af">IWCFService
</span></span></p><p><span style="font-family:新宋体; font-size:9pt">    {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:#2b91af">myDataForm</span> getmyDataForm(<span style="color:blue">string</span> myID)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">if</span>(<span style="color:#2b91af">myDB</span>.db.Exists(p=&gt;p.表单编号 ==myID))
</span></p><p><span style="font-family:新宋体; font-size:9pt">            {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">return</span>
								<span style="color:#2b91af">myDB</span>.db.First(p =&gt; p.表单编号 == myID);
</span></p><p><span style="font-family:新宋体; font-size:9pt">            }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">return</span>
								<span style="color:blue">null</span>;
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">void</span> createmyDataForm(<span style="color:#2b91af">myDataForm</span> myData)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:#2b91af">myDB</span>.db.Add(myData);
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">public</span>
								<span style="color:blue">void</span> updatemyDataForm(<span style="color:#2b91af">myDataForm</span> myData)
</span></p><p><span style="font-family:新宋体; font-size:9pt">        {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">if</span> (<span style="color:#2b91af">myDB</span>.db.Exists(p =&gt; p.表单编号 == myData.表单编号))
</span></p><p><span style="font-family:新宋体; font-size:9pt">            {
</span></p><p><span style="font-family:新宋体; font-size:9pt">
								<span style="color:blue">var</span> v= <span style="color:#2b91af">myDB</span>.db.First(p =&gt; p.表单编号 == myData.表单编号);
</span></p><p><span style="font-family:新宋体; font-size:9pt">                v.申请内容说明 = myData.申请内容说明;
</span></p><p><span style="font-family:新宋体; font-size:9pt">                v.审核意见 = myData.审核意见;
</span></p><p><span style="font-family:新宋体; font-size:9pt">                v.审批意见 = myData.审批意见;
</span></p><p><span style="font-family:新宋体; font-size:9pt">                v.申请内容项 = myData.申请内容项;
</span></p><p><span style="font-family:新宋体; font-size:9pt">            }
</span></p><p><span style="font-family:新宋体; font-size:9pt">        }
</span></p><p><span style="font-family:新宋体; font-size:9pt">    }</span></p></td></tr></tbody></table></div><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF2.png" alt=""/>
	</p><p>
 </p><h1>客户端
</h1><h2>InfoPath申请单
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF3.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF4.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF5.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF6.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF7.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF8.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF9.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF10.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF11.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF12.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF13.png" alt=""/>
	</p><p>
 </p><h2>InfoPath查询单
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF14.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF15.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF16.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF17.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF18.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF19.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF20.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF21.png" alt=""/>
	</p><h2>InfoPath审核单
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF22.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF23.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF24.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF25.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF26.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF27.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF28.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF29.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF30.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF31.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF32.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF33.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF34.png" alt=""/>
	</p><p>
 </p><h2>InfoPath审批单
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF35.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF36.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF37.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF38.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF39.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF40.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF41.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF42.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF43.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF44.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF45.png" alt=""/>
	</p><p>
 </p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF46.png" alt=""/>
	</p><p>
 </p><h1>使用说明
</h1><p>使用xsn模板生成infopath的xml文件
</p><p>
 </p><h2>申请
</h2><p>基于[申请单.xsn]模板创建[001事项申请单.xml]
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF47.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF48.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF49.png" alt=""/>
	</p><h2>审核
</h2><p>基于[审核单.xsn]模板创建[001事项审核单.xml]
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF50.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF51.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF52.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF53.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF54.png" alt=""/>
	</p><h2>审批
</h2><p>基于[审批单.xsn]模板创建[<a name="OLE_LINK2"/>001事项审批单.xml]
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF55.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF56.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF57.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF58.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF59.png" alt=""/>
	</p><p>
 </p><h2>查询
</h2><p>基于[查询单.xsn]模板创建[001事项查询单.xml]
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF60.png" alt=""/>
	</p><p>
 </p><h2>在服务器上查看数据
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/012009_0628_InfoPathWCF61.png" alt=""/>
	</p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1378915.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_工作域与一人多部门多职能</title><link>http://www.cnblogs.com/foundation/archive/2009/01/19/1378021.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 19 Jan 2009 00:41:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/19/1378021.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1378021.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/19/1378021.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1378021.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1378021.html</trackback:ping><description><![CDATA[<p>
 </p><p style="text-align: center">
 </p><p>很多时候,在企业中,某个员工可能既属于A部门,又属于B部门,在A部门可能担任一种职务,在B部门又担任另种职务,这种组织结构违反了树的基本要求,但在实际中却是大量存在的.
</p><p>有的事项要求[所的科长]
</p><p>有的事项要求[A部门所人]
</p><p>有的事项要求[A部门所科长]
</p><p>有的事项要求[A部门所科长级别以上]
</p><p>
 </p><p>所以,我在处理事项时加入了工作域的概念.
</p><p>
 </p><p>任何人在处理事项时要求"表明身份",既"该事项是[谁],在[那个部门],以[何种职能],做出了[什么样的行为]"
</p><h2>算法
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:113px"/><col style="width:478px"/></colgroup><tbody valign="top"><tr style="height: 41px"><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">所有人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">部门编号</span><span style="font-family:Times New Roman"> ="all" &amp;&amp;  </span><span style="font-family:宋体">职能编号</span><span style="font-family:Times New Roman">="all" &amp;&amp; </span><span style="font-family:宋体">人员编号</span><span style="font-family:Times New Roman">="all"</span></span></p></td></tr><tr style="height: 41px"><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">特定人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">人员编号</span><span style="font-family:Times New Roman">=</span><span style="font-family:宋体">人</span></span></p></td></tr><tr style="height: 41px"><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">部门所有人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">部门编号</span><span style="font-family:Times New Roman"> =</span><span style="font-family:宋体">部门</span><span style="font-family:Times New Roman"> &amp;&amp;  </span><span style="font-family:宋体">职能编号</span><span style="font-family:Times New Roman">="all" &amp;&amp; </span><span style="font-family:宋体">人员编号</span><span style="font-family:Times New Roman">="all"</span></span></p></td></tr><tr style="height: 41px"><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">职能所有人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">部门编号</span><span style="font-family:Times New Roman"> ="all" &amp;&amp; </span><span style="font-family:宋体">职能编号</span><span style="font-family:Times New Roman">=</span><span style="font-family:宋体">职能</span><span style="font-family:Times New Roman"> &amp;&amp; </span><span style="font-family:宋体">人员编号</span><span style="font-family:Times New Roman">="all"</span></span></p></td></tr><tr style="height: 41px"><td colspan="2" vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">部门职能所有人</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">部门编号</span><span style="font-family:Times New Roman"> = </span><span style="font-family:宋体">部门</span><span style="font-family:Times New Roman"> &amp;&amp;  </span><span style="font-family:宋体">职能编号</span><span style="font-family:Times New Roman">=</span><span style="font-family:宋体">职能</span><span style="font-family:Times New Roman"> &amp;&amp; </span><span style="font-family:宋体">人员编号</span><span style="font-family:Times New Roman">="all"</span></span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2>类结构
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011909_0039_WF1.png" alt=""/>
	</p><p>
 </p><h2>工作域加载
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011909_0039_WF2.png" alt=""/>
	</p><p>
 </p><h2>模拟UI
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011909_0039_WF3.png" alt=""/>
	</p><p>
 </p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011909_0039_WF4.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1378021.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>一个基于WF的业务流程平台</title><link>http://www.cnblogs.com/foundation/archive/2009/01/17/1377404.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sat, 17 Jan 2009 02:14:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/17/1377404.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1377404.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/17/1377404.html#Feedback</comments><slash:comments>87</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1377404.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1377404.html</trackback:ping><description><![CDATA[<h1>一个基于WF的业务流程平台
</h1><p>过年了向所有学习WF,关注我的博客的朋友们问个好,发布一个我用WF开发的工作流平台,供大家参考
</p><p>
 </p><p>这个平台适合于以审批为主业务的工作环境,可以做为一个产品直接使用(已有公司在项目中直接使用了这个平台).
</p><p>这个平台的特点是我对子流程的支持做得比较满意
</p><p>WF对子流程支持很弱,我没用
</p><p>这个平台支持静态调用多个子流程,动态调用多个子流程, 
</p><p>支持并发调多个不同类型的子流程
</p><p>支持并发多个子流程的等待
</p><p>支持数据表单从主流程分单入子流程,子流程再入子流程,最后再回到主流程 
</p><p>支持可用不同分支并发的会签
</p><p>支持将现有的正在运行的流程挂接到其它流程
</p><p>支持流程自身的递归调用
</p><p>
 </p><p>
 </p><h1>先说一下我的代码
</h1><p>
 </p><p>从来不在代码中加注解,我写代码的方式是先写文档,然后按文档去写代码.
</p><p>所以,要看代吗要先打开文档
</p><p>(这是文档中的一个抓图,[1.1],[1.2],[1.3]都是方法变号,方法前有[√]表示该方法有对应的单元测试)
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF1.png" alt=""/>
	</p><p>
 </p><p>打开代吗,你在代码中会看到编号,所有的编号在文档中都有详细目的,实现方式,调用,算法说明
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF2.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF3.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF4.png" alt=""/>
	</p><p>
 </p><p>
 </p><h1>数据库设计,架构设计都在文档中
</h1><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF5.png" alt=""/>
	</p><h1>服务
</h1><p>服务以EXE程序的方式运行
</p><p>提供了权限,流程操作,报表的WCF提口,
</p><p>服务写的非常稳定,所的能判断的都判断了,基本没用 try { }   catch { },客户端的不正确操作服务都会有说明值返回,压力测试不会拖垮服务
</p><p>系统级问题会写入系统日志,业务级问题会写入业务日志,logo文件中会记录所有操作的流水账.
</p><p>服务的所的参数在config文件中配置,服务的主程序是[BPM.Foundation.Server.exe]
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF6.png" alt=""/>
	</p><p>
 </p><h1>时间引擎
</h1><p>计时,自动处理,可以管理工作日
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF7.png" alt=""/>
	</p><p>
 </p><p>
 </p><h1>流程设计器(专业版)
</h1><p>
 </p><h2>可发直接从数据库中打开流程,保存流程,也可将流程导出为XOML文件,也可加载XOML文件
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF8.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>打开数据库中的流程
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF9.png" alt=""/>
	</p><p>
 </p><p>将流程发布到数据库中
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF10.png" alt=""/>
	</p><p>
 </p><h2>可以在发布前用测试器在本地进行快速测试
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF11.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF12.png" alt=""/>
	</p><p>
 </p><h2>可以为流程生成文档,并生成业务流程图
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF13.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF14.png" alt=""/>
	</p><p>
 </p><h2>设计工作流时,有向导
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF15.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF16.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF17.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF18.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF19.png" alt=""/>
	</p><p>
 </p><h1>流程设计器(用户简洁版)
</h1><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF20.png" alt=""/>
	</p><p>
 </p><h1>表单设计器
</h1><h2>鼠标拖动任意布局,
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF21.png" alt=""/>
	</p><h2>可以为任意字段指定权限(流程设计器上)
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF22.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF23.png" alt=""/>
	</p><p>
 </p><h1>流程监控器
</h1><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF24.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF25.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF26.png" alt=""/>
	</p><h1>客户端
</h1><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF27.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF28.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF29.png" alt=""/>
	</p><p>
 </p><h2>任务区
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF30.png" alt=""/>
	</p><p>
 </p><h2>系统中所有的信息页面都可以动态添加项
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF31.png" alt=""/>
	</p><p>
 </p><h2>功能模块可配置
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF32.png" alt=""/>
	</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF33.png" alt=""/>
	</p><h2>可以以图形的方式查看流程
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF34.png" alt=""/>
	</p><p>
 </p><h2>人员权限管理
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF35.png" alt=""/>
	</p><p>
 </p><h2>流程启动管理
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF36.png" alt=""/>
	</p><p>
 </p><h2>启动流程
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF37.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF38.png" alt=""/>
	</p><p>
 </p><h2>表单的字段权限控制,有验证,版本管理,打印功能
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF39.png" alt=""/>
	</p><p>
 </p><h2>可对流程进行管理
</h2><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF40.png" alt=""/>
	</p><p>
 </p><p>
 </p><h1>报表
</h1><p>只使用了Reporting 客户端控件,不需要Reporting Services服务
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF41.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF42.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF43.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF44.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF45.png" alt=""/>
	</p><p>
 </p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF46.png" alt=""/>
	</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/011709_0212_WF47.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>最后说明
</p><p>
 </p><p>这个平台是去年年初用空余时间写的,每天5个小时用了一个半月.
</p><p>一般我前半夜写服务部分,思路还算清晰,所以写的还可以,文档也比效认真.
</p><p>后半夜累的时候就用WPF写客户端,那时基本处于半睡眠状态,所以实现的方式很乱,风格也不统一,而且没文档(^_^)
</p><p>
 </p><p>所以要直接使用这个平台,服务部分没什么问题,前台UI建议重写,可以用WPF,Winform,ASPNET,Silverlight,
</p><p>如果用Silverlight写,无法直接访问我的WCF服务,有个Silverlight跨域安全问题,有这方面需求的,我可以给你提供一个独立的跨域验证服务,加载到这个平台中
</p><p>
 </p><p>[流程监控器]部分,我有点偷懒,把以前项目的UI直接用上了,有的地方好像有连接服务或数据库代码写死的情况,使用时注意一下,自已改过来就行了.
</p><p>
 </p><p>平台使用的是Net 3.5 
</p><p>数据库是Sql Server 2008 任意版本都行,操作系统可用win XP ,win 2003 , win 2008 , (vista 我没试过)
</p><p>
 </p><p>有的盗版Win xp /2003 将系统中的一些服务去掉了,如DTC,这样在运行时WF的持久化由于要跨库操作,会报错,报的不是数据库错误,而是队列错误.这个错误我捕获了,如果大家看到这个错误注意一下系统服务,我的队列处理的很好,不会出错
</p><p>
 </p><p>所有的数据库与网络配置都在对应的Config文件中,根据自已的情况改一下就可已了.默认是全在本运行.
</p><p>如要地网络中运行,注意一下防火墙
</p><p>
 </p><p>表单设计器做的一般,好多人没用我的表单设计器,有用Infopath的,有用ASPNET动态页的.
</p><p>郁闷中,下个版本我一定写一个像样的表单设计器
</p><p>
 </p><p>系统中已初始化了一个用于练习的组织结构,与一组各种业务主题的流程
</p><p>
 </p><p>这个平台的思想就是[基于WF设计业务流程平台]这系列的讲的,只不过有些内容在这个平台上只做了后台,前台UI中没有体现.
</p><p>好了,更多的内容我会在[基于WF设计业务流程平台]这系列中详细讲的
</p><p>
 </p><p>代码下载:
</p><p>http://cid-c36588978afc344a.skydrive.live.com/browse.aspx/WF 
</p><p>
 </p><p>
 </p><p>BPM.Foundation.rar 服务
</p><p>BPM.Foundation.Designer.rar 流程设计器(专业版)
</p><p>BPM.Foundation.WorkflowMonitor.rar 流程监控器
</p><p>BPM.Client.rar  客户端,流程设计器(用户简洁版),表单设计器报表
</p><p>DB.rar 数据库
</p><p>Help.rar 开发文档
</p><p>流程设计(VS2008版).rar  用VS设计流程的说明
</p><p>流程设计(设计器版).rar  用流程设计设计流程的说明
</p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1377404.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>ADO.NET Data Service 访问权限设置</title><link>http://www.cnblogs.com/foundation/archive/2009/01/16/1376957.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 16 Jan 2009 05:20:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/16/1376957.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1376957.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/16/1376957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1376957.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1376957.html</trackback:ping><description><![CDATA[摘要: 很多朋友询问我如何设置ADO.NET Data Service的权限.其实设置ADO.NET Data Service的权限与正常设置ASPNET网站的资源访问权限方式一样.
下面我就已ADO.NET Data Service文中的例子为原型,说明一下该如何设置资源访问权限&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/01/16/1376957.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1376957.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>我们为什么需要工作流</title><link>http://www.cnblogs.com/foundation/archive/2009/01/12/1374163.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 12 Jan 2009 06:11:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/12/1374163.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1374163.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/12/1374163.html#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1374163.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1374163.html</trackback:ping><description><![CDATA[<h1>我们为什么需要工作流
</h1><p>这是我的"基于WF设计业务流程平台"的题外篇
</p><p>
&#160;</p><p>以下是这系列的文章列表,写的很痛苦,但我会继续写下去
</p><p><a href="http://www.cnblogs.com/foundation/archive/2008/11/10/1330351.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">-</span><span style="font-family:宋体">架构</span></span></a>
	</p><p><a href="http://www.cnblogs.com/foundation/archive/2008/11/10/1330410.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">-</span><span style="font-family:宋体">权限体系</span></span></a><span style="font-family:Verdana"><strong>
			</strong></span></p><p><a href="http://www.cnblogs.com/foundation/archive/2008/11/14/1333241.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">特定群体与特定人</span></span></a><span style="font-family:Verdana"><strong>
			</strong></span></p><p><a href="http://www.cnblogs.com/foundation/archive/2008/11/20/1337243.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">参与者与任务列表</span></span></a>
	</p><p><a href="http://www.cnblogs.com/foundation/archive/2008/11/24/1339680.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">功能列表</span></span></a>
	</p><p><a href="http://www.cnblogs.com/foundation/archive/2008/12/04/1347256.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">参与者的权限</span></span></a>
	</p><p><a href="http://www.cnblogs.com/foundation/archive/2008/12/05/1348435.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">权限在流程模板外部映射</span></span></a><span style="font-family:Verdana"><strong>
			</strong></span></p><p><a href="http://www.cnblogs.com/foundation/archive/2008/12/06/1349135.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">消息收集、通知接口</span></span></a><span style="font-family:Verdana"><strong>
			</strong></span></p><p><a href="http://www.cnblogs.com/foundation/archive/2009/01/12/1373947.html"><span style="color:blue"><span style="font-family:宋体">基于</span><span style="font-family:Verdana">WF</span><span style="font-family:宋体">设计业务流程平台</span><span style="font-family:Verdana">_</span><span style="font-family:宋体">数据冲突</span></span></a><span style="font-family:Verdana"><strong>
			</strong></span></p><p>
&#160;</p><p><span style="font-family:宋体"><strong>正文</strong></span>
	</p><p>最近,"工作流"这个名词在企业应用中越来越多的被提及.
</p><p>在很多朋友在向我询问工作流细节时,都会问我一个问题,"我们需要工作流吗?"
</p><p>
&#160;</p><p>本文以一个企业应用为例子:假设有一个物流公司,我们先将他称之为WXD,WXD为客户提供城市间的货物邮递服务
</p><p>
&#160;</p><p>我们先将时间拉到上世纪80年代后期,这时WXD还是一家刚成立的小公司,公司只有一个营业地点,一台货车,每天只的一趟往返于A城到B城的货运邮递业务,
</p><p>邮递业务的办理也相当简单,客户将货物拿到营业点,在营业点添写收货地址与收货人的邮单,工作人员将邮单贴到货物上后装车.送货人员开车按邮单送货.在这个阶段,根本没有什么信息化,对WXD的经营者来说,买一台电脑还不如再买一台货车实际.
</p><p>
&#160;</p><p>WXD一直在用心做着自已的事业,进入90年代后,随着经济的发展,WXD也壮大了很多,公司的货车已经的了十几辆,送货的范围也已扩展到周边的五六个城市.
</p><p>这时WXD的经营者发现原来手写邮单的方式很不方便,而且对公司业务的统计用人工方式查阅邮单存根也很不方便.
</p><p>WXD的经营者在看了一些企业管理方面的书后,了解了一些"财会电算化","办公自动化"的概念.
</p><p>WXD的经营者对"财会电算化","办公自动化"的概念还是一头雾水,于是他找到了一家刚成立的电脑公司,这是一个由某个大学的计算机老师与他的几个学生成立,主要是经营电脑配件与软件开发,我们先将他称之为LZM.
</p><p>WXD的经营者在与LZM的的技术人员经过几次交流后,决定从LZM购买一台电脑,并使用LZM用FoxBase开发的一个邮单打印软件.
</p><p>WXD使用邮单打印软件后,送货人员再也不会因邮单上的手写文字不清而无法决确送货了,而WXD的经营者也可以随时统计公司的业务数据.
</p><p>
&#160;</p><p>当WXD的经营者还在为自已的"财会电算化","办公自动化"沾沾自喜时,随着经济的发展,又有几家物流公司成立了,规模虽然没有WXD大,但却抢走了不少客户.
</p><p>WXD的经营者通过多方了解,知道有不少客户是被其他公司的特色服务吸引过去了.WXD的经营者突然感觉到,光盯着自已赚了多少钱是不行的,必须还要了解更多的信息,特别是客户的信息
</p><p>WXD的经营者又想起了LZM,LZM现在已经不经营电脑配件了,而主要是经营企业定制软体开发.
</p><p>WXD的经营者与LZM的的技术人员经过很才时间的交流,最后决定由LZM用VB与Access开发的一个CRM系统(WXD的经营者不知道什么是CRM,也不知道什么是"系统"),"系统"在使用之初没什效果,但WXD的经营者坚持使用,逐渐的这个系统的做用慢慢显示出来.
</p><p>
&#160;</p><p>时间到了1998年,一天LZM的经营者主动来找WXD的经营者,要为WXD建一个"企业网站",由于有了前几次的愉快合做,WXD的经营者非常痛快的就接受了.
</p><p>不久,WXD的"企业网站"就建立起来了,不过WXD的经营者发现这个"企业网站"好像没有什么做用,不过WXD的经营者对这个"企业网站"也挺满意,每年的维护费用才几千元钱,对WXD来说跟本不算什么,在宣传单,名片上印上公司的网址,WXD的经营者觉得特有面子&#8230;&#8230;
</p><p>
&#160;</p><p>随后的几年,WXD与LZM又有过多次的项目合做
</p><p>
&#160;</p><p>时间到了2003年,WXD已经是一家非常庞大的企业了,在很多城市都设的业务点.现在困扰WXD的经营者的问题已不单纯是利润与客户的问题.
</p><p>服务项目的多样性,人员团队的庞大,让WXD的经营者感到力不从心.
</p><p>业务部对因季节,商机变化而造成的线路,车次的调配不合理,让WXD的经营者感到很无奈
</p><p>客户要求可以通过网络办理业务,查询邮单,让WXD的经营者感到很迫切
</p><p>&#8230; &#8230;
</p><p>
&#160;</p><p>WXD的经营者再次找到了LZM(已经是一家非常有名的企业软件开发公司了),这次的规模对于WXD与LZM来说都是非常大型的,双方经营者都非常关注.
</p><p>系统开发初期,一帆风顺,在系统次试运行后,噩梦开始了&#8230;
</p><p>LZM的技术人员发现,客户的需求有60%都变了,在一次次修改,试运行,需求变化的反复中,矛盾终于在一次交流会上爆发了,
</p><p>LZM的技术人员说"你们的业务总变,你们都说不清,让我们怎么开发"
</p><p>WXD的业务人员说"我们要是业务从来不变,每个人都能说清,要你们开发系统做什么"
</p><p>
&#160;</p><p><span style="color:red">你们的业务总变,你们都说不清,让我们怎么开发
</span></p><p><span style="color:red">我们要是业务从来不变,每个人都能说清,要你们开发系统做什么</span>
	</p><p>
&#160;</p><p><span style="color:red">双方的矛盾是不可调和的,谁都认为是对方的错,是对方在浪费时间
</span></p><p>
&#160;</p><p>项目在又经历了几次垂死挣扎后,WXD的经营者决定放弃,处于跟WXD的业务关系与两个经营者的个人交情,WXD付了全款.
</p><p>两个公司的管理者通过各自的方式化解了各自企业内部关于这个项目的各种危机,还开了庆功会,
</p><p>但WXD的经营者依然为业务管理的混乱而头疼.LZM的经营者也为项目的"不成功"而疑问重重
</p><p>
&#160;</p><p>时间到了2006年,WXD的经营者也尝试了几个其它公司的产品,都是很不理想,一天LZM的经营者来访,向WXD的经营者推荐一个LZM公司的新产品,
</p><p>WXD的经营者既没的立即接受,也没的拒绝,而是让LZM的技术人员详细讲解演示了一段时间.
</p><p>WXD的经营者发现,这个系统叫"工作流"
</p><ul style="margin-left: 42pt"><li><div style="text-align: justify">这个系统以企业的组织结构与业务类型为基础数据,初始化了一个责权利相互制约的数学模型与业务模型
</div></li><li><div style="text-align: justify">具体的管理业务人员,根据业务模型创建,调整具体的业务流程,制做在流程中需要填写的业务表单
</div></li><li><div style="text-align: justify">其它的业务人员,依据自已在业务模型中的职能,启动,处理,管理,监督,查看业务流程
</div></li><li><div style="text-align: justify">数据分析人员,,根据业务模型,自已创建所需要的报表.
</div></li></ul><p>
&#160;</p><p>WXD的经营者接受了这个叫"工作流"系统
</p><p>
&#160;</p><p>
&#160;</p><p>后序&#8230;.
</p><p>"工作流"在WXD已经运行了一段时间了,一天LZM的经营者询问技术人员WXD使用"工作流"的情况,技术人员说不太好.
</p><p>
&#160;</p><p>LZM的经营者很疑惑,于是亲自拜访WXD的经营者,并问及"工作流"的使用情况,LZM的经营者还提意多加派些技术人员.
</p><p>WXD的经营者说,"工作流"是有很多不足,但总体思路是对的,问题可以慢慢解决,不会影响大局,现在的问题是这套系统触及到了企业中的许多人的不正当利益,这些人在极力反对
</p><p>
&#160;</p><p>后来两个经营者达成了共识,
</p><p>LZM的技术人员回去对配合WXD的物流专业务家对"工作流"进行一些特定于物流行业的改造,
</p><p>WXD的经营者则对企业内部关系进行梳理.
</p><p>
&#160;</p><p>
&#160;</p><p>最后,
</p><p>企业信息化经历了,打字排版、财会电算化、办公自动化、无纸化办公、互联网泡沫后,已进入了一个全新的时代
</p><p>现在的企业对信息化的要求已不是"无纸化办公",节约一些办公成本,也不是在互联网上刷排名,达到广告效果.
</p><p>企业的管理者要求:
</p><ul style="margin-left: 42pt"><li><div style="text-align: justify">业务流程的办理要高效透明,
</div></li><li><div style="text-align: justify">政令的下达与意见的反馈要即时准确,
</div></li><li><div style="text-align: justify">任何行为要在"制定者,行使者,监督者"相互制衡的环境下进行
</div></li><li><div style="text-align: justify">管理者在制定新的流程时,可以参考以前流程的优点与不号
</div></li><li><div style="text-align: justify">行使者在执行流程中,即可得到流程的约束,又可以得到流程的指道
</div></li><li><div style="text-align: justify">监督者可即时的发现流程的不各种违纪行为,即时指正,并可事后考核
</div></li></ul><p>
&#160;</p><p>因此,"工作流"不是一张几十万的光盘,他是企业的管理者对企业全新管理模式的一种渴望,这种渴望要落实到具体的实现手段上,这就是"工作流软件平台"
</p><p>
&#160;</p><p>最最最后,再留一个问题:
</p><p>软件是生产关系,还是生产力?
</p><p>
&#160;</p> <img src ="http://www.cnblogs.com/foundation/aggbug/1374163.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_数据冲突</title><link>http://www.cnblogs.com/foundation/archive/2009/01/12/1373947.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 12 Jan 2009 00:40:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/12/1373947.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1373947.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/12/1373947.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1373947.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1373947.html</trackback:ping><description><![CDATA[<p style="text-align: center"><h1>数据约束
</h1></p><p>当一个数据自身的改变会景响其数据时，所采取的一种解决方案
</p><p>自变数据称为约束源
</p><p>连变数据称为被约束源
</p><p>
 </p><p>数据是指存储在数据库中，电子文档中，纸质文档中，人们的记忆中的信息
</p><p>
 </p><p>集联是指[约束源]改变后使[被约束源]及时更新的一种方式
</p><p>
 </p><p>可集联修改:是指[约束源]改变后，所有[被约束源]都能及时更新
</p><p>
 </p><p>不可集联修改:是指[约束源]改变后，有[被约束源]无法及时更新,对于不可集联修改的[约束源]，只有在[被约束源]过期，或采用公告等方式使[被约束源]已得到告知后才可修改
</p><p>
 </p><p>
 </p><p style="text-align: center"><h1>数据的种类
</h1></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:83px"/><col style="width:508px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">根数据</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">不受任何数据约束，但约束其它数据的</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">支数据</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">受其它数据约束，又约束其它数据的</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">节数据</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">不约束何数据，但受任其它数据约束的</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">孤数据</span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">不约束何数据，也不受任其数据约束的</span></p></td></tr></tbody></table></div><p>
 </p><p>
 </p><p style="text-align: center"><h1>数据的删除
</h1></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:83px"/><col style="width:508px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">不可删除数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">按规定不可删除的数据，如财务凭证</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">无法删除数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">如历史</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">可删除数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-size:10pt"><span style="font-family:宋体">按规定可删除的节数据，孤数据</span><span style="font-family:Times New Roman">
								</span></span></p><p style="text-align: justify"><span style="font-size:10pt"><span style="font-family:宋体">按规定可删除的，并可集联删除的，且被集联删除的数据不是</span><span style="font-family:Times New Roman">[</span><span style="font-family:宋体">不可删除数据</span><span style="font-family:Times New Roman">]</span><span style="font-family:宋体">或</span><span style="font-family:Times New Roman">[</span><span style="font-family:宋体">无法删除数据</span><span style="font-family:Times New Roman">]</span><span style="font-family:宋体">的根数据，支数据</span></span></p></td></tr></tbody></table></div><p>
 </p><p style="text-align: center"><h1>数据的修改
</h1></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:83px"/><col style="width:508px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">不可修改数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">按规定不可修改的数据，如财务凭证</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">无法修改数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">如历史</span></p></td></tr><tr><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-family:宋体; font-size:10pt">可修改数据</span></p></td><td vAlign="middle" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: justify"><span style="font-size:10pt"><span style="font-family:宋体">按规定可修改的节数据，孤数据</span><span style="font-family:Times New Roman">
								</span></span></p><p style="text-align: justify"><span style="font-size:10pt"><span style="font-family:宋体">按规定可修改的，并可集联修改的，且被集联修改的数据不是</span><span style="font-family:Times New Roman">[</span><span style="font-family:宋体">不可修改数据</span><span style="font-family:Times New Roman">]</span><span style="font-family:宋体">或</span><span style="font-family:Times New Roman">[</span><span style="font-family:宋体">无法修改数据</span><span style="font-family:Times New Roman">]</span><span style="font-family:宋体">的根数据，支数据</span></span></p></td></tr></tbody></table></div><p>
 </p><p style="text-align: center"><h1>数据删除的变通
</h1></p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:83px"/><col style="width:508px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">1.</span><span style="font-family:宋体">删除通告</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">发除要删除数据的通告，在通告生效的期间，数据任可正常使用与引用</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">2.</span><span style="font-family:宋体">冻结</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">该阶段已引用的数据任可正常使用，新的引用将被禁止</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">3.</span><span style="font-family:宋体">逻辑删除</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">该阶段已引用的数据任可也被禁止使用</span><span style="font-family:Times New Roman">,</span><span style="font-family:宋体">但数据根据需要可随时重新使用</span></span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">4.</span><span style="font-family:宋体">删除</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">数据消毁</span></p></td></tr></tbody></table></div><p>例：电信废除模拟手机
</p><p style="text-align: center"><h1>数据修改的变通
</h1></p><h2>双轨切换
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:180px"/><col style="width:410px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">1.</span><span style="font-family:宋体">为要修改的数据发布全新的版本</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">此时，数据的两个版本都可正常使用与引用</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">2.</span><span style="font-family:宋体">冻结旧版本</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">该阶段已引用的数据任可正常使用，新的引用将被禁止，并告之引用新的版本</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">3.</span><span style="font-family:宋体">逻辑删除旧版本</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">该阶段已引用的数据任可也被禁止使用</span><span style="font-family:Times New Roman">,</span><span style="font-family:宋体">但数据根据需要可随时重新使用</span></span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">4.</span><span style="font-family:宋体">删除旧版本</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">旧版本数据消毁</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">5.</span><span style="font-family:宋体">将全新的版本视为对旧版本的修改</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"> </td></tr></tbody></table></div><p>例：电视信号换频,电话号码升级
</p><p>
 </p><h2>遗忘
</h2><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:83px"/><col style="width:508px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">1.</span><span style="font-family:宋体">变更通告</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">发除要变更数据的通告，在通告生效的期间，数据任可正常使用与引用</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">2.</span><span style="font-family:宋体">冻结</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">该阶段已引用的数据任可正常使用，新的引用将被禁止</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">3.</span><span style="font-family:宋体">逻辑删除</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:宋体">该阶段已引用的数据任可也被禁止使用</span><span style="font-family:Times New Roman">,</span><span style="font-family:宋体">但数据根据需要可随时重新使用</span></span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">4.</span><span style="font-family:宋体">变更</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-family:宋体; font-size:10pt">将数据修改</span></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><span style="font-size:10pt"><span style="font-family:Times New Roman">5.</span><span style="font-family:宋体">启用</span></span></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"> </td></tr></tbody></table></div><p>例：手机号的再次发放
</p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1373947.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Linq</title><link>http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 05 Jan 2009 06:07:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1369371.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1369371.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1369371.html</trackback:ping><description><![CDATA[摘要: 今天心情非常好,再发一组  Linq、 集合、数组、Lambda、QuerySyntax 的文章&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/01/05/1369371.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1369371.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Linq to SQL</title><link>http://www.cnblogs.com/foundation/archive/2009/01/05/1369346.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 05 Jan 2009 05:53:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2009/01/05/1369346.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1369346.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2009/01/05/1369346.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1369346.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1369346.html</trackback:ping><description><![CDATA[摘要: 之前写过ADO.NET Entity Framework与ADO.NET Data Service今天补发一个Linq to SQL&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2009/01/05/1369346.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1369346.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>在Silverlight中绘制贝塞尔曲线</title><link>http://www.cnblogs.com/foundation/archive/2008/12/29/1364417.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Mon, 29 Dec 2008 05:22:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/29/1364417.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1364417.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/29/1364417.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1364417.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1364417.html</trackback:ping><description><![CDATA[摘要: 我以前的流程设计器使用的都是曲线,而且不能调扭曲,朋友们意见很大,后来我升级了设计器,这里贴出我实现扭曲的思路&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2008/12/29/1364417.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1364417.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>工作流</title><link>http://www.cnblogs.com/foundation/archive/2008/12/23/1360271.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Tue, 23 Dec 2008 02:01:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/23/1360271.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1360271.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/23/1360271.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1360271.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1360271.html</trackback:ping><description><![CDATA[摘要: 谨以此文向从事工作流研究的前辈们致敬&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2008/12/23/1360271.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1360271.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>一杯鸡尾酒</title><link>http://www.cnblogs.com/foundation/archive/2008/12/19/1358071.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 19 Dec 2008 02:10:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/19/1358071.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1358071.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/19/1358071.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1358071.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1358071.html</trackback:ping><description><![CDATA[<p>回家的感觉真好,心情也很放松,配了一杯鸡尾酒,发现自己的水平还不错(^_^),</p>
<p>发张照片留个纪念,提醒自己在繁忙的工作之余要记得去放松，要去享受生活</p>
<p><img height="570" alt="" src="http://www.cnblogs.com/images/cnblogs_com/foundation/jwj.JPG" width="476" border="0" /></p>
<img src ="http://www.cnblogs.com/foundation/aggbug/1358071.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47943/" target="_blank">消息称Facebook今年营收将达5.5亿美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>闭包</title><link>http://www.cnblogs.com/foundation/archive/2008/12/11/1352797.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Thu, 11 Dec 2008 04:55:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/11/1352797.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1352797.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/11/1352797.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1352797.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1352797.html</trackback:ping><description><![CDATA[摘要: 昨天跟几个朋友闲谈时,提到C++的函数指针与C#的方法对象,其中讨论了一个在学习C#中很少提到的概念"闭包"&nbsp;&nbsp;<a href='http://www.cnblogs.com/foundation/archive/2008/12/11/1352797.html'>阅读全文</a><img src ="http://www.cnblogs.com/foundation/aggbug/1352797.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47937/" target="_blank">微软8月25日开始通过WSUS推送IE8</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_消息收集、通知接口</title><link>http://www.cnblogs.com/foundation/archive/2008/12/06/1349135.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Sat, 06 Dec 2008 08:38:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/06/1349135.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1349135.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/06/1349135.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1349135.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1349135.html</trackback:ping><description><![CDATA[<p style="text-align: center"><h1>基于WF设计业务流程平台_消息收集、通知接口
</h1></p><p>如果有非系统用户需要与业务流程的某些结点有信息交互行为，如以下
</p><h2>业务需求
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF1.png" alt=""/>
	</p><p>
 </p><p>
 </p><h2>设计方案A
</h2><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF2.png" alt=""/>
	</p><p>这种方案的问题：
</p><p>接件人与审批人都有需要通知申请人的业务职责，
</p><p>但申请人是非系统参与人员，审批人与申请人的信息交互比审批人与接件人的通信要困难很多。
</p><p>而且接件人或审批人的通知行为系统无法有效控制
</p><p>另外，申请人要想查询事项进度，也没有一个有效的查询点
</p><p>
 </p><p>为了解决以上问题，可以使用以下两种方案之一，或混合使用
</p><p>
 </p><h2>设计方案B
</h2><p>将申请人纳入系统边界，
</p><p>申请人享有的权力：
</p><p>拥有一个与具体事项对应的用户名，可以登录系统查询事项进度与办理人员的各种通知。
</p><p>申请人的义务：
</p><p>定时查看事项进度与各种通知，如果因为没有及时查看，所带来的后果由申请人自已承担。
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF3.png" alt=""/>
	</p><p>
 </p><p>在这种设计中，如果有事项的其他关系人，办事人员与其他关系人的联系方式有两种
</p><p>1．由申请人做中介，办事人员将通知发给申请人，由申请人联系其他关系人
</p><p>2．办事人员直接联系其他参与人，与设计方案A办事人员直接联系申请人一样
</p><p>其他关系人对事项的了解只能通过申请人进行
</p><p>
 </p><h2>设计方案C
</h2><p>申请人在系统边界以外，设立专门的通知部门，
</p><p>通知部门负责与申请人联系，
</p><p>接件人，审批人只要将事项通知传递给通知部门就完成任务
</p><p>申请人只能到通知部门查询事项。
</p><p>通知部门可以主动联系其它事项参与人
</p><p>其它事项参与人也可以主动与通知部门联系
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF4.png" alt=""/>
	</p><p>
 </p><p>
 </p><p style="text-align: center"><h1>设立窗口部门的方案
</h1></p><p>将通知门部的职责，与接件人的职责合并
</p><p>窗口是申办人员与办事部门的唯一接口
</p><p>窗口负责所有事项的接件，通知，查询，以及事项的分配
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF5.png" alt=""/>
	</p><p>
 </p><p style="text-align: center"><h1>非电子资料的收集、管理方案
</h1></p><p>由窗口部门或专门的非电子资料管理部门管理
</p><p>
 </p><p>申请人向非电子资料管理部门提交，
</p><p>各事项审批人、参与人从非电子资料管理部门申请调出，使用完后归还非电子资料管理部门
</p><p>非电子资料管理部门维护资料安全，安排资料的使用顺序
</p><p>事项完成后，资料归还当事人或由非电子资料管理部门归档保管理
</p><p>
 </p><p>资料的收集也可由该部门完成，或由需要人向该部门提出，该部门再向其他部门收集或安排专业部门进行
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF6.png" alt=""/>
	</p><p style="text-align: center"><h1>向非系统参与者提供通知服务的方案
</h1></p><p>
 </p><p>关于信息同步的问题
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF7.png" alt=""/>
	</p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><h2>传统方案,双方式事先约定好日期
</h2><p>双方式事先约定好日期,申请人,在约定好的日期去取通知
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF8.png" alt=""/>
	</p><h2>方案A，将申请人纳入系统
</h2><p>见[平台的信息收集、通知接口]的[设计方案B]
</p><p>
 </p><p>
 </p><h2>方案B,推信息
</h2><p>系统以如下方式将信息推送给申请人
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF9.png" alt=""/>
	</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:108px"/><col style="width:482px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p><strong>方式</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><strong>说明</strong></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>人到人签通知单</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>办事人员主动告之申请人，并由申请人签收通知单，
</p><p>办事人员将签收结果录入系统</p></td></tr><tr style="height: 20px"><td rowspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>电子邮件</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统发送电子邮件后，系统完成事项</p></td></tr><tr style="height: 20px"><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统发送电子邮件，申请人收到并发回执后，系统完成事项</p></td></tr><tr><td rowspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>短信</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统发送短信后，系统完成事项</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统发送短信，申请人收到并发回执后，系统完成事项</p></td></tr><tr><td rowspan="2" style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>电话</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统自动拨打有声电话，指定号码提听后，系统完成事项</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>系统自动拨打有声电话，指定号码提听，并按语音提示完成操作后，系统完成事项</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>传真</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>与电子邮件同</p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2>方案C,拉信息
</h2><p>申请人主动查询，如果申请人没有主动查询，在规定的时间内，系统将安默认操作处理事项
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF10.png" alt=""/>
	</p><p>
 </p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:131px"/><col style="width:460px"/></colgroup><tbody valign="top"><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><strong>方式</strong></p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p style="text-align: center"><strong>说明</strong></p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>人到人询问
</p><p>(非电话方式)</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>申请人找相关人员询问事项，如果事项处于需要申请人参与状态，即时告之申请人事项状态，并要求申请人签通知单，并将签收结果录入系统</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>短信查询</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>申请人发事项识别码短信到指定系统，系统将事项状态以短信发回后事项进入下一状态</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>电话查询
</p><p>(人工提听或系统提听)</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>申请人打电话，接通后提供事项识别码,工作人员或系统将查询到的结查语音告之, 事项进入下一状态</p></td></tr><tr><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>网络</p></td><td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt"><p>参见[方案A，将申请人纳入系统]</p></td></tr></tbody></table></div><p>
 </p><p>
 </p><h2>方案D,发公告
</h2><p>办理人员向媒体发公告,
</p><p>当事人看到公告后,到办理人员处取通知,
</p><p>通常用在法定情形,或具有众多当事人的的事项,如资格申抱,录取发榜
</p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120608_0836_WF11.png" alt=""/>
	</p><p style="text-align: center"><h1>参与系统业务行为的方式
</h1></p><p>系统登录
</p><p>电子邮件回复
</p><p>电话操作
</p><p>短信回复
</p><p>事先设定规则
</p><p>
 </p><p>
 </p><p>
 </p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1349135.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47935/" target="_blank">暴风称新旧版更换完毕 总计超4000万用户换装</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于WF设计业务流程平台_权限在流程模板外部映射</title><link>http://www.cnblogs.com/foundation/archive/2008/12/05/1348435.html</link><dc:creator>WXWinter(冬)</dc:creator><author>WXWinter(冬)</author><pubDate>Fri, 05 Dec 2008 06:49:00 GMT</pubDate><guid>http://www.cnblogs.com/foundation/archive/2008/12/05/1348435.html</guid><wfw:comment>http://www.cnblogs.com/foundation/comments/1348435.html</wfw:comment><comments>http://www.cnblogs.com/foundation/archive/2008/12/05/1348435.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/foundation/comments/commentRss/1348435.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/foundation/services/trackbacks/1348435.html</trackback:ping><description><![CDATA[<p style="text-align: center"><span style="font-size:16pt"><strong>基于WF设计业务流程平台_权限在流程模板外部映射
</strong></span></p><p>
 </p><p>
 </p><p>前面的几篇文章我介绍了一种权限与流程模板相结合的设计方式,今天我介绍一种权限在流程模板外部映射的计方式.
</p><p>
 </p><p>限在流程模板外部映射,主要的实现思路是:
</p><ul><li>在设计流程模板时,只绘制业务流程,而不考虑结点限
</li><li>将流程模板发布到系统后,系统会自动创建该流程模板的结点树
</li><li>权限管理人员将流程模板结点树上的结点与当前系统的用户权限树进行映射
</li></ul><p>
 </p><p>示意图如下:
</p><p>
 </p><p><img src="http://www.cnblogs.com/images/cnblogs_com/foundation/120508_0648_WF1.png" alt=""/>
	</p><p>
 </p><p>下面说一下[权限在流程模板外部映射]与[权限与流程模板相结合]两程方式的各自特点
</p><p>
 </p><h2>权限与流程模板相结合
</h2><p>
 </p><p>优点:
</p><ul><li>流程模板完整独立的体现了业务模型
</li><li>可以实现复杂的动态权限
</li><li>流程设计人员可在设计器中一次完成业务模型的创建
</li></ul><p>
 </p><p>缺点:
</p><ul><li>如果组织结构调整后,要修改流程模板
</li><li>通用性不强,如两个公司的业务相同,但组织结构不同就不能共用同一流程模板
</li><li>无法方便的与现的平台的权限模块结合
</li></ul><p>
 </p><h2>权限在流程模板外部映射
</h2><p>优点:
</p><ul><li>如果组织结构调整后,不需要修改流程模板
</li><li>流程模板只描述业务流,不描述权限,通用性效高
</li><li>可以方便的与现的平台的权限模块结合
</li></ul><p>
 </p><p>
 </p><p>
 </p><p>缺点:
</p><ul><li>流程模板无法完整独立的体现了业务模型
</li><li>无法实现复杂的动态权限
</li><li>流程设计人员在完成业务模型的创建后,还要再进行一次权限映射的工作
</li></ul><p>
 </p><p>
 </p><p>以上是对[权限在流程模板外部映射]与[权限与流程模板相结合]的总结,这两种方式各有优缺点,具体使用那种方式要看实际的业务需求.
</p><p>后面我会再介绍一种将以上两程方式的优点结合的思路
</p><p>
 </p><img src ="http://www.cnblogs.com/foundation/aggbug/1348435.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47934/" target="_blank">3.5版既出 Firefox面临新挑战</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>