Я создаю FlowChart в проекте Windows Workflow 4.0 в Visual Studio 2010. Я добавил FlowSwitch с выражением переменной, переданной как In Argument в Activity. Я могу отлаживать и видеть, что значения передаются правильно, однако мой FlowSwitch вообще не переключается на случай, который определяется как передаваемое значение. Я определил FlowSwitch, переходящий к Activity, как числовое значение, которое In Argument должно быть равно. Что-то мне не хватает?
Windows Workflow 4.0 FlowSwitch не работает
comment
Отстой, когда в бета-программе есть ошибки, а?
- person leppie   schedule 13.10.2009
comment
Особенно в отношении чего-то столь элементарного в своем наборе функций. Я пытаюсь сравнить FlowCharts с обычными действиями, но это просто не работает.
- person Keith Adler   schedule 13.10.2009
comment
Это даже не работает с жестко запрограммированными значениями.
- person Keith Adler   schedule 13.10.2009
Ответы (1)
В настоящий момент FlowSwitch работает со строковыми значениями. Попробуйте преобразовать InArgument в строку.
Пример 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">
<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="["2"]">
<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>
person
Maurice
schedule
13.10.2009
Я пробовал Argument.ToString и даже жестко запрограммировал String 15000, но все еще не работает. Есть предположения?
- person Keith Adler; 13.10.2009
У меня это работает :-) В выражении FlowSwitch я ввел 2 (включая кавычки) или 2.ToString (). В FlowStep я ввел 2 (без кавычек, так как это строка, а не выражение. Если я добавил XAML, который я использую в исходное сообщение.
- person Maurice; 14.10.2009
Получил бета 2 сегодня. Больше не проблема, но я очень ценю ваши усилия.
- person Keith Adler; 19.10.2009