Directrices para crear actividades personalizadas en Service Manager Authoring ToolGuidelines for creating custom activities in the Service Manager Authoring Tool

Se aplica a: System Center 2016 - Service ManagerApplies To: System Center 2016 - Service Manager

Service Manager automatiza diversos procesos de la información (TI) de la tecnología.Service Manager automates a variety of information technology (IT) processes. Para el proceso de administración de incidentes, por ejemplo, Service Manager incluye varios pasos automatizados, como las notificaciones automatizadas a los usuarios cuando se crean incidentes o resuelto y automática enrutamiento de incidentes hacia varias colas, según la clasificación.For the Incident Management process, for example, Service Manager includes various automated steps, such as automated notifications to users when incidents are created or resolved and automatic routing of incidents to various queues, based on categorization. Esta automatización se implementa mediante el uso de flujos de trabajo, que se definen para las diferentes soluciones, y utiliza las capacidades de Windows Workflow Foundation (WF) para describir, ejecutar y efectuar un seguimiento de las operaciones automatizadas.This automation is implemented by using workflows that are defined for the various solutions, and it uses Windows Workflow Foundation (WF) capabilities to describe, execute, and track the automated operations.

Los clientes y asociados pueden extender la automatización que se incluye definiendo nuevos flujos de trabajo y agregándolos en un proceso.Customers and partners can extend the included automation by defining new workflows and adding them into a process. Los flujos de trabajo se pueden configurar para que tengan lugar en una programación fija o en una condición específica que se produzca en la base de datos, por ejemplo, cuando se crea un incidente o cuando cambia a un estado específico, como Activo o Resuelto.Workflows can be set to occur on a fixed schedule or on a specified condition occurring in the database, for example, when an incident is created or when it changes to a specified state, such as Active or Resolved.

Service Manager Authoring Tool proporciona un método fácil de usar para crear nuevos flujos de trabajo.The Service Manager Authoring Tool provides an easy-to-use method of creating new workflows. Proporciona una biblioteca de diferentes actividades de flujo de trabajo, como la creación o la actualización de incidentes, y un diseñador gráfico de arrastrar y colocar, que puede utilizar para organizar estas actividades de flujo de trabajo en una secuencia de flujo de trabajo.It provides a library of different workflow activities, such as creating an incident or updating an incident, and a drag-and-drop graphical designer that you can use to arrange these workflow activities into a workflow sequence. La herramienta de creación, a continuación, compila el nuevo flujo de trabajo en un conjunto de definiciones, código y contenido del módulo de administración.The Authoring Tool then compiles the new workflow into a set of definitions, code, and management pack content. Cuando esta información se importa a Service Manager, éste integra el nuevo flujo de trabajo en la solución especificada.When this information is imported into Service Manager, it integrates the new workflow into the specified solution.

Descripción de lo que ocurre segundo plano de la herramienta de creación puede beneficiar los usuarios más avanzados.Understanding what is going on behind the scenes of the Authoring Tool can benefit more advanced users. En primer lugar, los clientes y asociados pueden utilizar esta información para extender la biblioteca de actividades de flujo de trabajo en Service Manager con las actividades de flujo de trabajo que se aplican a sus procesos específicos.First, customers and partners can use this information to extend the workflow activity library in Service Manager with workflow activities that apply to their specific processes. En segundo lugar, los programadores pueden usar esta información para crear flujos de trabajo personalizados o avanzados que son compatibles con el Administrador de servicio mediante el uso de la herramienta de desarrollo de elección, como el sistema de desarrollo Microsoft Visual Studio.Secondly, developers can use this information to build custom or advanced workflows that are compatible with Service Manager by using their development tool of choice, such as the Microsoft Visual Studio development system.

Las actividades de flujo de trabajo y la clase WorkflowActivityBaseWorkflow activities and the WorkflowActivityBase class

Los flujos de trabajo de Service Manager utilizan actividades de WF.Service Manager workflows use WF activities. Para trabajar sin problemas con la herramienta de creación, estas actividades se derivan de la clase base WorkflowActivityBase, que pertenece a la Microsoft.EnterpriseManagement.Workflow.Common espacio de nombres.To work smoothly with the Authoring Tool, these activities derive from the base class WorkflowActivityBase, which belongs to the Microsoft.EnterpriseManagement.Workflow.Common namespace. La clase base WorkflowActivityBase introduce propiedades y métodos que no están disponibles en la clase base genérica Actividad de las actividades de WF.The WorkflowActivityBase base class introduces properties and methods that are not available in the generic Activity base class for WF activities. Para obtener más información sobre cómo definir las actividades de WF mediante el uso de la interfaz genérica actividad clase base, vea clase de actividad.For more information about how to define WF activities by using the generic Activity base class, see Activity Class.

Ventajas de utilizar la clase WorkflowActivityBaseBenefits of using the WorkflowActivityBase class

Los usuarios pueden importar actividades WF desde la biblioteca de actividades de Visual Studio y pueden trabajar con dichas actividades en la herramienta de creaciónAuthoring panel.Users can import WF activities from the Visual Studio activity library, and they can work with those activities in the Authoring ToolAuthoring pane. Sin embargo, dichas actividades se comportan de la misma manera en que lo hacen en el entorno de diseño de Visual Studio.However, those activities behave in the same way as they do in the Visual Studio Design environment. No tienen las personalizaciones que se integran en la biblioteca de actividades de Service Manager.They do not have the customizations that are built into the Service Manager activity library.

Nota

No todas las actividades de WF de Visual Studio se ha probado la compatibilidad con la herramienta de creación y algunas actividades de WF de Visual Studio podrían no funcionar correctamente en la herramienta de creación.Not all Visual Studio WF activities have been tested for compatibility with the Authoring Tool, and some Visual Studio WF activities might not run correctly in the Authoring Tool.

En la siguiente tabla se enumeran las diferencias de comportamiento entre las actividades de WF basadas en la clase base WorkflowActivityBase y las actividades de WF basadas en la clase base genérica Actividad .The following table lists the differences in behavior between WF activities that are based on the WorkflowActivityBase base class and WF activities that are based on the generic Activity base class.

EscenarioScenario Actividad de WF de herramienta de creación (WorkflowActivityBase clase base)Authoring Tool WF activity (WorkflowActivityBase base class) Actividad de WF de Visual Studio (clase baseActividad )Visual Studio WF activity (Activity base class)
Usuario enlaza las propiedades de la actividad (en las propiedades de objeto de Service Manager o a las propiedades de otras actividades).User binds activity properties (to Service Manager object properties or to properties from other activities). Llamadas a la enlazar propiedad con cuadro de diálogo que se personaliza para los usuarios de Service Manager.Calls the Bind property to dialog box that is customized for Service Manager users. Llama al cuadro de diálogo Enlazar propiedad con previsto para los desarrolladores.Calls the Bind property to dialog box that is intended for developers.
El usuario agrega la actividad a una actividad Bucle For-Each .User adds the activity to a For-Each Loop activity. Agrega las propiedades Propertytobind (el índice de bucle) y CurrentItem, necesarias para participar en operaciones específicas de bucle (CurrentItem es una propiedad interna).Adds the properties Propertytobind (the loop index) and CurrentItem, which are required to take part in loop-specific operations (CurrentItem is an internal property). El comportamiento es el mismo para cada iteración del bucle y no interactúa con la propiedad que indiza el bucle.Behaves in the same way for each iteration of the loop, and does not interact with the property that indexes the loop.

Importante

Debido a las personalizaciones que se requieren para el Diseñador de flujo de trabajo de la herramienta de creación, las actividades que se basan en el WorkFlowActivityBase clase no funcione según lo previsto en el entorno de diseño de flujo de trabajo de Visual Studio.Because of the customizations that are required for the Authoring Tool workflow designer, activities that are based on the WorkFlowActivityBase class do not function as expected in the Visual Studio workflow design environment.

Los usuarios pueden crear actividades WF personalizadas en Visual Studio para su uso en la herramienta de creación.Users can build custom WF activities in Visual Studio for use in the Authoring Tool. Sin embargo, para aprovechar el comportamiento de tiempo de diseño personalizado de la herramienta de creación, las actividades personalizadas deben basarse en el WorkflowActivityBase clase en lugar de la actividad clase.However, to take advantage of the custom design-time behavior of the Authoring Tool, custom activities must be based on the WorkflowActivityBase class instead of the Activity class.

Actividades de flujo de trabajo y automatizada de Service ManagerWorkflow activities and Service Manager automated activities

Las actividades WF pueden interactuar con un tipo diferente de actividad, las actividades de Service Manager que utilizan el Administrador de servicio de los elementos de trabajo.WF activities can interact with a different type of activity, the Service Manager activities that are used by Service Manager work items. Los elementos de trabajo pertenecen a uno de los principales tipos de objetos que utiliza el Administrador de servicio.Work items are one of the main types of objects that Service Manager uses. Los elementos de trabajo efectúan un seguimiento de las unidades de trabajo, como Incidentes, Solicitudes de servicio, Solicitudes de cambioy otras unidades de trabajo.Work items track units of work, such as Incidents, Service Requests, Change Requests, and other units of work. La mayoría de los elementos de trabajo comprenden una o varias actividades de Service Manager.Most work items comprise one or more Service Manager activities. Por ejemplo, una Solicitud de cambio suele incluir dos actividades como mínimo: una actividad de Revisión y una actividad Cambiar ejecución .For example, a Change Request typically includes at least two activities: a Review activity and a Change Execution activity. Normalmente, el elemento de trabajo ejecuta estas actividades en orden.The work item typically executes these activities in order.

Cuando se crea un elemento de trabajo, se representa el primer administrador de servicio de actividad se activa y permanece activa mientras Service Manager (o el usuario) lleva a cabo lo que la actividad de trabajo.When a work item is created, the first Service Manager activity becomes active and remains active while Service Manager (or the user) carries out whatever work the activity represents. Finalizado el trabajo, Service Manager marca la primera actividad como completado y activa la siguiente actividad en la secuencia.When that work finishes, Service Manager marks the first activity as Completed and activates the next activity in the sequence. Cuando la actividad final de la secuencia está marcada como completado, Service Manager marca el elemento de trabajo completo como completado.When the final activity in the sequence is marked as Completed, Service Manager marks the entire work item as Completed.

Algunas actividades de Service Manager se pueden ejecutar manualmente, como el revisión actividad de un solicitud de cambio.Some Service Manager activities can be executed manually, such as the Review activity of a Change Request. Otras actividades de Service Manager se pueden automatizar, como una actividad que envía un correo electrónico a un usuario.Other Service Manager activities can be automated, such as an activity that sends an email to a user. La actividad Cambiar ejecución de una Solicitud de cambio se puede automatizar.The Change Execution activity of a Change Request can be automated. Service Manager utiliza flujos de trabajo WF para automatizar las actividades de Service Manager.Service Manager uses WF workflows to automate Service Manager activities.

Ejemplo: Establecer estado de actividad a la actividad completadaExample: The Set Activity Status to Completed activity

En este ejemplo de una actividad de flujo de trabajo WF en Service Manager utiliza el establecer el estado de actividad como completado actividad de WF.This example of a WF workflow activity in Service Manager uses the Set Activity Status to Completed WF activity. Normalmente, esta actividad de WF representa el último paso de un flujo de trabajo que implementa una actividad automatizada de Service Manager, y establece el estado de dicha actividad como completado.This WF activity typically represents the last step in a workflow that implements an automated Service Manager activity, and it sets the status of that activity to Completed. El establecimiento de este estado desencadena un movimiento del sistema hasta la siguiente actividad en el elemento de trabajo y este proceso se repite hasta que se completa la última actividad en el elemento de trabajo.Setting this status triggers the system to move to the next activity in the work item, and this process repeats until the last activity in the work item is completed.

El establecer el estado de actividad como completado actividad toma una entrada, Id. de actividad, que identifica la actividad de Service Manager en el que se va a actuar.The Set Activity Status to Completed activity takes one input, Activity ID, which identifies the Service Manager activity on which to act. A continuación, la actividad de WF se conecta al servidor de administración de Service Manager, recupera la actividad de Service Manager especificada de la base de datos, establece su estado en completadoy, a continuación, se guarda en la base de datos.The WF activity then connects to the Service Manager management server, retrieves the specified Service Manager activity from the database, sets its status to Completed, and then saves it back to the database. La mayoría de los ejemplos de código que se incluyen en este escenario de muestra provienen del archivo SetActivityStatusToCompleted.cs, un archivo subyacente que describe la actividad Establecer el estado de actividad como completado .Most of the code samples that are included in this example come from the SetActivityStatusToCompleted.cs file, an underlying file that describes the Set Activity Status to Completed activity.

Inicializar el ejemplo de actividad de WFInitialize the example WF activity

La primera sección del archivo SetActivityStatusToCompleted.cs contiene las instrucciones de declaración e inicialización.The first section of the SetActivityStatusToCompleted.cs file contains the declaration and initialization statements. Esta actividad se basa en la clase WorkflowActivityBase y utiliza la clase de validador SetActivityStatusToCompletedValidator y la clase de diseñador WorkflowActivityBaseDesigner.This activity is based on the WorkflowActivityBase class, and it uses the validator class SetActivityStatusToCompletedValidator and the designer class WorkflowActivityBaseDesigner.

La clase WorkflowActivityBaseDesigner contiene las personalizaciones que se describen en la sección anterior, "Ventajas de utilizar la clase de WorkflowActivityBase".The WorkflowActivityBaseDesigner class contains the customizations that are described in the previous section, "Benefits of Using the WorkflowActivityBase Class." Puede extender y personalizar más esta clase.You can further extend and customize this class.

La primera sección de la definición de actividad de esta actividad de ejemplo incluye el siguiente código:The first section of the activity definition for this example activity includes the following code:

namespace Microsoft.ServiceManager.WorkflowAuthoring.ActivityLibrary
{
    // ---------------------------------------------------------------------
    /// <summary>
    /// Activity to set an activity's status to complete
    /// </summary>
    // ---------------------------------------------------------------------
    [ToolboxItem(typeof(ActivityToolboxItem))]
    [ActivityValidator(typeof(Validators.SetActivityStatusToCompletedValidator))]
    [Designer(typeof(WorkflowActivityBaseDesigner))]
    public sealed partial class SetActivityStatusToCompleted : WorkflowActivityBase
    {

Propiedades de entrada para la actividad de WF de ejemploInput properties for the example WF activity

El código declara una propiedad, ActivityId, como una propiedad de dependencia.The code declares one property, ActivityId, as a dependency property. Esto significa que esta propiedad se puede enlazar a los parámetros que se definen en el nivel de flujo de trabajo.This means that this property can be bound to parameters that are defined at the workflow level. En este caso, el identificador de la actividad de Service Manager se pasa al flujo de trabajo como un parámetro de flujo de trabajo y fluye hacia esta actividad como entrada.In this case, the ID of the Service Manager activity is passed in to the workflow as a workflow parameter, and it flows into this activity as an input.

  // --------------------------------------------------------------------------------
  /// <summary>
  /// Dependency Property for ActivityId property
  /// </summary>
  // --------------------------------------------------------------------------------
  public static DependencyProperty ActivityIdProperty =
      DependencyProperty.Register("ActivityId", typeof(String), typeof(SetActivityStatusToCompleted));

  // --------------------------------------------------------------------------------
  /// <summary>
  /// Activity ID
  /// </summary>
  // --------------------------------------------------------------------------------
  [Browsable(true)]
  [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
  public string ActivityId
  {
      get
      {
          return (string)this.GetValue(ActivityIdProperty);
      }
      set
      {
          this.SetValue(ActivityIdProperty, value);
      }
}

Comportamiento de ejecución en la actividad de WF de ejemploExecution behavior in the example WF activity

El método Execute realiza el trabajo real de esta actividad de WF.The Execute method does the actual work of this WF activity. En el ámbito del método Execute , la actividad de WF realiza lo siguiente:Within the scope of the Execute method, the WF activity does the following:

  • Detecta si éste funciona dentro de una actividad Bucle For each y, si es así, establece las propiedades correspondientes de la actividad de WF.Detects whether it is operating within a For-Each Loop activity, and, if so, sets the appropriate WF activity properties.

  • Se conecta al servidor de administración de Service Manager especificado y crea un EnterpriseManagementGroup objeto.Connects to the specified Service Manager management server and creates an EnterpriseManagementGroup object.

  • Usa el ActivityId propiedad que se va a obtener la actividad identificada de Service Manager desde la base de datos.Uses the ActivityId property to get the identified Service Manager activity from the database.

  • Busca la definición de clase de la actividad de Service Manager, obtiene la estado propiedad de la actividad de Service Manager recuperado y establece la propiedad en el completado valor de la lista de enumeración.Finds the class definition of the Service Manager activity, gets the Status property of the retrieved Service Manager activity, and sets the property to the Completed enumeration list value.

  • Confirma los cambios en la actividad de Service Manager.Commits the changes to the Service Manager activity.

  • Utiliza el método TrackData (parte de la infraestructura de WF) para registrar la información de seguimiento sobre la ejecución y el estado de la actividad de WF.Uses the TrackData method (part of the WF infrastructure) to log tracking information about the execution and status of the WF activity.

        // --------------------------------------------------------------------------------
        /// <summary>
        /// The execute method will have the implementation to set the activity status to complete.
        /// </summary>
        // --------------------------------------------------------------------------------
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            try
            {
                // Initialize the current item if the activity contained within the For-Each loop
                base.Execute(executionContext);

                // Validate Parameters
                if (String.IsNullOrEmpty(ActivityId))
                {
                    throw new ArgumentNullException("ActivityId");
                }

                string SMServer = "localhost";

                Guid TaskGuid = new Guid(ActivityId);
                EnterpriseManagementGroup _mg = new EnterpriseManagementGroup(SMServer);

                EnterpriseManagementObject Activity = _mg.EntityObjects.GetObject
                    <EnterpriseManagementObject>(TaskGuid, ObjectQueryOptions.Default);

                ManagementPack SystemMP = _mg.ManagementPacks.GetManagementPack(
                    SystemManagementPack.System);
                ManagementPack ActivityMP = _mg.ManagementPacks.GetManagementPack(
                    Resources.ActivityManagementMP, SystemMP.KeyToken, SystemMP.Version);

                ManagementPackClass activityClass = _mg.EntityTypes.GetClass(
                    Resources.WorkItemActivityClass, ActivityMP);

                ManagementPackProperty status = activityClass.PropertyCollection["Status"];
                ManagementPackEnumeration Completed =
                    _mg.EntityTypes.GetEnumeration("ActivityStatusEnum.Completed", ActivityMP);

                Activity[status].Value = Completed;
                Activity.Commit();
            }
            catch (ArgumentNullException argNullException)
            {
                // Log to Tracking Service
                TrackData(argNullException.ToString());

                throw;
            }
            catch (EnterpriseManagementException mgmtException)
            {
                TrackData(mgmtException.ToString());
                throw;
            }

            return ActivityExecutionStatus.Closed;
        }
    }
}

Comportamiento de validación en el ejemplo de actividad de WFValidation behavior in the example WF activity

El archivo SetActivityStatusToCompletedValidator.cs define el comportamiento de validación de la actividad de WF.The SetActivityStatusToCompletedValidator.cs file defines the validation behavior of the WF activity. Este comportamiento define cómo el diseñador indica si esta actividad de WF se define completamente o si requiere una o más entradas para definirse.This behavior defines how the designer indicates whether this WF activity is fully defined or if it still requires one or more inputs to be defined. La herramienta de creación indica un error de validación similar de Visual Studio mediante un signo de exclamación rojo (!) icono de la actividad de flujo de trabajo en el Authoring panel.The Authoring Tool indicates a validation error similarly to Visual Studio by using a red exclamation point (!) icon on the workflow activity in the Authoring pane.

namespace Microsoft.ServiceManager.WorkflowAuthoring.ActivityLibrary.Validators
{
    // --------------------------------------------------------------------------------
    /// <summary>
    /// Validator for the SetActivityStatusToCompleted activity
    /// </summary>
    // --------------------------------------------------------------------------------
    internal class SetActivityStatusToCompletedValidator : ActivityValidator
    {
        // --------------------------------------------------------------------------------
        /// <summary>
        /// Validator for the SetActivityStatusToCompleted activity
        /// </summary>
        // --------------------------------------------------------------------------------
        public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
        {
            // Performing default validation
            ValidationErrorCollection errorColl = base.Validate(manager, obj);

            SetActivityStatusToCompleted setActivityStatusToCompletedObj =
                (SetActivityStatusToCompleted)obj;

            // Check if validation is happening during compilation of activity and
            // not during the hosting of an activity
            if (setActivityStatusToCompletedObj.Parent == null)
            {
                return errorColl;
            }

            string propertyName = Common.GetPropertyName(setActivityStatusToCompletedObj);

            // Add validation error if ActivityId is null or empty
            if (setActivityStatusToCompletedObj.ActivityId == null
                &&
                setActivityStatusToCompletedObj.GetBinding(SetActivityStatusToCompleted.ActivityIdProperty) == null
                &&
                String.Compare(propertyName, "ActivityId", false, CultureInfo.InvariantCulture) != 0)
            {
                errorColl.Add(new ValidationError(
                    Resources.SetActivityStatusToCompleted_ActivityId_DesignTimeValidation, 10, false));
            }

            return errorColl;
        }
    }
}

Usar la actividad de WF de ejemplo en un flujo de trabajoUse the example WF activity in a workflow

El establecer el estado de actividad como completado actividad se incluye en el valor predeterminado de la herramienta de creación cuadro de herramientas de actividades panel.The Set Activity Status to Completed activity is included in the Authoring Tool default Activities Toolbox pane. Para obtener más información acerca de cómo agregar actividades personalizadas a la cuadro de herramientas de actividades panel, consulte cómo instalar un ensamblado de actividad personalizado.For more information about adding custom activities to the Activities Toolbox pane, see How to Install a Custom Activity Assembly.

Puede usar el panel de creación de la herramienta de creación para crear flujos de trabajo de manera que es similar al uso de la interfaz de diseño de flujo de trabajo de Visual Studio.You can use the authoring pane of the Authoring Tool to author workflows in a manner that is similar to using the Visual Studio workflow design interface. Sin embargo, la herramienta de creación ofrece las siguientes ventajas:However, the Authoring Tool offers the following benefits:

  • Los usuarios sin conocimientos de desarrollo pueden crear flujos de trabajo; no tienen que trabajar directamente con código.Users without development skills can build workflows; they do not have to work with code directly.

  • Cuando un usuario guarda un flujo de trabajo en la herramienta de creación, la herramienta genera el código de Visual C# y XOML correspondiente y lo compila en un archivo .dll.When a user saves a workflow in the Authoring Tool, the tool generates the corresponding Visual C# and XOML code and compiles it into a .dll file. La herramienta también integra el flujo de trabajo con un módulo de administración que puede interactuar directamente con el Administrador de servicios.The tool also integrates the workflow with a management pack that can interact directly with Service Manager.

Código C# Visual para el flujo de trabajoVisual C# Code for the workflow

El ejemplo siguiente muestra el código de Visual C# que genera la herramienta de creación de un flujo de trabajo de ejemplo que usa el establecer el estado de actividad como completado actividad.The following sample shows the Visual C# code that the Authoring Tool generates for an example workflow that uses the Set Activity Status to Completed activity. Este código declara un flujo de trabajo secuencial simple, SetActivityStatusToCompleteWF, que tiene un parámetro de flujo de trabajo, la propiedad de dependencia ActivityId.This code declares a simple sequential workflow, SetActivityStatusToCompleteWF, that has one workflow parameter, the dependency property ActivityId. El valor de ActivityID se determina mediante las definiciones del módulo de administración que se muestran más adelante en este ejemplo.The value of ActivityID is determined by the management pack definitions that are shown later in this example. Cuando se ejecuta el flujo de trabajo, Service Manager identifica el valor y lo pasa al flujo de trabajo.When the workflow runs, Service Manager identifies the value and passes it into the workflow.

namespace WorkflowAuthoring
{
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Workflow.ComponentModel.Design;
    using System.Workflow.ComponentModel;
    using System.Workflow.ComponentModel.Serialization;
    using System.Workflow.ComponentModel.Compiler;
    using System.Drawing;
    using System.Collections;
    using System.Workflow.Activities;
    using System.Workflow.Runtime;

    public partial class SetActivityStatusToCompleteWF : System.Workflow.Activities.SequentialWorkflowActivity
    {

        public static DependencyProperty ActivityIdProperty = DependencyProperty.Register("ActivityId", typeof(string), typeof(SetActivityStatusToCompleteWF));

        [System.ComponentModel.DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
        [System.ComponentModel.BrowsableAttribute(true)]
        [System.ComponentModel.CategoryAttribute("Misc")]
        public string ActivityId
        {
            get
            {
                return ((string)(this.GetValue(ActivityIdProperty)));
            }
            set
            {
                this.SetValue(ActivityIdProperty, value);
            }
        }
    }
}

Código XOML del flujo de trabajoXOML code for the workflow

WF utiliza el formato XOML para algunas de las definiciones de flujo de trabajo.WF uses the XOML format for some of the workflow definitions. En el caso del flujo de trabajo de ejemplo, la herramienta de creación crea el archivo SetActivityStatusToCompleteWF.xoml con el siguiente contenido:In the case of the example workflow, the Authoring Tool creates the file SetActivityStatusToCompleteWF.xoml with the following content:

<SequentialWorkflowActivity x:Class="WorkflowAuthoring.SetActivityStatusToCompleteWF" x:Name="SetActivityStatusToCompleteWF" xmlns:ns0="clr-namespace:Microsoft.ServiceManager.WorkflowAuthoring.ActivityLibrary;Assembly=Microsoft.ServiceManager.WorkflowAuthoring.ActivityLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">
<ns0:SetActivityStatusToCompleted ActivityId="{ActivityBind SetActivityStatusToCompleteWF,Path=ActivityId}" x:Name="setActivityStatusToCompleted1" PropertyToBind="{x:Null}" />
</SequentialWorkflowActivity>

SetActivityStatusToCompleteWF.xoml declara que el flujo de trabajo, SetActivityStatusToCompleteWFejecuta una actividad de flujo de trabajo, Establecer el estado de actividad como completado.SetActivityStatusToCompleteWF.xoml declares that the workflow, SetActivityStatusToCompleteWF, runs one workflow activity, Set Activity Status To Completed. Dicha actividad tiene un parámetro de entrada, ActivityId, que obtiene su valor de la propiedad ActivityId del flujo de trabajo.That activity has one input parameter, ActivityId, which gets its value from the ActivityId property of the workflow.

Declarar el flujo de trabajo y su condición desencadenadora en un módulo de administraciónDeclare the workflow and its trigger condition in a management pack

Service Manager no se puede utilizar un archivo .dll de flujo de trabajo aislado; el flujo de trabajo debe estar integrado con un módulo de administración.Service Manager cannot use an isolated workflow .dll file; the workflow must be integrated with a management pack. El módulo de administración define cuándo se debe ejecutar el flujo de trabajo y qué valores de entrada se deben utilizar.The management pack defines when the workflow should run and what input values to use. Al mismo tiempo que genera el código de flujo de trabajo y compila el archivo .dll de flujo de trabajo, la herramienta de creación agrega la información relacionada con el flujo de trabajo a un módulo de administración.At the same time that it generates the workflow code and compiles the workflow .dll file, the Authoring Tool adds the workflow-related information to a management pack.

El flujo de trabajo de ejemplo, SetActivityStatusToCompleteWF, está asociado a un módulo de administración de ejemplo, denominado Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml.The example workflow, SetActivityStatusToCompleteWF, is associated with an example management pack, named Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml. Este módulo de administración amplía el administración de cambios automatizada de proceso con una nueva actividad de Service Manager.This management pack extends the Change Management process with a new automated Service Manager activity. Si la nueva actividad se activa durante una operación de administración de cambios, desencadena el flujo de trabajo SetActivityStatusToCompleteWF .When the new activity becomes active during a change management operation, it triggers the SetActivityStatusToCompleteWF workflow.

El módulo de administración define el desencadenador del flujo de trabajo (cuando la nueva actividad de Service Manager cambia de estado) y define el valor que se usará para la ActivityId propiedad (el identificador único de la nueva actividad de Service Manager).The management pack defines the trigger of the workflow (when the new Service Manager activity changes state), and it defines the value to use for the ActivityId property (the unique identifier of the new Service Manager activity). Cuando se ejecuta el flujo de trabajo, cambia el estado de la nueva actividad de Service Manager para completado.When the workflow runs, it changes the status of the new Service Manager activity to Completed. Tenga en cuenta que, en un flujo de trabajo normal, éste sería el último paso después de alguna otra tarea realizada por otras actividades de WF en el flujo de trabajo.Note that in a normal workflow, this would be the last step following some other task that is performed by other WF activities in the workflow.

La sección Monitoring del módulo de administración contiene la definición Rule del flujo de trabajo.The Monitoring section of the management pack contains the Rule definition for the workflow. A su vez, la definición Rule tiene dos partes, el elemento DataSource y el elemento WriteAction .In turn, the Rule definition has two parts, the DataSource element and the WriteAction element.

En el caso del flujo de trabajo de ejemplo, el DataSource elemento contiene un suscripción elemento, que especifica que se debe ejecutar el flujo de trabajo cuando una instancia de la AddComputerToGroup clase (una clase personalizada de Service Manager) cambia el estado a Active.In the case of the example workflow, the DataSource element contains a Subscription element, which specifies that the workflow should run when an instance of the AddComputerToGroup class (a custom Service Manager class) changes state to Active.

<Monitoring>
    <Rules>
        <Rule ID="SetActivityToCompleteRule" Enabled="true" Target="SystemCenterLibrary!Microsoft.SystemCenter.SubscriptionWorkflowTarget" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
            <Category>Notification</Category>
            <DataSources>
                <DataSource ID="DS" TypeID="Subscriptions!Microsoft.SystemCenter.CmdbInstanceSubscription.DataSourceModule">
                    <Subscription>
                        <InstanceSubscription Type="$MPElement[Name='AddComputerToGroup']$">
                            <UpdateInstance><Criteria><Expression><SimpleExpression>
                                <ValueExpression>
                                    <Property State="Post">$Context/Property[Type='Activity!System.WorkItem.Activity']/Status$</Property>
                                </ValueExpression>
                                <Operator>Equal</Operator>
                                <ValueExpression>
                                    <Value>$MPElement[Name='Activity!ActivityStatusEnum.Active']$</Value>
                                </ValueExpression>
                            </SimpleExpression></Expression></Criteria></UpdateInstance>
                        </InstanceSubscription>
                        <StartWatermark>1</StartWatermark>
                        <PollingIntervalInSeconds>60</PollingIntervalInSeconds>
                        <BatchSize>100</BatchSize>
                    </Subscription>
                </DataSource>
            </DataSources>
        </Rule>
    </Rules>
</Monitoring>

El elemento WriteAction (en concreto, Microsoft.EnterpriseManagement.SystemCenter.Subscription.WindowsWorkflowTaskWriteAction) define qué hacer cuando se cumple la condición desencadenadora.The WriteAction element (specifically, Microsoft.EnterpriseManagement.SystemCenter.Subscription.WindowsWorkflowTaskWriteAction) defines what to do when the trigger condition is met. Dentro de este elemento, un elemento Subscription identifica el archivo de ensamblado de flujo de trabajo que se va a ejecutar (SetActivityStatusToCompleteWF.dll) y la clase del ensamblado que representa el flujo de trabajo, WorkflowTypeName.Within this element, a Subscription element identifies the workflow assembly file to run (SetActivityStatusToCompleteWF.dll) and the class in the assembly that represents the workflow, WorkflowTypeName.

El suscripción elemento también incluye una WorkflowParameter elemento, que define la ActivityId propiedad y, mediante la sintaxis $Data/BaseManagedEntityId$, enlaza con el identificador único de la actividad de Service Manager que se registra en el DataSource elemento.The Subscription element also includes a WorkflowParameter element, which defines the ActivityId property and, using the syntax $Data/BaseManagedEntityId$, binds it to the unique identifier of the Service Manager activity that is recorded in the DataSource element.

El elemento WriteAction también almacena detalles de configuración opcionales para el flujo de trabajo, como cuántos reintentos se deben realizar si se produce un error en el flujo de trabajo, con cuánta frecuencia se deben llevar a cabo los reintentos y el tiempo máximo en segundos que debería durar la ejecución de un flujo de trabajo antes de cerrarse.The WriteAction element also stores optional configuration details for the workflow, such as how many retries to perform if the workflow fails, how frequently to retry, and the maximum time in seconds that a workflow should run before it is shut off.

<WriteActions>
    <WriteAction ID="WA" TypeID="Subscriptions!Microsoft.EnterpriseManagement.SystemCenter.Subscription.WindowsWorkflowTaskWriteAction">
        <Subscription>
            <WindowsWorkflowConfiguration>
                <AssemblyName>SetActivityStatusToCompleteWF</AssemblyName>
                <WorkflowTypeName>WorkflowAuthoring.SetActivityStatusToCompleteWF</WorkflowTypeName>
                <WorkflowParameters>
                    <WorkflowParameter Name="ActivityId" Type="string">
                        $Data/BaseManagedEntityId$
                    </WorkflowParameter>
                </WorkflowParameters>
                <RetryExceptions></RetryExceptions>
                <RetryDelaySeconds>60</RetryDelaySeconds>
                <MaximumRunningTimeSeconds>300</MaximumRunningTimeSeconds>
            </WindowsWorkflowConfiguration>
        </Subscription>
    </WriteAction>
</WriteActions>

Importar el módulo de administraciónImport the management pack

Para que el flujo de trabajo para que se ejecute en un determinado servidor de administración de Service Manager, todos los archivos que están relacionados con el flujo de trabajo deben residir en ese servidor.For the workflow to run on a particular Service Manager management server, all of the files that are related to the workflow must reside on that server. Entre estos archivos se incluyen los siguientes:These files include the following:

  • Los archivos de ensamblado de la actividad de WF.The WF activity assembly files. Si usas solo las actividades de WF de Service Manager, de forma predeterminada, se instalan los archivos adecuados.If you are using only the Service Manager WF activities, by default, the appropriate files are installed. Si utiliza actividades personalizadas, consulte cómo instalar un ensamblado de actividad personalizado.If you are using custom activities, see How to Install a Custom Activity Assembly.

  • El archivo de ensamblado del flujo de trabajo, en este caso SetActivityStatusToCompleteWF.dll.The workflow assembly file, in this case, SetActivityStatusToCompleteWF.dll. Debe copiar manualmente este archivo en el servidor de administración de Service Manager.You must manually copy this file to the Service Manager management server.

  • El archivo del módulo de administración, en este caso Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml.The management pack file, in this case, Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml. Debe copiar manualmente este archivo en el servidor de administración de Service Manager.You must manually copy this file to the Service Manager management server.

Cuando todos los archivos están en su lugar, importe el módulo de administración en Service Manager.When all of the files are in place, import the management pack into Service Manager. Puede hacerlo mediante la herramienta de línea de comandos mpimport.exe o la consola de Service Manager.You can do this by using the mpimport.exe command-line tool or the Service Manager console. Una vez que haya importado el módulo de administración, el flujo de trabajo estará listo para ejecutarse cada vez que se cumpla la condición de que se ha definido como su desencadenador.After you have imported the management pack, the workflow is ready to run whenever the condition that is defined as its trigger is met.

Pasos siguientesNext steps