2009-04-16 12 views
0

基本的な考え方は、私はウェブサイトとワークフローを持っているということです。ワークフローでaspxページからボタンのクリックをキャプチャする必要があります。asp.netサイトのワークフローのwebformイベントを取得する

私はworflowプロジェクトとウェブサイトプロジェクトのソリューションを持っており、web.configとglobal.asaxはWFで動作するように設定されています。持続性サービスも設定されています。

私はStateMachineワークフローを作成しました。 EventDrivenActivityインスタンスを含むいくつかの状態(StateActivity)があり、その中にHandleExternalEventActivityインスタンスがあります。後者を正しく設定してアプリケーションをコンパイルできるように、私はExternalDataExchange属性で装飾されたインターフェイスを作成し、必要なイベントを公開しました。私はこのインターフェイスを実装したクラスを作成しました。

これまでのところ、私の知る限りです。今、クラスを私のaspxページに接続する必要があります。ページのイベントは、クラス内のイベントをトリガする必要があります。ボタンがあり、そしてform.aspx.vbページに、対応するイベントハンドラがあり、私のform.aspxの年齢に

<ExternalDataExchange()> _ 
Public Interface ICatWorkflow 
      Property RequestId() As Guid 
      ... 
      Sub requestInfoEmail() 
     ... 
     Event onReception(ByVal sender As Object, ByVal e As ExternalDataEventArgs) 
End Interface 

Class MyObject 
    Implements ICatWorkflow 
     Public Property RequestId() As Guid Implements ICatWorkflow.RequestId 
      ... 
     End Property 
     Public Sub requestInfoEmail() Implements ICatWorkflow.onReception 
      ... 
     End Sub 
     Event onReception(ByVal sender As Object, ByVal e As ExternalDataEventArgs) 
end class 

Protected Sub btnReception_Click(ByVal sender As Object, ByVal e As System.EventArgs)    
     Handles btnReception.Click 
     ... 
End Sub 

私のコードは次のようになります

ここから行く場所は?

答えて

0

ユーザーセッションごとにワークフローを実行しているとします。その場合は、ワークフローinstanceiIdをどこかに保存する必要があります。だから、それをクッキーまたはセッションオブジェクトに入れます。セッションがタイムアウトするか、AppDomainがIISによってリサイクルされても機能するため、Cookieが好きです。

次に、ExternalDataExchangeサービスへの参照を取得する必要があります。これは、worklfowランタイムへの参照があれば簡単です。必要なのはworkflowRuntime.GetService()です。次に、サービスを使用して、メッセージをワークフローに送信するイベントを発生させます。

関連する問題