問題タブ [workflowservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
workflow-foundation-4 - IIS7.5 アプリケーション プール/ワーカー プロセスの混在の問題におけるワークフロー サービス (WF4)
問題
異なるアプリケーション プールにある 2 つのワークフロー サービスに対する WCF 要求が、それぞれのワーカー プロセスによって処理されていません。代わりに、両方のワーカー プロセスが両方のワークフロー サービスの WCF 要求を処理しています。この問題は、「統合」マネージド パイプライン モードでのみ発生し、「クラシック」マネージド パイプライン モードでは発生しません。
設定
- IIS 7.5 で実行される 2 つのワークフロー サービス (Workflow Foundation 4.0)。
- 各ワークフロー サービスは、IIS でアプリケーションとしてセットアップされ、独自の ID 資格情報を持つ独自のアプリケーション プールを持ちます。
- アプリケーション プールは、「統合された」マネージド パイプライン モードで実行されています。
説明
たとえば、ワークフロー サービス A ( WFSA ) と B ( WFSB ) がそれぞれUserAとUserBの下で実行されているとします。どちらも、ワークフローの受信アクティビティを介した WCF 呼び出しを期待しています。
2 つのアプリケーション プールを開始すると、2 つの w3wp.exe ワーカー プロセスが実行されていることがわかります。1 つはUserAとして、もう 1 つはUserBとして実行されています。UserAの w3wp.exe ワーカー プロセスはWFSAのWCF 要求を処理し、 UserBの w3wp.exe ワーカー プロセスはWFSBの WCF 要求を処理する必要があります。
しかし、WCF メッセージをワークフローに送信し始めると、トレース ログ ファイルから、両方の w3wp.exe プロセスが両方のワークフロー サービスの要求を処理していることがわかります。
たとえば、WFSAの WCF メッセージは、 UserA AND UserBの w3wp.exe ワーカー プロセスによって処理されています。したがって、10 個の WCF メッセージをWFSAに送信すると、4 個はUserAの w3wp.exe によって処理され、6 個はUserBの w3wp.exe によって処理されます。
アプリケーション プールを "クラシック" マネージド パイプライン モードに切り替えると、期待どおりに、WCF メッセージがそれぞれのワーカー プロセスにルーティングされます。
不足している構成はありますか?
どんな助けでも大歓迎です。
アップデート
私が取り組んでいるプロジェクトでは、WFSA、WFSB、および別の WCF サービス アプリケーション ( WCFApp ) が次の構成で相互に通信します。
WFSA <==> WFSB <==> WCFApp
次のシナリオで問題が発生します。
- WFSA ==> WFSB ( UserA ): WFSAは、 UserAの w3wp.exe で処理されるWFSBで新しいワークフローをインスタンス化します。
- WFSB ( UserA ) ==> WCFApp : WFSBは、何らかの処理を行うWCFAppを呼び出します。
- WCFApp ==> WFSB ( UserB !!!): 処理後、WCFAppはWFSBに処理が完了したことを通知します。しかし、WCF メッセージはUserBの w3wp.exe プロセスによって処理されます!!! もちろん、ワークフロー インスタンスは存在しないため、次のメッセージでエラーが発生します。
要求されたリソースは、次のいずれかの場所に移動しました: http://server/AppFolder/WFSB.xamlx/INotifyWhenDone
次のように設定することで、これを回避できます。
これは、ワークフローがアイドル状態になるとすぐに永続化され、永続化データベースでワークフロー インスタンスを見つけることができるため、間違ったワーカー プロセスに送信されるメッセージを処理できることを意味します。ただし、永続性が非常に遅いため、このソリューションは受け入れられません。
.net - ワークフローは引数の定義を許可しますが、ワークフローサービスは許可しませんか?
私はここ数ヶ月、WF 4を非常に広範囲に使用してきましたが、WFデザイナーには、クリックしてリストを表示したり、引数を追加したりできる[引数]ボタンがあることに気付きました。
WFサービスに引数を追加することは非常に有益ですが、デザイナには同じオプションがありません。XAMLで引数を定義することは可能ですか、それとも引数が許可されない特定の理由がありますか?
デザイナーと一緒に作成したワークフローサービスに引数を渡したい。理想的には、文字列引数を、それをホストしているアプリケーション(Winサービス)からWFサービスに渡したいと思います。同じアプリケーションがXamlワークフローもホストしており、実行中にWFがそのジョブを実行できるようにいくつかの引数を渡します。
workflow-foundation - SQL ワークフロー インスタンス ストアの再試行動作はどのようなものですか?
SqlWorkflowInstanceStore がどのように廃止され、どのように処理されるかについてのドキュメントを見つけるのに苦労しています。
ワークフロー 3.x には、永続ストアが利用できないときに再試行を許可する「EnableRetries」という設定可能なプロパティがありましたが、ワークフロー 4 では同様のものは見られないようです。明確にするために、「EnableRetries」を知っています。 .NET 4 にありますが、これは従来のワークフロー用です。
Application または Invoker ではなく、Workflow Services を使用しています。
誰でも光を当てることができますか?または、私を正しい方向に向けますか?
ありがとう、ジョン
wcf - ワークフローサービスへのワークフロー拡張の提供-WF4.0
みなさん、こんにちは!
私はWF4.0とWWFに慣れていないので、これが初心者タイプの質問のように思われる場合はご容赦ください。しかし、この問題の解決策を求めてインターネットの奥深くを調べたが、役に立たなかったと信じています。
以下のように、拡張機能を提供する必要があるカスタムCodeActivityを使用してサンプルWFアプリケーションを作成しました。
次に、このアクティビティをワークフローサービスにスロットし、サービス参照を追加してWebアプリを介して消費しようとします。ただし、参照を追加すると、次のようになります。
System.Activities.ValidationException:このワークフローを実行するには、タイプ'PizzaMan.ActivityLibrary.IPreparePizzaExtension'の拡張機能を構成する必要があります。
十分に公平です-もちろん、私の活動では、IPreparePizzaExtensionの実装を渡す必要があります-結局のところ、私はそれを伝えました!
だから私の質問は、一体どうやってこれをサービスに渡すのですか?これは、WorkflowInvokerを使用して、コンソールアプリのシナリオで十分に簡単に管理できますが、サービスアプローチを介してこれを行う明確な方法がわかりません。明らかに、参照を追加するためのプログラムによるアプローチが必要であると思いますが、これを正確に行う方法については、やはり途方に暮れています。
どんな助けでも大歓迎です。
よろしくイアン
wcf - セルフホステッド WorkflowServiceHost を使用して永続化されたワークフローを再開する
WorkflowServiceHost で自己ホストしている永続化されたワークフローを再開する方法を考え出そうとしています。現在、私のホストは永続性とアイドリング動作を次のように結び付けています。
ワークフローに含まれるカスタム アクティビティ内のデータベースの ProductID に対するワークフロー インスタンス GUID を保存しているので、特定のワークフロー インスタンスを製品 ID まで簡単に追跡できます。どうにかしてこの製品 ID を ServiceHost に渡し、永続化された正しいワークフローを再開できるようにしたいと考えています。
これを行う方法について誰かが私を正しい方向に向けることができますか?
よろしくお願いします
workflow - ワークフローをデータベースに保存
全て
ワークフローをシリアル化してデータベースに保存し、後でロードする方法はありますか?
ワークフローのインスタンスをC#のデータベースに保存するにはどうすればよいですか?
ありがとう
wcf - 順不同で行われた「受信」コールを処理するにはどうすればよいですか?
セールス ファネルをエミュレートする WF4 サービスがあります。「登録」受信呼び出しから開始することで機能します。その後、10 の同様の段階があります (各段階で 2 つのレシーブで構成されます)。現在のステージが受信したデータを検証するまで、次のステージに進むことはできません。私が確信していないのは、クライアント アプリで許可されていない場合でも、受信操作が順不同で呼び出されないようにワークフローを作成するにはどうすればよいかということです。私のテスト コンソール アプリでは、ユーザーが任意の受信操作を呼び出せるようにしました (何が起こるかを見たかったからです)。
たとえば、最初に Register を呼び出し、次に "AddProspect" 受信の前に "AddQualification" 受信を呼び出した場合、テスト アプリは次のような例外を返します。
現時点では、識別子「1984c927-402b-4fbb-acd4-edfe4f0d8fa4」のサービス インスタンスに対する操作「AddQualification|{http://tempuri.org/}IZSalesFunnelService」を実行できません。操作が正しい順序で実行されていること、および使用中のバインディングが順序どおりの配信を保証していることを確認してください。
このことから、私が行う方法がわからない2つのことがあります。
まず、Fault Exception を処理してクライアントに意味のある方法で通知する方法と...
第 2 に、永続化 (およびプロパティの昇格) を使用しているため、順不同の呼び出しを行うと、昇格されたプロパティがアンロードされます。クライアントが例外を受け取った後、再度昇格されることはありません。
何かご意見は?
wcf - IIS でセルフホステッド WF をホストする
IIS で自己ホスト型の WorkflowServiceHost アプリケーションを XAMLX ファイルに変換せずにホストできるかどうかは誰にもわかりませんか? もしそうなら、どのように?
さらに、XAMLX ファイルを一般的に IIS 7 に展開するための適切なガイドラインはありますか?
前もって感謝します
workflow-foundation - Designer を使用せずにワークフロー 4.0 サービスの ReceiveAndSendReply アクティビティを実装する方法
Receive または ReceiveAndSendReply アクティビティを使用してコード アクティビティをワークフロー サービスとして記述したいと考えていますが、デザイナーは使用したくありません。WCF エンドポイントとサービス/データ コントラクトを定義する最良の方法は何ですか (デザイナーは通常、それらを決定して xamlx ファイルにビルドしますが、これをすべてコードで行いたいと考えています)。