Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The answer to this is a couple steps:</p> <ol> <li>Add the properties to your Custom Activity .cs</li> <li>Link the properties in your .actions file (so SPD knows how to map to your properties)</li> <li>Use the properties in your code</li> </ol> <p><strong>STEP 1</strong>: Here is the code for the properties (my class is named GetEmails which you will need to rename to be your class):</p> <pre><code>public static DependencyProperty __ContextProperty = System.Workflow.ComponentModel.DependencyProperty.Register("__Context", typeof(WorkflowContext), typeof(GetEmails)); [Description("The site context")] [Category("User")] [Browsable(true)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public WorkflowContext __Context { get { return ((WorkflowContext)(base.GetValue(GetEmails.__ContextProperty))); } set { base.SetValue(GetEmails.__ContextProperty, value); } } public static DependencyProperty __ListIdProperty = System.Workflow.ComponentModel.DependencyProperty.Register("__ListId", typeof(string), typeof(GetEmails)); [ValidationOption(ValidationOption.Required)] public string __ListId { get { return ((string)(base.GetValue(GetEmails.__ListIdProperty))); } set { base.SetValue(GetEmails.__ListIdProperty, value); } } public static DependencyProperty __ListItemProperty = System.Workflow.ComponentModel.DependencyProperty.Register("__ListItem", typeof(int), typeof(GetEmails)); [ValidationOption(ValidationOption.Required)] public int __ListItem { get { return ((int)(base.GetValue(GetEmails.__ListItemProperty))); } set { base.SetValue(GetEmails.__ListItemProperty, value); } } public static DependencyProperty __ActivationPropertiesProperty = DependencyProperty.Register("__ActivationProperties", typeof(Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties), typeof(GetEmails)); [ValidationOption(ValidationOption.Required)] public Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties __ActivationProperties { get { return (Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties)base.GetValue(GetEmails.__ActivationPropertiesProperty); } set { base.SetValue(GetEmails.__ActivationPropertiesProperty, value); } } </code></pre> <p><strong>STEP 2</strong>: Then in your .actions file add to your block the mappings for those properties (note the entries for __ListID, __ListItem, __Context, and __ActivationProperties):</p> <pre><code>&lt;Action Name="[DESCRIPTION OF YOUR ACTION]" ClassName="[Your.Namespace.Goes.Here].GetEmails" Assembly="[yourDLLName], Version=1.0.0.0, Culture=neutral, PublicKeyToken=0bfc6fa4c4aa913b" AppliesTo="all" Category="[Your Category Goes Here]"&gt; &lt;RuleDesigner Sentence="[blah blah blah]"&gt; &lt;FieldBind Field="PeopleFieldName" Text="people field" Id="1"/&gt; &lt;FieldBind Field="Output" Text="emailAddress" Id="2" DesignerType="parameterNames" /&gt; &lt;/RuleDesigner&gt; &lt;Parameters&gt; &lt;Parameter Name="__Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext" Direction="In" /&gt; &lt;Parameter Name="__ListId" Type="System.String, mscorlib" Direction="In" /&gt; &lt;Parameter Name="__ListItem" Type="System.Int32, mscorlib" Direction="In" /&gt; &lt;Parameter Name="PeopleFieldName" Type="System.String, mscorlib" Direction="In" /&gt; &lt;Parameter Name="Output" Type="System.String, mscorlib" Direction="Out" /&gt; &lt;Parameter Name="__ActivationProperties" Type="Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties, Microsoft.SharePoint" Direction="Out" /&gt; &lt;/Parameters&gt; &lt;/Action&gt; </code></pre> <p><strong>STEP 3</strong>: Here is an example execute function:</p> <pre><code>protected override ActivityExecutionStatus Execute(ActivityExecutionContext provider) { Output = string.Empty; try { SPWeb web = __Context.Web; // get all of the information we currently have about the item // that this workflow is running on Guid listGuid = new Guid(__ListId); SPList myList = web.Lists[listGuid]; SPListItem myItem = myList.GetItemById(__ListItem); //... } catch (Exception e) { //... } return ActivityExecutionStatus.Closed; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload