2013-01-11 44 views
1

我有一個關於Windows Workflow Foundation 4的問題。我有一個名爲PositionArrayActivity的活動。這個活動裏面有一個Sequence活動。我需要在Execute方法(在工作流程執行過程中)oneFund變量將其值映射到在Create方法中創建的PORTFOLIO_NAME ....我在運行時將oneFund值映射到PORTFOLIO_NAME需要做些什麼?將值賦給工作流變量

感謝

public sealed class PositionArrayActivity : NativeActivity, IActivityTemplateFactory 
{ 
    [Browsable(false)] 
    public Dictionary<string, List<Entity>> dictionary = new Dictionary<string, List<Entity>>(); 
    public ActivityAction<Entity[]> Body { get; set; } 
    public Entity[] PositionList { get; set; } 
    public SqlDataReader rdr; 
    public SqlDataReader sdr; 
    public Entity[] positionArray; 
    public List<String> fundList; 
    public String oneFund { get; set; } 
    public String date { get; set; } 
    public List<Entity> listToArrayPositions; 

    protected override void CacheMetadata(NativeActivityMetadata metadata) 
    { 
     metadata.AddDelegate(Body); 
    } 

    protected override void Execute(NativeActivityContext context) 
    { 
     // A lot of code.... 
    } 


    public Activity Create(DependencyObject target) 
    { 
     Variable<string> var = new Variable<string> 
     { 
      Name = "PORTFOLIO_NAME" 
     }; 

     var fef = new PositionArrayActivity(); 
     var aa = new ActivityAction<Entity[]>(); 
     var da = new DelegateInArgument<Entity[]>(); 
     da.Name = "positions"; 
     fef.Body = aa; 
     aa.Argument = da; 
     aa.Handler = new Sequence 
     { 
      Variables = { var } 
     }; 

     return fef; 
    } 
} 

回答

1

你需要有一個ActivityContext設置一個變量值,首先移動變種的聲明(這樣做名字實際上編譯?)到一個更高的範圍。

然後,在執行 var.Set(activityContext,oneFund);雖然

一方面,oneFund屬性將只在應用程序啓動時設置一次,所以你可能有一些令人驚訝的結果。如果你想要爲每個實例,你需要一個inargument。

+0

沒有關於PORTFOLIO_NAME值的問題 –

+0

問題是......我怎麼能在另一個活動中使用oneFund值而不做分配活動 –

+0

我不太清楚你在用oneFund做什麼,對不起。它是否爲每個實例設置一次,並且您希望能夠在該實例中的多個活動中使用它? –