Compartilhar via


Fazer upgrade do SharePoint 2013 para o SharePoint 2016 usando o Gerenciador de Fluxo de Trabalho

APLICA-SE A:yes-img-132013 yes-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint no Microsoft 365

Resumo

Quando atualiza o Microsoft SharePoint 2013 para o Microsoft SharePoint 2016, não tem de criar uma nova instalação do Gestor de Fluxos de Trabalho. Pode utilizar a mesma instalação que foi utilizada pelo farm do SharePoint 2013 no novo farm do SharePoint 2016. No entanto, poderá ter de criar uma nova instalação do Gestor de Fluxos de Trabalho em determinadas circunstâncias. Por exemplo, se quiser mover o Gestor de Fluxos de Trabalho para um sistema operativo Windows diferente ou se o servidor de bases de dados de back-end estiver desativado. Nestas situações, siga os passos em Recuperação Após Desastre do Gestor de Fluxos de Trabalho para criar a nova instalação do Gestor de Fluxos de Trabalho com as bases de dados antigas. Certifique-se de que utiliza a cópia mais recente das bases de dados do Gestor de Fluxos de Trabalho.

Histórico

Quando utiliza o SharePoint Server juntamente com o Gestor de Fluxos de Trabalho, o Gestor de Fluxos de Trabalho mantém um registo dos sites do SharePoint que publicaram fluxos de trabalho. Cada site é representado no Gestor de Fluxos de Trabalho como um âmbito. O Gestor de Fluxos de Trabalho também armazena as definições de fluxo de trabalho, todas as instâncias de fluxo de trabalho e os respetivos estados.

O SharePoint armazena o histórico de fluxos de trabalho e as informações de tarefas do fluxo de trabalho para fluxos de trabalho do SharePoint. Quando a página de estado do fluxo de trabalho é carregada, o SharePoint faz primeiro uma chamada para o Gestor de Fluxos de Trabalho para ver se o fluxo de trabalho existe. Para tal, utiliza o ID da instância do fluxo de trabalho. Em seguida, o SharePoint carrega as restantes informações do fluxo de trabalho. Se o ID da instância do fluxo de trabalho estiver em falta no Gestor de Fluxos de Trabalho ou se ocorrer um erro durante a comunicação com o Gestor de Fluxos de Trabalho, receberá uma mensagem de erro.

Como atualizar o SharePoint 2013 para o SharePoint 2016 com o Gestor de Fluxos de Trabalho

Pré-requisitos

Os seguintes pré-requisitos têm de ser efetuados ao instalar esta atualização:

  • Instale a atualização cumulativa mais recente para o Gestor de Fluxos de Trabalho com o Instalador de Plataforma Web (PI Web).

  • Instale a versão mais recente do Cliente do Workflow Manager nos servidores do SharePoint 2013 e certifique-se de que todos os fluxos de trabalho estão funcionais.

  • Instale o farm do SharePoint Server 2016 e atualize todas as aplicações de serviço e bases de dados de conteúdos.

  • Em todos os servidores de farm do SharePoint Server 2016, instale a versão mais recente do Cliente do Workflow Manager com o PI Web.

Registar o Gestor de Fluxos de Trabalho com o SharePoint Server 2016

Utilize os seguintes passos para registar o Gestor de Fluxos de Trabalho no SharePoint Server 2016:

  1. No farm do SharePoint 2013, no site da Administração Central, clique em Gestão de Aplicações , clique em Gerir Aplicações de Serviço e, em seguida, elimine o Proxy de Aplicações do Serviço de Fluxo de Trabalho.

  2. No farm do SharePoint Server 2016, execute o seguinte cmdlet do Microsoft PowerShell para emparelhar o SharePoint 2016 juntamente com a mesma instalação do Gestor de Fluxos de Trabalho:

   Register-SPWorkflowService -SPSite <SharePoint site URL> -
   WorkflowHostUri <Workflow service endpoint URL> -force

Problemas comuns que podem ocorrer após a atualização

Problema 1: O URL do site foi alterado

Se o URL do site for alterado no SharePoint 2016, mas o ID do site permanecer o mesmo, terá de voltar a publicar um fluxo de trabalho a partir do site afetado através do SharePoint Designer.

Problema 2: os fluxos de trabalho não são iniciados em alguns sites

Se os fluxos de trabalho não iniciarem em alguns sites, volte a publicar os fluxos de trabalho a partir do site afetado. Em alternativa, execute a tarefa atualizar temporizador de feed de Metadados de Serviços de Tokens de Segurança Fidedigno .

Problema 3: Os fluxos de trabalho falham e devolvem o erro "Não é possível obter informações de permissão do principal da aplicação"

Considere o seguinte cenário:

  • Tem fluxos de trabalho do SharePoint 2013 e o Gestor de Fluxos de Trabalho configurados no farm.

  • Ligou recentemente sites no farm a uma instância do Gestor de Fluxos de Trabalho anteriormente existente.

Neste cenário, os fluxos de trabalho criados após a ligação à instalação do Gestor de Fluxos de Trabalho são concluídos com êxito. No entanto, os fluxos de trabalho criados antes de ligar ao Gestor de Fluxos de Trabalho não são concluídos. Em vez disso, ficam presos quando tentam terminar ou permanecem em estado suspenso. Para fluxos de trabalho que permanecem suspensos, recebe um erro HTTP 500. Além disso, a seguinte entrada é registada no registo ULS: Não é possível obter informações de permissão do principal da aplicação.

Motivo

O Gestor de Fluxos de Trabalho já tem um âmbito para o site no qual os fluxos de trabalho estão em execução. Uma vez que o âmbito tem um valor SPAuthenticationRealm incorreto no campo ApplicationID do âmbito, não existe nenhuma classe SPAppPrincipal no objeto SPWeb que corresponda ao valor ApplicationID do âmbito. Por conseguinte, os fluxos de trabalho falham e devolvem uma mensagem de erro.

Resolução

Para resolver este problema, utilize os seguintes comandos do PowerShell para registar o novo objeto SPAppPrincipal . Pode fazê-lo no objeto SPWeb cujo ID corresponde ao valor ApplicationID armazenado no âmbito do objeto SPWeb no Gestor de Fluxos de Trabalho.

   #Variables
   $webUrl = "http://sp.contoso.com/sites/teamsite/teamweb"
   $oldAuthRealm = "58a2b173-0f88-4bff-935b-bf3778cd0524" #authentication realm expected by Workflow Manager
   $newAuthRealm = "48834d17-d729-471e-b0d0-a0ec83b49de0" #authentication realm of current farm
   #Get the SPWeb and SPSite objects, and the id of the web
   $web = Get-SPWeb $webUrl
   $site = $web.site
   $clientId = $web.Id
   #Create the old and new app principal ids
   $oldAppId = "$clientId@$oldAuthRealm"
   $newAppId = "$clientId@$newAuthRealm"
   #Register the app principal with the old authentication realm
   Register-SPAppPrincipal -DisplayName "Old Workflow" -Site $web -NameIdentifier $oldAppId
   #Set permissions for the app principal
   #If app-only permissions are used in old environment, you must use the -EnableAppOnlyPolicy parameter to pass to the cmdlet for app steps to succeed
   $oldAppPrincipal = Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId
   Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope SiteCollection -Right FullControl
   Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope Site -Right FullControl
   #List the app principals with the old and new authentication realms in the ids
   Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId | fl
   Get-SPAppPrincipal -Site $web -NameIdentifier $newAppId | fl

Tenha em atenção: se o Principal de Aplicação tiver App-Only permissões no site do SharePoint 2013, terá de transmitir -EnableAppOnlyPolicy também para o cmdlet Set-SPAppPrincipalPermission.

Mais informações

Para obter o valor SPAuthenticationRealm de ApplicationID armazenado no âmbito, siga estes passos:

  1. Execute a seguinte consulta SQL:

    SELECT *
    FROM [WFResourceManagementDB].[dbo].[Scopes] WITH (NOLOCK)
    WHERE Description like '%<WebID>%'
    
    

    Em que <WebID> é o marcador de posição do ID do objeto SPWeb.

  2. No resultado da consulta, clique no valor na coluna SecuritySettings para abrir o XML num separador separado no SQL Server Management Studio.

  3. No ficheiro XML, localizou o elemento ApplicationID que contém o valor. Por exemplo, localize o seguinte elemento:

    <ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>`
    

    Observação

    O GUID apresentado antes do sinal de at (@) é o ID do objeto SPWeb e o GUID que aparece após o sinal de at é o valor SPAuthenticationRealm.

Em alternativa, pode encontrar o valor SPAuthenticationRealm no registo ULS, tal como na seguinte entrada de registo de exemplo:

03/11/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 Autorização de Autenticação do SharePoint Foundation an3eg Medium Não é possível obter informações de permissão do principal da aplicação. AppId=i:0i.t|ms.sp.ext|<SPWeb object ID>@<SPAuthenticationRealm>

03/11/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 erro geral da Aplicação Média 8nca do SharePoint Foundation ao aceder a /site/teamsite/teamweb/_vti_bin/client.svc, Error=Object reference not set to an instance of an object at Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) at Microsoft.SharePoint.SPAppRequestContext.InitCurrent(HttpContext context) at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(contexto HttpContext) em Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) em System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() em System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)