Programmatically starting a workflow requires the following code:
Guid wfBaseId = new Guid("{6BE0ED92-BB12-4F8F-9687-E12DC927E4AD}");
SPSite site = ...;
SPWeb web = site.OpenWeb();
SPList list = web.Lists["listname"];
SPListItem item = list.Items[0];
SPWorkflowAssociation associationTemplate= list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
site.WorkflowManager.StartWorkflow(item, associationTemplate, "");
The workflow base ID can be found in the workflow.xml in the corresponding feature folder.
If you have a SharePoint Designer 2007 workflow it can be obtained by opening the workflow.xoml.wfconfig.xml file in a text editor:
If you don't have initiation data don't pass null or an empty string to the StartWorkflow method or the workflow will fail ! Instead use a single empty XML node (see sample code above).