Ваше пользовательское действие должно вызвать javascript function
или выполнить GET request
для вашего хоста SharePoint WCF
или ASMX
WebService.
Официальное руководство по MSDN: создание пользовательской веб-службы ASP.NET
Для получения дополнительных ресурсов с большим количеством скриншотов проверьте это сообщение в блоге: Пошаговое руководство. Создание настраиваемой веб-службы ASP.NET (ASMX) в SharePoint 2010
Официальное руководство Technet: SharePoint 2013: создание пользовательской службы REST WCF, размещенной в SharePoint и развернутой в WSP
Примечание : с GET request
вам потребуется web.AllowUnsafeUpdate = true
С javascript вам нужно AJAX
позвонить, т.е. jQuery.ajax ()
/ редактировать
Чтобы подключить веб-службу и ваше настраиваемое действие, используйте SharePoint Desinger, удалите или измените существующее настраиваемое действие, измените тип на Navigate to URL
и введите в текстовом поле:
javascript: (function() { console.log('Testing...' + {ItemId}); /* your web service call */ })();
Используйте псевдоним {ItemId}
для передачи правильного идентификатора элемента вашему вызову AJAX.
С другой стороны, на стороне веб-службы используйте класс SPWorkflowManager
, чтобы запустить рабочий процесс для элемента. Проверьте код ниже ( ссылка ):
public void StartWorkflow(SPListItem listItem, SPSite spSite, string wfName) {
SPList parentList = listItem.ParentList;
SPWorkflowAssociationCollection associationCollection = parentList.WorkflowAssociations;
foreach (SPWorkflowAssociation association in associationCollection) {
if (association.Name == wfName){
association.AutoStartChange = true;
association.AutoStartCreate = false;
association.AssociationData = string.Empty;
spSite.WorkflowManager.StartWorkflow(listItem, association, association.AssociationData);
}
}
}