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

WF 4.0 基礎篇(六):Arguments 參數完整指南

     編輯:關於.NET

前言

Arguments 是工作流與外部溝通的介面。本文詳細說明 In、Out、In/Out 參數在 XAML 與 Code 兩種定義方式下的建立、啟動傳值、完成取值完整流程。

參數屬性總覽

  • Name:參數名稱
  • Direction:In / Out / InOut
  • ArgumentType:資料型別
  • DefaultValue:In 參數可用運算式,Out/InOut 無預設值
  • IsRequired:是否必填

新增參數 In參數屬性

In 參數

使用說明

  1. VS 設計器定義於 XAML
  2. Code Activity 定義 InArgument<T>
  3. 屬性視窗綁定運算式/變數/參數
  4. 啟動時透過 Dictionary<string, object> 傳入
  5. Assign 可指派值
  6. 無法 在 Completed 事件中透過 Outputs 取得

XAML 方式範例

定義 v1, v2, v3: double,啟動傳入 v1, v2,Assign v3 = v1 + v2,WriteLine(v3)。

static void StartValueInWorkflow()
{
    var dic = new Dictionary<string, object> { {"v1", 123.456}, {"v2", 456.789} };
    var instance = new WorkflowApplication(new StartValueInWorkflow(), dic);
    instance.Run();
}

工作流與結果

Code 方式範例

public sealed class InArgumentActivity : CodeActivity
{
    public InArgument<string> MyIn { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine(context.GetValue(this.MyIn));
        Console.WriteLine(MyIn.Get(context));
    }
}

XAML 定義 myValue 參數,啟動傳入,綁定至 InArgumentActivity.MyIn。

工作流 結果

Out 參數

使用說明

  1. 不可啟動時傳入
  2. 可 在 Completed 事件中透過 e.Outputs["參數名"] 取得
  3. Assign 可指派值

Out參數屬性

XAML 方式範例

定義 v1, v2: In、v3: Out,啟動傳入 v1, v2,Assign v3 = v1 + v2,Completed 列印 e.Outputs["v3"]。

工作流 結果

Code 方式範例

public sealed class OutArgumentActivity : CodeActivity
{
    public OutArgument<string> MyOut { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        var s1 = MyOut.Get(context);
        MyOut.Set(context, "wxd" + s1);
        var s2 = context.GetValue(MyOut);
        context.SetValue(MyOut, "lzm" + s2);
    }
}

綁定至工作流變數 myVariable,WriteLine(myVariable)。

工作流 結果

In/Out 參數

使用說明

  1. 可啟動時傳入
  2. 可在 Completed 事件中取得
  3. Assign 可指派值

InOut參數屬性

XAML 方式範例

定義 v1, v2, v3: InOut,啟動全傳入,Assign v3 = v1 + v2 + v3,Completed 列印 e.Outputs["v3"]。

工作流 結果

Code 方式範例

public sealed class InOutArgumentActivity : CodeActivity
{
    public InOutArgument<string> MyInOut { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        var s2 = context.GetValue(MyInOut);
        context.SetValue(MyInOut, "wxd:" + s2);
    }
}

工作流變數 myVariable="wxwinter",列印前後值。

工作流 結果

原始碼下載

ArgumentsSample.rar

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