Pregunta

He desarrollado un flujo de trabajo de máquina de estados que actualmente funciona bien.Aunque esto está funcionando, los usuarios se quejan de ser bombardeados con correos electrónicos de tareas de flujo de trabajo que no tienen nada que ver con sus equipos.Dentro de la biblioteca de documentos en la que estoy ejecutando el flujo de trabajo, hay una columna que enumera las aplicaciones en las que trabaja cada equipo.¿Hay alguna manera de obtener la información de este campo y dirigirla al grupo correcto?Esto será dinámico por lo que el valor de la columna puede cambiar.La columna es un campo desplegable (del cual no puedes recuperar información... al menos creo), pero he creado un campo calculado para recuperar la información del menú desplegable para que esté en una columna estática.Además, creé una Lista externa con 3 columnas para intentar leer también:Grupo, sistema y aprobadores.

ES DECIR Si el usuario selecciona "Equipo" de la lista desplegable "Sistema", todos los miembros del grupo de aprobación "Mi Computadora La aplicación" debería recibir un correo electrónico en función de tener la cadena "Computadora" en el campo y el nombre del grupo, luego lo mismo ocurre con las otras opciones también con los grupos correctos.

Estoy seguro de que es posible una forma menos que óptima con declaraciones if-else enormes... tratando de hacerlo un poco más dinámico y no tan codificado...

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

ACTUALIZAR

Puedo devolver la lista y ahora puedo recuperar elementos según el ID del elemento, así

SPListItem item = list.GetItemById(26);

Necesito encontrar una manera de obtener todos los valores de la columna/campo cuando se activa el flujo de trabajo para poder pasar esa información a una variable.Una vez hecho esto, debería poder llamar a esa variable en mi consulta CAML para determinar dónde se debe enrutar cada tarea de elemento.Pensé que obtuve el GUID de la columna, pero era solo el GUId de la lista usando este código.

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

Solución

Su consulta devuelve un SPListItem, sin embargo necesitas un SPGroup para recuperar el correo electrónico de la lista de distribución.

Para llegar al SPGroup objeto que en realidad representa el grupo en sí en lugar del nombre del grupo como si regresara de la lista, debe extraerlo de una SPWeb (lo cual será un poco más complicado ya que un flujo de trabajo no se ejecuta en el contexto de una página;Te dejaré esto para que lo averigües).

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
}

Así es como obtienes la dirección de correo electrónico de un grupo a partir del nombre del grupo (que obtuviste de un SPListItem)

Licenciado bajo: CC-BY-SA con atribución
scroll top