tag:blogger.com,1999:blog-75413079187009883632024-03-19T01:07:21.913-07:00SharePoint 2013 WorkflowsAnonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-7541307918700988363.post-48430942665678365892014-12-12T08:13:00.000-08:002014-12-17T03:59:15.593-08:00Modifying WrkStat.aspx With Custom TaskOutcome<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Hello!<br />
<br />
If you have ever developed custom TaskOutcome field for 2013 workflows with your own choices (<a href="http://www.andrewconnell.com/blog/SP2013-Workflow-Custom-Task-Outcomes">link 1</a> or <a href="http://sivarajan.me/post/SharePoint-2013-Designer-Workflow-Creating-a-Custom-Task-Outcome-Part-3">link 2</a>), you have probably thought how to customize WrkStat.aspx and select your custom column in it for the tasks view instead of standard TaskOutcome:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwcZbNAzwDawysgOgdwV0eWLXhYTImQJp62g7nn09u0uV5QzTaTMsM1ntSkdLk_uMSlzsJvisQGY0nl8tWGMAsev67WvD1KfEmwt6i03FoaUGSu3fI65cD7wyWjcNmukEit7Owq9RCTf9c/s1600/default_wrkstat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwcZbNAzwDawysgOgdwV0eWLXhYTImQJp62g7nn09u0uV5QzTaTMsM1ntSkdLk_uMSlzsJvisQGY0nl8tWGMAsev67WvD1KfEmwt6i03FoaUGSu3fI65cD7wyWjcNmukEit7Owq9RCTf9c/s1600/default_wrkstat.png" height="41" width="320" /></a></div>
<a name='more'></a><br />
It is possible to <span class="short_text" id="result_box" lang="en"><span class="hps">achieve that by modifying settings via browser and </span></span>WrkStat.aspx file in filesystem, but it is not easy. May be in future we will know how to achieve that by modifying workflow definition (association).<br />
<br />
We will see below that CAML does not filter list items by hidden fields. And that is really frustrating. But we will find solution.<br />
<br />
Let's begin. First of all, you need to backup your WrkStat.aspx in layouts folder (15 hive). Then add imports:<br />
<br />
<%@ Import Namespace="System.Text" %><br />
<%@ Import Namespace="System.IO" %><br />
<br />
Then add this code at the beginning of PlaceHolderMain (see my <a href="http://sp2013workflows.blogspot.ru/2014/12/work-with-2013-workflow-instances.html">post about task list id</a>):</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <script runat="server">
<span style="color: blue;">public </span><span style="color: #2b91af;">Guid</span> GetTaskListId(<span style="color: #2b91af;">SPWeb</span> web, <span style="color: #2b91af;">Guid</span> ListId, <span style="color: blue;">int</span> ItemId, <span style="color: #2b91af;">Guid</span> workflowID)
{
<span style="color: #2b91af;">WorkflowServicesManager</span> workflowServiceManager = new WorkflowServicesManager(web);
<span style="color: blue;">var</span> workflowInstanceService = workflowServiceManager.GetWorkflowInstanceService();
<span style="color: #2b91af;">WorkflowInstance</span> workflowInstance = workflowInstanceService.EnumerateInstancesForListItem(ListId, ItemId)
.Cast<<span style="color: #2b91af;">WorkflowInstance</span>>().First(i => i.Id == workflowID);
<span style="color: blue;">var</span> wfSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService();
<span style="color: blue;">var</span> wfSubscription = wfSubscriptionService.GetSubscription(workflowInstance.WorkflowSubscriptionId);
<span style="color: blue;">return new</span> <span style="color: #2b91af;">Guid</span>(wfSubscription.PropertyDefinitions[<span style="color: #cc0000;">"TaskListId"</span>]);
}
<span style="color: blue;">public string</span> RenderControl(<span style="color: #2b91af;">Control</span> ctrl)
{
<span style="color: #2b91af;">StringBuilder</span> sb = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringBuilder</span>();
<span style="color: #2b91af;">StringWriter</span> tw = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringWriter</span>(sb);
<span style="color: #2b91af;">HtmlTextWriter</span> hw = <span style="color: blue;">new</span> <span style="color: #2b91af;">HtmlTextWriter</span>(tw);
ctrl.RenderControl(hw);
<span style="color: blue;">return</span> sb.ToString();
}
</script>
</code></pre>
And mark old <span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"> ListViewByQuery (</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">ID="idTasksView"</span>) with <span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">Visible="false".</span><br />
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"> </span><br />
Then add newListViewByQuery near old view:
</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <%
<span style="color: blue;">if</span> (List != <span style="color: blue;">null </span>&& ListItem != <span style="color: blue;">null</span>)
{
<span style="color: #2b91af;">ListViewByQuery</span> idTasksView2 = <span style="color: blue;">new </span><span style="color: #2b91af;">ListViewByQuery</span>();
<span style="color: blue;">string </span>strGuidWorkflow = <span style="color: blue;">base</span>.Request.QueryString[<span style="color: #cc0000;">"WorkflowInstanceName"</span>];
<span style="color: #2b91af;">Guid</span> wfID = <span style="color: blue;">new </span><span style="color: #2b91af;">Guid</span>(strGuidWorkflow);
<span style="color: #2b91af;">SPWeb</span> web = <span style="color: #2b91af;">SPContext</span>.Current.Web;
<span style="color: #2b91af;">Guid</span> TaskListId = GetTaskListId(web, List.ID, ListItem.ID, wfID);
idTasksView2.List = web.Lists.GetList(TaskListId, <span style="color: blue;">false</span>);
<span style="color: #2b91af;">SPQuery</span> query = <span style="color: blue;">new </span><span style="color: #2b91af;">SPQuery</span>(idTasksView2.List.DefaultView)
{
RowLimit = <span style="color: #2b91af;">Math</span>.Min(idTasksView2.List.DefaultView.RowLimit, <span style="color: blue;">base</span>.Site.WebApplication.MaxItemsPerThrottledOperation)
};
query.Query = <span style="color: #cc0000;">"<Where><Eq><FieldRef Name=\"WFInstanceID\"></FieldRef><Value Type=\"Guid\">" <span style="color: black;">+ strGuidWorkflow +</span> "</Value></Eq></Where><OrderBy Override='TRUE'><FieldRef Name='ID' /></OrderBy>"</span>;
query.ViewFields = <span style="color: #cc0000;">"<FieldRef Name=\"AssignedTo\" /><FieldRef Name=\"LinkTitle2\" /><FieldRef Name=\"Status\" /><FieldRef Name=\"WorkflowLink\" /><FieldRef Name=\"CustomTaskOutcome\" />"</span>;
idTasksView2.Query = query;
<span style="color: #2b91af;">Page</span>.Response.Write(RenderControl(idTasksView2));
}
%>
</code></pre>
Here in query you see that we filter by WFInstanceID field. This is field that not exists yet.<br />
We need to create it. But first we need to set unhidden to <span style="color: #cc0000;">"WF4InstanceId"</span> - built-in workflow instance ID field. Yes, because hidden fields are not being filtered by CAML. Damn!<br />
<br />
Also, replace CustomTaskOutcome <span class="short_text" id="result_box" lang="en"><span class="hps">above</span></span> in ViewFields to your custom task outcome field name.<br />
<br />
Well, now we've finished to edit WrkStat.aspx file and start to work with fields.<br />
<br />
Run this once to make <span style="color: #cc0000;">WF4InstanceId</span> field unhidden (in console app for example, or you can run PowerShell script below; taskList is your Task List SPList):<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <span style="color: blue;">private static void</span> SetCanToggleHidden(</code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">SPField</span></code> field, <span style="color: blue;">bool </span>can)
{
</code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">Type</span></code> type = field.GetType();
</code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">MethodInfo</span></code> mi = type.GetMethod(<span style="color: #cc0000;">"SetFieldBoolValue"</span>, </code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">BindingFlags</span></code>.NonPublic | </code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">BindingFlags</span></code>.Instance);
mi.Invoke(field, <span style="color: blue;">new object</span>[] { "CanToggleHidden", can });
}
...
</code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">Guid</span></code> fieldID = <span style="color: blue;">new </span></code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">Guid</span></code></code>(<span style="color: #cc0000;">"1f30d200-0d4e-4c8a-a7eb-2e49815bf2be"</span>); <span style="color: #38761d;">// </span></code><code style="color: black; word-wrap: normal;"><span style="color: #38761d;">WF4InstanceId field</span>
</code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af;">SPField</span></code></code> field = taskList.Fields[fieldID];
SetCanToggleHidden(field, <span style="color: blue;">true</span>);
field.Hidden = <span style="color: blue;">false</span>;
field.Update();
</code></pre>
PowerShell version:<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Add-PSSnapin Microsoft.Sharepoint.Powershell -ErrorAction SilentlyContinue
$web = Get-SPWeb <your_web>
$list = $web.Lists["<task_list_name>"]
$field = $list.Fields.GetFieldByInternalName("WF4InstanceId")
$mi = $field.GetType().GetMethod("SetFieldBoolValue",
[System.Reflection.BindingFlags]$([System.Reflection.BindingFlags]::NonPublic -bor
[System.Reflection.BindingFlags]::Instance))
$mi.Invoke($field, @("CanToggleHidden",$true))
$field.Hidden=$false
$field.Update()
</code></pre>
<br />
Then go to your task list settings and add a <b><span style="font-size: 15px;">Calculated</span></b> field <complete id="goog_1429658087">"</complete>WFInstanceID" with formula<br />
<div class="MsoNormal" style="text-align: center;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">=[Instance Id]</span></div>
<div class="MsoNormal" style="text-align: left;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"> </span></div>
Formula may depend on your language settings. For example, russian version:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq5EwFjphHZsF3zynh16wbRbVms52__o2p7yWk84WgDZ3eDXSYk_zFhYNxUyU8DidqF6I3d4CIJzz0ov1YpmRC_-gJf-4b-k6-iV7gdFbpV07ONfbaWZh-6YPuNnSqilNrUqiTgFhW6o0J/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq5EwFjphHZsF3zynh16wbRbVms52__o2p7yWk84WgDZ3eDXSYk_zFhYNxUyU8DidqF6I3d4CIJzz0ov1YpmRC_-gJf-4b-k6-iV7gdFbpV07ONfbaWZh-6YPuNnSqilNrUqiTgFhW6o0J/s1600/5.png" height="288" width="320" /></a></div>
<br />
So, now we have field that we need for filtering:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQxd5G5YabK2NXenQiipSKrbZaEjqHzyX903pca_hHoWz1V2ZPSlxPnBzBRSxEBRjJjSBIw3m0ejQAd_Yj20bh0JyXoz_9PhfFbNHNQYjrjA2eeSfwmghHQXTkpsXg27HDVtPMTuPeq8r9/s1600/task_list_view.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQxd5G5YabK2NXenQiipSKrbZaEjqHzyX903pca_hHoWz1V2ZPSlxPnBzBRSxEBRjJjSBIw3m0ejQAd_Yj20bh0JyXoz_9PhfFbNHNQYjrjA2eeSfwmghHQXTkpsXg27HDVtPMTuPeq8r9/s1600/task_list_view.png" height="101" width="320" /></a></div>
<br />
You may also make <span style="color: #cc0000;">WF4InstanceId</span> field hidden again if you want.<br />
<br />
Well, now open your new WrkStat.aspx page and see your custom field:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzgJ8sR7jJy3-AB3QRJzG4Eax7lH6aSyzMulGfvc6N1BQH9__Sz6Q3qu_6wy57ndCMD-MF-0vK_zXYEWBllfrl7Jj4HQU4PgIbVLBiOTAvT_k8jAVPmYOJ3JKLE9eFSfAxGex0W21Ptgad/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzgJ8sR7jJy3-AB3QRJzG4Eax7lH6aSyzMulGfvc6N1BQH9__Sz6Q3qu_6wy57ndCMD-MF-0vK_zXYEWBllfrl7Jj4HQU4PgIbVLBiOTAvT_k8jAVPmYOJ3JKLE9eFSfAxGex0W21Ptgad/s1600/6.png" height="34" width="320" /></a></div>
<br />
That's all, folks!<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com1tag:blogger.com,1999:blog-7541307918700988363.post-28913260441374915672014-12-12T01:41:00.000-08:002014-12-12T01:41:12.522-08:00Manage ListItem Permissions in SP Designer Workflows<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Hi!<br />
<br />
Today I'll show you how to manage List Item permissions in workflows developed in Sharepoint Designer 2013.<br />
<br />
If you try to do this, you'll not find that in standard actions. A little bit <span class="short_text" id="result_box" lang="en"><span class="hps">frustrating, isn't it? But don't </span></span><span class="short_text" id="result_box" lang="en"><span class="hps">be disappointed</span><span class="">! </span></span><br />
<a name='more'></a><br />
<span class="short_text" id="result_box" lang="en"><span class="">It may be possible in older 2010 workflows. So let's take a look.</span></span><br />
<br />
<span class="short_text" id="result_box" lang="en"><span class="">Create a 2010 workflow:</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHpA-mxe8h-F-NfE2a_rj4F76hyTALxfHZg2q5hFfvpdK4gdDdK3vj9PufLdBayrWlCrKPmVrLkxpTstpOwVCGbhARV6oj0ZpsXhyphenhyphenHc0Pi_FB1tt9AyixgsLn97k6mrEtFpUY3OQpGysJf/s1600/create_2010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHpA-mxe8h-F-NfE2a_rj4F76hyTALxfHZg2q5hFfvpdK4gdDdK3vj9PufLdBayrWlCrKPmVrLkxpTstpOwVCGbhARV6oj0ZpsXhyphenhyphenHc0Pi_FB1tt9AyixgsLn97k6mrEtFpUY3OQpGysJf/s1600/create_2010.png" height="213" width="320" /></a></div>
<br />
<span class="short_text" id="result_box" lang="en"><span class="">Permission actions are not available yet:</span></span><br />
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8avh-29amWPUP51btqoKqomsPZ32WXNlUajrLWjawAmO0aLs0GTax1fLMnnu0r_SxYD7gNfeh3iMUZDsFlVzalnn28wHPE5wzJsWY_Dt_8zFc0A8idSuSNGBb4gwEHvYnlqNruETRfgq/s1600/listactions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8avh-29amWPUP51btqoKqomsPZ32WXNlUajrLWjawAmO0aLs0GTax1fLMnnu0r_SxYD7gNfeh3iMUZDsFlVzalnn28wHPE5wzJsWY_Dt_8zFc0A8idSuSNGBb4gwEHvYnlqNruETRfgq/s1600/listactions.png" height="252" width="320" /></a></div>
<br />
<span class="short_text" id="result_box" lang="en"><span class=""> </span></span><span class="short_text" id="result_box" lang="en"><span class="">Add an impersonation step (</span></span><span class="short_text" id="result_box" lang="en"><span class=""><span class="short_text" id="result_box" lang="en"><span class="hps">otherwise, permission actions will not available</span></span>):</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOsZWFmgu8p6X6YxKRG6A-7I4KsR0CYBDU9hUwYi49Qb2Z96lGaaZTJqpyXLcq8fKWrhbULe7rZu3QNxHuIwWNg7P0tgRP6iYjl1_K4HoOwE1M-73LEyzf4Vhcq1zymgdqhu8Spa_KP9_P/s1600/workflow2010_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOsZWFmgu8p6X6YxKRG6A-7I4KsR0CYBDU9hUwYi49Qb2Z96lGaaZTJqpyXLcq8fKWrhbULe7rZu3QNxHuIwWNg7P0tgRP6iYjl1_K4HoOwE1M-73LEyzf4Vhcq1zymgdqhu8Spa_KP9_P/s1600/workflow2010_2.png" height="179" width="320" /></a></div>
<br />
<span class="short_text" id="result_box" lang="en"><span class="">Add permission actions in that </span></span><span class="short_text" id="result_box" lang="en"><span class=""><span class="short_text" id="result_box" lang="en"><span class="">impersonation step</span></span>:</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkUVzKxbGXSzHR-7wNaMosi942P7Us8FzHl83odmMeE-m__Rj2M3GT6pPidKZkppRyTh0s0wSucTQsEhiv48Sc2_4Sxeoh0ku54xJyY0UsLtG0DOVgrJzkpRrIO3Jl3cOTyJwpzjaqRt69/s1600/workflow2010_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkUVzKxbGXSzHR-7wNaMosi942P7Us8FzHl83odmMeE-m__Rj2M3GT6pPidKZkppRyTh0s0wSucTQsEhiv48Sc2_4Sxeoh0ku54xJyY0UsLtG0DOVgrJzkpRrIO3Jl3cOTyJwpzjaqRt69/s1600/workflow2010_4.png" height="255" width="320" /></a></div>
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<span class="short_text" id="result_box" lang="en"><span class="">For example, I have added "remove permissions" action for all users of Edit and Contribute types:</span></span><br />
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMNi4nBdmy-j69pspB6BB0rvleaAUM8I2imyFDqHRJl2fGr-yWERjN99kGVVyMKuPoo6PVB3smKtSNOSDL_-ogtzIo4VmuH3iOBH4AwtLCy1mjMQcy0zfo4rSzLHHcJgv8Vq5DLslb5yQz/s1600/remove_permissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMNi4nBdmy-j69pspB6BB0rvleaAUM8I2imyFDqHRJl2fGr-yWERjN99kGVVyMKuPoo6PVB3smKtSNOSDL_-ogtzIo4VmuH3iOBH4AwtLCy1mjMQcy0zfo4rSzLHHcJgv8Vq5DLslb5yQz/s1600/remove_permissions.png" height="182" width="320" /></a></div>
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<span class="short_text" id="result_box" lang="en"><span class="">All right. Legacy 2010 workflow is ready. Now we need to run this workflow in our 2013 workflow with no parameters</span></span><br />
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTH__mc4IEE836IbJFxFCzYH8zfuGMFLq-yqBN3awvrZt2vs5YhkXMmIyHeBtVvomP787G82NfH2j9o6KKEkApXiTzvhwUe18JxYrzx2fNlbHntE5vTYITIuWkxItoe3BS6CMVTOYFo_Bd/s1600/workflow2010_2013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTH__mc4IEE836IbJFxFCzYH8zfuGMFLq-yqBN3awvrZt2vs5YhkXMmIyHeBtVvomP787G82NfH2j9o6KKEkApXiTzvhwUe18JxYrzx2fNlbHntE5vTYITIuWkxItoe3BS6CMVTOYFo_Bd/s1600/workflow2010_2013.png" height="182" width="320" /></a></div>
<br />
<span class="short_text" id="result_box" lang="en"><span class="">to current List Item:</span></span><br />
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIjJJeHt45oe8P7TpoK3IkxZv98rXYIszrKGR_Ber1YpBrGwCZKfdrfSp3twh3QblDMWmg0L-nyFZaG73mKcHy4wkb8dcHyuRdDYr4S0Nbj0vYS53cXBDkAvzTJEJ22iZK3KVbNMRAbDhV/s1600/current_item.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIjJJeHt45oe8P7TpoK3IkxZv98rXYIszrKGR_Ber1YpBrGwCZKfdrfSp3twh3QblDMWmg0L-nyFZaG73mKcHy4wkb8dcHyuRdDYr4S0Nbj0vYS53cXBDkAvzTJEJ22iZK3KVbNMRAbDhV/s1600/current_item.png" height="90" width="320" /></a></div>
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span>
<span class="short_text" id="result_box" lang="en"><span class="">That's all! Make your 2013 workflows more powerful!</span></span><br />
<span class="short_text" id="result_box" lang="en"><span class=""><br /></span></span></div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-28669219995009859122014-12-11T07:36:00.000-08:002014-12-11T07:39:02.555-08:00Work with 2013 Workflow Instances Programmatically<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Hello everyone!<br />
<br />
Like in <a href="http://sp2013workflows.blogspot.ru/2013/08/start-sharepoint-2013-workflow.html">one of my previous posts</a> we had been studying to start workflows programmatically, today we shall work with it properties.<br />
<br />
<div class="MsoNormal">
If you would like to get<span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;"> WorkflowInstance</span> of your started or terminated workflow over the <span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;">SPListItem</span>, you need to use new 2013 workflow API, because the old 2010 workflow API will not work. Let's dive!</div>
<div class="MsoNormal">
</div>
<a name='more'></a><br />
<div class="MsoNormal">
</div>
<div class="MsoNormal">
This code <b><span style="font-size: 15px;">will not work</span></b> for 2013 workflows based on MS Workflow Manager:</div>
</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;">SPWorkflow</span> wf = <span style="color: blue;">new</span> <span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;">SPWorkflow</span>(<span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;">SPContext</span>.Current.Web, wfID); </code></pre>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"><span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;"> SPWorkflowCollection</span> wfs = item.Workflows;</code></pre>
</div>
because of new Workflow Manager API.<br />
<br />
<div class="MsoNormal">
<b><span style="font-size: 15px;">Instead of this</span></b>, you must call to instances through the <span style="color: #2b91af; font-family: Consolas; font-size: 9.5pt;">WorkflowServicesManager</span>. For example, you know parameters:</div>
<br />
<div style="text-align: center;">
<span style="font-family: Consolas; font-size: 9.5pt;"><span style="color: #2b91af;">SPWeb</span> web, <span style="color: #2b91af;">Guid</span> ListId, <span style="color: blue;">int</span> ItemId, <span style="color: #2b91af;">Guid</span> workflowID</span><br />
<br />
<div style="text-align: left;">
This "workflowID" is aka WorkflowInstanceName in WrkStat.aspx parameters - workflow instance view page. To get workflow instance do:</div>
</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"><span style="color: blue;">public static</span> <span style="color: #2b91af;">WorkflowInstance</span> GetItemWFInstance(<span style="font-family: Consolas; font-size: 9.5pt;"><span style="color: #2b91af;">SPWeb</span> web, <span style="color: #2b91af;">Guid</span> ListId, <span style="color: blue;">int</span> ItemId, <span style="color: #2b91af;">Guid</span> workflowID</span>)
{
<span style="color: #2b91af;">WorkflowServicesManager</span> workflowServiceManager = <span style="color: blue;">new</span> <span style="color: #2b91af;">WorkflowServicesManager</span>(web);
<span style="color: blue;">var</span> workflowInstanceService = workflowServiceManager.GetWorkflowInstanceService();
<span style="color: blue;">return</span> workflowInstanceService.EnumerateInstancesForListItem(ListId, ItemId)
.Cast<<span style="color: #2b91af;">WorkflowInstance</span>>().First(i => i.Id == workflowID);
}
</code></pre>
<br />
WorkflowInstance has properties, but it may be not enough for development purposes:<br />
<ul style="text-align: left;">
<li>ContextListId</li>
<li>CurrentItemUrl</li>
<li>InitiatorUserId</li>
<li>ItemGuid</li>
<li>ItemId</li>
<li>ParentContentTypeId</li>
<li>RetryCode</li>
<li>UniqueId </li>
</ul>
And that is all properties. Well, really not a lot.<br />
<br />
What about Task List ID for example? Let's try to find this one. <br />
<br />
We shall find an instance property - WorkflowSubscriptionId - and we'll find what we want by using subscription property definitions:<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"><span style="color: blue;">public static</span> <span style="color: #2b91af;">Guid</span> GetInstanceTaskListId(</code><code style="color: black; word-wrap: normal;"><span style="font-family: Consolas; font-size: 9.5pt;"><span style="color: #2b91af;">SPWeb</span> web</span></code><code style="color: black; word-wrap: normal;"><span style="font-family: Consolas; font-size: 9.5pt;">, </span></code><code style="color: black; word-wrap: normal;"><span style="font-family: Consolas; font-size: 9.5pt;"><span style="color: #2b91af;">WorkflowInstance</span> instance)
{
</span></code><code style="color: black; word-wrap: normal;"><span style="font-family: Consolas; font-size: 9.5pt;"><code style="color: black; word-wrap: normal;"><span style="color: blue;"><span style="font-family: Consolas;">var</span></span> <span style="font-family: Consolas;">m</span>anager = <span style="color: blue;">new</span> <span style="color: #2b91af;">WorkflowServicesManager</span>(web);</code>
<span style="color: blue;">var</span> subscriptionService = manager.GetWorkflowSubscriptionService();
<span style="color: blue;">var</span> subscription = subscriptionService.GetSubscription(instance.WorkflowSubscriptionId);
return <span style="color: blue;">new</span> <span style="color: #2b91af;">Guid</span>(subscription.PropertyDefinitions[<span style="color: #990000;">"TaskListId"</span>]);
}
</span></code></pre>
There you can find else 80 properties of workflow definition.<br />
<br />
Happy workflow developing! </div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-88358099362056344652014-06-27T06:53:00.000-07:002014-06-27T06:53:01.442-07:00Update Workflow Definition in Production Environment<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
When you develop workflows in your developing environment you simply re-deploy your SharePoint-project to dev-server, and Visual Studio deletes workflow definitions and associations:<br />
<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> 3> Deleted file 'http://portal-dev/wfsvc/de109848e7d84f2bb90713227d48d9fe/Workflow.xaml' from server.
3> Deleted file 'http://portal-dev/wfsvc/de109848e7d84f2bb90713227d48d9fe/WorkflowStartAssociation' from server.
</code></pre>
<br />
But when you have developed workflows and publish them to the production environment, you will meet an issue that workflows are not updating.<br />
<a name='more'></a><br />
<br />
To update workflow definition in production environment you need to edit workflow Elements.xml and edit<br />
<ul style="text-align: left;">
<li><File Url="Workflow.xaml" ...</li>
<li><File Url="WorkflowStartAssociation"...</li>
</ul>
Add the following attributes to these nodes:<br />
<ul style="text-align: left;">
<li>IgnoreIfAlreadyExists="FALSE"</li>
<li>ReplaceContent="TRUE"</li>
</ul>
</div>
<br />
Then update your wsp-solution in production environment and re-activate workflow features. That's all!</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com1tag:blogger.com,1999:blog-7541307918700988363.post-78626273693386744522014-06-01T22:32:00.000-07:002014-06-04T01:18:04.212-07:00Workflow Tasks Emails Disabling<div dir="ltr" style="text-align: left;" trbidi="on">
Hello!<br />
Assigning a task you may want to disable email sending to determine your own emails like in <a href="http://social.technet.microsoft.com/Forums/en-US/4531b159-9e9e-4b57-89ba-e0b1111cfe2a/singletask-activity-in-sharepoint-2013-workflow-send-assignemnt-email?forum=sharepointdevelopment">this thread</a>. But what will you see at the task activity properties?<br />
<br /><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBwQvSkgjvZJnq_zUeNL-iGhNm4X2f0miz3nqkog22PoJ0Pe7baf6mILzi2-HoJJrbJRgN2ye4QauigWjHmTu_oSiy_G0etjzJQmNJllkXCqKh0X8937yZ0IsVfUQbkycjP65BDxWjdy4u/s1600/286786.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBwQvSkgjvZJnq_zUeNL-iGhNm4X2f0miz3nqkog22PoJ0Pe7baf6mILzi2-HoJJrbJRgN2ye4QauigWjHmTu_oSiy_G0etjzJQmNJllkXCqKh0X8937yZ0IsVfUQbkycjP65BDxWjdy4u/s1600/286786.png" height="320" width="289" /></a></div>
<br />
<br />
<a name='more'></a><br />
Answer: nothing. Only <b>SendReminder</b><b><b>Email</b> </b>property which is not what you want.<br />
If you'll look at the announced <a href="http://download.microsoft.com/download/0/A/8/0A870358-D451-488E-BF54-9616292E19EC/Microsoft%20Office%20and%20SharePoint%202013%20Service%20Pack%201%20Changes.xlsx">Service Pack 1 issues</a> you will see the closed issue<br />
<ul style="text-align: left;">
<li>E-mails generated by workflow cannot be disabled for approvals in SharePoint workflows.</li>
</ul>
Yes, this is what you want. But I didn't find any changes in properties of a task after installing Service Pack 1. Maybe you did. If so, please send me email where you did that.<br />
<br />
I had to go to the SMTP server and configure a filter by subject. For example, I've set task email subject as "Don't Send" and configured email server not to send emails with this subject from address "portal@myhost.com".<br />
Sad but works.</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-42122785501925899672014-05-30T02:10:00.000-07:002014-05-30T02:10:12.822-07:00Code Activities Exceptions at Workflow Publishing<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
I encountered a problem when your old workflows, that already have been working, was caused exceptions on publishing. For example, <a href="http://social.msdn.microsoft.com/Forums/pt-BR/71f0dfbb-d04e-4e5d-9324-5b4d5b097396/error-when-publishing-wf-containing-custom-code-activity-to-workflow-manager-10?forum=wflmgr">this forum discussion</a>. You may spent many hours to make them work again. Let's dive!<br />
<a name='more'></a></div>
<div>
<div style="text-align: left;">
</div>
<h3 style="text-align: left;">
1. Cannot find activity in your clr-namespace: </h3>
</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Microsoft.Workflow.Client.ActivityValidationException:
Workflow XAML failed validation due to the following errors:
Cannot create unknown type
'{clr-namespace:My.Custom.Activities.Namespace;
assembly=My.Custom.Activities.Assembly}MyActivity'.
</code></pre>
<div>
<br /></div>
<div>
Possible server responses in this case:<br />
<ul style="text-align: left;">
<li>The remote server returned an error: (400) Bad Request.</li>
</ul>
To solve that you may do next:</div>
<div>
<ul style="text-align: left;">
</ul>
<ol>
<li>re-install DLL in GAC (with 'force' attribute), <a href="http://sp2013workflows.blogspot.ru/2014/01/code-activity-assembly-cache-updating.html">link</a>,</li>
<li>re-register workflow service application (with 'force' attribute), <a href="http://social.msdn.microsoft.com/Forums/en-US/71f0dfbb-d04e-4e5d-9324-5b4d5b097396/error-when-publishing-wf-containing-custom-code-activity-to-workflow-manager-10?forum=wflmgr">link</a>,</li>
<li><a href="http://msdn.microsoft.com/library/azure/jj193517%28v=azure.10%29.aspx#BKMK_DisableDefaultProtection">disable default custom code protection</a>,</li>
<li>re-add your custom code activities to the workflow pane from toolbox, rebuild project,</li>
<li>and then restart workflow manager service.</li>
</ol>
</div>
<div>
After that you may get another exception.</div>
<br />
<div>
<h3 style="text-align: left;">
2. Unknown type '{wf://workflow.windows.net...' </h3>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Microsoft.Workflow.Client.ActivityValidationException:
Workflow XAML failed validation due to the following errors:
Cannot create unknown type
'{wf://workflow.windows.net/default/ ... }MyActivity'.
</code></pre>
<div>
<br />
<div style="text-align: left;">
Possible server responces:</div>
<ul style="text-align: left;">
<li>The remote server returned an error: (400) Bad Request</li>
<li>The remote server returned an error: (404) Not found</li>
</ul>
</div>
</div>
<div>
In <a href="http://social.msdn.microsoft.com/Forums/pt-BR/71f0dfbb-d04e-4e5d-9324-5b4d5b097396/error-when-publishing-wf-containing-custom-code-activity-to-workflow-manager-10?forum=wflmgr">forum above</a> you may find a possible solution - add line to AssemblyInfo.cs of your project:</div>
<div style="text-align: left;">
<ul style="text-align: left;">
<li>[<span style="color: blue;">assembly</span>: System.Windows.Markup.XmlnsDefinition(<span style="color: red;">"wf://workflow.windows.net/$Current/$Activities"</span>, <span style="color: red;">"My.Custom.Activities.Namespace"</span>)]</li>
</ul>
</div>
<div>
But that may not help. You even may get project compiling fail.</div>
<div>
If you look at your .xaml file of workflow in XML editor, you'll see a line in a head for standard activities:</div>
<div>
<ul style="text-align: left;">
<li><span style="color: red;">xmlns:p1</span><span style="color: blue;">="wf://workflow.windows.net/$Activities" </span></li>
</ul>
And for your custom activities:</div>
<div>
<ul style="text-align: left;">
<li> <span style="color: red;">xmlns:p2</span><span style="color: blue;">="wf://workflow.windows.net/$Current/$Activities"</span></li>
</ul>
and your custom activities will have p2 prefix (in .xaml below).</div>
<div>
</div>
<div>
For solution just redefine this line:</div>
<div>
<ul style="text-align: left;">
<li><span style="color: red;">xmlns:p2<span style="color: blue;">=</span></span><span style="color: blue;">"clr-namespace:My.Custom.Activities.Namespace;assembly=My.Custom.Activities.Assembly"</span></li>
</ul>
(carefully fill namespace and assembly). And if there is any exception about clr-namespace - see solution on issue 1 in this article.<br />
<ul style="text-align: left;">
</ul>
</div>
<div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-6917957533125596672014-05-23T07:07:00.000-07:002014-05-23T08:32:16.347-07:00Cross-stage workflows for beginners. Part II. WorkflowDesigner in Visual Studio<div dir="ltr" style="text-align: left;" trbidi="on">
Hi everyone!<br />
As I wrote in <a href="http://sp2013workflows.blogspot.ru/2014/03/cross-stage-workflows-for-beginners.html">previous part</a>, we are studying to program cross-stage workflows. Today we'll look at how it implements by more powerful instrument - Visual Studio 2012. <br />
<a name='more'></a><br />
In Visual Studio there is a special mechanism for that purposes, which came from discrete mathematics - (finite)-state machine (<a href="https://en.wikipedia.org/wiki/Finite-state_machine">wikipedia</a>). A state machine is a "machine" that can take a finite number of states. And there is a one special state that determines the result of state machine work - final state. After modeling our business-logic states, representing these states as state-machine states, we can implement it in Visual Studio.<br />
<br />
Create a workflow item:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAz-5j8j_d_SFCxHSH2n1mJfq_X7x2hwNpZTKCJDqUiUCIjenc6eWHgc0YVlgEp1IALvKCOkqwiY_Pae2WYUp_jw6flxO6WAHY2_y58tXHotA8pmYdTtdmHRGjwrG9VVjrwOYO1W2fnx-2/s1600/add_workflow_vs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAz-5j8j_d_SFCxHSH2n1mJfq_X7x2hwNpZTKCJDqUiUCIjenc6eWHgc0YVlgEp1IALvKCOkqwiY_Pae2WYUp_jw6flxO6WAHY2_y58tXHotA8pmYdTtdmHRGjwrG9VVjrwOYO1W2fnx-2/s1600/add_workflow_vs.png" height="176" width="320" /></a></div>
<br />
<div style="text-align: center;">
</div>
<div style="text-align: center;">
</div>
<br />
And drag and drop <b>StateMachine </b>activity to the workflow pane (sequence):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNk66eyetaEGA_MYP5osk6c_PpItOwlOi5EYesWOBehcF6d3JHFN7RZCg8pa_vYyztjLdLcBA0D5nQwkOfUCC6kBqtusfXdlWmFn2dqQKR90Qsull4zzn5v6-R4Ue_Ue9zAkjdUhgreJeq/s1600/state_machine_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNk66eyetaEGA_MYP5osk6c_PpItOwlOi5EYesWOBehcF6d3JHFN7RZCg8pa_vYyztjLdLcBA0D5nQwkOfUCC6kBqtusfXdlWmFn2dqQKR90Qsull4zzn5v6-R4Ue_Ue9zAkjdUhgreJeq/s1600/state_machine_3.png" /></a></div>
<br />
Then drop one or more <b>State</b> activity to that. Double-click and you can define trigger actions before state-changing (Entry) and after it (Exit):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3dA6agWHctcJMNrQMJaZHbtEwxQusvGFNVwImsdAnmjUbg6PJaCy-ZAuV9ac9uARmHy8SJn11h2phfFHLqON7XC4kpxOC2jOKIq8r-FkBcpBgJL8FwicX_8VO4NgC1Wk-slQla3Xr_8sk/s1600/state.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3dA6agWHctcJMNrQMJaZHbtEwxQusvGFNVwImsdAnmjUbg6PJaCy-ZAuV9ac9uARmHy8SJn11h2phfFHLqON7XC4kpxOC2jOKIq8r-FkBcpBgJL8FwicX_8VO4NgC1Wk-slQla3Xr_8sk/s1600/state.png" height="320" width="212" /></a></div>
<br />
<br />
<div style="text-align: left;">
Transitions settings are similar:</div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo98ST1TA06v-BnkVQnbEszVI5pxgi9lODsCNSOMVZJ6QkcKlKprvx69WAYrUTGgU6gNMubaliJQjIS76B-cRXalUT_S2wa4Trvc2oDVNubXcWsVUFcSLlc4DmXXVFuU0_53abZEweAKKi/s1600/transition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo98ST1TA06v-BnkVQnbEszVI5pxgi9lODsCNSOMVZJ6QkcKlKprvx69WAYrUTGgU6gNMubaliJQjIS76B-cRXalUT_S2wa4Trvc2oDVNubXcWsVUFcSLlc4DmXXVFuU0_53abZEweAKKi/s1600/transition.png" height="320" width="270" /></a></div>
<br />
<br /></div>
<div style="text-align: left;">
And of course you must determine a final state and a transition to it to eliminate a possibility of endless loop.</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
As a result you will get something like this:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh94WMnkhDZpShDikNYyKtFB4WkD6ksSDQgatKyL5r-TKG2SCTGeXI25uOj25lLhHhL8E5oLXSASeuCNUgEFjbw29lGAIe5UhTGd1SWcMc6cy5RhCTK7oRCY0cknQalGR-jz96GZ-y0eCvp/s1600/state_machine_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh94WMnkhDZpShDikNYyKtFB4WkD6ksSDQgatKyL5r-TKG2SCTGeXI25uOj25lLhHhL8E5oLXSASeuCNUgEFjbw29lGAIe5UhTGd1SWcMc6cy5RhCTK7oRCY0cknQalGR-jz96GZ-y0eCvp/s1600/state_machine_2.png" height="640" width="619" /></a></div>
<div class="" style="clear: both; text-align: left;">
<a href="https://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>If you define a boolean variable and set it to different transitions, you may get an interest WorkflowTerminatedException: "The workflow instance exceeded the throttle of 10000 activities executed in a row and could not be unloaded because it was not persistable".</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6foJ8q45DYjvPrq6ZCUX7ynbguKN5EL_4m2aoDn2Kin6iU63u_p1dGFvl0QwEuo1LwszxmQbazNYrEP5KTNkwkEi49PxF6REOOzfEFePlJcQS5xZEVR7xZ6YKqHRD94Q8xDx-vB160apI/s1600/exception.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6foJ8q45DYjvPrq6ZCUX7ynbguKN5EL_4m2aoDn2Kin6iU63u_p1dGFvl0QwEuo1LwszxmQbazNYrEP5KTNkwkEi49PxF6REOOzfEFePlJcQS5xZEVR7xZ6YKqHRD94Q8xDx-vB160apI/s1600/exception.png" height="165" width="320" /></a></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
That's all, folks! </div>
<div style="text-align: center;">
</div>
</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-14944602589992847952014-03-12T07:25:00.001-07:002014-03-12T07:38:18.856-07:00Cross-stage workflows for beginners. Part I. SharePoint Designer<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Hello! <br />
One of the most <span class="short_text" id="result_box" lang="en"><span class="hps">important </span></span>things in SharePoint 2013 is cross-stage workflows. SharePoint 2010 has "sequential" chain-like workflows with plain passage in flow<complete id="goog_1610706182"></complete>. Sequential workflows pass through the flow from start point to end point with executing a defined set of activities. This is restricting your <span class="short_text" id="result_box" lang="en"><span class="hps">vision of any workflow in your organization. Let me show you how you can </span></span><span class="short_text" id="result_box" lang="en"><span class="hps">implement workflow with a complex business logic.</span></span><br />
<br />
<a name='more'></a>Workflows in SharePoint 2013 can be represented as shown in a schema:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzTlavgp_SQw6X5FK5ytb7YNaqWyK1Cl38_6XyWA_7d44gdQd9a5oki_Z26xuxgEf51ea9bWR5k49oHe2Q4gEPye05e6pZLg_r9X7IQkQBwetrKIRCKPkbkFIZtiwLgOY6Ph0yAzlUnTt4/s1600/state_machine_paint.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzTlavgp_SQw6X5FK5ytb7YNaqWyK1Cl38_6XyWA_7d44gdQd9a5oki_Z26xuxgEf51ea9bWR5k49oHe2Q4gEPye05e6pZLg_r9X7IQkQBwetrKIRCKPkbkFIZtiwLgOY6Ph0yAzlUnTt4/s1600/state_machine_paint.png" height="223" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cross-stage workflow</td></tr>
</tbody></table>
<br />
The flow can pass from one stage to another. As you see, flow passes from Stage 2 to Stage 3 if Condition 1 is satisfied, and from Stage 2 to Stage 4 if Condition 2 is satisfied.<br />
<br />
In SharePoint Designer you can develop workflows without any line of code. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37_UToP6TKwC1lAp8udB9xoRp_JLbRtVHu_oG-SkKx6Zeo9HO-qyaGtrbBd-KmOxi0ZjmiuwiNFeGI7nSouuGvwFr15emgr6guV1uxbuUGQxz7r_Ri3bBVF8FRUxn6d1EIxUwhyNFO8ie/s1600/wf_designer_en_1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37_UToP6TKwC1lAp8udB9xoRp_JLbRtVHu_oG-SkKx6Zeo9HO-qyaGtrbBd-KmOxi0ZjmiuwiNFeGI7nSouuGvwFr15emgr6guV1uxbuUGQxz7r_Ri3bBVF8FRUxn6d1EIxUwhyNFO8ie/s1600/wf_designer_en_1.png" height="331" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">SharePoint Designer 2013 workflow, text-mode example</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
In text mode you just add a stage, define it actions and set it transition to any stage. Stage with transition to workflow terminating must exist. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6xkIeRldqsHSVxwLD3aGHFdABWA5HVuAFVpM9MWhnGbwaL-e96yle4sSuUHBKhyphenhyphenJ30GlagGQxJVdCFNlaPuPQVwSqVGMWLkYcTZayIAtarnxyKWCJgSfWHygYU0FUrL5RD85Wue_rPzgR/s1600/wf_designer_en_2_1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6xkIeRldqsHSVxwLD3aGHFdABWA5HVuAFVpM9MWhnGbwaL-e96yle4sSuUHBKhyphenhyphenJ30GlagGQxJVdCFNlaPuPQVwSqVGMWLkYcTZayIAtarnxyKWCJgSfWHygYU0FUrL5RD85Wue_rPzgR/s1600/wf_designer_en_2_1.png" height="331" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Stage transition explanation</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
In transition gate you can define conditions and so determine stage to go:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij2c7Qm_iHI1UUjIE_g4usa2I5ic-U9VFUG52WJdfyUmbQ575ZkFhU7KBxZT3ydeQDTvekUg0XIS-3BMvU5USfk6sjoNqc4U46DnfwS2GENexn0tlylgghvlb5np5RAfNFKjjh0xznSLry/s1600/condition.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij2c7Qm_iHI1UUjIE_g4usa2I5ic-U9VFUG52WJdfyUmbQ575ZkFhU7KBxZT3ydeQDTvekUg0XIS-3BMvU5USfk6sjoNqc4U46DnfwS2GENexn0tlylgghvlb5np5RAfNFKjjh0xznSLry/s1600/condition.png" height="169" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gate with condition</td></tr>
</tbody></table>
<br />
And as a bonus, a Visio-like workflow view is available if you have Visio 2013 installed. So you can develop workflows in a graphical mode:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7CNB3VTnZrAHiH5NNEpc5C-wEj1Ks05rioSWGeHrXi9ldVwSl8Jm2P66GSDlw6bHuev6z1LubuegE8hjlmvtlEzDioutuirz5YzthMsAj_ihZTt4uffsEXDKkga9m6edN5cz6FQA0V5WM/s1600/wf_visio_view_2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7CNB3VTnZrAHiH5NNEpc5C-wEj1Ks05rioSWGeHrXi9ldVwSl8Jm2P66GSDlw6bHuev6z1LubuegE8hjlmvtlEzDioutuirz5YzthMsAj_ihZTt4uffsEXDKkga9m6edN5cz6FQA0V5WM/s1600/wf_visio_view_2.png" height="285" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Visio view</td></tr>
</tbody></table>
<br />
Happy workflow developing!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-71138619859608224802014-01-14T07:06:00.000-08:002014-01-29T22:55:27.466-08:00Code Activity Assembly Cache Updating<div dir="ltr" style="text-align: left;" trbidi="on">
How to develop code activities for the Workflow Manager you can for example <a href="http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/08/28/how-to-develop-a-workflow-code-activity-in-sharepoint-2013.aspx">read here</a>.<br />
When you have developed the second version of your activity you need to update activity DLL cache. O<span class="short_text" id="result_box" lang="en"><span class="hps">therwise, the old version will execute in your workflow. Let's see </span></span><span class="short_text" id="result_box" lang="en"><span class="hps">how</span> <span class="hps">to do it.</span></span><br />
<br />
<div style="text-align: center;">
<span class="short_text" id="result_box" lang="en"><span class="hps"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ0AAABCCAIAAADCCRRSAAAFJElEQVR4nO2dwZXjKhAANxI5FvtGCM5CUUwChOKn66TwbzpsIDr/g4RoUENjm9m111WHXT8Zt9E8SoBEm18LAFj8+tsVAHgD8ATABk8AbPAEwAZPAGzwBMDmGU9m707DMAzDcHJ+XpZlmayPTGMoWi90Gs1QshaFmOpblfIABR71ZPZONubZ+2nRPMmONHgye+fG0dWLNfn2RHmAhCZPhmFID8zeqVf8Dp7M3jk/r/+WS+EJ/FFsT9aRVXKopMn21jYYk73NetB5H9trOBi6pSkcdX6O/8sQIew0hq84jVNwIK3T5sX6n1perYP8FvMPAx+E4ckQSI4Wr/ZiZhGnAfHg7N0pHgwhptH5efMkRpbfcZxSyP4hvJ7GXZTwci+mlT/WQUQAkNQ8GQTJG6X+5HBNH6dMqtA0RbezX+aXoxxRr+zrSu1+65rGcF+h5smxDsJjAEnRkyElfbMgyn2e5E1/7Xnkl279UKsnx7mN6Yl+Eoy7IEP3ZDiQl5jGbAbit3GOHHeFq7s+7sqHUofJ9h6ibdy17PfK9nqZ4y6997DuIsDH8cTzEzFu2S7Q4mDSAqdxLabO4/dx1/GelLjix65ml0+Zl+e3q+NbevmsDqGe9zy+gY+A5/EANngCYIMnADZ4AmCDJwA2eAJggycANngCYIMnADZ4AmCDJwA2fTz5+vrqEkcgkqvqS93Jd4efp48nl8ultyrJavknRCDjFzrQzZPeqhRWzj8VB+BBenrSVZVyhkmef58mmfh9Df+cDN5EBoxYOT+NJzeOjoX0UKezJ/1UUcddpfz7mHd1yA0r+BaS8kupWgCS/p50UkXO48PFXs0rbv+xCC0pn1EZtPAjnvRQRWvBHTyp5NkDFOl5v+t6vV4ul+/v7x4h1RZcyr9v80RLyscTaKHn85Pb7Xa5XK7Xa4+QhRas5N/XPZGZ8UpSPp5AC52fx69dyu126xsW4O/S2ZOuXQrAq8D6LgAbPAGwwRMAGzwBsMETABs8AbDp6cnvQMeYAK9AH092Q87nM7bAv0c3T84peAL/Eo978vse7g9/XHlVWYulLvFSConVwmnJ1p0ZS6sz5cG4GWrz2jF7mZlYAdpAJVWanxN4iKc8ObfxIp4kMqRbMTZvoGV5ku1TtG0z9lhYwbZPWL2O7BX+gzzryX8WL+SJsGH2bvTexTX6jS2m7kllv/AHwkYO+04+EuTp8h/Ne3qipblXshdFPuTeoJ2fxf7AScqkkn8fcuiV+HEzvYomSlgtgnJqotq5KHK3++yXANZ6HvLa3Lr593rue3mvFYOEV/Yk2ftX5Jyoae5Krvwhk16kQG4fC58Wu0Bq+ffi+w7x4wiueMEvhtW2d81OTYbNtw0v55yF1+IKUEv/VIpBwit7UuhPamnuk3ppT0RYe4Wwj3AynjHyitP4sXb6l0bu2y48O7WDHNGtlr3CRZ8ZrxVqWltWDBLe1JNSE7E8mb1zfpITk9Ens5ZnPKnsSH+HJ8dTO6Wd6r5VeIsnx7mNPpdrmwJ9Lm/oSS3NvTTuSu9zpRnzYiZQz7/X4yd3zqYxm4H4qRJWHXelp5b/GfbPt427lv1emTxH7Z5H0y21z+U97wsX09zVuf6hoYkD+XOJWv59+nraf1DP5w3udHh+olZGjZCe2vGvIKyPXc1unpb3n92rjm9N8pcD7n1E82G87HNG+NMwg6/AuhVYluWeZ0gfCesgIZuzgQLr6gFsyNMCsMETABs8AbDBEwAbPAGwwRMAm/8BP4i7+CACQzAAAAAASUVORK5CYII=" /> </span></span></div>
<div style="text-align: left;">
<span class="short_text" id="result_box" lang="en"><span class="hps"></span></span></div>
<a name='more'></a><br />
<ol style="text-align: left;">
<li><span class="short_text" id="result_box" lang="en"><span class="hps">First of all, stop Workflow service:</span></span>
<br /><span class="short_text" id="result_box" lang="en"><span class="hps">
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> net stop "Workflow Manager Backend"
</code></pre>
</span></span></li>
<br />
<li><span class="short_text" id="result_box" lang="en"><span class="hps">Then, copy updated library file to </span></span>
Artifacts:<br /><span class="short_text" id="result_box" lang="en"><span class="hps">
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> copy <i><path\to\MyActivities.dll></i> "C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts\"
</code></pre>
</span></span></li>
<br />
<li><span class="short_text" id="result_box" lang="en"><span class="hps">And copy </span></span><span class="short_text" id="result_box" lang="en"><span class="hps"><span class="short_text" id="result_box" lang="en"><span class="hps">library </span></span> to </span></span>
WFWebRoot:<br /><span class="short_text" id="result_box" lang="en"><span class="hps">
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> copy <path to=""><i><path\to\MyActivities.dll></i> "C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin"
</path></code></pre>
</span></span></li>
<br />
<li>Open "Developer Command Prompt for VS2012" and force reinstall activity DLL in GAC:<br /><span class="short_text" id="result_box" lang="en"><span class="hps">
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">gacutil /i <i><path\to\MyActivities</i><path to=""><i>.dll></i> /f
</path></code></pre>
</span></span></li>
<br />
<li>Start Workflow service:<br /><span class="short_text" id="result_box" lang="en"><span class="hps">
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">net start "Workflow Manager Backend"<path to="">
</path></code></pre>
</span></span></li>
<br />
<li>Restart Visual Studio to refresh activity in toolbox<code style="color: black; word-wrap: normal;">. <path to=""></path></code></li>
</ol>
IIS reset <span class="short_text" id="result_box" lang="en"><span class="hps">is not required.</span></span><br />
<br />
Full batch (run in "Developer Command Prompt for VS2012"):<br />
<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> set MyDLL=<i><path\to\MyActivities.dll></i>
net stop "Workflow Manager Backend"
copy %MyDLL% "C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts\"
copy %MyDLL% "C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin"
gacutil /i %MyDLL% </code><code style="color: black; word-wrap: normal;"><code style="color: black; word-wrap: normal;">/f</code>
net start "Workflow Manager Backend"
</code></pre>
<br /></div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com1tag:blogger.com,1999:blog-7541307918700988363.post-3211433512606606502013-10-22T07:24:00.001-07:002013-10-22T07:34:13.570-07:00Build Collections for Composite Task<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a>For a Composite Task you need to define executors and set AssignedTo field. This field has a specific type <span style="color: #2aa2d4;">InArgument</span><<span style="color: #2aa2d4;">Collection</span><<span style="color: blue;">string</span>>>. So you need to build a collection of strings and specify it to Composite Task activity. Let's take a look.<br />
<br />
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /> </div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
</div>
<a name='more'></a><div style="text-align: left;">
You can see the AssignedTo parameter:</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /></div>
<div style="text-align: center;">
</div>
<br />
For setting it you should take BuildCollection activity and choose a string type:<br />
<br />
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /> </div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Then create a workflow variable of <span style="color: #2aa2d4;">InArgument</span><<span style="color: #2aa2d4;">Collection</span><<span style="color: blue;">string</span>>> type called Executors</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
and set it Values as shown:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,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" /> </div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
where values has claims-like view "i:0#.w|DOMAINNAME\\user". Then set a CompositeTask AssignedTo field to Executors.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Similar to that, you can grow a Dictionary by BuildDictionary activity. </div>
<div style="text-align: left;">
<a href="http://www.blogger.com/blogger.g?blogID=7541307918700988363" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>For the <<span style="color: #2aa2d4;">Dictionary</span><<span style="color: blue;">string, string</span>> case note that keys set as text, but values are need to be directly set as C# strings:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFACAIAAADrqjgsAAAWlklEQVR4nO3d/2sc9b7H8Z22+JN/gRw4P/h7PVhRNiCXWqnmgtiCtFhrT889opDZeo5UQYINPTRQwR8KpaNJPQnBQvCHHoNtj3Sk2kDJ4WL0FvxCesZNmoSmRmtjk9yfxDt7f/jMzH5mdna7u9mdfW8/zwcvuNvNfus9n7z62ffMurmH/rCNEEKIwOQe+sO2l6d/IoQQ4dm2rfVltb/nsSv7dknI/p7HEq+NgiaEdE0oaEIIERoKmhBChIaCJoQQoaGgCSFEaOos6JzmrjemoAkhpAWpp6BzFWrfvumCjh6/xjUUNCHElNRf0JWXq2UjO2i9kTfYzhQ0IaS70+gMut0FrffyBtuZgiZdkOcOb9m0efC5+JX7T+7etHl378Uq97r44YObt/SMd/7Fk3anoYJu94ijVZMNCpp0T8YHNyXb9tvenVs27fxwf7W7UNDGpP6CzvIgIQVNzMlkz+Ytmw5Plq+5+OGDm7c8ePLbqnehoI1JowVdzy0ZcRDSQBJTjth84+KHD27esilI7EpV0M8dju2143+c7Cnft/z4zx2ueEAiNdLOg+YgITEvsSlHbL6x/+TucCutXV9XQesb8/J995/cHZX1c4cpaOkRtYPmNDtiZrQyrT7fKHdrHQWtF/HL0+rfgN29F5O3J8IjqqBbHgqadEeiKUfl+Rv7T+7elJhU1FHQ2hwjPtAIZyaMsLsi0kYcFDQxMsGU49venfoBw297d5bHxw3toGvvlMPST57eR6SFgiZEQiZ7Nm/ZtHN37PSM+Nka5WOJiYIu92xi1lx7xDzZU/tcESIgFDQhIhIOJfRdbXI2XVnQsQOM44ObNscOJJY30eOD6nHKBwY5V68bQkETIiOqXvUTomMD6N09h1NGHC/Hxs2DPfpkI+0UPX02zfZZfihoQggRmm1tsL/nMTlJ/H0paEIIERoKmhBChIaCJoQQoaGgCSFEaChoQggRGgqaEEKEhoImhBChoaAJIURoqhb0a5/9+62J/yaEEJJBXvvs3w0U9MvTP90BAGSisR00BQ0AmaGgAUAoChoAhKKgAUAoChoAhKKgAUAoChqAif5x7p+ikvoiKWgAJvrHuX/+b91Uh7b19qkvkoIGYCJVoKurq+qP6+vrTRTu6urq6upqnbdfW1tTz7W2tkZBA0BVqkBnZmbefffd8fHx5eXlRPMuLy//8MMPt27dqla4d+7cWVhYWFhYuHPnTj0FffPmzffff//06dOJ56KgASBGFeilS5eefPLJ3t7e8fHxn3/+WdXlysrKtWvX3nnnnXPnzt2+fTu1cNfW1hYWFoaHh4eHhxcWFhKb4sTtf/zxR1XQL7zwwr59+1RBqyspaABIUgX69ddf27a9Y8eOXbt2Xbp0aWVlZX5+/qOPPvrzn//rgw8+UO1cWbirq6tzc3Ojo6O9vb29vb0jIyNzc3P6rCNx+7m5uRs3biwtLamCvnnz5o0bN+bm5ihoAEgRzaC/+uqrt95664knnrDtvo8//nhgYKCvr++TTz5ZWVmpVriLi4ujo6O7du3avn379u3bn3322dHR0cXFxRoFfeHChWKxqAp6dnb2woULFDQApIsKdHV1tVgsDg8PP/30088888yfDh6cmpr65Zdfaows5ubment7n3/+ebWDVhcShZu4/Z49e86dO6cK+vz583v27KGgASCdKtD19fWffvppenr6zTfffOqpnTt37uzr6/vmm29qz5TrKdxGCz31RVLQAEykCnR2dva9997bu3fvjh07+vr6Rkb+/sorr7z++uvfffed3tGVhXv+/Hl9ZHH+/PkaBV05EhkZGUmMRFJfJAUNwESqQD/77LOnnnpq+/btfX19V69evX379tWrV48ePfrqq68Wi8Xo5OjKgl5aWorOylhaWlpaWqpR0Gtra9evX9cPKl6/fj1xUDH1RVLQAEykCvSLL7744x8PvPHGG57nqcZcX19fWFgYGho6evTo4uKi6ugmTpurcVre4uJi5Qgl9UVS0ABMpAp0ZWVleXl5eXlZ/yTh+vr6rVu3vv/++5s3b6omrfbBk9OnT1f74EmND7ZUfviQggaAso3/tzVqf3Q79fHX1taqfTQ89UVS0ABMxH8sCQCE6vh/XzSR1BfZmoKemVkkhBDSdNpb0HPXFwghhDSRthd0CQDQOAoaAISioAFAKAoaAISioAFAKAoaAISioAFAKAoaAITqQEH7vufk847nh5cty3abeOmek1d39F07l8vlcjnLsl3fr+cudfJd28o7Xs3HxD3GtS3bLf8vri/XBPWD5p7Fj9aW7zl5Sy3g2o8W3aXup1DrndXbxTpc0GrFNfG6fV/9HkWL0C+VSr7nOK5f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" /></div>
</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com4tag:blogger.com,1999:blog-7541307918700988363.post-46853755666194832892013-08-06T00:14:00.000-07:002013-08-16T00:25:07.798-07:00Start SharePoint 2013 Workflow Programmatically<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
If you want to start workflow from server-side code, you need to use <i>Microsoft.SharePoint.WorkflowServicesBase</i> DLL.<br />
If you don't see it in reference search, you can find it in GAC <span class="st">—</span> C:\Windows\Assembly <span class="st">—</span> with standard windows explorer search (of course if you have installed Workflow Manager).<br />
And then to start a workflow:<br />
<br /></div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> protected void StartWorkflow(SPWeb web, Guid workflowID, int itemID)
{
var wfsrvmng = new Microsoft.SharePoint.WorkflowServices.WorkflowServicesManager(web);
var wfsubsrv = wfsrvmng.GetWorkflowSubscriptionService();
var wfsub = wfsubsrv.GetSubscription(workflowID);
var wfi = wfsrvmng.GetWorkflowInstanceService();
wfi.StartWorkflowOnListItem(wfsub, itemID, new Dictionary<string, object>());
}
</code></pre>
<br />
where workflowID you can find in the workflow Elements.xml<br />
<br /></div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <Property Name="<span style="color: blue;">WSGUID</span>" Value="..." />
</code></pre>
</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-81482940831980558232013-07-31T07:26:00.000-07:002013-07-31T07:26:04.936-07:00Update Lookup Field in the List Item in Visual Studio Workflow <div dir="ltr" style="text-align: left;" trbidi="on">
When you want to update lookup column in your list item, you need to use UpdateListItem activity especially.<br />
For example, your column has static name <i>"MyColumn"</i>. Then you need to set path "<i>MyColumnId"</i> to id of the lookup value item (your <span style="color: blue;">Int32</span> variable):<br />
<br />
<img alt="" src="data:image/png;base64,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" /></div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com0tag:blogger.com,1999:blog-7541307918700988363.post-88003222347506227082013-07-28T12:05:00.001-07:002013-10-28T22:53:22.112-07:00Lookup Activities in Visual Studio 2012<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
When you develop a workflow in VS 2012 you probably want to work with other lists of your SPWeb, not only the current list either the task list. But you may get this error: <br />
<br /></div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> System.FormatException: Expected hex 0x in "{0}".
</code></pre>
</div>
<br />
Problem is that substitution "<i>$ListId:Lists/MyList</i>" doesn't work in flow scope. <br />
<br />
<a name='more'></a><br />
<span style="font-size: large;">Solution:</span><br />
<span style="font-size: large;"><span style="font-size: small;"> </span></span><br />
<span style="font-size: large;">
</span><br />
For the Task list of your current workflow you can use the GetTaskListId activity from "SP - Current Context" group and save <i>task_list_id</i> to the GUID variable. But if you want to get data from other lists of the web (for example
to get data from lookup fields and other lists), issue gets more complicated. Here is a solution.<br />
Add a property to the Elements.xml file of your Workflow like this:<br />
<div class="msg">
</div>
<div class="msg">
<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSvvQ13KFP-QoIaIgkIzmkPNbebv5Vhn-3TNYKryUsbRhSMaa9wo4dgcG_rNhPbaOkaT7YWpWysqp1FKLmkRCFc1t2Hvh4Q7ASNodPoJw5ylq-PVjtU4mrsdiyr3mtZhjmOa4KcFYLTKlC/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <File Url="Workflow.xaml" Type="GhostableInLibrary" Path="ContractorSecurityCheckWorkflow\Workflow.xaml" DoGUIDFixUp="TRUE">
...
<Property Name="MyListId" Value="{$ListId:Lists/MyList;}" />
</File>
<File Url="WorkflowStartAssociation" Path="Workflow\WorkflowStartAssociation" Type="GhostableInLibrary">
...
<Property Name="MyListId" Value="{$ListId:Lists/MyList;}" />
</File>
</code></pre>
<br />
and use GetConfigurationValue activity from Runtime group to save MyListId property to the string variable <i>list_id</i>. Then just use System.Guid.Parse(<i>list_id</i>).</div>
</div>
Anonymoushttp://www.blogger.com/profile/17241911001644789457noreply@blogger.com6