In questo articolo viene riportata la procedura per creare un Workflow, tramite la tecnologia .Net, sia per il linguaggio Visual Basic Net e sia per il linguaggio C# con Windows Workflow Foundation.
In questo articolo il workflow avrà il compito di cambiare il titolo di un elemento (file word) , tramite l’avvio manuale, il rilascio e l'esecuzione del WF, verrà effettuata su una macchina virtuale (Virtual pc 2007), mentre sul pc host, tramite Visual Studio 2005, verrà creato il WorkFlow.
Dalla finestra creazione nuovo progetto, selezionate la voce “Sharepoint” come tipo progetto, mentre per il modello, selezionate “Sharepoint Server Sequential Workflow Library” come mostrato in figura 1.
Figura 1
Dopo aver assegnato il nome del progetto, digitate il pulsante ok, a questo punto verrà creato un progetto, con un file denominato workflow1 ed una cartella, nel cui interno si trovano due sotto cartelle contenente dei file XML.
Creazione del workflow
Il workflow, avrà due elementi, uno di tipo code ed un altro di tipo logToHistoryListActivity. Dalla barra degli strumenti (Windows Workflow) trascinate l’elemento “code”, sempre dalla barra degli strumenti, trascinate l’elemento logToHistoryListActivity che si trova nella sezione “Sharepoint Workflow”, il tutto come mostrato in figura 2.
Figura 2
Ora dobbiamo scrivere il codice per l’elemento CodeActivity1, selezionate tale elemento con il tasto destro del mouse, e fate click sulla voce “Generate handlers” del menu di scelta rapida.
Tramite il metodo Update dell’oggetto splistitem, aggiorniamo il valore della proprietà Title, dell’elemento selezionato in una lista.
Il codice delle suddette operazione dev’essere simile a quello riportato qui di seguito:
VB.Net
Private Sub codeActivity1_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim item As SPListItem = workflowProperties.Item
item("Title") = "Nuovo Titolo"
item.Update()
End Sub
C#
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
SPListItem item = workflowProperties.Item;
item["Title"] = "Nuovo Titolo";
item.Update();
}
Ora selezioniamo l'elemento logToHistoryListActivity e nella finestra delle proprietà di tale elemento, selezioniamo la voce “HistoryDescription”, nel bordo destro verrà visualizzato un pulsante con tre puntini, fate click su di esso, verrà aperta una finestra (figura 3). Selezionate la linguetta con la voce “Bind to a new member” e fate click sull’opzione “create Field” a questo punto, nella casella di testo new member name impostate il seguente valore “HistoryDescription” , il tutto come mostrato in figura 3.
Figura 3
A questo punto confermate tramite il pulsante ok.
Sempre nella finestra delle proprietà, selezionate la voce Historyoutcome, anche in questo caso verrà visualizzato un pulsante con tre puntini “…” fate click su esso e nella finestra che viene aperta, selezionate la paginetta con la scritta “Bind to a new member”, selezionate anche in questo caso l’opzione Create Field e nel campo New member name, scrivete il seguente valore” HistoryOutcome”. Queste operazione permetto di visualizzare del testo alla fine dell’esecuzione del workflow.
Selezioniamo l’elemento logToHistoryListActivity, e tramite il menu di scelta rapida selezioniamo la voce “generate Handlers” .
In questo modo verrà creato un metodo per l’evento MethodInvoking, in questo evento, inseriamo un testo che descriva che l’attività del Workflow è terminata.
Di seguito si riporta il codice di tale operazioni.
VB.Net
Private Sub logTerminate_MethodInvoking(ByVal sender As System.Object, ByVal e As System.EventArgs)
HistoryDescription = "Fine Attività"
HistoryOutcome = "Esempio WorkFlow"
End Sub
C#
private void logTerminate_MethodInvoking(object sender, EventArgs e)
{
HistoryDescription = "Fine Attività";
HistoryOutcome = "Esempio WorkFlow";
}
Creazione dei file XML.
Ora che il nostro Workflow è terminato, non ci resta che creare i file Xml, questi file (Feature.xml e Workflow.xml) permettono di installare ed impostare il nostro Workflow all’interno di Sharepoint.
Ma prima di crea i vari file xml, occorre compilare la dll in modalità sicura, per far ciò occorre impostare una firma.
Dalle proprietà del progetto , selezionate la voce Signing e mettete la spunta sulla voce Sign The assembly (figura 4), a questo punto selezionate dalla casella combinata la voce new, nella finestra che viene aperta, inserite un valore (Es. Nome del progetto) confermate tale finestra con il pulsante ok (la password può essere omessa).
Figura 4
Apriamo il file Feature.xml, che si trova nella cartella “DeploymentFiles->FeatureFiles” a questo punto inseriamo il code snippete denominato Feature.xml Code (Snippets->SharePoint Workflow) . Di seguito si riporta il file Feature.xml, completato nelle sue parti
Feature.xml
<?xmlversion="1.0"encoding="utf-8"?>
<!-- _lcid="1033" _version="12.0.3111" _dal="1" -->
<!-- _LocalBinding -->
<!-- Insert Feature.xml Code Snippet here. To do this:
1) Right click on this page and select "Insert Snippet" (or press Ctrl+K, then X)
2) Select Snippets->SharePoint Workflow->Feature.xml Code -->
<Feature Id="B0FB4FFA-5E72-41f7-9D89-CBEE56EE7B98"
Title="Cambia titolo"
Description="Esempio per cambiare il titolo di un elemento"
Version="12.0.0.0"
Scope="Site"
ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifestLocation="workflow.xml" />
</ElementManifests>
<Properties>
<PropertyKey="GloballyAvailable"Value="true" />
</Properties>
</Feature>
Ma vediamo in dettaglio i vari campi da valorizzare, l’attributo id, è un valore di tipo guid, per ottenere tale valore, selezionate create guid, dalla voce di menu tools di Visual Studio. Nella finestra che viene aperta, selezionate l’opzione “4 Registry format” a questo punto fate click sul pulsante copy e chiudete la finestra.
L’attributo Title è il titolo che verrà visualizzata nella lista dei workflow, mentre l’attributo Description, visualizzerà la descrizione.
L’attributo location del tag ElementManifest, indica il file workflow, in cui sono riportati alcune informazioni sul workflow.
Terminata la fase di configurazione del file feature.xml, salvate il tutto ed aprire il file Workflow.xml.
Anche per questo file, utilizzeremo il code snippet messo a disposizione da Visual Studio 2005.
Selezionate il code snippet denominato “Workflow.xml Code” (Snippets->SharePoint Workflow->)
Di seguito si riporta il file Workflow.xml valorizzato.
<?xmlversion="1.0"encoding="utf-8" ?>
<!-- _lcid="1033" _version="12.0.3015" _dal="1" -->
<!-- _LocalBinding -->
<!-- Insert Workflow.xml Code Snippet here. To do this:
1) Right click on this page and select "Insert Snippet" (or press Ctrl+K, then X)
2) Select Snippets->SharePoint Workflow->Workflow.xml Code -->
<Elementsxmlns="http://schemas.microsoft.com/sharepoint/">
<Workflow
Name="WF Cambia titolo"
Description="Un esempio di Workflow che cambia il titolo di un elemento"
Id="9B59F47B-9BD7-41cb-855C-834923375E41"
CodeBesideClass="SPWFEsempioCambiaTitolo.Workflow1"
CodeBesideAssembly="SPWFEsempioCambiaTitolo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9d296c56827eec37">
<Categories/>
<!-- Tags to specify InfoPath forms for the workflow; delete tags for forms that you do not have -->
<MetaData>
<AssociateOnActivation>false</AssociateOnActivation>
</MetaData>
</Workflow>
</Elements>
Ma vediamo in dettaglio i vari campi del file.
L’attributo Name, visualizza il nome del workflow nella lista dei workflow attivati, mentre l’attributo Description riporta la descrizione di tale worklow.
L’attributo Id, è un codice Guid, che si ottiene tramite la voce create guid, dal menu tools, selezionate l’opzione “4 Registry Format” e copiate il valore generato in tale tag.
L’attributo codebesideClass, come valore va impostato il nome del progetto (SPWFEsempioCambiaTitolo) seguito dal punto ed il nome della classe del workflow.
L’ultimo valore da impostare è il publickeyToken, questo valore si ottiene salvando nella gac la dll generata.
Per ottenere tale valore, si può procedere in due modi,. o installare la dll tramite il comando GacUtil oppure trascinate la dll nella cartella Assembly situata nella cartella Windows, a questo punto nelle proprietà del componente sarà visibile il publiktoken, come mostrato in figura 5
Figura 5
Installazione del Workflow
Ora non ci resta che installare il nostro workflow. Copiamo nella macchina virtuale, i seguenti file la dll (SPWFEsempioCambiaTitolo.dll) ed i due file Xml (Feature.xml e Workflow.xml).
I file xml, si devono trovare in una nostra cartella situata nella cartella di sistema di Sharepoint denominata Feature. In questa cartella, si trovano diverse sottocartelle, nelle quali si trovano i file xml per i vari componenti installati sul portale.
Create una cartella denominata “SPWFEsempioCambiaTitolo”, nella cartella feature (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES) .
A questo punto copiate i file xml nella cartella creata.
Trascinate la dll, nella cartella Assembly, in questo modo verrà registrata nel sistema.
Per installare il file di configurazione (feature.xml) occorre utilizzare il tools stsadm passando determinati argomenti, tale tools si trova nella cartella bin (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN).
Di seguito si riporta il comando(dalla finestra a riga di comando), completo dei parametri.
Stsadm.exe -o installfeature -filename SPWFEsempioCambiaTitolo\feature.xml -force
Il parametro installFeature, indica che viene installato il file xml, da notare che il percorso della cartella, va riportato solo quella in cui si trovano i file xml.
Se è tutto corretto (sia il file feature.xml e sia il file Workflow) verrà visualizzato il seguente messaggio “Operazione Completata”.
A questo punto occorre riavviare il Web Server IIS, tramite il comando IISReset.
Attivare ed impostare il Workflow
Una volta aperto Sharepoint 2007 ed il sito web di test, selezionate la voce “Impostazioni sito” che si trova nel menu azioni sito (posto in alto a sinistra).
Nella finestra impostazioni sito, fate click sulla voce “Caratteristiche raccolta siti” situato nella parte “Amministrazione raccolta siti” come mostrato in figura 6.
Figura 6
Nella pagina che viene aperta, sono elencati i vari componenti disponibili in sharepoint, che possono essere attivati o disattivati. Facciamo click sul pulsante attiva, del nostro workflow per attivarlo, come mostrato in figura 7.
Figura 7
Ora dobbiamo inserire il nostro Workflow nella lista dei documenti, per far ciò sempre nella pagina impostazioni sito, selezionate la voce “Raccolte ed elenchi del sito” nella sezione Amministrazione sito come mostrato in figura 8.
Figura 8
Selezionate nella parte elenco sito, la voce denominata "Documenti" , e nella pagina che viene aperta, fate click sulla voce “Impostazioni flusso di lavoro” nella categoria Autorizzazioni e gestione come mostrato in figura 9.
Figura 9
Nella pagina che viene aperta, selezionate il nome del WorkFlow, nella casella nome, impostate un nome per identificare tale flusso di lavoro. Lasciate tutto invariato (figura 10) e confermate la pagina tramite il pulsante ok .
Figura 10
Testare il workflow
Ora non ci resta che testare il nostro Worflow, facciamo click sull’elenco “Documenti” e selezioniamo un documento (se non esiste, create un nuovo documento Word) dal menu di tale elemento selezioniamo la voce Flusso di lavoro (come mostrato in figura 11)
Figura 11
Nella pagina che viene aperta (figura 12) selezionare il nome del workflow.
Figura 12
Al termine dell'esecuzione del workflow, se tutto è andato a buon fine, verrà visualizzato un messaggio indicante “completato”.
A questo punto, per verificare se il valore title è stato modificato, selezionare il documento, e dal menu di scelta rapida (figura 11) selezionare la voce modifica proprietà.
Conclusioni:
In questo articolo si è visto come creare in Visual Studio 2005, un semplice Workflow tramite il linguaggio Visual Basic Net e C# per Sharepoint 2007. L’articolo ha mostrato non lo sviluppo ma anche il rilascio , la configurazione e l’esecuzionie.
Tramite la parola Download è possibile scaricare l'esempio utilizzato in questo articolo.
Download