Activity 是 WF 核心概念。本文說明 Activity 類別階層、工作流樹狀結構,並以 WriteLine 示範 InArgument<T> 與 VB 運算式用法。
System.Activities.Activity 為基底類別,主要派生:
CodeActivity:同步執行邏輯AsyncCodeActivity:非同步執行NativeActivity:完整功能(存取排程、追蹤、交易等)
傳統流程圖 = 節點 + 連線;WF 4.0 = 節點 + 節點關係自描述(樹狀結構)。

常用支節點:Flowchart(圖結構)、Sequence(循序)。葉節點:WriteLine、Assign 等。
Flowchart、Sequence 為支節點CodeActivity,密封類別Text:InArgument<string> 輸出文字TextWriter:InArgument<TextWriter> 指定輸出目標,預設 Console
Text 接收 VB 運算式,格式為 [運算式]。
範例:Text="[String.Format(\"{0}:{1}\", \"wxwinter\", DateTime.Now)]"

<WriteLine Text="[String.Format("{0}:{1}", "wxwinter", System.DateTime.Now.ToString())]" />
WorkflowInvoker.Invoke(new Workflow1());

public class MyTextWriter : TextWriter
{
public override Encoding Encoding => Encoding.UTF8;
public override void WriteLine(string value)
{
Console.WriteLine("wxwinter:" + value);
}
}
XAML:TextWriter="[New WriteLineActivitySample.MyTextWriter()]"

var activity = new WriteLine();
activity.Text = new InArgument<string>(GetValue("wxd"));
WorkflowInvoker.Invoke(activity);
static string GetValue(string p) => "wxwinter:" + p;
