2011-07-19 2 views
0

私はWF4を把握しており、現在単純な費用承認システムの概念実証実験を行っています。 IISでホストされているWorkflowServiceを使用して、Webクライアントが承認を送信できるようにします。クライアントが必要となる、ということですについてワークフローServiceHostデザイン - クライアントからのワークフローを再開

WF4 Expense Workflow http://i56.tinypic.com/esohno.jpg

一態様私は不明だ:私の現在の設計は、次のように(私たちは受信活動にexpenseIDとisApprovedブールを渡していると仮定)であります次に呼び出すReceiveアクティビティを正確に把握します。これを行うには、クライアントは、ワークフローがどこにあるか(データソースを照会することによって)、何らかの種類の状態フラグをオンにして、適切なReceiveアクティビティを呼び出すことを正確に知る必要があります。しかし、これを確実に行うには、永続的なワークフローを使用する点を迂回していますか?

私のデザインは間違っている可能性があるので、この作業を最も効率的に行う方法やデザインを改善する方法に関するインプットや指導を歓迎します。

答えて

1

この結果は得られますが、クライアントにこの動作を明確にするために、サービス契約にAPIドキュメントを提供する必要があります。このサービスのWSDLは、それだけではっきりしません。

実装に関しては、これを実現する唯一の方法はWFの外です。これは、クライアントがワークフローフローチャートルールに従って呼び出すことができないサービスメソッドを呼び出そうとしたときに、ワークフローをロードする際にコンテンツの相関エラーが発生するためです。

WFサービスホストは、永続化されたワークフローインスタンスをロードできないため、WCF IErrorHandlerでキャッチする必要があるエラーがスローされます。次に、シナリオが何であるかを判断し、例外をクライアントが理解できるサービス障害に変換する必要があります。

私は少し前にブログ記事を書いていますが、これはどのように動作するかの例を示しています - http://www.neovolve.com/post/2010/11/09/Managing-content-correlation-failures.aspx

+0

ええと、あなたはこの例が本当にWFに役立たないと言うでしょうか? WFのようなサウンドは、特定のワークフローへの単一のエントリーポイントに適していますか? –

+0

私は実際に反対を言うだろう。 WFはこれには最適ですが、WCF自体がサービス契約の説明を介してWCFクライアントに状態遷移を提示しないことを理解する必要があります。 クライアントが、このように機能するサービスの使用方法を定義しているよく書かれたAPIドキュメントを読んだり、マニュアルを読むと、うまくいきます。 どのようなサービス設計/開発者の経験が適切かは、その種類によって異なります。 –

+0

私は最初のステップは、あなたのクライアントが誰であるかを明確に定義することだと思います。 一般に公開されている場合は、操作によってプロセスが明確に定義されるようにサービス契約を再設計したい場合があります(すでに現状に満足しているかもしれません)。 また、クライアントセットが制限されている場合は、このようなサービス設計を採用する方がはるかに簡単です。 –

関連する問題