2011-09-08 2 views
0

WF에서 작업하고 있습니다.WF에서 활동 값을 다른 값으로 전달

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

내가 책갈피를 포함하는 다른 활동을했다 : 나는 사용자 지정 활동이라고 Draft_Doc했다.

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

한 활동에서 다른 활동으로 직접 값을 전달할 방법이 없습니다. 첫 번째 활동의 변수에 값을 할당하고 두 번째 활동에 할당 된 변수를 사용해야합니다.

관련 문제