本节主要介绍WF4 中 Flowchart的使用
本文例子下载:
http://files.cnblogs.com/foundation/FlowcharSample.rar
本文例子说明
Flowchart 说明
Flowchart
类名 |
System.Activities.Statements.Flowchart |
文件 |
System.Activities.dll |
结构说明 |
继承 NativeActivity 是一个 sealed类 override 了 [CacheMetadata方法] 与 [Execute方法] [Variables]属性 的类型为[ Collection<Variable>] [StartNode]属性 的类型为[FlowNode] [Nodes]属性 的类型为[Collection<FlowNode>] |
功能说明 |
FlowDecision
类名 |
System.Activities.Statements.FlowDecision |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Condition]属性 的类型为[Activity<bool>] [False]属性 的类型为[FlowNode] [True]属性 的类型为[FlowNode] |
功能说明 |
FlowSwitch
类名 |
System.Activities.Statements.FlowSwitch |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Expression]属性 的类型为[Activity<object>] [Default]属性 的类型为[FlowNode] [Cases]属性 的类型为[IDictionary<object, FlowNode>] |
功能说明 |
FlowStep
类名 |
System.Activities.Statements.FlowStep |
文件 |
System.Activities.dll |
结构说明 |
继承 FlowNode 是一个 sealed类 [Action]属性 的类型为[Activity] [Next]属性 的类型为[FlowNode] |
功能说明 |
例
Flowchart基本使用
工作流 |
|
宿主 |
//===================================================
WorkflowApplication instance =
private { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text;
if (instance != { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); }
}
void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); }
void aborted(WorkflowApplicationAbortedEventArgs e) { instance = System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); }
UnhandledExceptionAction unhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId);
System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //==================================================
private { instance =
instance.Completed = instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run();
} |
结果 |
FlowDecision 例子
工作流 |
|
bookmark |
public { public
protected { get { } protected { string bookmark = context.GetValue(bookmarkName); context.CreateBookmark(bookmark, System.Console.WriteLine("创建bookmark:{0}", } void bookmarkCallback(NativeActivityContext context, {
if (typeof(T) == { this.Result.Set(context, return; }
if (typeof(T) == { this.Result.Set(context, obj.ToString()); return; }
this.Result.Set(context,obj); } } |
宿主 |
//===================================================
WorkflowApplication instance =
private { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text;
if (instance != { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); }
}
void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); }
void aborted(WorkflowApplicationAbortedEventArgs e) { instance = System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); }
UnhandledExceptionAction unhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId);
System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //================================================== private { instance =
instance.Completed = instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run(); }
|
结果 |
FlowSwitch 例子
工作流 |
|
bookmark |
public { public
protected { get { } protected { string bookmark = context.GetValue(bookmarkName); context.CreateBookmark(bookmark, System.Console.WriteLine("创建bookmark:{0}", } void bookmarkCallback(NativeActivityContext context, {
if (typeof(T) == { this.Result.Set(context, return; }
if (typeof(T) == { this.Result.Set(context, obj.ToString()); return; }
this.Result.Set(context,obj); } } |
宿主 |
//===================================================
WorkflowApplication instance =
private { string bookName = textBox_bookmark.Text; string inputValue = textBox_value.Text;
if (instance != { if (instance.GetBookmarks().Count(p => p.BookmarkName == bookName) == { instance.ResumeBookmark(bookName, inputValue); } else { foreach (var v { System.Console.WriteLine("-------请从下面选项中选择一BookmarkName---------------------------"); System.Console.WriteLine("BookmarkName:{0}:,OwnerDisplayName:{1}", v.BookmarkName, v.OwnerDisplayName); System.Console.WriteLine("================================"); } } } else { MessageBox.Show("没有创建实例"); }
}
void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { instance = System.Console.WriteLine("workflowCompleted:{0}", e.CompletionState.ToString()); }
void aborted(WorkflowApplicationAbortedEventArgs e) { instance = System.Console.WriteLine("aborted ,Reason:{0}", e.Reason.Message); }
UnhandledExceptionAction unhandledExceptionl(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException:{0}", e.UnhandledException.Message); return } void workflowIdel(WorkflowApplicationIdleEventArgs e) { System.Console.WriteLine("Idle:{0}", e.InstanceId);
System.Console.WriteLine("--------BookmarkName---------------------------"); foreach (var item { System.Console.WriteLine("{0}", item.BookmarkName); } System.Console.WriteLine("================================"); } //==================================================
private { instance =
instance.Completed = instance.OnUnhandledException = unhandledExceptionl; instance.Aborted = aborted; instance.Idle = workflowIdel; instance.Run(); } |
结果 |
|