none
Как запустить рабочий процесс к скопированному элементу списка? RRS feed

  • Вопрос

  • Собственно в этом посте я выяснил как копировать элемент списка в текущий список при помощи эвентресирвера. Но вот очередной вопрос: как к скопированным элементам списка запускать рабочий процесс? В рабочем процессе установлены асе три параметра: при создании, изменении и вручную. Но при выполнении эвент ресирвера, к скопированным элементам рабочий процесс не применяется! Почему? Что делать?
    27 июля 2011 г. 10:02

Ответы

  • Вот пример рабочего кода, использующего метод SPWorkflowManager.StartWorkflow:

                                var workflowManager = elevatedSite.WorkflowManager;
                                string workflowName = SettingsAccessor.GetSettingValue(SettingsKeys.WORKFLOW_NAME);
                                SPWorkflowAssociation workflowAssociation = null;
                                foreach(SPWorkflowAssociation association in requestsLibrary.WorkflowAssociations)
                                    if (association.Name.Equals(workflowName, StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        workflowAssociation = association;
                                        break;
                                    }
                                if(workflowAssociation != null)
                                    workflowManager.StartWorkflow(requestFileItem, workflowAssociation, workflowAssociation.AssociationData);


    Ivan Gorbadey. Sharepoint 2010 MCPD & MCITP.
    • Помечено в качестве ответа Aleksandr Shramko 27 июля 2011 г. 13:52
    27 июля 2011 г. 10:12
  • Спасибо, но заработало только вот так:

                       SPListItem _newItem = CopyItem2(_currentItem, "Поручения", assignees[j].ToString());
                       SPSite site = new SPSite("http://sharepoint:4000/");
                       SPWorkflowAssociation workflowAssociation = null;
                       foreach (SPWorkflowAssociation association in _currentItem.Web.Lists["Поручения"].WorkflowAssociations)
                           if (association.Name.Equals("Workflow1", StringComparison.CurrentCultureIgnoreCase))
                           {
                               workflowAssociation = association;
                               break;
                           }
                       if (workflowAssociation != null) site.WorkflowManager.StartWorkflow(_newItem, workflowAssociation, workflowAssociation.AssociationData);

    • Помечено в качестве ответа Aleksandr Shramko 27 июля 2011 г. 13:52
    27 июля 2011 г. 13:51

Все ответы

  • Вот пример рабочего кода, использующего метод SPWorkflowManager.StartWorkflow:

                                var workflowManager = elevatedSite.WorkflowManager;
                                string workflowName = SettingsAccessor.GetSettingValue(SettingsKeys.WORKFLOW_NAME);
                                SPWorkflowAssociation workflowAssociation = null;
                                foreach(SPWorkflowAssociation association in requestsLibrary.WorkflowAssociations)
                                    if (association.Name.Equals(workflowName, StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        workflowAssociation = association;
                                        break;
                                    }
                                if(workflowAssociation != null)
                                    workflowManager.StartWorkflow(requestFileItem, workflowAssociation, workflowAssociation.AssociationData);


    Ivan Gorbadey. Sharepoint 2010 MCPD & MCITP.
    • Помечено в качестве ответа Aleksandr Shramko 27 июля 2011 г. 13:52
    27 июля 2011 г. 10:12
  • А других вариантов нет?
    27 июля 2011 г. 11:45
  • Через серверную объектную модель это единственный способ.
    Ivan Gorbadey. Sharepoint 2010 MCPD & MCITP.
    27 июля 2011 г. 12:40
  • Спасибо, но заработало только вот так:

                       SPListItem _newItem = CopyItem2(_currentItem, "Поручения", assignees[j].ToString());
                       SPSite site = new SPSite("http://sharepoint:4000/");
                       SPWorkflowAssociation workflowAssociation = null;
                       foreach (SPWorkflowAssociation association in _currentItem.Web.Lists["Поручения"].WorkflowAssociations)
                           if (association.Name.Equals("Workflow1", StringComparison.CurrentCultureIgnoreCase))
                           {
                               workflowAssociation = association;
                               break;
                           }
                       if (workflowAssociation != null) site.WorkflowManager.StartWorkflow(_newItem, workflowAssociation, workflowAssociation.AssociationData);

    • Помечено в качестве ответа Aleksandr Shramko 27 июля 2011 г. 13:52
    27 июля 2011 г. 13:51