Brug af ASP.NET med Windows Workflow Foundation

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at opbygge en asp.net webapplikation med Windows Workflow Foundation.


Jeg har fundet nogle nyttige websteder som:


http://msdn.microsoft.com/en-us/library/bb628441\%28v=vs.90\%29.aspx[4]


http://msdn.microsoft.com/en-us/library/bb675262\%28v=vs.90\%29.aspx[5]


Arbejdsstrømmen er en aktivitet


<Activity mc:Ignorable="sap" x:Class="ApproachWithWorkflows.WriteLineActivity" sap:VirtualizedContainerService.HintSize="654,676" mva:VisualBasic.Settings="Assembly references and imported namespaces for internal implementation" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:s1="clr-namespace:System;assembly=System" xmlns:s2="clr-namespace:System;assembly=System.Xml" xmlns:s3="clr-namespace:System;assembly=System.Core" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel" xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sd="clr-namespace:System.Data;assembly=System.Data" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:st="clr-namespace:System.Text;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Flowchart sad:XamlDebuggerXmlReader.FileName="C:Documents and SettingshaukeDesktopUniMasterarbeit SVN SESoftwareWorkflowansatzApproachWithWorkflowsApproachWithWorkflowsWriteLineActivity.xaml" sap:VirtualizedContainerService.HintSize="614,636">
<sap:WorkflowViewStateService.ViewState>
  <scg3:Dictionary x:TypeArguments="x:String, x:Object">
    <x:Boolean x:Key="IsExpanded">False</x:Boolean>
    <av:Point x:Key="ShapeLocation">270,2.5</av:Point>
    <av:Size x:Key="ShapeSize">60,75</av:Size>
    <av:PointCollection x:Key="ConnectorLocation">300,77.5 300,107.5 295.5,107.5 295.5,129</av:PointCollection>
  </scg3:Dictionary>
</sap:WorkflowViewStateService.ViewState>
<Flowchart.StartNode>
  <x:Reference>\_\_ReferenceID0</x:Reference>
</Flowchart.StartNode>
<FlowStep x:Name="\_\_ReferenceID0">
  <sap:WorkflowViewStateService.ViewState>
    <scg3:Dictionary x:TypeArguments="x:String, x:Object">
      <av:Point x:Key="ShapeLocation">190,129</av:Point>
      <av:Size x:Key="ShapeSize">211,59</av:Size>
    </scg3:Dictionary>
  </sap:WorkflowViewStateService.ViewState>
  <WriteLine sap:VirtualizedContainerService.HintSize="211,59" Text="worked.." />
</FlowStep>






Jeg oprettede et asp.net projekt med en simpel knap:


<asp:Button Text="Purchase" ID="Label1" runat="server" OnClick="btnClick" />


I koden bagfor forsøger jeg at ringe til arbejdsgangen (og initialiserede WorkflowRuntime i global.asax ved Application\_Start):


WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime;
ManualWorkflowSchedulerService manualScheduler =
    workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService))
    as ManualWorkflowSchedulerService;

WorkflowInstance instance = workflowRuntime.CreateWorkflow(
    typeof(ApproachWithWorkflows.WriteLineActivity));
instance.Start();
manualScheduler.RunWorkflow(instance.InstanceId);


Når jeg nu udfører applikationen og trykker på knappen, får jeg en fejl som 'Indgangen workflow type skal være en aktivitet. \ R \ nParameter navn: workflowType' på CreateWorkflow.


Men aktiviteten er en aktivitet! Hvad gør jeg forkert?

Bedste reference


Det ser ud til at du bruger WF 3.5 runtime klasser til at udføre en WF 4.0 aktivitet. Tag et kig på WorkflowInvoker eller WorkflowApplication.