問題タブ [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 - Workflow Foundation 4、ワークフローを実行する最良の方法
質問をする前に、また似たような質問がいくつかあるので怒る前に、プロジェクトの要件とは何かについて少し説明したいと思います。その質問は他のすべての質問とは異なることがわかります。
- ユーザーは、ReHosted WPF アプリケーションを使用してワークフローを作成し、xaml ファイルを当社が提供する Web アプリケーションにアップロードします。
- ワークフローの実行を開始するためのエントリ ポイントは、その Web アプリケーションにあります。UI を使用したり、独自のアプリケーションから API 機能を使用したりできます。
- ワークフローは長時間実行されます。
ホスティングのさまざまな可能性を認識しています。
ASP.NET Web アプリケーション内でホストするのが最も簡単ですが、ユーザーがアップロードするワークフローの種類がわからないため、IIS AppDomain のリサイクルによってワークフロー スレッドの実行が中断される可能性があります。
WCF ワークフロー サービスは見栄えがしますが、ユーザーが独自の xaml ワークフロー定義をアップロードするという事実は、事態をより複雑にします。WCF サービスとして公開されたコアワークフローのようなものを作成する必要があるように見えます。そのワークフローは内部ワークフローをロードして実行します (顧客がアップロードした xaml)。その場合、パラメーターが内部ワークフローにどのように渡されるかわかりません。
3 番目のオプションは、 Windows Serviceでワークフローの実行をホストすることです。Web アプリケーションとウィンドウ サービス間の通信は、MSMQ を介して行うことができます。このソリューションの欠点は、Web アプリと Win サービス間の良好な通信を確保するためのボイラープレート コードである可能性があります。
より良い解決策がありませんか?詳細が必要な場合は、コメントを投稿してください。
wcf - ワークフローサービスでアクティビティの後にではなく、ReceiveとSendReplyの間にアクティビティを配置する理由
ワークフローサービスで見たほとんどの例では、ReceiveアクティビティとSendReplyアクティビティの間にアクティビティを配置しています。ただし、アクティビティがサービスのタイムアウトを完了するのに長い時間がかかる場合。タイムアウトを増やすか、SendReplyの後にアクティビティを配置することができます。これらのアクティビティを実行する場所に関するベストプラクティスはありますか?
c# - WCF ワークフロー サービス REST インターフェイス
Windows Workflow Services 4.0 を REST インターフェイスで動作させようとしています。receiveRequest アクティビティと sendResponse アクティビティを持つ「Service1」という非常に単純なワークフロー サービスがあります。
デフォルトでは、WF サービスは実装されているクラスとインターフェースを自動生成しますが、WF サービスに、内部で自動生成されたインターフェースではなく、独自の REST 対応インターフェースを強制的に使用させたいと考えています。
インターフェイスは次のようになります。
ただし、このインターフェイスで動作するように XAML を構成するのは困難です。サービス コントラクト名が自分のコントラクトであることを指定するには、次のような XAML 構成が必要です。
ただし、このワークフロー サービスを実行すると、次の例外が発生します。
コントラクト名 'wfService.IService' は、サービス 'Service1' によって実装されたコントラクトのリストに見つかりませんでした。
ただし、バックグラウンドで作成されるサービスは IService インターフェイスを実装していません。ワークフロー エンジンによってインスタンス化されるサービスを拡張して、独自のインターフェイスを実装する方法を知りたいです (上記で説明しました)。
ありがとう
.net - .NET ワークフロー 4 WCF 対応のワークフローで使用されるカスタム永続ストアを作成する
プロジェクトのワークフロー エンジンとして WF 4 を使用したいと考えています。私が WF を使用しているアクティビティは長時間 (数週間または数か月にわたって発生する可能性があります) であるため、永続ストアを使用したいと考えています。また、永続的な遅延を利用して、事実の数日後に通知を送信できるようにしたいと考えています。私のすべての調査は、IIS でホストされているワークフロー サービスを AppFabric の上に置いて使用するという方向性を示しています。
このシナリオをローカル マシンでテストしたところ、うまくいきました。私のワークフローは持続し、遅延は希望するタイミングで開始されます。問題が 1 つあります。私の会社で定義されたアーキテクチャでは、サービス レイヤー (IIS でホストされる WCF サービス) がデータベース レイヤーと直接対話することができません。これを回避するための良いオプションは、データ アクセス レイヤーを介して永続性 DB への呼び出しをルーティングするカスタム インスタンス ストアを作成することだと考えました。コードを使用してカスタム インスタンス ストアを実装する例を多数見つけることができます (つまり、workflowApplication.InstanceStore = customInstanceStore)。しかし、WCF 対応サービスにはコードがなく、web.config を介して永続ストアを構成できる例が見つかりません。
WCF 対応のワークフロー ホストは、DB と直接通信する組み込みの SQL インスタンス ストアを使用する必要がありますか?
workflow-foundation-4 - XAML ワークフローを別の XAML ワークフローに埋め込む
2 つの XAML ワークフロー (WF1 と WF2) がある状況があります。WF1 は WF2 のスーパーセットです。したがって、WF2 はシステム内で WF1 とは独立して実行されますが、WF1 の実行時に WF2 を WF1 のスコープ内で実行する必要があります。基本的に WF1 の終わりに向かってブックマークがあり、そのブックマークの再開時に WF2 を実行する必要があります。
どちらも共有リソースで動作し、これらの WF の異なるインスタンスを共有リソースで同時に実行することはできません。これを処理するキューイング メカニズムが用意されています。
私がやりたいことは、この実行を設計時に何らかの形で WF1 に組み込むことです。したがって、WF2 をロードするアクティビティをコーディングするか、何らかの方法で WF2 をコード化されたアクティビティに変換し、WF1 などにドロップする必要があります。WF2 をほとんどコピーして WF1 デザイナーにドロップする必要はありません。また、WF2 を実行するために WF1 内で別のホスト プロセスを開始する必要もありません。
基本的に、WF1 と WF2 は両方とも WorkflowServiceHost の下で実行されます。これらは従来のサービス WF ではなく (送受信アクティビティがないため)、WCF サービスとして公開される通常の WF です。両方の WF が恩恵を受ける永続性、追跡などに関して、WorkflowServiceHost に多くのカスタマイズが行われています。WF1 内で WF2 を開始するためにどのようなメカニズムを採用しても、これらの利点が失われないようにしたいと考えています。
PS: これらの WF の実行をカスタマイズした方法を確認したい場合は、こちらのブログからサンプル コードをダウンロードできます。
wcf - ワークフロー サービスのスケーラビリティの問題
現在、ワークフロー サービスでいくつかの問題が発生しています。短いシーケンスで 4、5 を開始すると正常に動作しますが、この値を増やすと (~10 から開始)、次の例外が発生します。
サーバーが開始したシャットダウンにより、出力セッションが自動的に閉じられたため、このチャネルを使用してメッセージを送信することはできなくなりました。DispatchRuntime.AutomaticInputSessionShutdown を false に設定して自動クローズを無効にするか、リモート サーバーでシャットダウン プロトコルを変更することを検討してください。
問題はプロキシの作成方法にあると思います。次のコードを使用してプロキシを提供し、既存のものを再利用しようとします。
追加の「遅延」プロバイダーを使用すると、次のようになります。
このように使用されます:
次のように初期化します。
ワークフロー サービスは IIS によってホストされ、次の調整設定を追加しました。
私のニーズにはこれで十分です。
望ましいスケーラビリティを実現するためにクライアントとサーバーを構成するのを誰かが手伝ってくれることを願っています (WorkflowInstance sql ストアを使用して、数百が順番に開始され、並行して実行されます)。
更新: すべてのサービスに NetTcpBinding を使用しています。
更新 2 : すべてのサービスは現在ローカルでホストされ、消費されています。
ありがとうフランチェスコ
c#-4.0 - コレクションのワークフロー相関
以下のワークフローがあります
- 受信アクティビティ
1a. ドキュメントのコレクションを作成する
Send アクティビティ (ドキュメント ID のコレクションを送信)
受信アクティビティ (CorrelationHandle-単一ドキュメント ID)
2.送信アクティビティ
最初の送信アクティビティで相関ハンドルのコレクションを送信し、2 番目の受信アクティビティで相関ハンドルを単一のドキュメント ID として送信します。
現在、1 つのワークフローから 1 つのドキュメント ID への関連付けを実装していますが、現在は、1 つのワークフローから多くのドキュメント ID への関連付けが必要です。
c# - ワークフロー サービス ホストのワークフロー ステータスを取得する方法
ワークフローは、workflowservicehost でホストされている WF1 と言っています。
クライアント側で、WF1 のステータスを取得したいと考えています。
ステータスを取得する方法はありますか。
ワークフロー追跡を使用してステータスを取得したくありません。
workflow-foundation - Net.Msmq に対して BufferedReceive が有効になっている場合、WF サービスのメタデータを取得できません
AppFabric IIS 7/WAS でホストされている WF サービスがあります。Net.Msmq 用に構成されています - これは正常に動作します。クライアントはサービスを正常に消費します。WorkflowService を変更して BufferedReceive を許可すると、xamlx に移動してメタデータを取得できなくなります。エラーは次のとおりです。
*
「コントラクト 'IInstructionServices' には、'ReceiveContextEnabledAttribute' で注釈が付けられた操作が少なくとも 1 つありますが、アドレス 'net.msmq://localhost/private/CSDInstructionProcessing/Instructions.xamlx' でコントラクト エンドポイントに使用されるバインディングは、必要なバインディング プロパティをサポートしていません。 'IReceiveContextSettings'. コントラクトに使用されるバインディングが ReceiveContext 機能をサポートしていることを確認してください"
* 理由は何か?
c# - Windows ワークフロー サービス - カスタム サービス ホスト。ワークフロー イベントの処理
サービスとしてホストされている非常に単純なワークフローがあります。このワークフローからの例外を処理したいだけです。
私のワークフローは、パラメーターとして「string」を取得し、それを int にキャストしようとします。したがって、「asasafs」のようなデータを送信するたびに、失敗して例外がスローされます。とてもシンプルです:)
独自の WorkflowServiceHostFactory を作成できることを読みましたが、残念ながら単純なタスクを達成できません。これが私の実装です。
Visual Studio 2k10 と iisexpress を使用していますが、ワークフローが例外をスローするたびに、デバッガーはどのイベント ハンドラーでも中断しません。適切に行う方法を知っていますか?