public static SPListItem WorkflowTaskItemBasedOnListItem(SPWeb web, string listName, string workflowTaskListName, int itemId)
{
SPListItem workflowItem = null;
SPList workflowTasks = web.Lists[workflowTaskListName];
SPList mainList = web.Lists[listName];
SPListItem listItem = mainList.GetItemById(Convert.ToInt32(itemId));
SPWorkflowFilter filter = new SPWorkflowFilter();
filter.InclusiveFilterStates = SPWorkflowState.Running;
// Get a list of workflow tasks associated with current Item
SPWorkflowTaskCollection workTaskColl = web.Site.WorkflowManager.GetItemTasks(listItem, filter);
foreach (SPWorkflowTask task in workTaskColl)
{
if (task != null)
{
workflowItem = workflowTasks.GetItemById(task.ID);
break;
}
}
return workflowItem;
}
This function returns a workflow item based on Parent List item Id. It reads the List Item and finds the associated workflow which are still running against this list item.
9 comments:
Any thoughts on how to go the other direction? i.e. I have the Task item, how do I get it's associated parent List Item?
Check this
http://sansanwal.blogspot.com/2009/08/function-to-read-list-item-id-based-on.html
wow much thanks for help, Sanjay!
Andrey Myasnikov
w e b [@] t e g o l a . r u
Will i able to get Attachment file associated to Task , i need to copy this to new task again...
Once you have got an item, you could easily get its attachment, check the sample code-
public static DataTable GetAttachments(string listName, string itemNo)
{
DataTable tb = new DataTable();
using (SPWeb oWeb = WEB_OBJECT)
{
oWeb.AllowUnsafeUpdates = true;
tb.Columns.Add("Name");
tb.Columns.Add("Url");
tb.Columns.Add("SizeKB");
SPFolder folder = null;
try
{
folder = oWeb.Folders[listName];
}
catch
{
folder = oWeb.Folders["Lists"].SubFolders[listName];
}
try
{
folder = folder.SubFolders["Attachments"].SubFolders[itemNo];
foreach (SPFile file in folder.Files)
{
DataRow row = tb.Rows.Add();
row["Name"] = file.Name;
row["Url"] = oWeb.Url + "/" + file.Url;
row["SizeKB"] = ((file.Length / 1024) + 1).ToString() + " KB";
}
}
catch
{
}
oWeb.AllowUnsafeUpdates = false;
}
return tb;
}
Any idea how to retrieve completed workflow related tasks?
Any idea how to retrieve tasks for completed workflows?
I need to get all runnig tasks and iterate through them to set the outcome to "NotRequired". Any idea?
Thanks..... It worked....
Post a Comment