0

Windowsワークフローの基礎シーケンスワークフローでは、特定の条件に基づいて呼び出されるメソッドタグを呼び出す方法を教えてください。例えばXAML Windowsワークフローの基盤でInvokeMethodを条件付きで使用する方法

<Sequence> 
    <Sequence.Variables> 
<Variable x:TypeArguments="x:String" Default="[&quot;this is an out param&quot;]" Name="outParam" /> 
    <Variable x:TypeArguments="x:Int32" Name="resultValue" /> 
    <Variable x:TypeArguments="msi:TestClass" Default="[New TestClass()]" Name="varTestClass" /> 
</Sequence.Variables> 
<sap:WorkflowViewStateService.ViewState> 
    <scg:Dictionary x:TypeArguments="x:String, s:Object"> 
    <x:Boolean x:Key="IsExpanded">True</x:Boolean> 
    </scg:Dictionary> 
</sap:WorkflowViewStateService.ViewState> 
<WriteLine sap:VirtualizedContainerService.HintSize="299.663333333333,59.2766666666667" Text="[&quot;Instance method call&quot;]" /> 
<InvokeMethod DisplayName="Instance Method Call" sap:VirtualizedContainerService.HintSize="299.663333333333,127.553333333333" MethodName="InstanceMethod1"> 
    <InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="msi:TestClass">[New TestClass()]</InArgument> 
    </InvokeMethod.TargetObject> 
</InvokeMethod> 
<InvokeMethod DisplayName="Instance Method Call with Parameters" sap:VirtualizedContainerService.HintSize="299.663333333333,127.553333333333" MethodName="InstanceMethod"> 
    <InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="msi:TestClass">[New TestClass()]</InArgument> 
    </InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="x:String">["My favorite number is"]</InArgument> 
    <InArgument x:TypeArguments="x:Int32">42</InArgument> 
</InvokeMethod> 
</Sequence> 

と仮定が、私はすべてのinvokeメソッドがトリガされ、上記活性を呼び出します。

しかし、必要とされるものは、何かのように、

<Sequence> 
    <Sequence.Variables> 
<Variable x:TypeArguments="x:String" Default="[&quot;this is an out param&quot;]" Name="outParam" /> 
    <Variable x:TypeArguments="x:Int32" Name="resultValue" /> 
    <Variable x:TypeArguments="msi:TestClass" Default="[New TestClass()]" Name="varTestClass" /> 
</Sequence.Variables> 
<sap:WorkflowViewStateService.ViewState> 
    <scg:Dictionary x:TypeArguments="x:String, s:Object"> 
    <x:Boolean x:Key="IsExpanded">True</x:Boolean> 
    </scg:Dictionary> 
</sap:WorkflowViewStateService.ViewState> 
<WriteLine sap:VirtualizedContainerService.HintSize="299.663333333333,59.2766666666667" Text="[&quot;Instance method call&quot;]" /> 
//If (stateArgument =="created") 
//{ 
<InvokeMethod DisplayName="Instance Method Call" sap:VirtualizedContainerService.HintSize="299.663333333333,127.553333333333" MethodName="InstanceMethod1"> 
    <InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="msi:TestClass">[New TestClass()]</InArgument> 
    </InvokeMethod.TargetObject> 
</InvokeMethod> 
//} 
//else if(stateArguement == "running") 
//{ 
<InvokeMethod DisplayName="Instance Method Call with Parameters" sap:VirtualizedContainerService.HintSize="299.663333333333,127.553333333333" MethodName="InstanceMethod"> 
    <InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="msi:TestClass">[New TestClass()]</InArgument> 
    </InvokeMethod.TargetObject> 
    <InArgument x:TypeArguments="x:String">["My favorite number is"]</InArgument> 
    <InArgument x:TypeArguments="x:Int32">42</InArgument> 
</InvokeMethod> 
//} 
</Sequence> 

で誰かがこのについて移動する方法をいくつかのアイデアを与えることはできますか?

+0

あなたは手であなたの.xamlファイルを編集していますか? – Joao

+0

はい、プロトタイプでは、私は手作業でXAMLを編集します。その後、一般化される。 –

答えて

0

あなたは条件付きでワークフローの部分を実行するための(名前空間System.Activities.Statements中)Ifアクティビティを使用することができます。

<If DisplayName="Invoke something based on a conditional" sap2010:WorkflowViewState.IdRef="If_1"> 
    <If.Condition> 
     <InArgument x:TypeArguments="x:Boolean"> 
      <mca:CSharpValue x:TypeArguments="x:Boolean">1 == 2</mca:CSharpValue> 
     </InArgument> 
    </If.Condition> 
    <If.Then> 
     <InvokeMethod sap2010:WorkflowViewState.IdRef="InvokeMethod_1" MethodName="WriteSomething" TargetType="local:MyStatics" /> 
    </If.Then> 
    <If.Else> 
     <InvokeMethod sap2010:WorkflowViewState.IdRef="InvokeMethod_2" MethodName="WriteSomethingElse" TargetType="local:MyStatics" /> 
    </If.Else> 
</If> 
+0

Ifの名前空間とは何ですか? –

+0

[System.Activities.Statements]名前空間にあります。 – ajawad987

関連する問題