none
Рабочие процессы в SharePoint 2016

Ответы

  • Возможно такая проблема, но для начала нужно убедиться: откройте рабочий процесс, далее попробуйте внести изменения в любое условие и сделать публикацию, если вылезет сообщение "При компиляции рабочего процесса были обнаружены ошибки..." или в логах самого SharePoint. Подробнее эта ошибка разбирается здесь.
    Только что решал эту проблему, ошибка при публикации Workflow:Запустил под Администратором Командную строку: iisreset /stop и далее этот Powershell script как написано в статье:

    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
    function Add-CodeDomAuthorizedType
    {
       [CmdletBinding()]
        param
        (
            [parameter(Mandatory=$false)][switch]$IncludeNintexWorkflow
        )
        begin
        {
            $updateRequired = $false
    
            $farmMajorVersion = (Get-SPFarm -Verbose:$false ).BuildVersion.Major
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
    
            $authorizedTypes = @()
     
            if( $farmMajorVersion -le 14)
            {
                $systemAssemblyVersion = "2.0.0.0"
                $targetParentPath      = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes"
            }
            else
            {
                $systemAssemblyVersion = "4.0.0.0"
                $targetParentPath      = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes/targetFx[@version='v4.0']"
            }
            if($IncludeNintexWorkflow.IsPresent)
            {
                $authorizedTypes += New-Object PSCustomObject -Property @{
                    Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                    Namespace = "System.CodeDom"
                    TypeName  = "CodeTypeReferenceExpression"
                }
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeBinaryOperatorExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodePrimitiveExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeMethodInvokeExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeMethodReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeFieldReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeThisReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodePropertyReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System.Workflow.Activities, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                Namespace = "System.Workflow.Activities.Rules"
                TypeName  = "RuleDefinitions"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System.Workflow.Activities, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                Namespace = "System.Workflow.Activities.Rules"
                TypeName  = "RuleExpressionCondition"
            }
        }
        process
        {
            foreach( $authorizedType in $authorizedTypes )
            {
                $netFrameworkConfig = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification
                $netFrameworkConfig.Path     = $targetParentPath
                $netFrameworkConfig.Name     = "authorizedType[@Assembly='$($authorizedType.Assembly)'][@Namespace='$($authorizedType.Namespace)'][@TypeName='$($authorizedType.TypeName)'][@Authorized='True']" 
                $netFrameworkConfig.Owner    = "NetFrameworkAuthorizedTypeUpdate"
                $netFrameworkConfig.Sequence = 0
                $netFrameworkConfig.Type     = [Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode
                $netFrameworkConfig.Value    = "<authorizedType Assembly=`"$($authorizedType.Assembly)`" Namespace=`"$($authorizedType.Namespace)`" TypeName=`"$($authorizedType.TypeName)`" Authorized=`"True`"/>"
                
                if( -not ($contentService.WebConfigModifications | ? { $_.Value -eq $netFrameworkConfig.Value }) )
                {
                    Write-Verbose "Adding Authorized Type: $($netFrameworkConfig.Value)"
    
                    $contentService.WebConfigModifications.Add($netFrameworkConfig);
                    $updateRequired = $true
                }
                else
                {
                    Write-Verbose "Authorized Type Exists: $($netFrameworkConfig.Value)"
                }
            }
    
            if( $updateRequired )
            {
                Write-Verbose "Updating web.configs"
                $contentService.Update()
                $contentService.ApplyWebConfigModifications();
            }
        }
        end
        {
        }    
    }
    
    function Remove-CodeDomAuthorizedType
    {
        [CmdletBinding()]
        param()
    
        begin
        {
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
        }
        process
        {
            $webConfigModifications = @($contentService.WebConfigModifications | ? { $_.Owner -eq "NetFrameworkAuthorizedTypeUpdate" })
    
            foreach ( $webConfigModification in $webConfigModifications ) 
            {
                Write-Verbose "Found instance owned by NetFrameworkAuthorizedTypeUpdate"
                $contentService.WebConfigModifications.Remove( $webConfigModification ) | Out-Null
            }
            
            if( $webConfigModifications.Count -gt 0 )
            {
                $contentService.Update()
                $contentService.ApplyWebConfigModifications()
            }
        }
        end
        {
        }    
    }
    Add-CodeDomAuthorizedType -Verbose

    По завершению скрипта iisreset /restart и пробуем публиковать Workflow, публикация прошла без ошибок.

    15 ноября 2018 г. 15:09

Все ответы

  • Возможно такая проблема, но для начала нужно убедиться: откройте рабочий процесс, далее попробуйте внести изменения в любое условие и сделать публикацию, если вылезет сообщение "При компиляции рабочего процесса были обнаружены ошибки..." или в логах самого SharePoint. Подробнее эта ошибка разбирается здесь.
    Только что решал эту проблему, ошибка при публикации Workflow:Запустил под Администратором Командную строку: iisreset /stop и далее этот Powershell script как написано в статье:

    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
    function Add-CodeDomAuthorizedType
    {
       [CmdletBinding()]
        param
        (
            [parameter(Mandatory=$false)][switch]$IncludeNintexWorkflow
        )
        begin
        {
            $updateRequired = $false
    
            $farmMajorVersion = (Get-SPFarm -Verbose:$false ).BuildVersion.Major
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
    
            $authorizedTypes = @()
     
            if( $farmMajorVersion -le 14)
            {
                $systemAssemblyVersion = "2.0.0.0"
                $targetParentPath      = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes"
            }
            else
            {
                $systemAssemblyVersion = "4.0.0.0"
                $targetParentPath      = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes/targetFx[@version='v4.0']"
            }
            if($IncludeNintexWorkflow.IsPresent)
            {
                $authorizedTypes += New-Object PSCustomObject -Property @{
                    Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                    Namespace = "System.CodeDom"
                    TypeName  = "CodeTypeReferenceExpression"
                }
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeBinaryOperatorExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodePrimitiveExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeMethodInvokeExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeMethodReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeFieldReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodeThisReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                Namespace = "System.CodeDom"
                TypeName  = "CodePropertyReferenceExpression"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System.Workflow.Activities, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                Namespace = "System.Workflow.Activities.Rules"
                TypeName  = "RuleDefinitions"
            }
            $authorizedTypes += New-Object PSCustomObject -Property @{
                Assembly  = "System.Workflow.Activities, Version=$systemAssemblyVersion, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                Namespace = "System.Workflow.Activities.Rules"
                TypeName  = "RuleExpressionCondition"
            }
        }
        process
        {
            foreach( $authorizedType in $authorizedTypes )
            {
                $netFrameworkConfig = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification
                $netFrameworkConfig.Path     = $targetParentPath
                $netFrameworkConfig.Name     = "authorizedType[@Assembly='$($authorizedType.Assembly)'][@Namespace='$($authorizedType.Namespace)'][@TypeName='$($authorizedType.TypeName)'][@Authorized='True']" 
                $netFrameworkConfig.Owner    = "NetFrameworkAuthorizedTypeUpdate"
                $netFrameworkConfig.Sequence = 0
                $netFrameworkConfig.Type     = [Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode
                $netFrameworkConfig.Value    = "<authorizedType Assembly=`"$($authorizedType.Assembly)`" Namespace=`"$($authorizedType.Namespace)`" TypeName=`"$($authorizedType.TypeName)`" Authorized=`"True`"/>"
                
                if( -not ($contentService.WebConfigModifications | ? { $_.Value -eq $netFrameworkConfig.Value }) )
                {
                    Write-Verbose "Adding Authorized Type: $($netFrameworkConfig.Value)"
    
                    $contentService.WebConfigModifications.Add($netFrameworkConfig);
                    $updateRequired = $true
                }
                else
                {
                    Write-Verbose "Authorized Type Exists: $($netFrameworkConfig.Value)"
                }
            }
    
            if( $updateRequired )
            {
                Write-Verbose "Updating web.configs"
                $contentService.Update()
                $contentService.ApplyWebConfigModifications();
            }
        }
        end
        {
        }    
    }
    
    function Remove-CodeDomAuthorizedType
    {
        [CmdletBinding()]
        param()
    
        begin
        {
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
        }
        process
        {
            $webConfigModifications = @($contentService.WebConfigModifications | ? { $_.Owner -eq "NetFrameworkAuthorizedTypeUpdate" })
    
            foreach ( $webConfigModification in $webConfigModifications ) 
            {
                Write-Verbose "Found instance owned by NetFrameworkAuthorizedTypeUpdate"
                $contentService.WebConfigModifications.Remove( $webConfigModification ) | Out-Null
            }
            
            if( $webConfigModifications.Count -gt 0 )
            {
                $contentService.Update()
                $contentService.ApplyWebConfigModifications()
            }
        }
        end
        {
        }    
    }
    Add-CodeDomAuthorizedType -Verbose

    По завершению скрипта iisreset /restart и пробуем публиковать Workflow, публикация прошла без ошибок.

    15 ноября 2018 г. 15:09
  • При выполнении этого скрипта ни чего не сломается? На Project Server не повлияет? При публикации. 


    • Изменено Nabi05 16 ноября 2018 г. 7:15
    16 ноября 2018 г. 7:14
  • При чем тут Project server? Откройте "Дополнительно" в этой ошибке и вставьте сюда полное описание. Бэкап сервера есть?
    16 ноября 2018 г. 7:18
  • Просто уточняю :) 

    16 ноября 2018 г. 7:24
  • Все верно такая же ошибка, действуй как я описал выше, по идее если у тебя есть тестовый сервер, может это решение откатать сначала на нем, если у тебя есть он?
    16 ноября 2018 г. 7:26
  • Ох, если бы был тестовый сервер было бы проще, все приходится делать на рабочем сервере, руководство не хочет выделять деньги на тестовый сервер.  
    16 ноября 2018 г. 7:30
  • Короче: iisreset /stop -> PowerShell script -> iisreset /restart -> публикация Workflow.

    Если PowerShell script выполнен успешно:

    16 ноября 2018 г. 7:33
  • Окей, останавливаю веб сервер, запускаю  PowerShell Sharepoint от имени администратора и выполняю скрипт. :). Спс, надеюсь поможет. 
    16 ноября 2018 г. 7:38
  • Спасибо большое, проблема с рабочими процессами исправлена. 
    16 ноября 2018 г. 11:51
  • Столкнулся с новой проблемой при публикации :(

    28 ноября 2018 г. 7:52