2011-11-09 13 views
0

あるアクティビティのOutArgument値を別のアクティビティのInArgumentに渡す方法はありますか?またはローカル変数は、のデザインの時間中にドラッグされたアクティビティのOutArgumentsのルートアクティビティコンテナに自動的に作成することができます。これは、OutArgumentの値を拡張子を使って自動的にバックアップするために使用できますか?あるアクティビティのOutArgument値を別のアクティビティのInArgumentに渡しますか?

私は標準的な方法でWF4でその外観が不可能であることを知っています。しかし、いくつかの野生の方法がこれを行うことができますか?またはWF3のような方法をシミュレートしますか?

あなたの考えを投稿してください。すべての変数と活動との

おかげ

ヤトン

+0

あるアクティビティの変数を直後に渡す場合は、1つのアクティビティで両方のアクティビティを結合することを検討する必要があります。とにかく、私の答えをチェックしてください。 – 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パラメータを使用して、ワークフローをトラバースしてそのコンテナを見つけることができます。

これはあなたがシーケンスの内部TwoActivitiesBundleをドロップすることを前提とし、後者に変数を追加する例である:あなたが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 は、編集モデルに単一の項目を表します。そのため、Root,ParentParentsのプロパティを使用して、すべてのワークフローをトラバースすることができます。上記の例のように、各ModelItemプロパティを編集することができます。これは非常に手間がかかり、途中でいくつかの前提を取る必要があるかもしれないことに注意してください。

+0

あなたの助けをありがとう、私は良いアイデアを示して、私に多くの時間を節約します。 – Yadong

関連する問題