Pergunta

Desenvolvi um fluxo de trabalho de máquina de estado que atualmente está funcionando bem.Embora isso esteja funcionando, os usuários estão reclamando de serem bombardeados com e-mails de tarefas de fluxo de trabalho que não têm nada a ver com suas equipes.Dentro da biblioteca de documentos em que estou executando o fluxo de trabalho, há uma coluna que lista os aplicativos nos quais cada equipe trabalha.Existe uma maneira de obter as informações deste campo e encaminhar para o grupo correto.Isso será dinâmico, portanto o valor da coluna pode mudar.A coluna é um campo suspenso (do qual você não pode recuperar informações... pelo menos eu acho), mas criei um campo calculado para recuperar as informações do menu suspenso para que fiquem em uma coluna estática.Além disso, criei uma Lista externa com 3 colunas para tentar ler também:Grupo, Sistema e Aprovadores.

I.E. Se o usuário escolher "Computador" na lista suspensa "Sistema", todos no grupo de aprovação "Meu Computador App" deve receber um e-mail com base na string "Computador" no campo e no nome do grupo, o mesmo vale para as outras opções com os grupos corretos.

Uma maneira nada ideal com enormes declarações if-else, tenho certeza que é possível... tentando torná-lo um pouco mais dinâmico e não tão codificado.

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

ATUALIZAR

Consigo retornar a lista e agora posso recuperar itens com base no ID do item, assim

SPListItem item = list.GetItemById(26);

Preciso encontrar uma maneira de obter todos os valores da coluna/campo quando o fluxo de trabalho for acionado para que eu possa passar essas informações para uma variável.Feito isso, poderei chamar essa variável em minha consulta CAML para determinar para onde cada tarefa de item precisa ser roteada.Pensei ter obtido o GUID da coluna, mas era apenas o GUId da própria lista usando este código

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

Solução

Sua consulta retorna um SPListItem, no entanto, você precisa de um SPGroup para recuperar o e-mail da lista de distribuição.

Para chegar ao SPGroup objeto que na verdade representa o próprio grupo, em vez do nome do grupo, como você está retornando da lista, você precisa extraí-lo de um SPWeb (o que será um pouco mais complicado, pois um fluxo de trabalho não é executado no contexto de uma página;Vou deixar isso para você descobrir).

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
}

É assim que você obtém o endereço de e-mail de um grupo a partir do nome do grupo (que você obteve de um SPListItem)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top