Inzwischen haben wir mit dem letzten Blogpost ja eine Übersicht alle Webs, in denen Nintex Workflow for Office365 aktiviert worden ist. Nun geht es also um die Frage: was für Workflows gibt es in der jeweiligen Site und welche Workflows sind mit Nintex erstellt und welche ggf. nicht?
Auch hier hilft PowerShell wieder weiter.
Add-Type -Path "d:\Microsoft.SharePoint.Client.WorkflowServices.dll" $clientId = "client_id=" + [System.Web.HttpUtility]::UrlEncode($appPrincipalId) $wfmgr = New-Object Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager($ctx, $web) $wfdpl = $wfmgr.GetWorkflowDeploymentService() $wfdefs = $wfdpl.EnumerateDefinitions($false) $ctx.Load($wfdefs) $ctx.Load($web) $ctx.ExecuteQuery() $webUrl = $web.Url $items = @() $wfdefs | % { $item = @{ Name = $_.DisplayName Region = $_.Properties["NWConfig.Region"] Designer = $_.Properties["NWConfig.Designer"] Entitlement = $_.Properties["NWConfig.WorkflowEntitlementType"] Author = $_.Properties["AppAuthor"] LastModified = $_.Properties["ModifiedBy"] LastEditor = $_.Properties["SMLastModifiedDate"] Type = $_.RestrictToType ScopeId = $_.RestrictToScope Published = $_.Published $lauchUrl = $webUrl + "/_layouts/15/appredirect.aspx?" $lauchUrl += $clientId $lauchUrl += "&redirect_uri=" + [System.Web.HttpUtility]::UrlEncode("https://workflowo365.nintex.com/Hub.aspx?{StandardTokens}&ListId={" + $_.RestrictToScope + "}&AppVersion=1.0.3.0") Link = $lauchUrl } $items += $item } $items | Export-Csv -Path "workflow_inventory.csv" -NoTypeInformation -Delimiter ";" -Append
Zunächst brauchen wir eine weiter DLL aus dem CSOM-Paket um auf die Workflows zuzugreifen. Gucken wir uns den Code mal wieder genauer an:
- Im vorherigen Teil hatten wir in der Funktion
Execute-NintexAddFinder
bereits dieAppPrincipalId
der jeweiligen App-Instanz von Nintex Workflow for Office365 ermittelt – diese brauchen wir nun in Zeile 2 - Anschließend können wir alle Workflow-Definitionen aus dem
WorkflowServicesManager
auslesen - Wenn wir jede Workflow-Definition betrachten, interessieren uns insbesondere die Attribute, die von Nintex gesetzt werden. Damit kann erkannt werden aus welcher Region der Workflow stammt, mit welcher Designer-Version der Workflow erstellt wurde und vieles mehr
- Anschließend erstellen wir uns eine URL, die auf die Workflow-Gallery der Liste zeigt, wozu der Workflow gehört
Am Ende können wir diese Informationen in eine CSV-Datei schreiben. Diese kann dann mit Excel geöffnet werden und es können alle Workflows gefiltert werden, die von Nintex stammen (z.b. die eine Designer-Version haben). Dazu kann dann die URL aufgerufen werden und der Workflow kann neu veröffentlicht werden.
Fazit
Dank PowerShell dauert nun das durchsuchen meiner 250 Site-Collections nur wenige Minuten und ich erhalten eine Liste aller Workflows. Diese muss ich dann zwar noch immer manuell veröffentlichen, aber immerhin kann direkt an die jeweiligen Galleries springen!