Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Resumen
El enfoque que se usa para implementar flujos de trabajo y sus componentes asociados es diferente en el nuevo modelo de complemento de SharePoint que con código de plena confianza. En un escenario típico de solución de granja o código de plena confianza (FTC), los flujos de trabajo y sus componentes asociados se compilaron con código del lado servidor e implementaron a través de soluciones de SharePoint. Los flujos de trabajo y sus componentes asociados se ejecutaron en el servidor de SharePoint.
En un escenario de modelo de complemento de SharePoint, los flujos de trabajo y sus componentes asociados se desarrollan con código que se ejecuta en servidores remotos. Los flujos de trabajo y sus componentes asociados se registran con el servicio de flujo de trabajo, pero todo el código se ejecuta en servidores remotos.
Directrices avanzadas
Como regla general, nos gustaría proporcionar las siguientes directrices de alto nivel para crear flujos de trabajo y sus componentes asociados en el nuevo modelo de complemento de SharePoint.
- El código subyacente a los flujos de trabajo no está disponible en Office 365 tenencias o con el modelo de complemento de SharePoint en general.
- Todo el código subyacente asociado a flujos de trabajo y sus componentes asociados debe colocarse en un servicio web externo que se ejecute en un servidor remoto.
Opciones para crear flujos de trabajo personalizados y sus componentes asociados
Tiene algunas opciones para crear flujos de trabajo personalizados y sus componentes asociados.
- Creación de flujos de trabajo personalizados
- Creación de actividades de flujo de trabajo personalizadas
- Creación de eventos de flujo de trabajo personalizados
- Creación de formularios de flujo de trabajo personalizados
Creación de flujos de trabajo personalizados
En esta opción, se crean, implementan y asocian flujos de trabajo personalizados con host-web en SharePoint.
- Los flujos de trabajo personalizados se pueden crear con Visual Studio o SharePoint Designer.
- Consulte el artículo Desarrollo de flujos de trabajo de SharePoint 2013 con Visual Studio (artículo de MSDN) en el que se resumen ambas opciones y se describen las ventajas y desventajas de cada una.
- Los flujos de trabajo personalizados se pueden implementar y asociar a host web en SharePoint de varias maneras.
- Los flujos de trabajo creados en Visual Studio se empaquetan automáticamente dentro de las características para la implementación.
- Los flujos de trabajo creados en el diseñador de SharePoint deben exportarse e importarse para implementarlos desde un servidor de desarrollo en un servidor de producción.
- Los flujos de trabajo también se pueden implementar y asociar con la web host en SharePoint a través del patrón de aprovisionamiento remoto. Vea el aprovisionamiento de sitios (receta de complemento de SharePoint) para obtener más detalles sobre el patrón de aprovisionamiento remoto.
En el ejemplo de código siguiente se muestra cómo usar CSOM para aprovisionar un flujo de trabajo y las listas que admiten el flujo de trabajo.
public void ProvisionIncidentWorkflowAndRelatedLists(string incidentWorkflowFile, string suiteLevelWebAppUrl, string dispatcherName)
{
//Return the list the workflow will be associated with
var incidentsList = CSOMUtil.GetListByTitle(clientContext, "Incidents");
//Create a new WorkflowProvisionService class instance which uses the
//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager to
//provision and configure workflows
var service = new WorkflowProvisionService(clientContext);
//Read the workflow .XAML file
var incidentWF = System.IO.File.ReadAllText(incidentWorkflowFile);
//Create the WorkflowDefinition and use the
//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager
//to save and publish it.
//This method is shown below for reference.
var incidentWFDefinitionId = service.SaveDefinitionAndPublish("Incident",
WorkflowUtil.TranslateWorkflow(incidentWF));
//Create the workflow tasks list
var taskListId = service.CreateTaskList("Incident Workflow Tasks");
//Create the workflow history list
var historyListId = service.CreateHistoryList("Incident Workflow History");
//Use the Microsoft.SharePoint.Client.WorkflowServices.WorkflowSubscriptionService to
//subscibe the workflow to the list the workflow is associated with, register the
//events it is associated with, and register the tasks and history list.
//This method is shown below for reference.
service.Subscribe("Incident Workflow", incidentWFDefinitionId, incidentsList.Id,
WorkflowSubscritpionEventType.ItemAdded, taskListId, historyListId);
}
public Guid SaveDefinitionAndPublish(string name, string translatedWorkflows)
{
var definition = new WorkflowDefinition(ClientContext)
{
DisplayName = name,
Xaml = translatedWorkflows
};
var deploymentService = workflowServicesManager.GetWorkflowDeploymentService();
var result = deploymentService.SaveDefinition(definition);
ClientContext.ExecuteQuery();
deploymentService.PublishDefinition(result.Value);
ClientContext.ExecuteQuery();
return result.Value;
}
public Guid Subscribe(string name, Guid definitionId, Guid targetListId, WorkflowSubscritpionEventType eventTypes, Guid taskListId, Guid historyListId)
{
var eventTypesList = new List<string>();
foreach (WorkflowSubscritpionEventType type in Enum.GetValues(typeof(WorkflowSubscritpionEventType)))
{
if ((type & eventTypes) > 0)
eventTypesList.Add(type.ToString());
}
var subscription = new WorkflowSubscription(ClientContext)
{
Name = name,
Enabled = true,
DefinitionId = definitionId,
EventSourceId = targetListId,
EventTypes = eventTypesList.ToArray()
};
subscription.SetProperty("TaskListId", taskListId.ToString());
subscription.SetProperty("HistoryListId", historyListId.ToString());
var subscriptionService = workflowServicesManager.GetWorkflowSubscriptionService();
var result = subscriptionService.PublishSubscriptionForList(subscription, targetListId);
ClientContext.ExecuteQuery();
return result.Value;
}
¿Cuándo es una buena opción?
Cuando necesite crear flujos de trabajo personalizados con código detrás de ellos, esta opción es una buena opción.
Introducción
En los artículos siguientes se muestra cómo crear flujos de trabajo personalizados.
- Creación de una aplicación de flujo de trabajo de SharePoint con Visual Studio 2012 (artículo de MSDN)
- Cómo: Crear flujos de trabajo de SharePoint 2013 mediante Visual Studio (artículo de MSDN)
Creación de actividades de flujo de trabajo personalizadas
En esta opción, se crean e implementan actividades de flujo de trabajo personalizadas en SharePoint.
- Las actividades de flujo de trabajo personalizadas se pueden crear con Visual Studio.
- Es posible que las actividades de flujo de trabajo personalizadas no se creen con Designer de SharePoint.
- Las actividades de flujo de trabajo personalizadas se pueden usar en SharePoint Designer después de implementarlas en un entorno de SharePoint.
¿Cuándo es una buena opción?
Cuando necesite implementar flujos de trabajo en procesos empresariales cuyos requisitos no cumple la biblioteca integrada de acciones de flujo de trabajo en SharePoint Designer
Introducción
En el siguiente artículo se muestra cómo crear una actividad de flujo de trabajo personalizada con Visual Studio.
Workflow.Activities (ejemplo PnP de O365) incluye varias actividades de flujo de trabajo personalizadas creadas con Visual Studio. También se muestra cómo usar las actividades de flujo de trabajo personalizadas en un flujo de trabajo.
Creación de eventos de flujo de trabajo personalizados
En esta opción, se crean e implementan eventos de flujo de trabajo personalizados en SharePoint.
- Los eventos de flujo de trabajo personalizados se pueden crear con Visual Studio.
- Es posible que los eventos de flujo de trabajo personalizados no se creen con Designer de SharePoint.
- Los eventos de flujo de trabajo personalizados se pueden usar en SharePoint Designer después de implementarlos en un entorno de SharePoint.
¿Cuándo es una buena opción?
Cuando necesite implementar flujos de trabajo en procesos empresariales cuyos requisitos requieren que los flujos de trabajo esperen a un evento personalizado antes de continuar.
Introducción
Workflow.CustomEvents (ejemplo PnP de O365) muestra cómo crear un flujo de trabajo que espera a que se active una personalizada incluso antes de continuar. También se muestra cómo usar el modelo de objetos del lado cliente (JSOM) de JavaScript para que el Administrador de servicios de flujo de trabajo genere un evento personalizado.
Creación de formularios de flujo de trabajo personalizados
En esta opción, se crean e implementan formularios de flujo de trabajo personalizados en SharePoint.
- Los formularios de flujo de trabajo personalizados se pueden crear con Visual Studio.
- Es posible que los formularios de flujo de trabajo personalizados no se creen con Designer de SharePoint.
- Los formularios de flujo de trabajo personalizados se pueden usar en SharePoint Designer después de implementarlos en un entorno de SharePoint.
¿Cuándo es una buena opción?
Cuando necesite implementar flujos de trabajo en procesos empresariales cuyos requisitos requieren formularios personalizados.
Introducción
En el siguiente artículo se muestra cómo crear formularios personalizados de asociación e iniciación de flujo de trabajo y usarlos en un flujo de trabajo.
Workflow.CustomTasks (ejemplo PnP de O365) muestra cómo crear formularios de inicio y tareas personalizados y usarlos en un flujo de trabajo.
Opciones para actualizar datos de SharePoint desde un flujo de trabajo personalizado
Tiene un par de opciones para actualizar los datos de SharePoint desde un flujo de trabajo personalizado.
- Use el token de contexto y la dirección URL web del complemento para autenticarse en SharePoint.
- Use la dirección URL web del complemento y el proxy web de SharePoint para autenticarse en SharePoint.
Uso del token de contexto y la dirección URL web del complemento para autenticarse en SharePoint
En esta opción se pasa el token de contexto y la dirección URL web del complemento del flujo de trabajo al servicio al que llama el flujo de trabajo a través de encabezados HTTP. El servicio usa el token de contexto y la dirección URL web del complemento para autenticarse en SharePoint y devolver un token de acceso antes de actualizar los datos de SharePoint.
- Este enfoque requiere pasar el token de contenido del flujo de trabajo al servicio web.
¿Cuándo es una buena opción?
Cuando desee que la comunicación con SharePoint se produzca en el nivel de cliente.
Introducción
En el ejemplo siguiente se muestra cómo usar el token de contexto y la dirección URL web del complemento para autenticarse en SharePoint y actualizar los datos de SharePoint.
Consulte la sección Call Web Api service (Llamar al servicio api web ) en el archivo README Workflow.CallCustomService (ejemplo PnP de O365) para obtener más información sobre cómo pasar el token de contexto y la dirección URL web del complemento del flujo de trabajo al servicio.
Las otras secciones del archivo README Workflow.CallCustomService (ejemplo PnP de O365) proporcionan información detallada sobre todo el flujo de trabajo y el servicio remoto y también le guían a través de la configuración de todos los componentes de Microsoft Azure.
Usar la dirección URL web del complemento y el proxy web de SharePoint para autenticarse en SharePoint
En esta opción, cuando se inicia el flujo de trabajo, pasa la dirección URL web del complemento del flujo de trabajo al servicio al que llama el flujo de trabajo. El servicio pasa la dirección URL web del complemento al proxy web de SharePoint. El proxy web de SharePoint usa la dirección URL web del complemento para autenticarse en SharePoint y devolver un token de acceso. A continuación, el proxy web de SharePoint anexa el token de acceso a los encabezados HTTP antes de realizar la llamada para actualizar los datos de SharePoint.
- Este enfoque no requiere pasar el token de contenido del flujo de trabajo al servicio web.
¿Cuándo es una buena opción?
Cuando desee que la comunicación con SharePoint se produzca en el nivel de servidor.
Introducción
En el ejemplo siguiente se muestra cómo usar la dirección URL web del complemento y el proxy web de SharePoint para autenticarse en SharePoint y actualizar los datos de SharePoint.
Consulte la sección Call Web Api service via web proxy (Llamar al servicio api web a través de proxy web ) en EL ARCHIVO LÉAME Workflow.CallServiceUpdateSPViaProxy (ejemplo PnP de O365) para obtener más detalles sobre la invocación del proxy web de SharePoint.
Las demás secciones del archivo README Workflow.CallServiceUpdateSPViaProxy (ejemplo PnP de O365) proporcionan información detallada sobre todo el flujo de trabajo y el servicio remoto y también le guían a través de la configuración de todos los componentes de Microsoft Azure.
Consulte Consulta de un servicio remoto mediante el proxy web en SharePoint 2013 (artículo de MSDN) para obtener más información sobre el proxy web de SharePoint.
Vínculos relacionados
- Modelo de objetos de flujo de trabajo de SharePoint 2013 (artículo de MSDN)
- Mensajes de error comunes en el desarrollo de flujos de trabajo de SharePoint (artículo de MSDN)
- Uso de la interoperabilidad de flujo de trabajo para SharePoint 2013 (artículo de MSDN)
- Desarrollo de flujos de trabajo de SharePoint 2013 mediante Visual Studio (artículo de MSDN)
- Aprovisionamiento de sitios (receta de complemento de SharePoint)
- Creación de una aplicación de flujo de trabajo de SharePoint con Visual Studio 2012 (artículo de MSDN)
- Cómo: Crear flujos de trabajo de SharePoint 2013 mediante Visual Studio (artículo de MSDN)
- Cómo: Compilar e implementar acciones personalizadas de flujo de trabajo (artículo de MSDN)
- Cómo: Crear formularios de flujo de trabajo personalizados de SharePoint Server 2013 con Visual Studio 2012 (artículo de MSDN)
- Consulta de un servicio remoto mediante el proxy web en SharePoint 2013 (artículo de MSDN)
- Módulos (receta de complemento de SharePoint)
- Aprovisionamiento de sitios (receta de complemento de SharePoint)
- Artículos de orientación en https://aka.ms/OfficeDevPnPGuidance
- Referencias en MSDN en https://aka.ms/OfficeDevPnPMSDN
- Vídeos en https://aka.ms/OfficeDevPnPVideos
Ejemplos de PnP
- Workflow.Activities (ejemplo PnP de O365)
- Workflow.CustomEvents (ejemplo PnP de O365)
- Workflow.CustomTasks (ejemplo PnP de O365)
- Workflow.CallCustomService (ejemplo PnP de O365)
- Workflow.CallServiceUpdateSPViaProxy (ejemplo PnP de O365)
- Ejemplos y contenido en Patrones y prácticas de Microsoft 365 (PnP)
Se aplica a
- Office 365 multiempresa (MT)
- Office 365 dedicado (D)
- SharePoint 2013 local