1

IIS 内、WCF サービス内、スタンドアロン アプリケーション内、または Windows ワークフロー インスタンス内など、さまざまな実行環境で実行できる共通コードがあります。

しかし、コードがワークフロー内で実行されているかどうかを確認する最良の方法は何ですか? WorkflowEnvironment.WorkflowInstanceID現時点では、次のコードで例外を探してキャッチしています。

...
try
{
  if (WorkflowEnvironment.WorkflowInstanceId != null)
  {
    return ExecutionContext.Workflow;
  }
}
catch
{
}

// return unknown
return ExecutionContext.Unknown;

より良い方法はありませんか?try...catchブロックの必要性を取り除きたい。

4

1 に答える 1

0

これを行うより良い方法は本当にありません。

最初に確認できることの 1 つは、System.Diagnostics.Trace.CorrelationManager.ActivityId です。これが Guid.Empty と等しい場合、DefaultWorkflowSchedulerService を使用するワークフローの中にいません。残念ながら、手動スケジューラはこの ActivityId を設定しないため、その場合は役に立ちません。

ところで、この ActivityId はワークフローとは何の関係もありませんが、ワークフローの InstanceId にも設定されている E2E トレースの activityId です。

于 2009-01-18T11:05:31.497 に答える