Program.cs 后台代碼:
class Program
{
static void Main(string[] args)
{
//Activity workflow1 = new Workflow1();
//WorkflowInvoker.Invoke(new Workflow1());
WorkflowInvoker.Invoke(MyCodeWorkFlow.CreateWorkFlow());
Console.ReadLine();
}
}
WorkFlow 的例子 代碼 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Activities;
using System.Activities.Expressions;
using System.Activities.Statements;
namespace WorkflowConsoleApplication1
{
public class MyCodeWorkFlow
{
public static Activity CreateWorkFlow()
{
//定義兩個變量:時鍾響幾次數,現在的時間(小時)
Variable<int> count = new Variable<int>()
{
Name="count",
Default=0
};
Variable<int> timeNowHour = new Variable<int>()
{
Name="timeNowHour",
Default=DateTime.Now.Hour
};
//Sequence 是Activity的子類,里面寫邏輯思維
return new Sequence()
{
DisplayName = "Main Sequence",
Variables = { count, timeNowHour },//表示 全局變量可以在這個域 里使用
//聲明一種活動
Activities = {
new WriteLine(){
DisplayName="問候",
Text="Hello World !"
},
new If()
{
DisplayName="判斷",
Condition=ExpressionServices.Convert<bool>(u=>timeNowHour.Get(u)>12),
Then=new Assign<int>()//Assign 相當於 給某個變量賦值
{
To=timeNowHour,// 給 哪個 變量賦值
Value=new InArgument<int>(m=>timeNowHour.Get(m)-12) // 賦 什么值
}
},
new Sequence()
{
DisplayName="時鍾報時",
Activities={
new While()
{
Condition=ExpressionServices.Convert<bool>(u=>count.Get(u)<timeNowHour.Get(u)),
Body=new Sequence()
{
Activities={
new Assign<int>(){To=count,Value=new InArgument<int>(m=>count.Get(m)+1)},
new WriteLine(){DisplayName="報時", Text=new InArgument<string>(u=>count.Get(u).ToString())},
//延時,每隔1秒 ,報時一次
new Delay(){Duration=TimeSpan.FromSeconds(1)}
}
}
}
}
},
new Sequence() //Sequence 可以理解成 內部類
{
DisplayName="當前時間",
Activities={
new WriteLine(){ Text=string.Format("當前時間為:"+DateTime.Now.ToString())}
}
},
new Sequence()
{
DisplayName ="根據時間的不同 來問好!",
Activities={
new If(){Condition=ExpressionServices.Convert<bool>(u=>DateTime.Now.Hour>=18),
Then=new WriteLine(){Text="晚上好!"},
Else=new WriteLine(){ Text="白天好!"}
}
}
}
}
};
}
}
}