Поделиться через


Рабочие процессы, действия, события и формы в модели надстроек SharePoint

Сводка

Подход, который вы используете для реализации рабочих процессов и связанных с ними компонентов, в новой модели надстроек SharePoint отличается от подхода к коду полного доверия. В типичном сценарии с кодом полного доверия (FTC) или решением фермы рабочие процессы и связанные с ними компоненты были созданы с помощью кода на стороне сервера и развернуты через решения SharePoint. Рабочие процессы и связанные с ними компоненты выполнялись на сервере SharePoint.

В сценарии модели надстройки SharePoint рабочие процессы и связанные с ними компоненты разрабатываются с помощью кода, который выполняется на удаленных серверах. Рабочие процессы и связанные с ними компоненты регистрируются в службе рабочих процессов, но весь код выполняется на удаленных серверах.

Руководящие принципы высокого уровня

Как правило, мы хотели бы предоставить следующие высокоуровневые рекомендации по созданию рабочих процессов и связанных с ними компонентов в новой модели надстройки SharePoint.

  • Рабочие процессы программной части недоступны в Office 365 клиентах или в модели надстройки SharePoint в целом.
  • Весь код, связанный с рабочими процессами и связанными с ними компонентами, должен размещаться во внешней веб-службе, работающей на удаленном сервере.

Параметры для создания пользовательских рабочих процессов и связанных с ними компонентов

У вас есть несколько вариантов создания пользовательских рабочих процессов и связанных с ними компонентов.

  • Создание пользовательских рабочих процессов
  • Создание настраиваемых действий рабочего процесса
  • Создание пользовательских событий рабочего процесса
  • Создание настраиваемых форм рабочего процесса

Создание пользовательских рабочих процессов

В этом параметре пользовательские рабочие процессы создаются, развертываются и связаны с хост-сайтом в SharePoint.

  • Пользовательские рабочие процессы можно создавать с помощью Visual Studio или SharePoint Designer.
  • Пользовательские рабочие процессы могут быть развернуты и связаны с хост-сайтом в SharePoint несколькими способами.
    • Рабочие процессы, созданные в Visual Studio, автоматически упаковываются в компоненты для развертывания.
    • Рабочие процессы, созданные в конструкторе SharePoint, должны быть экспортированы и импортированы, чтобы развернуть их с сервера разработки на рабочем сервере.
    • Рабочие процессы также могут быть развернуты и связаны с хост-сайтом в SharePoint с помощью шаблона удаленной подготовки. Дополнительные сведения о шаблоне удаленной подготовки см. в статье Подготовка сайта (рецепт надстройки SharePoint ).

В следующем примере кода показано, как использовать CSOM для подготовки рабочего процесса и списки, поддерживающие рабочий процесс.

	public void ProvisionIncidentWorkflowAndRelatedLists(string incidentWorkflowFile, string suiteLevelWebAppUrl, string dispatcherName)
    {
		//Return the list the workflow will be associated with
        var incidentsList = CSOMUtil.GetListByTitle(clientContext, "Incidents");

		//Create a new WorkflowProvisionService class instance which uses the 
		//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager to
		//provision and configure workflows
        var service = new WorkflowProvisionService(clientContext);

		//Read the workflow .XAML file
        var incidentWF = System.IO.File.ReadAllText(incidentWorkflowFile);

		//Create the WorkflowDefinition and use the 
		//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager
		//to save and publish it.  
		//This method is shown below for reference.
        var incidentWFDefinitionId = service.SaveDefinitionAndPublish("Incident",
            WorkflowUtil.TranslateWorkflow(incidentWF));

		//Create the workflow tasks list
        var taskListId = service.CreateTaskList("Incident Workflow Tasks");

		//Create the workflow history list
        var historyListId = service.CreateHistoryList("Incident Workflow History");

		//Use the Microsoft.SharePoint.Client.WorkflowServices.WorkflowSubscriptionService to 
		//subscibe the workflow to the list the workflow is associated with, register the
		//events it is associated with, and register the tasks and history list. 
		//This method is shown below for reference.
        service.Subscribe("Incident Workflow", incidentWFDefinitionId, incidentsList.Id,
            WorkflowSubscritpionEventType.ItemAdded, taskListId, historyListId);
    }
	
	public Guid SaveDefinitionAndPublish(string name, string translatedWorkflows)
    {
        var definition = new WorkflowDefinition(ClientContext)
        {
            DisplayName = name,
            Xaml = translatedWorkflows
        };

        var deploymentService = workflowServicesManager.GetWorkflowDeploymentService();
        var result = deploymentService.SaveDefinition(definition);
        ClientContext.ExecuteQuery();

        deploymentService.PublishDefinition(result.Value);
        ClientContext.ExecuteQuery();

        return result.Value;
    }

	public Guid Subscribe(string name, Guid definitionId, Guid targetListId, WorkflowSubscritpionEventType eventTypes, Guid taskListId, Guid historyListId)
    {
        var eventTypesList = new List<string>();
        foreach (WorkflowSubscritpionEventType type in Enum.GetValues(typeof(WorkflowSubscritpionEventType)))
        {
            if ((type & eventTypes) > 0)
                eventTypesList.Add(type.ToString());
        }

        var subscription = new WorkflowSubscription(ClientContext)
        {
            Name = name,
            Enabled = true,
            DefinitionId = definitionId,
            EventSourceId = targetListId,
            EventTypes = eventTypesList.ToArray()
        };

        subscription.SetProperty("TaskListId", taskListId.ToString());
        subscription.SetProperty("HistoryListId", historyListId.ToString());

        var subscriptionService = workflowServicesManager.GetWorkflowSubscriptionService();
        var result = subscriptionService.PublishSubscriptionForList(subscription, targetListId);

        ClientContext.ExecuteQuery();
        return result.Value;
    }

Для каких случаев он подходит?

Если вам нужно создать пользовательские рабочие процессы с кодом за ними, этот параметр подходит.

Начало работы

В следующих статьях показано, как создавать пользовательские рабочие процессы.

Создание настраиваемых действий рабочего процесса

В этом параметре пользовательские действия рабочего процесса создаются и развертываются в SharePoint.

  • Пользовательские действия рабочего процесса можно создавать с помощью Visual Studio.
  • Пользовательские действия рабочих процессов могут не создаваться с sharePoint Designer.
  • Пользовательские действия рабочих процессов могут использоваться в SharePoint Designer после их развертывания в среде SharePoint.

Для каких случаев он подходит?

Когда необходимо реализовать рабочие процессы в бизнес-процессах, требования которых не удовлетворяются готовыми библиотеками действий рабочих процессов в SharePoint Designer

Начало работы

В следующей статье показано, как создать пользовательское действие рабочего процесса с помощью Visual Studio.

Workflow.Actions (пример O365 PnP) включает несколько настраиваемых действий рабочего процесса, созданных с помощью Visual Studio. В нем также показано, как использовать настраиваемые действия рабочего процесса в рабочем процессе.

Создание пользовательских событий рабочего процесса

В этом параметре пользовательские события рабочего процесса создаются и развертываются в SharePoint.

  • Пользовательские события рабочего процесса можно создавать с помощью Visual Studio.
  • Пользовательские события рабочего процесса могут не создаваться с sharePoint Designer.
  • Пользовательские события рабочего процесса могут использоваться в SharePoint Designer после их развертывания в среде SharePoint.

Для каких случаев он подходит?

Когда необходимо реализовать рабочие процессы в бизнес-процессах, требования которых требуют, чтобы рабочие процессы ждали пользовательского события, прежде чем продолжить.

Начало работы

В примере Workflow.CustomEvents (O365 PnP) показано, как создать рабочий процесс, который ожидает, пока пользователь не срабатывает, прежде чем продолжить. В ней также показано, как использовать клиентскую объектную модель JavaScript (JSOM) для диспетчера служб рабочих процессов для создания пользовательского события.

Создание настраиваемых форм рабочего процесса

В этом параметре создаются и развертываются настраиваемые формы рабочих процессов в SharePoint.

  • Настраиваемые формы рабочих процессов можно создавать с помощью Visual Studio.
  • Пользовательские формы рабочих процессов не могут создаваться с sharePoint Designer.
  • Пользовательские формы рабочих процессов можно использовать в SharePoint Designer после их развертывания в среде SharePoint.

Для каких случаев он подходит?

Когда необходимо реализовать рабочие процессы в бизнес-процессах, для которых требуются настраиваемые формы.

Начало работы

В следующей статье показано, как создать настраиваемые формы сопоставления и запуска рабочих процессов и использовать их в рабочем процессе.

В разделе Workflow.CustomTasks (пример O365 PnP) показано, как создавать настраиваемые формы задач и инициации и использовать их в рабочем процессе.

Параметры обновления данных SharePoint из пользовательского рабочего процесса

У вас есть несколько вариантов обновления данных SharePoint из пользовательского рабочего процесса.

  • Используйте маркер контекста и URL-адрес веб-надстройки для проверки подлинности в SharePoint.
  • Используйте веб-URL-адрес надстройки и веб-прокси SharePoint для проверки подлинности в SharePoint.

Использование маркера контекста и URL-адреса веб-надстройки для проверки подлинности в SharePoint

В этом варианте вы передаете маркер контекста и URL-адрес веб-сайта надстройки из рабочего процесса в службу, которую рабочий процесс вызывает через заголовки HTTP. Служба использует маркер контекста и URL-адрес веб-надстройки для проверки подлинности в SharePoint и возврата маркера доступа перед обновлением данных SharePoint.

  • Этот подход требует передачи маркера содержимого из рабочего процесса в веб-службу.

Для каких случаев он подходит?

Если требуется, чтобы обмен данными с SharePoint происходил на уровне клиента.

Начало работы

В следующем примере показано, как использовать маркер контекста и ВЕБ-URL-адрес надстройки для проверки подлинности в SharePoint и обновления данных SharePoint.

Дополнительные сведения о передаче маркера контекста и ВЕБ-URL-адреса надстройки из рабочего процесса в службу см. в разделе CallCustomService (пример O365 PnP).

В других разделах readME Workflow.CallCustomService (пример O365 PnP) содержатся подробные сведения обо всем рабочем процессе и удаленной службе, а также показано, как настроить все компоненты в Microsoft Azure.

Использование веб-URL-адреса надстройки и веб-прокси SharePoint для проверки подлинности в SharePoint

В этом параметре при запуске рабочего процесса вы передаете ВЕБ-URL-адрес надстройки из рабочего процесса службе, которую вызывает рабочий процесс. Служба передает URL-адрес веб-надстройки веб-прокси SharePoint. Веб-прокси SharePoint использует URL-адрес веб-сайта надстройки для проверки подлинности в SharePoint и возврата маркера доступа. Затем веб-прокси SharePoint добавляет маркер доступа к заголовкам HTTP, прежде чем выполнять вызов для обновления данных SharePoint.

  • Этот подход не требует передачи маркера содержимого из рабочего процесса в веб-службу.

Для каких случаев он подходит?

Если требуется, чтобы обмен данными с SharePoint происходил на уровне сервера.

Начало работы

В следующем примере показано, как использовать ВЕБ-URL-адрес надстройки и веб-прокси SharePoint для проверки подлинности в SharePoint и обновления данных SharePoint.

Дополнительные сведения о вызове веб-прокси см. в разделе Вызов службы веб-API в файле README Workflow.CallServiceUpdateSPViaProxy (пример O365 PnP).

В других разделах в файле README Workflow.CallServiceUpdateSPViaProxy (пример O365 PnP) содержатся подробные сведения обо всем рабочем процессе и удаленной службе, а также показано, как настроить все компоненты в Microsoft Azure.

Дополнительные сведения о веб-прокси SharePoint 2013 см. в статье Запросы к удаленной службе с помощью веб-прокси SharePoint 2013 (статья MSDN).

Образцы PnP

Область применения

  • Office 365 Multi Tenant (MT)
  • Office 365 Dedicated (D)
  • Локальное развертывание SharePoint 2013