Articolo originale pubblicato giovedì 30 agosto 2012

Salve. Il mio nome è JongHwa Lim e sono Program Manager del team di SharePoint Designer (conosciuto anche come team SPD).foto di Jonghwal

Oggi desidero presentare una funzionalità che è stata migliorata in modo significativo rispetto a SharePoint Designer 2010 e SharePoint Server 2010, ovvero il pacchetto dei flussi di lavoro. Uno scenario comune per coloro che hanno utilizzato questa funzionalità in SharePoint Designer 2010 prevedeva lo sviluppo di un flusso di lavoro in un ambiente di sviluppo e quindi la distribuzione in un ambiente di produzione. Purtroppo questa funzionalità in SharePoint Designer 2010 è disponibile solo per i tipi di flussi di lavoro riutilizzabili.

In SharePoint Designer 2013, così come in SharePoint Server 2013 e nel servizio di flusso di lavoro Azure, sono supportati ora tutti e tre i tipi di flusso di lavoro, ovvero i flussi di lavoro di tipo elenco, sito e riutilizzabile. Questo è fantastico. Significa che esiste più il vincolo del flusso di lavoro riutilizzabile e non è più necessario eseguire la migrazione dei flussi di lavoro elenco in flussi di lavoro riutilizzabili.

Un esempio illustrerà questa novità in modo ancora più dettagliato. Creerò un flusso di lavoro di esempio e illustrerò come riutilizzarlo in un sito di destinazione.

Esempio: flusso di lavoro elenco Vacation Request

Supponiamo di creare un flusso di lavoro elenco in un ambiente di sviluppo. Il flusso di lavoro include due elenchi: Vacation e Vacation Request. Nell'elenco Vacation sono registrate le ferie che devono ancora essere consumate da tutti i dipendenti, mentre nell'elenco Vacation Request è possibile creare un elemento richiesta per richiedere l'approvazione delle ferie.

Creare gli elenchi necessari (ambiente di sviluppo)

Come ho già affermato, sono necessari due elenchi e pertanto ho creato due elenchi, come indicato di seguito. A tale scopo, utilizzeremo le impostazioni predefinite di 'Elenco attività' ed 'Elenco cronologia'.

clip_image001

clip_image002

Creare il flusso di lavoro elenco nell'elenco Vacation Request

Ora che disponete degli elenchi necessari, utilizzate SPD per connettervi al server, fate clic su 'Flusso di lavoro elenco' e quindi scegliete l'elenco 'Vacation Request'. Visualizzerete la finestra di dialogo seguente. Verificate di aver selezionato il tipo 'Flusso di lavoro di SharePoint 2013' (SharePoint 2013 Workflow) dopo aver digitato il nome del flusso di lavoro.

clip_image003

Completare la logica e pubblicare il flusso di lavoro

Nell'area di disegno di SPD è possibile scegliere per la modifica del flusso di lavoro la progettazione basata su testo oppure, se è installato Visio Professional, la progettazione grafica. In questo blog utilizzerò la progettazione basata su testo, ma se siete interessati alla progettazione grafica, potete fare riferimento a un altro post di blog che sarà presto disponibile su questo argomento.

Aggiungete la logica seguente. Questa operazione in genere è piuttosto semplice ad eccezione di alcuni punti. È suddivisa in cinque fasi. Il titolo di ogni fase è esplicativo, ma per una descrizione più dettagliata ho fornito una descrizione qui di seguito:

immagine

clip_image005

Le parti più complesse sono relative agli elementi dell'interfaccia utente di ricerca per il recupero dei giorni di ferie dall'elenco Vacation o per l'aggiornamento dell'elenco Vacation.

clip_image006

clip_image007

Potete decidere di selezionare l'opzione Avvia il flusso di lavoro automaticamente quando viene creato un elemento (Start workflow automaticaly when an item is created), se è più utile.

clip_image008

Quando pubblicate il flusso di lavoro, l'associazione del flusso di lavoro e la colonna di stato verranno create automaticamente.

Creare pacchetti STP contenenti gli elenchi

Esistono diverse soluzioni per fare in modo che il server di destinazione disponga degli elenchi e degli schemi necessari, ma l'utilizzo del pacchetto STP è un'ottima scelta. Procediamo quindi a inserire l'elenco Vacation e l'elenco Vacation Request in pacchetti STP.

A tale scopo, potete utilizzare l'interfaccia utente del server o di SPD, come mostrato qui di seguito.

clip_image009

clip_image010

Visualizzerete quindi la schermata seguente, dove sarà possibile digitare il nome e scegliere di inserire nei pacchetti anche il contenuto.

clip_image011

Il flusso di lavoro elenco di SharePoint 2013 non viene inserito nel pacchetto, indipendentemente dal fatto che selezioniate o meno 'Includi contenuto' (Include Content).

Se l'operazione riesce, visualizzerete una pagina da cui potrete scaricare il pacchetto.

clip_image012

Fate clic sul collegamento e scaricate il pacchetto per utilizzarlo in un secondo momento.

Se l'operazione ha esito positivo, disporrete di due pacchetti STP, uno per l'elenco Vacation Request e uno per l'elenco Vacation (in cui sono contenuti i giorni di ferie restanti).

Creare un pacchetto WSP contenente il flusso di lavoro

Per creare un pacchetto del flusso di lavoro elenco, accedete alla pagina di riepilogo del flusso di lavoro e fate clic sul pulsante 'Salva come modello' (Save as Template) sulla barra multifunzione.

clip_image013

Verrà visualizzata la finestra di dialogo seguente.

clip_image014

Nel riquadro di navigazione potete trovare la raccolta 'Risorse del sito' (Site Assets) in cui è contenuto il pacchetto del flusso di lavoro elenco. Potrebbe essere necessario aggiornare la pagina per visualizzare il pacchetto.

Utilizzate il pulsante 'Esporta file' (Export File) sulla barra multifunzione per salvare il pacchetto nel computer locale.

clip_image015

Distribuire i pacchetti STP

Aprite il sito di destinazione (o l'ambiente di produzione) nel browser e passate a 'Impostazioni sito'. Troverete il menu 'Modelli di elenco' (List templates) nel gruppo 'Raccolte Designer Web' (Web Designer Galleries).

clip_image016

Scegliete 'Carica documento' dal menu 'File' per caricare i due pacchetti STP.

clip_image017

Creare elenchi mediante i modelli di elenco distribuiti

Potete creare i due elenchi dai modelli di elenco distribuiti. Passate a 'Contenuto del sito' nel menu di navigazione nel server e fate clic su 'aggiungi un'app'. Dovreste trovare le icone 'Vacation' e 'Vacation Request'.

clip_image018

Create gli elenchi 'Vacation' e 'Vacation Request' utilizzando tali menu.

Distribuire e attivare il pacchetto WSP

La distribuzione del pacchetto WSP è leggermente diversa dalla distribuzione di modelli di elenco STP. Il pacchetto infatti deve essere caricato nella raccolta 'Soluzioni (Solutions) nel gruppo 'Raccolte Designer Web' (Web Designer Galleries) in Impostazioni sito.

clip_image019

Visualizzerete una finestra di dialogo in cui verrà chiesto di attivare il pacchetto (soluzione).

clip_image020

Attivare la funzionalità

Dopo aver attivato la soluzione, sarà visibile una nuova funzionalità del sito da Gestisci caratteristiche sito (Manage site features) in 'Azioni sito' (Site Actions) in Impostazioni sito.

clip_image021

Questo è tutto. Potete eseguire la ricerca del flusso di lavoro in base al nome utilizzato per la creazione del pacchetto. Fate clic sul pulsante 'Attiva' (Activate) e attendete finché il pulsante non viene sostituito da 'Disattiva' o finché non visualizzate l'icona Attiva, che indica che la funzionalità è attivata.

clip_image022

(Facoltativo) Aprire il flusso di lavoro da SPD

In alcuni casi si desidera aggiornare il flusso di lavoro nel sito di destinazione. Non è un problema. È come l'ambiente di sviluppo. Potete individuare il flusso di lavoro elencato in SPD.

clip_image023

Verrà aperto senza problemi. Potete osservare che i valori nella pagina di riepilogo restano invariati, così come viene mantenuta la logica.

immagine

(Facoltativo) Eseguire il flusso di lavoro

Dopo aver eseguito il flusso di lavoro dal server, potreste trovare due colonne con lo stesso nome (colonna di stato del flusso di lavoro). Questo è un problema noto. Una colonna proviene dal server di origine (pacchetto STP) e l'altra viene creata nel sito di destinazione. Aggiornate la visualizzazione elenco in modo da nascondere la colonna meno recente.

Qual è l'alternativa al pacchetto STP?

La soluzione verrà distribuita correttamente purché nel sito di destinazione siano presenti gli elenchi necessari, ovvero gli elenchi utilizzati nella logica del flusso di lavoro insieme agli elenchi Attività flusso di lavoro e Cronologia flusso di lavoro. È consigliabile tuttavia creare gli elenchi e le colonne di elenco a cui viene fatto riferimento nel flusso di lavoro utilizzando lo stesso modello di elenco e lo stesso tipo di campo. Se i tipi non corrispondono, può verificarsi un errore del pacchetto durante l'attivazione della funzionalità oppure in fase di esecuzione.

Che cosa accade se il pacchetto con il flusso di lavoro viene distribuito in un sito in cui non esiste l'elenco 'Vacation' o 'Vacation Request'?

L'attivazione della funzionalità del sito non riuscirà.

clip_image025

Il messaggio di errore non è molto dettagliato, ma cercando nel log ULS potrete trovare alcuni suggerimenti come il seguente:

"Workflow XAML failed validation due to the following errors: Failed to create a 'ListId' from the text '$ListId:Lists/Vacation;"

Tuttavia, dopo l'errore di attivazione della funzionalità, è possibile che la riattivazione abbia di nuovo esito negativo anche se sono stati creati gli elenchi necessari. Questo è dovuto al fatto che la definizione del flusso di lavoro è stata distribuita in modo incompleto. Sarà necessario effettuare le operazioni seguenti:

  • Aprire SPD ed eliminare la definizione del flusso di lavoro che ha avuto esito negativo durante l'attivazione della funzionalità
  • Disattivare la soluzione e rimuoverla
  • Caricare la soluzione e attivarla
  • Attivare la funzionalità del sito

In questo modo il problema dovrebbe risolversi.

Problemi noti

I problemi noti del pacchetto del flusso di lavoro sono i seguenti.

  • È necessario verificare che gli URL degli elenchi relativi (ad esempio 'Lists/Vacation') corrispondano. Anche se create un elenco con un nome specifico e quindi cambiate il nome, l'URL dell'elenco resterà invariato, poiché si basa sul nome visualizzato originale. Se pertanto avete creato il pacchetto del flusso di lavoro in base al nome aggiornato dell'elenco, il flusso di lavoro continuerà comunque a cercare un URL di elenco basato sul nome precedente nel sito di destinazione. Quando ricreate gli elenchi nel sito di destinazione, è necessario pertanto assegnare inizialmente agli elenchi il nome originale e non il nome aggiornato. In questo modo l'URL dell'elenco verrà mantenuto. Dopo la creazione dell'elenco, potrete cambiare il nome con quello aggiornato.
  • I pacchetti dei flussi di lavoro con nomi Unicode o DBCS verranno creati in file wsp con il nome predefinito 'WorkflowSolution.wsp' specificato a livello di codice.
  • È necessario aggiornare manualmente la pagina dopo essere passati a Risorse sito per visualizzare l'elenco aggiornato di soluzioni.
  • Se nel server di destinazione non sono presenti gli elenchi Attività flusso di lavoro e Cronologia flusso di lavoro, è possibile che venga visualizzato l'errore seguente facendo clic sul flusso di lavoro dalla pagina Impostazioni flusso di lavoro. Questo problema si verifica se distribuite il flusso di lavoro in un server di destinazione dove non sono stati mai creati flussi di lavoro in precedenza. Come soluzione, potete creare e pubblicare un flusso di lavoro fittizio da SPD in modo che vengano creati gli elenchi Attività flusso di lavoro e Cronologia flusso di lavoro. A questo punto potete aprire il flusso di lavoro distribuito da SPD, modificare le impostazioni degli elenchi Attività flusso di lavoro e Cronologia flusso di lavoro e ripubblicare il flusso di lavoro.clip_image026
  • Il pacchetto del flusso di lavoro del progetto verrà creato come per un normale flusso di lavoro sito. Per garantirne il corretto funzionamento, sarà necessario tuttavia inserire nel pacchetto anche entità del progetto quali il tipo di progetto organizzazione, le fasi, le colonne personalizzate e così via. Potete utilizzare come riferimento le linee guida del flusso di lavoro del progetto che verranno fornite dal team di Project.

Grazie,

JongHwa

Questo è un post di blog localizzato. L'articolo originale è disponibile in Packaging List, Site, and Reusable Workflow and How to Deploy the Package.