0

基本的な考え方は、Web サイトとワークフローがあるということです。ワークフローで aspx ページからボタンのクリックをキャプチャする必要があります。

ワークフロー プロジェクトと Web サイト プロジェクトを使用したソリューションがあり、web.config と global.asax が WF で動作するように設定されています。永続サービスもセットアップされます。

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

それは私が得た限りです。次に、クラスを 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

私の form.aspx âge にはボタンがあり、form.aspx.vb ページには対応するイベント ハンドラーがあります。

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

ここからどこへ行く?

4

1 に答える 1

0

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

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

于 2009-04-16T16:54:55.520 に答える