На самом деле, для того, чтобы запустить любой рабочий процесс из кода, надо сделать две простые вещи:
во-первых, подключить пространство имен Microsoft.SharePoint.Workflow,
а во-вторых использовать метод SPWorkflowManager.StartWorkflow. Существует несколько перегрузок этого метода, удобных в разных специфических ситуациях (например, если вам нужно только создать объект рабочего процесса, а запустить его на выполнение позднее), самый же простой и функциональный вариант - вот этот:
public SPWorkflow StartWorkflow( SPListItem item, SPWorkflowAssociation association, string eventData, bool isAutoStart )Вместо объяснения что значат все эти параметры и как из использовать (см. MSDN ;)) я предлагаю вам взглянуть на вот такую небольшую функцию, которую я написал для запуска рабочих процессов. В комментариях небольшие пояснения, а так, в общем-то, функция вполне self-explaining.
public SPWorkflow RunWorkflow(string workflowName, string listName, int itemId, string activationData = "<root/>") { using (SPSite site = new SPSite(siteUrl)) { using (SPWeb web = site.OpenWeb()) { //получаем элемент списка для которого нужно выполнить рабочий процесс SPList itemsList = web.Lists.TryGetList(listName); SPListItem item = itemsList.GetItemById(itemId); //создаем объект ассоциации шаблона рабочего процесса SPWorkflowAssociation workflowAssociation = web.WorkflowAssociations.GetAssociationByName(workflowName, System.Globalization.CultureInfo.InvariantCulture); if (workflowAssociation != null) { //ну и, собственно, запускаем рабочий процесс. StartWorkflow возвращает ссылку на экземпляр рабочего процесса //через которую можно с ним в дальнейшем взаимодействовать, например, проверять состояние. return site.WorkflowManager.StartWorkflow(item, workflowAssociation, activationData, true); } else return null; } } }
Комментариев нет:
Отправить комментарий