Invoke Workflow Fileというアクティビティについて紹介します。
機能としては、別のワークフローファイル(Xamlファイル)を呼び出します。
これを使うと、処理を共通化することができるようになったりします。
他にも使い方はいろいろです。
まず、呼び出す先のワークフローを準備します。
呼び出し先の処理に指定は特にないです。
ここでは例えば、メッセージボックスを出力するとします。
続いて、呼び出し元のワークフローを作成します。
Activities>Available>Workflow>Invoke>Invoke Workflow Fileを選択します。
そして、先ほど作った呼び出し先のXamlファイル名を入力します。
これで呼び出し元を実行すると以下のようにメッセージボックスが表示されます。
呼び出し自体はこれで完了です。
ですが、処理によっては変数を渡したい…ということがもちろんあると思います。
その場合は以下のように設定していきます。
まずは、呼び出し先の方で下のArgumentタブをクリックし、変数を作成します。
ここではその変数をメッセージボックスで表示させるようにしています。
続いて、呼び出し元の方で、Invoke workflow fileのImport Argumentsをクリックします。
すると以下のウインドウが表示されます。
(※もし中身が表示されなかった場合は、呼び出し先を保存してからまたImport Argumentsをクリックしてください。)
そして、Valueに渡したい内容を入力してください。変数でも可能です。
以下の例では直接、値を入力しています。
これで呼び出し元を実行すると以下のようにメッセージボックスが表示されます。
これで変数の受け渡しができました。
ちなみにArgumentsにDirectionという項目がありますが、これは値を渡すかもらうかの設定ができます。
今までの例ではInを使っていましたが、Outにすると逆に呼び出し先から呼び出し元に変数を渡すことができます。
例えば設定はこんな感じになります。
◆呼び出し先
In/Outを使うと渡すこともできるしもらうこともできるようになります。
値を渡すだけでその後呼び出し元では使用しない場合は、In
呼び出し先で設定した値を呼び出し元で使用する場合は、Out
値を渡すし、呼び出し元でも使用する場合は、In/Out
を設定しましょう。
ですが少し注意点もあります。
・Outにした場合、ArgumentのDefaultでは設定できないので、
呼び出し先の処理の中で変数の値をセットする必要があります。(メモリ割り当て)
・呼び出し先で異常終了した場合、Outにしていても値は返ってきません。
・DataTableや配列などはInの場合でも値が書き換わります。(ポインタ渡しのため?)
この場合、異常終了しても値は書き換わって返ってきます。
以上、Invoke Workflow Fileの使い方でした。
他の作業一覧はこちら