El flujo de trabajo no puede asignar tarea al usuario en otro OU de Active Directory?
-
16-10-2019 - |
Pregunta
Estoy tratando de crear una tarea, en un flujo de trabajo VS 2010, y asignarla a uno de nuestros usuarios de dominio. Este tipo no es un usuario de la colección de sitios, pero supongo que se agregará a SharePoint automáticamente. También se encuentra en otra sucursal de la compañía, en algún lugar de Sudáfrica. El código que estoy usando es algo como
private void CreateTask_MethodInvoking(object sender, EventArgs e)
{
TaskProps = new SPWorkflowTaskProperties();
TaskId = Guid.NewGuid();
TaskProps.AssignedTo = @"MYDOMAIN\username";
TaskProps.Title = "Sample task";
}
Una vez que despliegue y ejecuto el flujo de trabajo, la tarea se crea bien, pero el campo "Asignado a" está en blanco. El registro de eventos muestra que "el usuario no existe o no es único".
Además, si creo una tarea a mano, y pongo MyDomain UserName en el campo "Asignado a", se crea sin problemas y el usuario se importa a la colección del sitio. Después de eso, el flujo de trabajo funciona bien. Sin embargo, agregar manualmente a cada uno de nuestros más de 200 usuarios de dominio a la colección del sitio no es una opción. ¿Sugerencias?
Solución
La suposición de que el usuario se agrega a la colección del sitio no es cierta. No puede asignar una tarea a un usuario que no tiene permisos en la colección del sitio, sin embargo, no tiene que agregar todos los usuarios manualmente.
- Haga lo que sugiere Mbsurf y agregue al usuario en código
- Ponga a todos los usuarios en un grupo en AD (si aún no tiene uno) y asigne el grupo al sitio de SharePoint
- Otorgar permisos de "todos los usuarios autenticados" a la lista de tareas para que las tareas se puedan asignar a cualquier persona ...
Otros consejos
En Moss, haría algo como a continuación:
SPUser spUser = null;
try
{
// Attempt to get the user first
spUser = userCollection[user];
}
catch (Exception)
{
// The User does not exist, so we need to add them
userCollection.Add(user, string.Empty, user, string.Empty);
spUser = userCollection[user];
}
Luego, salvaría a Spuser en el campo asignado al campo.