私たちはこのプロジェクトの中で少し前にこの問題を抱えていました。私たちが思いついた解決策は、2つのランタイムをホストすることでした。 1つは永続性サービス、もう1つは永続性サービスです。持続性サービスのないランタイムでは、ホストの起動時に自動的に開始されるこの種の「監視ワークフロー」をいくつか実行していました。
この
は、それが実装された方法です。
まず、我々は永続化サービスを設定した設定ファイルを持っていた:
<configuration>
<configSections>
<section name="RuntimeWithPersistence" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</configSections>
<RuntimeWithPersistence>
<CommonParameters/>
<Services>
<add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionString="[dbconnectionstring]" UnloadOnIdle="true"/>
</Services>
</RuntimeWithPersistence>
</configuration>
とワークフローホストアプリケーション(カットして編集で、
けど私はアイデアを伝えると思います):
public class WorkflowHost
{
private WorkflowRuntime _runtime = null;
private WorkflowRuntime _nonPersistingRuntime = null;
private void SetupRuntime()
{
// create a new WorkflowRuntime that points out a config section
// defining a persistence service
_runtime = new WorkflowRuntime("RuntimeWithPersistence");
// set up additional services to use
_runtime.StartRuntime()
// create a new WorkflowRuntime that does not point out a config section
_nonPersistingRuntime = new WorkflowRuntime();
// set up additional services to use
_nonPersistingRuntime.StartRuntime()
// start monitoring workflows in the non persisting runtime
StartMonitoringWorkflows(_nonPersistingRuntime);
}
}
フィードバックありがとうございます!私はこのアプローチもやっていきましたが、私は別の問題に対するエレガントな解決策を見つけようとしています。監視する人は、前にどのトリガーが発生したのかを知っていなければなりません。それはそれを見ます。だからこそ私は監視システムで永続性を使用することを考えていたので、すでに実行されていることを無視するトリガーのリストを保存することができます。私はそのアイデアが好きで、それをもっと徹底的に調べるでしょう。 – Chris
私たちは同じ考え方をしていましたが、ランタイムが既にワークフローの永続化されたインスタンスを持っているかどうかを簡単かつ確実に判断することができました(ワークフローの世界では相対的に初心者でした。私はそれ以来それを調査していません...) –