首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

工作流程式設計漸進指南(二):IfElseActivity 條件分支實作

     編輯:關於C#

一、IfElseActivity 核心概念

  • 建立工作流分支結構,每個分支對應一個 IfElseBranchActivity。
  • 依條件選擇執行一個分支,條件為 True 執行該分支,False 則評估下一個。
  • 最後一個分支視為 Else,無需條件。
  • 條件類型:代碼條件(方法返回 bool)、聲明性規則條件(規則運算式)。
  • 規則可在執行期動態更新,不需重新編譯。

二、建立專案

  1. VS2008 新增控制台循序工作流,命名 IfElseActivity。
  2. 新增專案
  3. 拖入 IfElse 活動。
  4. 設計器 預設兩個分支

三、擴充分支與設計流程

右鍵 IfElse → 新增分支,增加至三個分支。調整位置(左移/右移)。

新增分支選單 三個分支 完整流程

四、條件與程式碼實作

分支 1 條件(角色=A)

private void Condition1(object sender, ConditionalEventArgs e)
{
    if (rolename.ToUpper() == "A") e.Result = true;
    else e.Result = false;
}

分支 2 條件(角色=C)

private void Condition2(object sender, ConditionalEventArgs e)
{
    if (rolename.ToUpper() == "C") e.Result = true;
    else e.Result = false;
}

分支 3 為 Else,無條件。

Code 活動程式碼

private void admin_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("您好,管理員!");
}

private void codeActivity3_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("您好,客戶!");
}

private void passenger_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("您好,過客!");
}

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("請選擇您的角色:(C-普通客戶;A-系統管理員;P-過客)");
    rolename = Console.ReadLine();
}

private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
    Console.Read();
}

Delay 活動設定 3 秒延遲

五、宿主程式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;

namespace CodeAndDelay
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
            {
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };
                workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
                {
                    Console.WriteLine(e.Exception.Message);
                    waitHandle.Set();
                };
                WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(CodeAndDelay.Workflow1));
                instance.Start();
                waitHandle.WaitOne();
            }
        }
    }
}

六、執行結果

輸入 a → 顯示「您好,管理員!」

輸入角色提示 管理員歡迎訊息

出處

https://zhuxianzhong.blog.51cto.com/157061/203302

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved