Procedimiento para crear un flujo de trabajo de bifurcación (traducción automática)

Importante

Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Los flujos de trabajo de gobierno en Microsoft Project Server 2010 se usan para facilitar la administración de propuestas de proyectos y análisis de cartera. El ejemplo de este artículo es un flujo de trabajo de gobierno básico que se integra con tres fases en la fase de creación de administración de propuestas y una cuarta fase en la fase de administración. El ejemplo de BranchingWorkflow usa las fases predeterminadas instaladas con Project Server 2010. (Este artículo se basa en contenido de Sam Chung, Microsoft Corporation).

Nota

En este artículo se basa en el uso de Microsoft Visual Studio 2010. Antes de empezar a desarrollar un flujo de trabajo Project Server 2010, consulte la información en Procedimiento para configurar Visual Studio 2010 para un flujo de trabajo de Project Server (traducción automática).

En este artículo se incluyen las siguientes secciones:

  • Creación de un flujo de trabajo de bifurcación para varias fases

    • Planificación de un flujo de trabajo de bifurcación

    • Creación de un flujo de trabajo de Project Server

  • Adición de actividades de flujo de trabajo de Project Server

    • Enlace una actividad de flujo de trabajo a una fase

    • Actualizar el estado de fase

    • Creación de una actividad de comparación

    • Crear una si – rama Else

    • Enlace de la rama IfTrue a detalles de la propuesta

    • Enlace de la rama IfFalse al rechazo automatizado

    • Enlazar a la etapa Final de ejecución

  • Ejemplo de código completo

Importante

Flujos de trabajo desarrolladas para versiones preliminares de Project Server 2010 deben ser modificados para deshacerse de las propiedades de flujo de trabajo (como en el procedimiento 1b) y el contexto del flujo de trabajo y, a continuación, vuelve a compilar y volver a implementar para la versión de lanzamiento.

Para implementar un flujo de trabajo en un equipo de Project Server de producción o para actualizar un flujo de trabajo si hace un código de cambio, consulte Procedimiento para implementar un flujo de trabajo de Project Server (traducción automática) para obtener información acerca de cómo crear un paquete de solución de SharePoint y actualizar el flujo de trabajo.

Si utiliza Visual Studio 2010 para instalar un flujo de trabajo en una instalación de prueba de Project Server, consulte Procedimiento para instalar y probar un flujo de trabajo de Project Server (traducción automática).

Para obtener una introducción a conceptos de flujo de trabajo en Project Server 2010, consulte Administración de propuestas y flujos de trabajo (traducción automática).

Creación de un flujo de trabajo de bifurcación para varias fases

Flujos de trabajo de Project Server para la gestión de la demanda son flujos de trabajo secuenciales. Aunque un flujo de trabajo de equipo de estado puede tener opciones para guardar y volver a estados anteriores, los procesos de administración de la demanda y las páginas de detalles del proyecto relacionado se requieren en flujos de trabajo secuenciales.

Siguientes son los pasos generales para crear un proyecto de desarrollo de flujo de trabajo de bifurcación varias fases.

  1. El proyecto de flujo de trabajo de planear y diseñar el flujo secuencial de lógica con las actividades de flujo de trabajo.

    Sugerencia

    Microsoft Visio 2010 puede ayudarle a las actividades de flujo de trabajo del diagrama y lógica antes de crear las actividades con el Diseñador de flujo de trabajo de SharePoint en Visual Studio.

  2. En Visual Studio, cree un proyecto de flujo de trabajo de SharePoint (2010) y agregar el marco de trabajo de flujo de trabajo de Project Server.

  3. Desarrollar el flujo de trabajo con actividades de Project Server y SharePoint. Vincular las actividades a las fases en el proceso de administración de la demanda.

  4. Compilar y distribuir el flujo de trabajo. Para obtener más información, consulte Procedimiento para instalar y probar un flujo de trabajo de Project Server (traducción automática).

Un flujo de trabajo de varias fases de planificación

Un flujo de trabajo de Project Server se puede integrar con varias etapas y fases de un proceso de administración de la demanda. Debido a que los flujos de trabajo y las fases pueden ser complejas, es necesario comprender los requerimientos del negocio por completo y planear un flujo de trabajo cuidadosamente antes de iniciar el proyecto de desarrollo.

Para ver las fases de flujo de trabajo que se instala con Project Server 2010, Project Web App de inicio, haga clic en Configuración del servidor de inicio rápido y, a continuación, haga clic en Las fases del flujo de trabajo en la sección flujo de trabajo y páginas de detalles del proyecto . Las fases del flujo de trabajo predeterminada son crear, seleccione, planificar, administrar y terminada. Para ver las fases del flujo de trabajo en cada fase y los campos personalizados relacionados, haga clic en Las fases del flujo de trabajo en la página Configuración del servidor. Por ejemplo, la fase de creación incluye detalles de la propuesta inicial, detalles de la propuesta, rechazo automatizada y otras fases; la fase de administración incluye la fase de ejecución.

Figura 1. Fases y fases de la aplicación Web de proyecto

Fases de Project Web Access

Figura 2 muestra el diseño básico del bifurcación sencillo ejemplo de flujo de trabajo en este artículo, mediante la plantilla de diagrama de flujo de trabajo de Visio. El flujo de trabajo se inicia con el escenario de detalles de la propuesta inicial. Una actividad de flujo de trabajo, obtiene el costo del proyecto propuesto de un campo personalizado establecido por el escenario de detalles de la propuesta inicial. En este ejemplo, si el costo es superior a US$ 25.000, el flujo de trabajo queda a la fase de rechazo automático; de lo contrario, el flujo de trabajo continúa con el escenario de detalles de la propuesta, espera la finalización de las páginas de detalles del proyecto asociado (PDP) y, a continuación, pase a la fase de ejecución donde el usuario puede empezar a administrar el proyecto.

Figura 2. Diseñar un flujo de trabajo con la plantilla de diagrama de flujo de trabajo de Visio

Diseño de un flujo de trabajo con Visio

Creación de un flujo de trabajo de Project Server

El marco de trabajo para un flujo de trabajo secuencial de Project Server incluye una actividad de ProjectSequence que contiene todas las demás actividades de flujo de trabajo. Cada actividad debe establecerse en la misma propiedad de WorkflowContext.

Procedimiento 1. Para crear el proyecto de flujo de trabajo

  1. Ejecutar Visual Studio como administrador. Cree un proyecto que utiliza la plantilla de flujo de trabajo secuencial de SharePoint 2010. Para crear el proyecto, consulte Procedimiento para configurar Visual Studio 2010 para un flujo de trabajo de Project Server (traducción automática). Por ejemplo, nombre del proyecto BranchingWorkflow en el cuadro de diálogo Nuevo proyecto . Asegúrese de que el marco de destino es Microsoft.NET Framework 3.5.

  2. En la página especificar el nombre de flujo de trabajo de depuración del Asistente para la personalización de SharePoint, el nombre del flujo de trabajo BranchingWorkflow – BranchingWorkflow.

    Haga clic en el Flujo de trabajo del sitioy, a continuación, en el asistente, haga clic en Siguiente . Acepte los restantes valores predeterminados para finalizar al asistente.

    Nota

    Si crea un nuevo proyecto de flujo de trabajo secuencial, asegúrese de hacer clic en el Flujo de trabajo del sitio en el Asistente para la personalización de SharePoint.

  3. El archivo de flujo de trabajo predeterminado se denomina Workflow1.cs. Abra la vista Diseño y en la vista código. La clase Workflow1 se deriva de SequentialWorkflowActivity, que permite que el panel de vista de diseño de flujo de trabajo se denomine el Flujo de trabajo secuencial. La vista de diseño debe incluir la actividad onWorkflowActivated1.

    Nota

    Los siguientes pasos (a) (c) son opcionales. El flujo de trabajo que se ve en Project Web App obtiene su nombre desde el nombre del proyecto de Visual Studio. Los pasos y las cifras de este artículo muestran el nombre de clase de flujo de trabajo como BranchingWorkflow. Si elige mantener el nombre de clase como Workflow1, vaya al paso 4.

    Cambiar el nombre de la clase de Workflow1 predeterminada no cambiar correctamente el todas las cadenas relacionadas en el archivo Workflow1.Designer.cs. Si desea cambiar el nombre de la clase de flujo de trabajo, siga los pasos (a) al (c).

    1. En el Explorador de soluciones, haga clic en el nodo Workflow1 y, a continuación, haga clic en Cambiar nombre. Escriba un nombre nuevo; Por ejemplo, escriba BranchingWorkflow. Expanda el nodo de BranchingWorkflow y también cambiar el nombre del archivo Workflow1.cs.

    2. Expanda el nodo BranchingWorkflow.cs y, a continuación, abra el archivo BranchingWorkflow.Designer.cs.

    3. Abra el cuadro de diálogo Buscar y reemplazar (presione Ctrl + H) y reemplazar el antiguo Workflow1 de nombre con el BranchingWorkflow nombre nuevo. Buscar y reemplazar las instancias de Workflow1 en toda la solución.

  4. Abra la vista Diseño de BranchingWorkflow.cs, haga clic en la actividad de onWorkflowActivated1, abrir el panel Propiedades y, a continuación, expanda el nodo CorrelationToken y el nodo de WorkflowProperties (figura 3).

    Figura 3. Ver las propiedades CorrelationToken y WorkflowProperties de onWorkflowActivated1

    Establecimiento de propiedades para onWorkflowActivated

    Si ha cambiado el nombre de la clase BranchingWorkflow, los valores de propiedad de CorrelationToken y WorkflowProperties deberían aparecer como se muestra en la figura 3. Si hay un error en una de las propiedades, el elemento onWorkflowActivated1 en la vista Diseño incluiría un icono de alerta rojo (el icono rojo por debajo de onWorkflowActivated1 en la figura 3 no es una alerta; indica el final del flujo de trabajo).

    Importante

    La siguiente actividad para agregar en el flujo de trabajo debe ser la actividad de ProjectSequence, que inicializa el flujo de trabajo activado para la propuesta de proyecto actual en Project Server. Todas las actividades adicionales para el flujo de trabajo de Project Server deben colocarse dentro de la actividad de ProjectSequence.

    Project Server 2010 incluye la propiedad InitiationData en la actividad ProjectSequence. Debe establecer esta propiedad a la propiedad WorkflowProperties.InitiationData en el objeto onWorkflowActivated1.

  5. En el Cuadro de herramientas, expanda la ficha de Project Server - flujo de trabajo (si no existe esa ficha, consulte Creación de fichas del cuadro de herramientas para los proyectos de flujo de trabajo en Procedimiento para configurar Visual Studio 2010 para un flujo de trabajo de Project Server (traducción automática).) Haga clic en la actividad ProjectSequence en el Cuadro de herramientas y arrástrelo hasta el diagrama de flujo de trabajo, justo debajo de la actividad de onWorkflowActivated1.

  6. Establezca la propiedad InitiationData de la manera siguiente:

    1. Haga clic en la actividad de projectSequence1

    2. En el panel Propiedades , haga clic en ... para la propiedad InitiationData.

    3. En la ficha enlazar a un miembro existente del cuadro de diálogo Bind 'InitiationData' a la propiedad de una actividad , expanda el nodo de onWorkflowActivated1 y, a continuación, expanda el nodo WorkflowProperties .

    4. Haga clic en InitiationDatay, a continuación, haga clic en Aceptar.

    Compruebe que la propiedad InitiationData de la actividad de projectSequence1 tiene el siguiente valor: actividad = onWorkflowActivated1, Path=WorkflowProperties.InitiationData

  7. En la ficha de Project Server - flujo de trabajo en el cuadro de herramientas, haga clic en la actividad de SetProjectStage y arrástrelo dentro de la actividad de projectSequence1. El icono de alerta rojo indica que hay un problema con la actividad de SetProjectStage: SetProjectStage falta algunas propiedades necesarias.

  8. Para cada actividad de proyecto que agregue en projectSequence1, debe establecer la propiedad WorkflowContext.

    1. En la vista de diseño de Flujo de trabajo secuencial , con el botón secundario setProjectStage1 y, a continuación, haga clic en Propiedades.

    2. Para la propiedad WorkflowContext, haga clic en para abrir el cuadro de diálogo de enlace 'Workflowcontext' a la propiedad de una actividad .

    3. En la ficha enlazar a un miembro existente , expanda la actividad de projectSequence1 (figura 4).

    4. Haga clic en la propiedad WorkflowContext y, a continuación, haga clic en Aceptar.

      Figura 4. Al establecer la propiedad WorkflowContext

      Configuración de la propiedad WorkflowContext

    5. Establezca la propiedad StageOrder en 1.

El marco de trabajo para un flujo de trabajo de Project Server siempre incluye una actividad de ProjectSequence (para que contenga otras actividades de flujo de trabajo) y la actividad de SetProjectStage inicial donde se inicia el flujo de trabajo. Procedimiento 2 muestra cómo enlazar la actividad de setProjectStage1 a un escenario especificado.

Nota

Al agregar una actividad de flujo de trabajo de Project Server en el panel del Diseñador de flujo de trabajo , Visual Studio 2010 agrega referencias a ensamblados indirectas para Project Server 2010. Se pueden quitar algunas de esas referencias.

1A del procedimiento. Para establecer referencias para un flujo de trabajo de Project Server

  1. Quite las siguientes referencias que Visual Studio 2010 se agrega al agregar una actividad de flujo de trabajo de Project Server:

    • Microsoft.Office.Project.Schema Sólo es necesario para las actividades de flujo de trabajo personalizados o controladores de eventos de Project Server que utilizan argumentos de evento DataSet.

    • Microsoft.Office.Project.Server

    • Microsoft.Office.Project.Server.Administration

    • Microsoft.Office.Project.Server.Communications

    • Microsoft.Office.Project.Shared

  2. Mantener las referencias siguientes, que se encuentran en el directorio [Program Files]\Microsoft Office Servers\14.0\Bin:

    • Microsoft.Office.Project.Server.Library

    • Microsoft.Office.Project.Server.Workflow

Importante

La implementación predeterminada del constructor de la clase BranchingWorkflow no habilita disposing de las propiedades de flujo de trabajo y el contexto del flujo de trabajo cuando se completa el flujo de trabajo. Como resultado, la ejecución de flujos de trabajo personalizados puede causar pérdidas de memoria. Para evitar pérdidas de memoria, utilice el procedimiento 1b hacer lo siguiente:

  • Modifique el constructor de clase para inicializar el contexto del flujo de trabajo.

  • Reemplace el método Dispose para eliminar las propiedades de flujo de trabajo y el contexto del flujo de trabajo.

  • Agregar un controlador de eventos de Invoked para la actividad de OnWorkflowActivated que inicializa las propiedades del flujo de trabajo.

El archivo de Workflow1.cs predeterminado (o el archivo BranchingWorkflow.cs, si lo denominó) incluye las definiciones de variable workflowId y workFlowProperties, como sigue:

namespace BranchingWorkflow.Workflow1
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Workflow1()
        {
            InitializeComponent();
        }

        public Guid workflowId = default(System.Guid);
        public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
    }
}

1B procedimiento muestra cómo modificar el constructor de clase, deshacerse de las propiedades de flujo de trabajo y el contexto del flujo de trabajo y agregar un controlador de eventos Invoked.

1B del procedimiento. Inicializar y eliminar las propiedades de flujo de trabajo y el contexto del flujo de trabajo

  1. Elimine la definición de workflowProperties y, a continuación, agregue una propiedad de clase workflowProperties y una propiedad de clase de contexto de flujo de trabajo denominado wfContext, como sigue:

    public SPWorkflowActivationProperties workflowProperties
    { get; set; }
    
    public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
    { get; set; }
    
  2. Crear el objeto wfContext en el constructor de clase:

    public Workflow1()
    {
        wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
        InitializeComponent();
    }
    
  3. Reemplazar el método Dispose de la clase base de SequentialWorkflowActivity y, a continuación, desechar las variables del contexto del flujo de trabajo y las propiedades del flujo de trabajo:

    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        if (disposing)
        {
            wfContext.Dispose(); 
            workflowProperties.Dispose();
        }
    }
    
  4. Crear el controlador de eventos de onWorkflowActivated1_Invoked para inicializar el objeto wfContext cuando se invoca el flujo de trabajo:

    private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
    {
        wfContext.Initialize(workflowProperties);
    }
    
  5. En la vista de diseño de Flujo de trabajo secuencial , haga clic en la actividad onWorkflowActivated1. En el panel Propiedades , haga clic en el icono de Eventos y, a continuación, en la lista desplegable para el evento Invoked, seleccione onWorkflowActivated1_Invoked.

Siguiente es la implementación de la clase de Workflow1 actualizados (si ha cambiado el nombre de la clase BranchingWorkflow, consulte la sección Ejemplo de código completo ):

namespace BranchingWorkflow.Workflow1
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Guid workflowId = default(System.Guid);

        public Workflow1()
        {
            wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
            InitializeComponent();
        }

        // Class property for the workflow properties.
        public SPWorkflowActivationProperties workflowProperties
        { get; set; }

        // Class property for the workflow context.
        public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
        { get; set; }

        // Dispose the workflow properties and workflow context when disposing the workflow.
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (disposing)
            {
                wfContext.Dispose();
                workflowProperties.Dispose();
            }
        }

        // Event handler for the OnWorkflowActivated activity; initializes the workflow context.
        private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            wfContext.Initialize(workflowProperties);
        }
    }
}

Adición de actividades de flujo de trabajo de Project Server

Las siguientes actividades de flujo de trabajo de Project Server requieren el GUID de un escenario, el campo personalizado, valor de la tabla de consulta o grupo de seguridad:

  • CompareProjectProperty

  • ReadProjectProperty

  • ReadProjectSecurityGroupMembers

  • SetProjectStage

  • UpdateProjectProperty

  • UpdateProjectStageStatus

Enlace una actividad de flujo de trabajo a una fase

En el procedimiento 2, se enlaza la actividad de SetProjectStage a la fase de detalles de la propuesta inicial de la propuesta de proyecto.

Procedimiento 2. Para enlazar una actividad a la fase de detalles de la propuesta inicial

  1. Encontrar el GUID de la fase inicial detalles de las propuestas:

    1. Inicie sesión en Project Web App como administrador y, a continuación, haga clic en Configuración del servidor de inicio rápido.

    2. En la sección flujo de trabajo y páginas de detalles del proyecto , haga clic en Las fases del flujo de trabajo.

    3. Haga clic en el escenario de Detalles de la propuesta inicial .

    4. Desplácese hasta el final de la página de detalles de la propuesta inicial, expanda la sección de Datos de identificación del sistema y, a continuación, copie el GUID.

  2. Configurar la actividad de setProjectStage1 utilizar el GUID de la fase inicial detalles de las propuestas:

    1. En el Explorador de soluciones, haga clic en el archivo BranchingWorkflow.cs y, a continuación, haga clic en Ver código.

    2. Agregue código a la clase BranchingWorkflow para crear la variable de clase stage1Guid. Utilice el valor GUID de la fase inicial detalles de las propuestas del paso 1.

      public Guid stage1Guid = new Guid("4fd56302-cb51-4a81-958c-47d499456a61");
      
    3. En la vista de diseño de Flujo de trabajo secuencial , haga clic en la actividad de setProjectStage1, haga clic en el campo StageUid en el panel de Propiedades y, a continuación, haga clic en el botón Examinar () para abrir el cuadro de diálogo.

    4. En el enlace 'StageUid' a la propiedad de la actividad en un cuadro de diálogo, en la ficha enlazar a un miembro existente (figura 5), haga clic en stage1Guid y, a continuación, haga clic en Aceptar.

      Figura 5. Definición del escenario GUID para una actividad

      Configuración del GUID de fase para una actividad

Puede cambiar el escenario, simplemente cambie el valor de stage1Guid en el código de BranchingWorkflow.cs.

Actualizar el estado de fase

La actividad de UpdateProjectStageStatus utiliza la propiedad StageUid y la propiedad WorkflowContext para actualizar el estado de la etapa correcta.

Procedimiento 3. Para actualizar el estado de la fase de flujo de trabajo

  1. En el Cuadro de herramientas, haga clic en la actividad de UpdateProjectStageStatus y arrástrela por debajo de la actividad setProjectStage1 en la vista Diseño. Asegúrese de que updateProjectStateStatus1 está dentro del cuadro delimitador de projectSequence1.

  2. Establezca la propiedad WorkflowContext como se muestra en la figura 4.

  3. Establezca la propiedad StageUid como se muestra en la figura 5.

  4. En la lista desplegable de la propiedad UpdateProjectStageStatusField (figura 6), haga clic en espera de entrada.

    Figura 6. Establecer propiedades de UpdateProjectStageStatus

    Establecimiento de propiedades para UpdateProjectStageStatus

La secuencia de flujo de trabajo para el escenario de detalles de la propuesta inicial está completa. El flujo de trabajo muestra todas las páginas de detalle del proyecto (PDP) que existen dentro de la fase, espera a que el usuario rellene los campos necesarios en Project Web App, envía el escenario y, a continuación, permite al usuario pasar a la siguiente etapa.

Creación de una actividad de comparación

Puede utilizar la actividad de CompareProjectProperty para evaluar una propiedad especificada en la fase de propuesta de proyecto con otra propiedad o valor.

4 Del procedimiento. Para crear una actividad de comparación

  1. En el Cuadro de herramientas, haga clic en CompareProjectProperty y, a continuación, arrástrela por debajo de la actividad de updateProjectStageStatus1.

  2. Cambiar las siguientes propiedades de compareProjectProperty1:

    • Establezca CompareOperator en el Menor o igual que.

    • Establezca NumericPropertyValue 25000.

    • Actualizar la propiedad WorkflowContext como se describió anteriormente.

  3. Establezca la propiedad ConditionValid en compareProjectProperty1 de la manera siguiente:

    1. En la vista de código de BranchingWorkflow.cs, agregue el siguiente código debajo de las declaraciones de variables. El código crea una propiedad Boolean en la clase BranchingWorkflow denominada CompareBudgetCostResult.

      public bool CompareBudgetCostResult
      { get; set; }
      
    2. En la vista Diseño, haga doble clic en el cilindro amarillo (en el círculo rojo en la figura 7) junto al nombre de la propiedad ConditionalValid.

      Figura 7. ConditionValid de enlace a la propiedad CompareBudgetCostResult

      Configuración de ConditionValid en CompareProjectProperty

    3. En el cuadro de diálogo Bind 'ConditionValid' a la propiedad de una actividad , haga clic en CompareBudgetCostResult y, a continuación, haga clic en Aceptar. Se cambia el valor de False de ConditionValid a Activity=BranchingWorkflow, Path=CompareBudgetCostResult.

  4. Establecer el campo personalizado de ese compareProjectProperty1 utiliza. Para utilizar el campo personalizado denominado el Costo de la propuesta de ejemplo en el escenario de detalles de la propuesta inicial, necesitará el GUID del campo personalizado:

    1. Inicie sesión en Project Web App como administrador y, a continuación, haga clic en Configuración del servidor de inicio rápido.

    2. Haga clic en campos personalizados de empresa y las tablas de búsqueday, a continuación, haga clic en Costo de la propuesta de ejemplo en la lista de Campos personalizados de empresa .

    3. Desplácese hasta el final del campo personalizado de editar: página de costo de la propuesta de ejemplo, expanda la sección de Datos de identificación del sistema y, a continuación, copie el GUID.

    4. En la vista de código de BranchingWorkflow.cs, declare una nueva variable Guid como sigue. El GUID que utiliza puede ser diferente.

      public Guid proposedCostUid = new Guid("dc68b96a-965e-4b25-ac8a-15a5df729831");
      
    5. En el panel de Propiedades de la actividad de compareProjectProperty1, haga clic en MdPropUid, haga clic en el botón Examinar () para abrir el enlazar ' MdPropUid a la propiedad de una actividad el cuadro de diálogo (figura 8), haga clic en proposedCostUid y, a continuación, haga clic en Aceptar.

      Figura 8. ProposedCostUid de enlace a la propiedad MdPropUid

      Enlace de MdPropUid con ProposedCostUid

      La figura 9 muestra las propiedades completadas para compareProjectProperty1.

      Figura 9. Propiedades completadas para la actividad de compareProjectProperty1

      Propiedades completadas para CompareProjectProperty

Crear una si – rama Else

La actividad IfElse en las actividades básicas de flujo de trabajo de Windows permite que una rama lógica del flujo de trabajo. Cada rama enlaza el flujo de trabajo a una fase diferente, donde otras actividades de flujo de trabajo pueden evaluar opciones y realizar distintas acciones. En el ejemplo de BranchingWorkflow, la rama de IfTrue permite el flujo de trabajo pasar a la fase de detalles de la propuesta y la rama de IfFalse va a la fase de rechazo automático y cancela el flujo de trabajo.

5 Del procedimiento. Para crear un If-Else de sucursales

  1. En el Cuadro de herramientas, expanda la ficha flujo de trabajo de Windows (v3.0) .

  2. Haga clic en la actividad de IfElse y arrástrela por debajo de la actividad de compareProjectProperty1.

  3. En la vista código, agregue el siguiente método de CompareBudgetCost debajo de la declaración de propiedad CompareBudgetCostResult.

    internal void CompareBudgetCost(object sender, ConditionalEventArgs args)
    {
        args.Result = CompareBudgetCostResult;
    }
    
  4. En la vista Diseño, haga clic en ifElseBranchActivity1 (figura 10).

    Figura 10. Si selecciona la rama IfTrue de una actividad IfElse

    Selección de la raíz IfTrue en el caso de una actividad IfElse

  5. En el panel de Propiedades , establezca la propiedad de Condition a Condición de códigoy, a continuación, expanda el nodo Condition.

  6. En el menú desplegable del subnodo de Condition, seleccione el método CompareBudgetCost.

Estableciendo la propiedad Condition, la rama izquierda del ifElseActivity1 se convierte en la rama de IfTrue. La rama de la derecha se convierte automáticamente en la rama de Else. En los procedimientos de 6 y 7, agregue la actividad de SetProjectStage y la actividad de UpdateProjectStage a cada sucursal.

Enlace de la rama IfTrue a detalles de la propuesta

La rama izquierda del ifElseActivity1 es la rama de IfTrue. Utiliza la actividad de SetProjectStage y la actividad de UpdateProjectStage para enlazar a la fase de detalles de la propuesta de Project Server. Los pasos de procedimiento 6 son similares a los procedimientos anteriores, donde configuró las actividades de SetProjectStage y UpdateProjectStage.

6 Del procedimiento. Para enlazar la rama IfTrue al escenario de detalles de la propuesta

  1. Arrastre una actividad SetProjectStage de Cuadro de herramientas a la rama izquierda (ifElseBranchActivity1).

  2. Cree una variable Guid denominada stage2Guid.

  3. Copie el GUID de la fase de detalles de la propuesta de Project Web App en el valor de stage2Guid.

  4. En el panel de Propiedades para setProjectStage2, enlazar la propiedad StageUid a stage2Guid.

  5. Establezca la propiedad StageOrder en 2.

  6. Establezca la propiedad WorkflowContext para que sea el mismo que para las actividades anteriores.

  7. Arrastre una actividad UpdateProjectStageStatus por debajo de setProjectStage2.

  8. Establezca la propiedad StageUid y la propiedad WorkflowContext sea igual que en setProjectStage2.

  9. Establecer el UpdateProjectStageStatusField a la espera de entrada.

Enlace de la rama IfFalse al rechazo automatizado

La rama de derecha de ifElseActivity1 es ifElseBranchActivity2, que se convierte en la rama de IfFalse cuando la propiedad Condition está establecida en (Ninguno) en la lista desplegable. La rama de IfFalse utiliza la actividad de SetProjectStage y la actividad de UpdateProjectStage para enlazar a la fase de rechazo automático.

7 Del procedimiento. Para enlazar la rama IfFalse a la fase de rechazo automático

  1. Arrastre una actividad SetProjectStage de Cuadro de herramientas a la rama derecha (ifElseBranchActivity2).

  2. Crear una variable de Guid denominada stage3Guid.

  3. Copie el GUID de la fase de rechazo automático en Project Web App en el valor de stage3Guid.

  4. En el panel de Propiedades para setProjectStage3, enlazar la propiedad StageUid a stage3Guid.

  5. Establezca la propiedad StageOrder en 3.

  6. Establezca la propiedad WorkflowContext para que sea el mismo que para las actividades anteriores.

  7. Arrastre una actividad UpdateProjectStageStatus por debajo de setProjectStage3.

  8. Establezca la propiedad StageUid y la propiedad WorkflowContext sea igual que en setProjectStage3.

  9. El UpdateProjectStageStatusField se establece en Ninguno.

  10. Arrastre una actividad Terminate desde la ficha de flujo de trabajo de Windows (v3.0) en el Cuadro de herramientas y colóquelo debajo de la actividad de updateProjectStageStatus3.

Si una propuesta de proyecto cuesta más de 25.000 USD, el flujo de trabajo pasa a través de la rama de la derecha (IfFalse) a la etapa de rechazo automático y, a continuación, finaliza.

Enlazar a la etapa Final de ejecución

Cuando el flujo de trabajo se realiza a través de la rama de IfTrue, el BranchingWorkflow de ejemplo finaliza cuando se enlaza a la fase de ejecución. La fase de ejecución, incluye una página de detalle del proyecto que contiene el elemento Web de programación de proyecto, donde un usuario puede empezar a diseñar el proyecto.

8 Del procedimiento. Para enlazar la última actividad para la fase de ejecución Final

  1. Arrastre una actividad SetProjectStage desde el Cuadro de herramientas y colóquelo debajo del cuadro de ifElseActivity1 .

  2. Cree una variable Guid denominada stage4Guid.

  3. Copie el GUID de la fase de ejecución en el valor de stage4Guid en pwa .

  4. En el panel de Propiedades para setProjectStage4, enlazar la propiedad StageUid a stage4Guid.

  5. Establezca la propiedad StageOrder 4.

  6. Establezca la propiedad WorkflowContext para que sea el mismo que para las actividades anteriores.

  7. Arrastre una actividad UpdateProjectStageStatus por debajo de setProjectStage4.

  8. Establezca la propiedad StageUid y la propiedad WorkflowContext de updateProjectStageStatus4 ser el mismo que en setProjectStage4.

  9. Establecer UpdateProjectStageStatusField a la espera de entrada.

Figura 11 muestra la vista diseño completo de BranchingWorkflow.cs. La etapa final contiene un PDP que incluye el elemento Web de programación de proyecto. Cuando se completa el flujo de trabajo, un usuario puede continuar a través de la fase de ejecución y planificar el proyecto.

Figura 11. La BranchingWorkflow completa en la vista Diseño

El flujo de trabajo completo en la vista de diseño

Cuando se implementa la solución BranchingWorkflow en Project Server, realiza los trabajos siguientes:

  • El flujo de trabajo recopila detalles de la propuesta de proyecto inicial.

  • El flujo de trabajo determina si una propuesta de proyecto cuesta más de 25.000 USD.

  • Si la propuesta es demasiado cara, el flujo de trabajo rechaza el proyecto y termina.

  • Si la propuesta de costos menor o igual a 25.000 USD, continúa el flujo de trabajo para el escenario de detalles de la propuesta donde el usuario puede agregar información en los PDP asociados.

  • Al completar los PDP en el escenario de detalles de la propuesta, el flujo de trabajo entra en la fase de ejecución y, a continuación, se termina.

Para obtener información acerca de cómo probar el flujo de trabajo en el equipo local de Project Server, consulte Procedimiento para instalar y probar un flujo de trabajo de Project Server (traducción automática). Para obtener información acerca de cómo crear un paquete de solución de SharePoint para implementación a otra instancia del equipo o Project Web App de Project Server, consulte Procedimiento para implementar un flujo de trabajo de Project Server (traducción automática).

Ejemplo de código completo

Siguiente es el código completo de BranchingWorkflow.cs. Para compilar el código, debe realizar todos los pasos de los procedimientos anteriores.

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;
using Microsoft.SharePoint.WorkflowActions;

namespace BranchingWorkflow.BranchingWorkflow
{
    public sealed partial class BranchingWorkflow : SequentialWorkflowActivity
    {
        public Guid workflowId = default(System.Guid);
 
        // Stage 1: Initial Proposal Details stage. Replace GUIDs with your values.
        public Guid stage1Guid = new Guid("4fd56302-cb51-4a81-958c-47d499456a61");

        // Stage 2: Proposal Details stage.
        public Guid stage2Guid = new Guid("400060e9-5f2b-4e60-82f6-451b83165190");

        // Stage 3: Automated Rejection stage.
        public Guid stage3Guid = new Guid("c39007f5-9338-4a0f-af99-761dc7a2e97c");

        // Stage 4: Execution stage.
        public Guid stage4Guid = new Guid("43a1eb7b-562d-42e8-9a96-88817ef74295");

        // Custom field: Sample Proposal Cost.
        public Guid proposedCostUid = new Guid("dc68b96a-965e-4b25-ac8a-15a5df729831");

        public BranchingWorkflow()
        {
            wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
            InitializeComponent();
        }

        // Class property for the workflow properties.
        public SPWorkflowActivationProperties workflowProperties
        { get; set; }

        // Class property for the workflow context.
        public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
        { get; set; }

        // Dispose the workflow properties and workflow context when disposing the workflow.
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (disposing)
            {
                wfContext.Dispose();
                workflowProperties.Dispose();
            }
        }

        // Event handler for the OnWorkflowActivated activity; initializes the workflow context.
        private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            wfContext.Initialize(workflowProperties);
        }

        // Property for comparing the budget cost result.
        public bool CompareBudgetCostResult
        { get; set; }

        // Method to compare the budget cost.
        internal void CompareBudgetCost(object sender, ConditionalEventArgs args)
        {
            args.Result = CompareBudgetCostResult;
        }
    }
}

Errores:   Si recibe el siguiente error al intentar generar el proyecto, compruebe los valores de los GUID para las fases, campos personalizados y otras entidades.

Error  1  Could not create activity of type 'BranchingWorkflow.BranchingWorkflow'. 
System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
   at System.Guid..ctor(String g)
   at BranchingWorkflow.BranchingWorkflow..ctor()
E:\Project\ Workflow\BranchingWorkflow  1  1 

Otros errores, compruebe que las referencias están configuradas correctamente, como en el procedimiento (1a).

Nota

Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Programación eficaz

En el ejemplo de BranchingWorkflow.cs no incluye las actividades del controlador cancelar o fallo. Un flujo de trabajo de calidad de producción debe incluir las actividades del controlador de eventos para cancelar el flujo de trabajo y para las excepciones. Por ejemplo, si se elimina el escenario de detalles de la propuesta de Project Web App, el flujo de trabajo debe controlar la excepción.

Al seleccionar cualquiera de las siguientes actividades en el BranchingWorkflow de la vista Diseño, haga clic en la flecha hacia abajo en la parte superior de la actividad (figura 12) para ver un menú para la vista principal y las opciones de Controlador de cancelar la vista y Los controladores de errores de la vista:

  • Actividad de SequentialWorkflow superior (la flecha en el círculo verde en la parte superior de la vista Diseño)

  • actividad de ProjectSequence

  • actividad de IfElse

  • actividad de EfElseBranch (la rama de la izquierda o la rama de la derecha)

Figura 12. Mediante el menú de opción para la actividad ProjectSequence en la vista Diseño

Uso del menú de opciones para la vista Diseño

Vea también

Tareas

Procedimiento para configurar Visual Studio 2010 para un flujo de trabajo de Project Server (traducción automática)

Procedimiento para instalar y probar un flujo de trabajo de Project Server (traducción automática)

Procedimiento para implementar un flujo de trabajo de Project Server (traducción automática)

Conceptos

Administración de propuestas y flujos de trabajo (traducción automática)

Otros recursos

Desarrollo de flujos de trabajo de Project Server (traducción automática)

Historial de cambios

Fecha

Descripción

Motivo

Mayo de 2010

Publicación inicial