InvokeWorkflow の結果を得るには

InvokeWorkflow Activity の結果が必要なことがあります。
・ちゃんと終わったの??
・次のイベント投げてもいい??
特に後者は、いつもの”EventDeliveryFailedException”が起きる可能性があるので、きちんと確かめておきたいところではあります。
そこで見つかったのが、
Microsoft サポートオンライン – InvokeWorkflow を実装する方法が Windows ワークフロー基礎 のイベントを完了しました。
タイトルからして「これはヒドイ機械翻訳ですね」丸出しです。
あまりにヒドイので、英語をあたってみました。
How to implement an InvokeWorkflow completed event in Windows Workflow Foundation

「Windows Workflow Foundation で InvokeWorkflow の完了イベントを実装するには」ということのようです。
(ちなみに文書番号は 926499 です。)
サンプルがC#だとかいう個人的なアレはさておき、要するに「WorkflowRuntimeから”WorkflowCompleted”イベントが投げられるから、それを受け止めてね。」ってコトのようです。
で、上記KBのは「完了」の例ですが、呼んだ先のルールがちゃんと開始されたのか?は、こんな感じになります。

‘—開始イベントを引っ掛けるハンドラを用意する
AddHandler objWFRuntime.WorkflowStarted, AddressOf [具体的にやらせたいメソッド]

で、その[具体的にやらせたいメソッド]の中では、こんな感じになります。

Sub SomeMethod(ByVal sender As Object, ByVal e As WorkflowEventArgs)
  Dim strWFName As String = e.WorkflowInstance.GetWorkflowDefinition.Name
  If strWFName = [目的のワークフロー名] Then
   ’—Do Something
  End If
End Sub

ここでは「ワークフロー名」を使いましたが、もちろん、他の手もあるはずです。
ご参考まで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree