views:

342

answers:

1

I'm creating a FlowChart within a Windows Workflow 4.0 project in Visual Studio 2010. I've added a FlowSwitchwith an expression of a variable passed in as an In Argument to the Activity. I can debug and see the values are passed in correctly, however my FlowSwitch is not switching at all to a case that is defined as the value being passed in. I've defined the FlowSwitch going to the Activity as the numeric value that the In Argument should be equal to. Is there something I'm missing?

+1  A: 

A FlowSwitch works with string values at the moment. Try converting the InArgument to a string.

Example XAML:

<p:Activity mc:Ignorable="" x:Class="WorkflowConsoleApplication2.Flowchart1" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" xmlns:__Flowchart1="clr-namespace:WorkflowConsoleApplication2;" xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
  <p:Flowchart StartNode="{x:Reference __ReferenceID0}" sad:XamlDebuggerXmlReader.FileName="c:\temp\WorkflowConsoleApplication2\WorkflowConsoleApplication2\Flowchart1.xaml">
    <WorkflowViewStateService.ViewState>
      <scg:Dictionary x:TypeArguments="x:String, s:Object">
        <av:Point x:Key="ShapeLocation">275,10</av:Point>
        <av:Size x:Key="ShapeSize">50,50</av:Size>
        <av:PointCollection x:Key="ConnectorLocation">300,60 300,110</av:PointCollection>
      </scg:Dictionary>
    </WorkflowViewStateService.ViewState>
    <p:FlowSwitch x:Name="__ReferenceID0" Expression="[&quot;2&quot;]">
      <p:FlowSwitch.Default>
        <p:FlowStep x:Name="__ReferenceID1">
          <WorkflowViewStateService.ViewState>
            <scg:Dictionary x:TypeArguments="x:String, s:Object">
              <av:Point x:Key="ShapeLocation">235,293</av:Point>
              <av:Size x:Key="ShapeSize">200,34</av:Size>
            </scg:Dictionary>
          </WorkflowViewStateService.ViewState>
          <p:WriteLine>["Default"]</p:WriteLine>
        </p:FlowStep>
      </p:FlowSwitch.Default>
      <WorkflowViewStateService.ViewState>
        <scg:Dictionary x:TypeArguments="x:String, s:Object">
          <av:Point x:Key="ShapeLocation">270,110</av:Point>
          <av:Size x:Key="ShapeSize">60,60</av:Size>
          <av:PointCollection x:Key="Default">300,170 285,170 285,283 335,283 335,293</av:PointCollection>
          <av:PointCollection x:Key="1Connector">300,170 300,205 330,205</av:PointCollection>
          <av:PointCollection x:Key="2Connector">300,170 300,180 290,180 290,270 340,270</av:PointCollection>
        </scg:Dictionary>
      </WorkflowViewStateService.ViewState>
      <p:FlowStep x:Name="__ReferenceID2">
        <x:Key>
          <x:String>1</x:String>
        </x:Key>
        <WorkflowViewStateService.ViewState>
          <scg:Dictionary x:TypeArguments="x:String, s:Object">
            <av:Point x:Key="ShapeLocation">330,188</av:Point>
            <av:Size x:Key="ShapeSize">200,34</av:Size>
          </scg:Dictionary>
        </WorkflowViewStateService.ViewState>
        <p:WriteLine>["Its 1 "]</p:WriteLine>
      </p:FlowStep>
      <p:FlowStep x:Name="__ReferenceID3">
        <x:Key>
          <x:String>2</x:String>
        </x:Key>
        <WorkflowViewStateService.ViewState>
          <scg:Dictionary x:TypeArguments="x:String, s:Object">
            <av:Point x:Key="ShapeLocation">340,253</av:Point>
            <av:Size x:Key="ShapeSize">200,34</av:Size>
          </scg:Dictionary>
        </WorkflowViewStateService.ViewState>
        <p:WriteLine>["Its 2"]</p:WriteLine>
      </p:FlowStep>
    </p:FlowSwitch>
    <x:Reference>__ReferenceID2</x:Reference>
    <x:Reference>__ReferenceID3</x:Reference>
    <x:Reference>__ReferenceID1</x:Reference>
  </p:Flowchart>
</p:Activity>
Maurice
I've tried Argument.ToString and even hardcoded a String "15000" and still it doesn't work. Any thoughts?
Nissan Fan
It works for me :-) In the FlowSwitch Expression I entered "2" (including quotes) or 2.ToString(). In the FlowStep I entered 2 (without quotes as this is a string not an expression. If have added the XAML I use to the original post.
Maurice
Got beta 2 today. No longer a problem but I appreciate your effort greatly.
Nissan Fan