私は自分自身をホストしている.net 4.0ワークフローを持っています(WorkflowInstance.Runのみを使用)。ワークフローを再水和するときに、内部引数の一部を初期化して、後続のアクティビティでこれらの値を使用できるようにしたいと考えています...どうすればよいですか?これを行うには?
2 に答える
ワークフローの入力または出力を定義するために、引数 (In/OutArgument) を使用します (アクティビティも)。
ここにサンプル構文があります..
Dictionary <string, object> input = new Dictionary <string, object> ();
input.Add( "UserName" , userName);
input.Add ( "UserName", userName);
WorkflowInstance myInstance = new WorkflowInstance(
new WorkflowConsoleApplication2.Sequence1(),input);
WorkflowInstance myInstance = new WorkflowInstance (
new WorkflowConsoleApplication2.Sequence1 (), input);
ワークフロー マップで入力引数を定義すると、引数の値にアクセスできるようになります。
通常、引数は、ワークフローを初めて実行する前にワークフローに提供するためのものです。
たとえば、InArgument 入力 1、InArgument 入力 2、OutArugment 出力があり、ワークフローを作成するときにすべての入力を渡し、ワークフローがすべての出力を格納するための変数を渡すことができます。
ワークフローがすでに実行されている場合、引数があり、外部要因によって変更されることは想定されていません。(そして、これが混乱のポイントである場合に備えて: 通常、ワークフローの開始時に実行を再開することはありません。途中の任意のブックマークで再開することになります。)実行中ですか?
ここで、メッセージング アクティビティを確認することをお勧めします。データは、ReceiveMessage の値 OutArgument でワークフローに「入力」されます。どうやってそこにたどり着いたのですか?これは、Receive アクティビティによって設定されました。しかし、受信アクティビティはどのようにしてそれを設定したのでしょうか? まず、サービス ホストは、受信アクティビティにメッセージがあるため、再開するように指示します。次に、受信アクティビティは、「どのメッセージを受け取りましたか?」と言います。アクティビティがアクティブ化された後、どこかのキューからデータをプルすることを認識します。
1) 誰かがワークフローに必要なデータを保存する 2) ランタイムまたはサービス ホスト、またはワークフローを再アクティブ化するもの 3) アクティビティが (再アクティブ化後に) 実行時に必要なデータをモデルとして取り込むあなたのソリューション。