You can start a workflow programmatically with the code from here
private SPWorkflowAssociation GetWorkflowAssociationByName(SPListItem item, string workflowAssociationName)
{
return item.ContentType.WorkflowAssociations.GetAssociationByName(workflowAssociationName, new System.Globalization.CultureInfo("en-US"));
}
public void StartWorkflow(SPListItem item, string associationName)
{
try
{
//get workflow association object
workflowAssociation = GetWorkflowAssociationByName(item, associationName);
if (workflowAssociation == null)
throw new Exception(string.Format ("Workflow association '{0}' could not be found in the list '{1}'", workflowAssociationName, item.ParentList.Title));
//start your workflow...
item.Web.Site.WorkflowManager.StartWorkflow(item, workflowAssociation, workflowAssociation.AssociationData);
}
catch (SPException spEx)
{ //log your exception }
}
//that kicks off a associated workflow.
StartWorkflow(anInstanceOfSPListItem, "Masood - Approval workflow")