Compartir a través de


Flujos de trabajo, acciones (actividades), eventos y formularios en el modelo de complementos de SharePoint

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.
  • 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 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.

Ejemplos de PnP

Se aplica a

  • Office 365 multiempresa (MT)
  • Office 365 dedicado (D)
  • SharePoint 2013 local