Compartilhar via


Fluxos de trabalho, ações (atividades), eventos e formulários no modelo de suplemento do SharePoint

Resumo

A abordagem que você adota para implementar fluxos de trabalho e seus componentes associados é diferente no novo modelo de suplemento do SharePoint do que era com o Full Trust Code. Em um cenário típico de FTC (Full Trust Code) / Farm Solution, os fluxos de trabalho e seus componentes associados foram criados com código lateral do servidor e implantados por meio da SharePoint Solutions. Os fluxos de trabalho e seus componentes associados foram executados no servidor do SharePoint.

Em um cenário de modelo de suplemento do SharePoint, os fluxos de trabalho e seus componentes associados são desenvolvidos com código executado em servidores remotos. Os fluxos de trabalho e seus componentes associados são registrados no Serviço de Fluxo de Trabalho, mas todos os códigos são executados em servidores remotos.

Diretrizes de alto nível

Como regra geral, gostaríamos de fornecer as diretrizes de alto nível a seguir para criar fluxos de trabalho e seus componentes associados no novo modelo de Suplemento do SharePoint.

  • O código por trás dos fluxos de trabalho não está disponível em Office 365 locatários ou com o modelo de suplemento do SharePoint em geral.
  • Todo o código por trás associado a fluxos de trabalho e seus componentes associados deve ser colocado em um serviço Web externo em execução em um servidor remoto.

Opções para criar fluxos de trabalho personalizados e seus componentes associados

Você tem algumas opções para criar fluxos de trabalho personalizados e seus componentes associados.

  • Criar fluxos de trabalho personalizados
  • Criar atividades de fluxo de trabalho personalizadas
  • Criar eventos de fluxo de trabalho personalizados
  • Criar formulários de fluxo de trabalho personalizados

Criar fluxos de trabalho personalizados

Nesta opção, fluxos de trabalho personalizados são criados, implantados e associados à Host-Web no SharePoint.

  • Fluxos de trabalho personalizados podem ser criados com o Visual Studio ou o SharePoint Designer.
  • Fluxos de trabalho personalizados podem ser implantados e associados à Host-Web no SharePoint de várias maneiras.
    • Os fluxos de trabalho criados no Visual Studio são empacotados automaticamente dentro de recursos para implantação.
    • Os fluxos de trabalho criados no designer do SharePoint devem ser exportados e importados para implantá-los de um servidor de desenvolvimento para um servidor de produção.
    • Os fluxos de trabalho também podem ser implantados e associados ao Host-Web no SharePoint por meio do padrão de provisionamento remoto. Consulte o provisionamento de site (Receita de Suplemento do SharePoint) para obter mais detalhes sobre o padrão de provisionamento remoto.

O exemplo de código a seguir demonstra como usar o CSOM para provisionar um fluxo de trabalho e as listas que dão suporte ao fluxo de trabalho.

	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;
    }

Quando isso é apropriado?

Quando você precisa criar fluxos de trabalho personalizados com código atrás deles, essa opção é um bom ajuste.

Introdução

Os artigos a seguir demonstram como criar fluxos de trabalho personalizados.

Criar atividades de fluxo de trabalho personalizadas

Nesta opção, as atividades personalizadas de fluxo de trabalho são criadas e implantadas no SharePoint.

  • Atividades de fluxo de trabalho personalizadas podem ser criadas com o Visual Studio.
  • As atividades de fluxo de trabalho personalizadas podem não ser criadas com o SharePoint Designer.
  • As atividades de fluxo de trabalho personalizadas podem ser usadas no SharePoint Designer depois de serem implantadas em um ambiente do SharePoint.

Quando isso é apropriado?

Quando você precisa implementar fluxos de trabalho em processos de negócios cujos requisitos não são atendidos pela biblioteca de ações de fluxo de trabalho no SharePoint Designer

Introdução

O artigo a seguir demonstra como criar uma atividade de fluxo de trabalho personalizada com o Visual Studio.

O Workflow.Activities (Exemplo de PnP do O365) inclui várias atividades de fluxo de trabalho personalizadas criadas com o Visual Studio. Ele também demonstra como usar as atividades de fluxo de trabalho personalizadas em um fluxo de trabalho.

Criar eventos de fluxo de trabalho personalizados

Nesta opção, eventos personalizados de fluxo de trabalho são criados e implantados no SharePoint.

  • Eventos de fluxo de trabalho personalizados podem ser criados com o Visual Studio.
  • Eventos de fluxo de trabalho personalizados podem não ser criados com o SharePoint Designer.
  • Eventos de fluxo de trabalho personalizados podem ser usados no SharePoint Designer depois de serem implantados em um ambiente do SharePoint.

Quando isso é apropriado?

Quando você precisa implementar fluxos de trabalho em processos de negócios cujos requisitos exigem que os fluxos de trabalho aguardem por um evento personalizado antes de prosseguir.

Introdução

O Workflow.CustomEvents (Exemplo de PnP O365) demonstra como criar um fluxo de trabalho que aguarda um personalizado até mesmo para disparar antes de prosseguir. Ele também demonstra como usar o JSOM (JavaScript Client Side Object Model) para o Workflow Services Manager para criar um evento personalizado.

Criar formulários de fluxo de trabalho personalizados

Nesta opção, formulários de fluxo de trabalho personalizados são criados e implantados no SharePoint.

  • Os formulários de fluxo de trabalho personalizados podem ser criados com o Visual Studio.
  • Os formulários de fluxo de trabalho personalizados podem não ser criados com o SharePoint Designer.
  • Os formulários de fluxo de trabalho personalizados podem ser usados no SharePoint Designer depois de serem implantados em um ambiente do SharePoint.

Quando isso é apropriado?

Quando você precisa implementar fluxos de trabalho em processos de negócios cujos requisitos exigem formulários personalizados.

Introdução

O artigo a seguir demonstra como criar formulários personalizados de associação e iniciação de fluxo de trabalho e usá-los em um fluxo de trabalho.

O Workflow.CustomTasks (Exemplo O365 PnP) demonstra como criar formulários de tarefa e iniciação personalizados e usá-los em um fluxo de trabalho.

Opções para atualizar dados do SharePoint de um fluxo de trabalho personalizado

Você tem algumas opções para atualizar dados do SharePoint de um fluxo de trabalho personalizado.

  • Use o token de contexto e a URL da Web de suplemento para se autenticar no SharePoint.
  • Use a URL Web do Suplemento e o proxy Web do SharePoint para autenticar no SharePoint.

Usar o token de contexto e a URL da Web de suplemento para se autenticar no SharePoint

Nesta opção, você passa o token de contexto e a URL Web do Suplemento do fluxo de trabalho para o serviço que o fluxo de trabalho chama por meio de cabeçalhos http. O serviço usa o token de contexto e a URL Web do Suplemento para autenticar no SharePoint e retornar um token de acesso antes de atualizar dados do SharePoint.

  • Essa abordagem requer passar o token de conteúdo do fluxo de trabalho para o serviço Web.

Quando isso é apropriado?

Quando você deseja que a comunicação com o SharePoint ocorra no nível do cliente.

Introdução

O exemplo a seguir demonstra como usar o token de contexto e a URL Web do Suplemento para se autenticar no SharePoint e atualizar dados do SharePoint.

Consulte a seção Serviço de Chamada web Api no Workflow.CallCustomService (O365 PnP Sample) README para obter mais detalhes sobre como passar o token de contexto e a URL Web do Suplemento do fluxo de trabalho para o serviço.

As outras seções no README do Workflow.CallCustomService (Exemplo O365 PnP) fornecem informações detalhadas sobre todo o fluxo de trabalho e serviço remoto e também orientam você pela configuração de todos os componentes no Microsoft Azure.

Use a URL Web do Suplemento e o proxy Web do SharePoint para autenticar no SharePoint

Nesta opção, quando o fluxo de trabalho inicia, você passa a URL Web do suplemento do fluxo de trabalho para o serviço que o fluxo de trabalho chama. O serviço passa a URL Web do Suplemento para o Proxy Web do SharePoint. O Proxy Web do SharePoint usa a URL Web do Suplemento para autenticar no SharePoint e retornar um token de acesso. Em seguida, o Proxy Web do SharePoint acrescenta o token de acesso aos cabeçalhos http antes de fazer a chamada para atualizar dados do SharePoint.

  • Essa abordagem não requer passar o token de conteúdo do fluxo de trabalho para o serviço Web.

Quando isso é apropriado?

Quando você deseja que a comunicação com o SharePoint ocorra no nível do servidor.

Introdução

O exemplo a seguir demonstra como usar a URL Web do Suplemento e o proxy Web do SharePoint para autenticar no SharePoint e atualizar dados do SharePoint.

Consulte a seção Call Web Api service via proxy Web no Workflow.CallServiceUpdateSPViaProxy (Exemplo de O365 PnP) README para obter mais detalhes sobre a invocação do Proxy Web do SharePoint.

As outras seções no WORKflow.CallServiceUpdateSPViaProxy (O365 PnP Sample) README fornecem informações detalhadas sobre todo o fluxo de trabalho e serviço remoto e também orientam você na configuração de todos os componentes no Microsoft Azure.

Consulte a Consulta de um serviço remoto usando o proxy Web no SharePoint 2013 (Artigo MSDN) para obter mais informações sobre o Proxy Web do SharePoint.

Exemplos de PnP

Aplicável a

  • Office 365 Multilocatário (MT)
  • Office 365 dedicado (D)
  • SharePoint 2013 local