Domanda

Ho sviluppato un flusso di lavoro della macchina dello stato che è finita con finitura bene. Anche se questo funziona, gli utenti si lamentano di essere bombardati con le e-mail delle attività del flusso di lavoro che non hanno nulla a che fare con le loro squadre. All'interno del DOC Lib, eseguo il flusso di lavoro, c'è una colonna che elenca applicazioni che ogni squadra funziona. C'è un modo per ottenere le informazioni da questo campo e percorso verso il gruppo corretto. Questo sarà dinamico in modo che il valore della colonna possa cambiare. La colonna è un campo a discesa ( che non è possibile recuperare le informazioni da ... anche io penso ), ma ho creato un campo calcolato per recuperare le informazioni dal menu a discesa, quindi sarà in una colonna statica. Inoltre, ho creato un elenco esterno con 3 colonne per provare a leggere anche da: Gruppo, Sistema e Autoventi.

IE Se l'utente sceglie "Computer" da un elenco a discesa "System", tutti nel gruppo di approvazione "My Computer App" dovrebbe ottenere un'e-mail basata Avere la stringa "Computer" nel campo e nel nome del gruppo, allora lo stesso vale anche per le altre scelte con i gruppi corretti.

Un modo meno ottimale con enormi dichiarazioni se-all else sono sicuro che è possibile .... cercando di renderlo un po 'più dinamico e non come codificato rigido.

if (Listitem = system
createTask_taskProperties.AssignedTo = "IT Group A"
{
e.Result = true;
}
else
{
if (Listitem = system 2......
.

AGGIORNAMENTO

Sono in grado di restituire l'elenco e ora posso recuperare elementi in base all'ID dell'oggetto come

SPListItem item = list.GetItemById(26);
.

Ho bisogno di trovare un modo per ottenere tutti i valori per la colonna / campo quando viene attivato il flusso di lavoro, quindi sono in grado di passare tali informazioni a una variabile. Una volta terminato, dovrei essere in grado di chiamare quella variabile nella mia query Caml per determinare dove deve essere indirizzata ogni attività dell'articolo. Pensavo di aver ricevuto il GUID dalla colonna, ma era solo il GUID per la lista stessa usando questo codice

SPListItem item2 = list.GetItemByUniqueId[new Guid("de417a82-f221-46bd-8003-034ea45de155")];
.

È stato utile?

Soluzione

La tua query restituisce un SPListItem , tuttavia hai bisogno di un SPGroup per recuperare l'e-mail dell'elenco di distribuzione. Per arrivare al SPGroup Object che in realtà Rappresenta il gruppo stesso piuttosto che il nome del gruppo come torni dall'elenco, è necessario estrarlo da un SPWeb (che sarà un po 'più complicato poiché un flusso di lavoro non funziona nel contesto di una pagina; ti lascio a te per capire). .

SPListItem item = list.GetItemById(26); // <-- This is your code here
string strGroupName = item["ColumnWithGroupName"].ToString();

// Get your SPWeb object from which to pull the group here
using (SPWeb webYourWeb = ...)
{
    // (Use SiteGroups or Groups here depending on where you want to pull the group from)
    SPGroup group = webYourWeb.SiteGroups[strGroupName];
    string strGroupEmail = group.DistributionGroupEmail;

    // Send your email
}
.

È così che ottieni l'indirizzo email di un gruppo dal nome del gruppo (che hai ottenuto da un SPListItem )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top