[workflow foundation]Invoke活動
1. 加入一個新的類別檔CheckEmployee
2. 撰寫程式碼
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HelloWordWF
{
public class CheckEmployee
{
public static string GetEmpPosition(EmployeeDataItem employees)
{
string position = string.Empty;
switch (employees.EmpName)
{
case "李阿貓": position ="董事長";
break;
case "李阿狗": position = "總經理";
break;
case "李阿牛": position = "處長";
break;
default: break;
}
return position;
}
}
}
3. 拉入一個invoke活動
4. 修改target type
5. 設定屬性的method name為我們定義的函式GetEmpPosition
6. 這時候移到invoke活動上會有錯誤訊息,因為我們沒有定義輸入及輸出的參數
7. 定義輸入參數,注意方向為輸入
8. 建立變數接收invoke活動輸出的結果
9. 修改invoke活動的屬性將結果丟到變數中
10. 加入一個writeline活動並設定內容
11. 最後活動如下
12. 主程式不變
using System.Linq;
using System.Activities;
using System.Activities.Statements;
using System.Collections.Generic;
namespace HelloWordWF
{
class Program
{
static void Main(string[] args)
{
//建立引數物件EmployeeData
EmployeeData empdata = new EmployeeData(){
CompanyID = 123,
};
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a1",
EmpName = "李阿貓",
Salary = Decimal.Parse("1000")
});
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a2",
EmpName = "李阿狗",
Salary = Decimal.Parse("2000")
});
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a3",
EmpName = "李阿牛",
Salary = Decimal.Parse("3000")
});
//workflow的引數參數要用Dinctionary<,>帶入
IDictionary<string, object> input = new Dictionary<string, object>
{
//注意引數名稱方向為輸入
{"EmployeeData",empdata}
};
//workflow的引數參數要用Dinctionary<,>輸出
//注意引數名稱方向為輸出
IDictionary<string,object> output = WorkflowInvoker.Invoke(new TestForEachAndTryCatch(),input);
Console.WriteLine("總金額為:" + ((Decimal)output["OutputData"]).ToString());
Console.WriteLine("請按Enter鍵後離開!");
Console.Read();
}
}
}
13. 輸出結果