Hi,
Few days back someone requested me to write a tool that will cleanup completed workflow instances from a list. Hence I have developed this tool, it takes site url and list name as input and then it spans through all items in the list and clears up all completed workflow instances.This works for sharepoint 2007 as well as sharepoint 2010 The code is as below:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;
namespace CompletedWorkflowCleanUp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the site url");
String siteUrl = Console.ReadLine();
Console.WriteLine("Please enter the list title");
String listName = Console.ReadLine();
using (SPSite site = new SPSite(siteUrl))
{
SPWorkflowManager workflowManager = site.WorkflowManager;
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[listName];
SPListItemCollection listItems = list.Items;
foreach (SPListItem listItem in listItems)
{
SPWorkflowCollection wCollection = listItem.Workflows;
for (int i = 0; i < wCollection.Count; i++)
{
if (wCollection[i].IsCompleted)
{
workflowManager.RemoveWorkflowFromListItem(wCollection[i]);
listItem.Update();
}
}
}
Console.WriteLine("Completed workflow instances are deleted for the list" +list);
Console.ReadLine();
}
}
}
}
}
I hope this will help you out.
Thanks,
Rahul Rashu
Few days back someone requested me to write a tool that will cleanup completed workflow instances from a list. Hence I have developed this tool, it takes site url and list name as input and then it spans through all items in the list and clears up all completed workflow instances.This works for sharepoint 2007 as well as sharepoint 2010 The code is as below:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;
namespace CompletedWorkflowCleanUp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the site url");
String siteUrl = Console.ReadLine();
Console.WriteLine("Please enter the list title");
String listName = Console.ReadLine();
using (SPSite site = new SPSite(siteUrl))
{
SPWorkflowManager workflowManager = site.WorkflowManager;
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[listName];
SPListItemCollection listItems = list.Items;
foreach (SPListItem listItem in listItems)
{
SPWorkflowCollection wCollection = listItem.Workflows;
for (int i = 0; i < wCollection.Count; i++)
{
if (wCollection[i].IsCompleted)
{
workflowManager.RemoveWorkflowFromListItem(wCollection[i]);
listItem.Update();
}
}
}
Console.WriteLine("Completed workflow instances are deleted for the list" +list);
Console.ReadLine();
}
}
}
}
}
I hope this will help you out.
Thanks,
Rahul Rashu
No comments:
Post a Comment