2011-11-09 5 views
0

한 활동의 ​​OutArgument 값을 다른 활동의 InArgument로 전달할 수있는 방법이 있습니까? 또는 지역 변수는 자동으로 Outergument의 값을 확장자를 사용하여 백업하는 데 사용할 수있는 디자인 시간 동안 끌린 활동의 OutArguments에 대한 루트 활동 컨테이너 기반에서 자동으로 만들 수 있습니까?한 활동의 ​​OutArgument 값을 다른 활동의 InArgument로 전달 하시겠습니까?

표준 방법을 사용하여 WF4에서보기가 불가능합니다. 그러나 이것을 할 수있는 몇 가지 방법이 있습니까? 또는 WF3과 같은 방식으로 시뮬레이션 할 수 있습니까?

의견을 게시하십시오.

감사 Yadong

+0

한 활동의 ​​변수를 바로 다음에 전달하려는 경우 두 활동을 하나의 단일 활동으로 결합하는 것을 고려해야합니다. 어쨌든, 내 대답을 확인하십시오. – Joao

답변

3

귀하의 모든 변수와 활동을 디자인 타임에 이미 작성 워크 플로우를 원하는 경우

, IActivityTemplateFactory와 아마 당신이 할 수있는 운동 뭔가. 한마디로
public class TwoActivitiesBundle : IActivityTemplateFactory 
{ 
    public Activity Create(DependencyObject target) 
    { 
     return new Sequence 
     { 
      Variables = 
      { 
       new Variable<int>("addResult"), 
      }, 

      Activities = 
      { 
       new Add<int, int, int> 
       { 
        Left = 10, 
        Right = 10, 
        Result = new VisualBasicReference<int>("addResult") 
       }, 

       new WriteLine { Text = "Now I'll use 'addResult', as a value on the next activity" }, 

       new Subtract<int, int, int> 
       { 
        Left = new VisualBasicValue<int>("addResult"), 
        Right = 10, 
       }, 

       new WriteLine { Text = new VisualBasicValue<string>("\"Print addResultValue: \" & addResult")} 
      } 
     }; 
    } 
} 

, IActivityTemplateFactory 이미 드롭 디자이너로 활동을 구축하고 충전 할 수 있습니다.

new ToolboxItemWrapper(typeof(TwoActivitiesBundle), null, "My Bundle"); 


추가 : 다음 당신은 다른 활동으로, 디자이너의 도구 상자에,이 경우, TwoActivitiesBundle 당신의 공장을 추가 당신이 정말로 부모에 변수를 추가하려면

컨테이너 Create() 메서드에서받은 target 매개 변수를 사용하여 워크 플로를 탐색하고 해당 컨테이너를 찾을 수 있습니다. 당신이 here을 볼 수 있습니다처럼

public class TwoActivitiesBundle : IActivityTemplateFactory 
{ 
    public Activity Create(DependencyObject target) 
    { 
     var sequenceModelItem = (target as WorkflowViewElement).ModelItem; 

     sequenceModelItem 
      .Properties["Variables"] 
      .Collection 
      .Add(new Variable<string>("myFirstDesignTimeVariable", "var text here")); 


     // This activity writes "I've just created a new variable: var text here" to the console 

     return new WriteLine 
     { 
      Text = new VisualBasicValue<string>("\"I've just created a new variable: \" & myFirstDesignTimeVariable"); 
     } 
    } 
} 

는, ModelItem 는 편집 모델에서 단일 항목을 나타냅니다

당신이 순서 안에 TwoActivitiesBundle을 삭제한다고 가정 후자에 변수를 추가하는 예입니다. 따라서 Root, ParentParents 속성을 사용하여 모든 워크 플로를 탐색 할 수 있습니다. 위 예제에서 보여 드린 것처럼 각 ModelItem 속성을 편집 할 수 있습니다. 이 작업은 상당히 힘들며 그 과정에서 여러 가지 가정을해야 할 수도 있습니다.

+0

도와 주셔서 대단히 감사합니다. 좋은 생각을 보여 주며 많은 시간을 절약 할 것입니다. – Yadong

관련 문제