One problem with XOML only workflows (i.e no code-behind) is the inability to define properties in your top-level workflow to store values that will be used throughout the lifecycle of the workflow, since you haven't got a class in which to define them. Well that's what I thought anyway until I had the idea of creating a custom activity to store these variables. It's all very simple, add the activity to your workflow and set the Value property to whatever you want, then bind it to any other activities that need access to the value.
Here's the code
public class VariableActivity: Activity { private string value; [Description("The value of the variable")] public string Value { get { return value; } set { this.value = value; } } }
Update - Here's an example of binding the value of the variable to an activity property
<?xml version="1.0" encoding="utf-16"?> <SequentialWorkflowActivity x:Name="Workflow" xmlns:ns0="clr-namespace:WFBuild.Activities;Assembly=WFBuild.Activities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <ns0:VariableActivity x:Name="folderToZip" Value="c:\temp" /> <ns0:ZipFolderActivity x:Name="zipFolder" Folder="{ActivityBind folderToZip,Path=Value}" /> </SequentialWorkflowActivity>
2 comments:
Do you have an example of how you bind it to the activity, in XOML.
Thanks
Andrew, I've added some example XOML, hope it helps
Post a Comment