This code snippet discusses how to manually start a workflow in Sharepoint from your code.
SPWorkflowManager.StartWorkflow method is used to start a workflow dynamically from your code.
The following code creates a SPListItem instance and passes it as a parameter in the StartWorkflow method.
SPListItem currentItem = //Your Item To start the workflow on it;
currentItem.Web.AllowUnsafeUpdates = true;
SPWorkflowManager wfManager = currentItem.Web.Site.WorkflowManager;
SPWorkflowAssociationCollection wfAssociation=
currentItem.ParentList.WorkflowAssociations;
foreach (SPWorkflowAssociation Association in wfAssociation)
{
if (Association.Name == "WorkflowName")
{
wfManager.StartWorkflow(currentItem, Association,Association.AssociationData);break;
}
}
Try this.
One more thing you want to keep in mind that you cannot start a workflow from another workflow. You must postback to start the workflow or you can simply create a button on an ASP.NET page and call this code on the button click event handler.