none
SP2010 workflow: modifiche ad un item RRS feed

  • Domanda

  • Ho creato un workflow su una lista "progetti" che ha un campo "collaboratori", ossia un campo di lookup che può contenere molteplici valori

    Quando creo un nuovo progetto voglio che tutti i collaboratori coinvolti vengano notificati con una mail. Per far ciò ho creato appunto il workflow che genera i vari task (uno per ogni collaboratore). Il workflow si attiva sia quando un nuovo progetto viene creato, sia quando uno esistente viene modificato, perchè qualora venisse aggiunto un nuovo collaboratore, voglio che questo venga notificato con una mail.

    Esiste un metodo l'interno del workflow per venire a conoscenza delle modifiche apportate all'item? Normalmente userei un event recevier di tipo ItemUpdating, per conforntare i dati prima e dopo la modifica. Tuttavia all'interno del workflow non riesco ad accedere a queste proprietà...
    Esiste una soluzione?

    lunedì 8 novembre 2010 11:34

Risposte

  • L'unica soluzione funzionante che sono riuscito ad implementare è la seguente:
    creare nella lista una colonna nascosta che contiene un altro lookup alla lista collaboratori, nella quale inserire una copia dei valori della colonna originale dopo ogni modifica. Prima di fare questa copia peró, all'interno del workflow che si attiva in risposta alla modifica di un item della lista, controllare le differenze tra la la colonna collaboratori appena modificata e la colonna nascosta che contiene ancora i vecchi valori. In questo modo riesco ad ottenere solamente i collaboratori "nuovi" ;)

    • Contrassegnato come risposta MMaik martedì 9 novembre 2010 15:35
    martedì 9 novembre 2010 15:35

Tutte le risposte

  • Sennò basterebbe in qualche modo accedere dal workflow ai dati utilizzati nell'event receiver (ad esempio i dati che mi servono sono memorizzati in dei semplici ArrayList)
    Eppure non riesco in nessun modo, neanche inserendo workflow e receiver nello stesso progetto e nello stesso namespace
    lunedì 8 novembre 2010 14:04
  • L'unica soluzione funzionante che sono riuscito ad implementare è la seguente:
    creare nella lista una colonna nascosta che contiene un altro lookup alla lista collaboratori, nella quale inserire una copia dei valori della colonna originale dopo ogni modifica. Prima di fare questa copia peró, all'interno del workflow che si attiva in risposta alla modifica di un item della lista, controllare le differenze tra la la colonna collaboratori appena modificata e la colonna nascosta che contiene ancora i vecchi valori. In questo modo riesco ad ottenere solamente i collaboratori "nuovi" ;)

    • Contrassegnato come risposta MMaik martedì 9 novembre 2010 15:35
    martedì 9 novembre 2010 15:35
  • Ciao MMAik !
    Avresti potuto anche abilitare le versioni sulla tua lista e poi controllare i valori del campo collaboratori della versione precedente a quella attuale. Il tutto da gestire alla modifica dell'elemento ovviamente.

    Una cosa di questo tipo:

    //..
    SPListItem myItem = myList.GetItemById(itemId); 
     
    if (myItem.Versions.Count > 1) 
    { 
      SPListItemVersion newItem = myItem.Versions[0]; 
      SPListItemVersion oldItem = myItem.Versions[1]; 
    } 
    
    

    Giuseppe Marchi - SharePoint MVP
    www.peppedotnet.it
    www.dev4side.com
    www.sharepointcommunity.it
    Twitter: @PeppeDotNet
    mercoledì 10 novembre 2010 08:56