1

Visual Studio で WF4 のワークフローを設計しました。とてもシンプルなので、この方法で実行したいだけです。

 using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
 {
     System.Workflow.Runtime.WorkflowInstance instance =  workflowRuntime.CreateWorkflow(typeof(Workflow1));//My workflow
     instance.Start();     
 }

しかし、これを実行すると、次のエラーが発生します。

The input workflow type must be an Activity.Parameter name: workflowType
4

1 に答える 1

2

Technetにも同様の議論があります。WorkflowRuntime クラスは Workflow Foundation 3 の一部であり、WF4 型では機能しません。下位互換性のためにのみ含まれています。実際、4.5 では WorkflowRuntime は廃止されました。

System.Activities.Activity ベースのワークフローを WorkflowRuntime に使用しようとしている可能性があります。これにより、説明した ArgumentException エラーが発生します。

WF4 ワークフローをホスト/実行するには、WorkflowInvoker、WorkflowApplication、および WorkflowServiceHost のいずれかのクラスを使用する必要があります。これについては、 ドキュメントのWorkflowInvoker と WorkflowApplication の使用で説明されています。

最も簡単な方法は、WorkflowInvoker を使用してワークフローをメソッドとして実行することです。次に例を示します。

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker.Invoke(wf);

ただし、これではワークフローのライフサイクルをあまり制御できません。

WorkflowApplicationを使用すると完全に制御でき、WorkflowServiceHostを使用すると、ワークフローを WCF サービスとしてホストできます。

実際、独自のホストを作成せずに、Windows Server AppFabric を使用して WF4 ワークフローをホストし、AppFabric にインスタンス、セキュリティ、および回復を管理させることができます。

于 2012-12-28T11:30:01.097 に答える