2011-09-08 71 views
0

我正在使用WF。 我做了一個自定義活動稱爲Draft_Doc:將WF中的活動傳遞給另一個值

public sealed class Draft_Doc : CodeActivity<string> 
{ 
    protected override string Execute(CodeActivityContext context) 
    { 
     C.Send_Task_Msg(unique_name, "Draft"); 
     return "Draft"; 
    } 
} 

我犯了一個包含書籤另一項活動。

public sealed class WaitingTheApproval : NativeActivity 
{ 
    WorkflowInstanceProxy instance; 
    Service1Client C = new Service1Client(); 
    public InArgument<string> previous_stage { get; set; } 
    public string stageName; 

    protected override void CacheMetadata(NativeActivityMetadata metadata) 
    { 
     base.CacheMetadata(metadata); 
     metadata.AddDefaultExtensionProvider<MyExtension>(() => new MyExtension()); 

     //RuntimeArgument argSql = new RuntimeArgument("SqlConnectionString", typeof(String), ArgumentDirection.In); 

    } 

    protected override bool CanInduceIdle 
    { 
     get { return true; } 
    } 

    protected override void Execute(NativeActivityContext context) 
    { 

     var bookmark = context.CreateBookmark("MyBookmark", BookmarkResumed); 
     var extension = context.GetExtension<MyExtension>(); 
     instance = extension._instance; 
     stageName = context.GetValue(this.previous_stage); 

     stageName = previous_stage.Get(context); 
     WaitSome(bookmark); 

    } 
} 

我想要的是,當我拖放這兩個活動重新主辦工作流程。我想先拖動Draft_Doc,然後我會將WaitingTheApproval與它連接起來。

所以,我希望在運行時在WaitingTheApproval的InArgument previous_stage中設置Draft_Doc的返回值。 Anyhelp?

+0

編輯後的任何答案? :) – Sofy

+0

對不起,我不確定你想要做什麼。你有代碼詳細說明你正在做什麼,但這既是太多也不夠。我明白你在問什麼(當把它們放在設計表面上時自動掛鉤),但有很多方法可以做到這一點,其中一些非常複雜(例如,實現IActivityTemplateFactory並搜索當前工作流程)。我在正常情況下做的事情是創建一個原型,它只能完成我需要完成的任務*。它讓我在我的問題中儘可能地清楚。 – Will

回答

1

沒有辦法將一個活動的值直接傳遞給另一個活動。您應該將值分配給第一個活動中的變量,並使用第二個活動中分配的變量。

相關問題