Novedades de Windows Workflow Foundation en .NET 4.5What's New in Windows Workflow Foundation in .NET 4.5

Windows Workflow Foundation (WF) en .NET Framework 4.5 presenta muchas características nuevas, como nuevas actividades, capacidades de diseñador y modelos de desarrollo de flujo de trabajo.Windows Workflow Foundation (WF) in .NET Framework 4.5 introduces many new features, such as new activities, designer capabilities, and workflow development models. Aunque no todas, muchas de nuevo el flujo de trabajo se admiten las características introducidas en .NET Framework 4.5 en el Diseñador de flujo de trabajo rehospedado.Many, but not all, of the new workflow features introduced in .NET Framework 4.5 are supported in the re-hosted workflow designer. Para obtener más información sobre las nuevas características que son compatibles, consulte compatibilidad con nuevas características de flujo de trabajo Foundation 4.5 en el Diseñador de flujo de trabajo Rehospedados.For more information about the new features that are supported, see Support for New Workflow Foundation 4.5 Features in the Rehosted Workflow Designer. Para obtener más información sobre cómo migrar aplicaciones de flujo de trabajo de .NET 3.0 y 3.5 de .NET para usar la versión más reciente, consulte Guía de migración.For more information about migrating .NET 3.0 and .NET 3.5 workflow applications to use the latest version, see Migration Guidance. En este tema se proporciona información general de las nuevas características de flujo de trabajo que se introdujo en .NET Framework 4.5.This topic provides an overview of the new workflow features introduced in .NET Framework 4.5.

Advertencia

Las nuevas características de Windows Workflow Foundation que se introdujo en .NET Framework 4.5 no están disponibles para los proyectos que tienen como destino versiones anteriores de framework.The new Windows Workflow Foundation features introduced in .NET Framework 4.5 are not available for projects that target previous versions of the framework. Si un proyecto que destinos de .NET Framework 4.5 se vuelve a dirigida a una versión anterior de framework, pueden producirse varios problemas.If a project that targets .NET Framework 4.5 is re-targeted to a previous version of the framework, several issues can occur.

  • Expresiones de C#, se reemplazará en el diseñador con el mensaje valor se estableció en XAML.C# expressions will be replaced in the designer with the message Value was set in XAML.
  • Aparecerán muchos errores de compilación, incluido el siguiente.Many build errors will occur, including the following error.

El formato de archivo no es compatible con .NET framework de destino actual. Para convertir el formato de archivo, guarde explícitamente el archivo. Este mensaje de error desaparecerá después de guardar el archivo y vuelva a abrir el diseñador.The file format is not compatible with current targeting framework. To convert the file format, please explicitly save the file. This error message will go away after you save the file and reopen the designer.

Control de versiones de flujo de trabajoWorkflow Versioning

.NET framework 4.5 introdujo varias características nuevas de control de versiones basadas en la nueva WorkflowIdentity clase..NET Framework 4.5 introduced several new versioning features based around the new WorkflowIdentity class. WorkflowIdentity proporciona a los autores de la aplicación de flujo de trabajo un mecanismo para asignar una instancia de flujo de trabajo persistente con su definición.WorkflowIdentity provides workflow application authors a mechanism for mapping a persisted workflow instance with its definition.

ActividadesActivities

La biblioteca integrada de actividades contiene nuevas actividades y características para las actividades existentes.The built-in activity library contains new activities and new features for existing activities.

Ámbito de NoPersistNoPersist Scope

NoPersistScope es una nueva actividad de contenedor que impide que un flujo de trabajo sea persistente cuando se están ejecutando actividades secundarias de NoPersistScope.NoPersistScope is a new container activity that prevents a workflow from being persisted when the NoPersistScope’s child activities are executing. Esto es útil en escenarios donde no es apropiado que el flujo de trabajo sea persistente, por ejemplo, cuando el flujo de trabajo está usando recursos específicos del equipo como identificadores de archivo o durante transacciones de base de datos.This is useful in scenarios where it is not appropriate for the workflow to be persisted, such as when the workflow is using machine-specific resources such as file handles, or during database transactions. Anteriormente, para evitar la persistencia durante la ejecución de una actividad, era necesaria una NativeActivity personalizada que usara un NoPersistHandle.Previously, to prevent persistence from occurring during an activity's execution, a custom NativeActivity that used a NoPersistHandle was required.

Nuevas capacidades de diagrama de flujoNew Flowchart Capabilities

Diagramas de flujo se actualizan para .NET Framework 4.5 y tienen las siguientes capacidades nuevas:Flowcharts are updated for .NET Framework 4.5 and have the following new capabilities:

  • Se puede editar la propiedad DisplayName de una actividad FlowSwitch<T> o FlowDecision.The DisplayName property of a FlowSwitch<T> or FlowDecision activity is editable. Esto permitirá al diseñador de actividades mostrar más información sobre el propósito de la actividad.This will let the activity designer show more information about the activity's purpose.

  • Los diagramas de flujo tienen una nueva propiedad denominada ValidateUnconnectedNodes; el valor predeterminado para esta propiedad es False.Flowcharts have a new property called ValidateUnconnectedNodes; the default for this property is False. Si esta propiedad se establece en True, los nodos no conectados del diagrama de flujo generarán errores de validación.If this property is set to True, then unconnected flowchart nodes will produce validation errors.

Compatibilidad con la confianza parcialSupport for Partial Trust

Los flujos de trabajo en .NET Framework versión 4.NET Framework version 4 requerían un dominio de aplicación de plena confianza.Workflows in .NET Framework versión 4.NET Framework version 4 required a fully trusted application domain. En .NET Framework 4.5, los flujos de trabajo pueden funcionar en un entorno de confianza parcial.In .NET Framework 4.5, workflows can operate in a partial trust environment. En un entorno de confianza parcial, los componentes de terceros se pueden usar sin garantizarles acceso completo a los recursos del host.In a partial trust environment, third-party components can be used without granting them full access to the resources of the host. A continuación, se presentan algunas cuestiones sobre la ejecución de flujos de trabajo en confianza parcial:Some concerns about running workflows in partial trust are as follows:

  1. El uso de componentes heredados (incluidas las reglas) incluidos en la actividad Interop no se admite en la confianza parcial.Using legacy components (including Rules) contained in the Interop activity is not supported under partial trust.

  2. No se admite la ejecución de flujos de trabajo en confianza parcial en WorkflowServiceHost.Running workflows in partial trust in WorkflowServiceHost is not supported.

  3. La persistencia de excepciones en un escenario de confianza parcial constituye una amenaza de seguridad potencial.Persisting exceptions in a partial-trust scenario is a potential security threat. Para deshabilitar la persistencia de excepciones, se debe agregar una extensión de tipo ExceptionPersistenceExtension al proyecto con el fin de descartar la persistencia de las excepciones.To disable persisting of exceptions, an extension of type ExceptionPersistenceExtension must be added to the project in order to opt out of persisting exceptions. En el ejemplo de código siguiente, se muestra cómo implementar este tipo.The following code example demonstrates how to implement this type.

    public class ExceptionPersistenceExtension
    {
        public ExceptionPersistenceExtension()
        {
            this.PersistExceptions = false;
        }
        public bool PersistExceptions { get; set; }
    }
    

    Si no se tienen que serializar excepciones, asegúrese de que se usan en un objeto NoPersistScope.If exceptions are not to be serialized, ensure that exceptions are used within a NoPersistScope.

  4. Los autores de actividades deben invalidar CacheMetadata para que el runtime del flujo de trabajo ejecute la reflexión automáticamente en el tipo.Activity authors should override CacheMetadata to avoid having the workflow runtime automatically execute reflection against the type. Los argumentos y las actividades secundarias no deben ser NULL y se debe llamar a Bind explícitamente.Arguments and child activities must be non-null, and Bind must be called explicitly. Para obtener más información sobre cómo reemplazar CacheMetadata, consulte exponer datos con CacheMetadata.For more information on overriding CacheMetadata, see Exposing data with CacheMetadata. Además, las instancias de los argumentos que son de un tipo que es internal o privada debe crearse explícitamente en CacheMetadata para evitar la creación por reflexión.Also, instances of arguments that are of a type that is internal or private must be explicitly created in CacheMetadata to avoid being created by reflection.

  5. Los tipos no usarán ISerializable o SerializableAttribute para la serialización; los tipos que se van a serializar deben admitir DataContractSerializer.Types will not use ISerializable or SerializableAttribute for serialization; types that are to be serialized must support DataContractSerializer.

  6. Las expresiones que usan LambdaValue<TResult> requieren RestrictedMemberAccess y, por lo tanto, no funcionarán con la confianza parcial.Expressions that use LambdaValue<TResult> require RestrictedMemberAccess, and thus will not work under partial trust. Los flujos de trabajo que usan LambdaValue<TResult> deben reemplazar dichas expresiones por actividades que se deriven de CodeActivity<TResult>.Workflows that use LambdaValue<TResult> should replace those expressions with activities that derive from CodeActivity<TResult>. ..

  7. Las expresiones no se pueden compilar mediante TextExpressionCompiler o el compilador hospedado de Visual Basic en confianza parcial, pero se pueden ejecutar las expresiones compiladas anteriormente.Expressions cannot be compiled using TextExpressionCompiler or the Visual Basic hosted compiler in partial trust, but previously compiled expressions can be run.

  8. Un ensamblado individual que usa transparencia de nivel 2 no se puede usar en .NET Framework 4.NET Framework 4, .NET Framework 4.6.1.NET Framework 4.6.1 con plena confianza y .NET Framework 4.6.1.NET Framework 4.6.1 en confianza parcial.A single assembly that uses Level 2 Transparency cannot be used in .NET Framework 4.NET Framework 4, .NET Framework 4.6.1.NET Framework 4.6.1 in full trust, and .NET Framework 4.6.1.NET Framework 4.6.1 in partial trust.

Nuevas capacidades de diseñadorNew Designer Capabilities

Búsqueda de diseñadorDesigner Search

Para que los flujos de trabajo mayores sean más fáciles de administrar, ahora se pueden buscar flujos de trabajo por palabra clave.To make larger workflows more manageable, workflows can now be searched by keyword. Esta característica solo está disponible en Visual Studio; Esta característica no está disponible en un diseñador rehospedado.This feature is only available in Visual Studio; this feature is not available in a rehosted designer. Hay dos tipos de búsquedas disponibles:There are two kinds of searches available:

  • Búsqueda rápida, que se inicia con CTRL+f o editar, buscar y reemplazar, búsqueda rápida.Quick Find, initiated with either Ctrl+F or Edit, Find and Replace, Quick Find.

  • Buscar en archivos, inicia con Ctrl + Mayús + F o editar, buscar y reemplazar, buscar en archivos.Find in Files, initiated with either Ctrl+Shift+F or Edit, Find and Replace, Find in Files.

Observe que Reemplazar no se admite.Note that Replace is not supported.

Búsqueda rápidaQuick Find

Las palabras clave buscadas en los flujos de trabajo coincidirán con los elementos del diseñador siguientes:Keywords searched in workflows will match the following designer items:

  • Propiedades de los objetos Activity, FlowNode, State y Transition, así como otros elementos de control de flujo personalizados.Properties of Activity objects, FlowNode objects, State objects, Transition objects, and other custom flow-control items.

  • VariablesVariables

  • ArgumentosArguments

  • ExpresionesExpressions

La búsqueda rápida se realiza en el árbol de ModelItem del diseñador.Quick Find is performed on the designer's ModelItem tree. La búsqueda rápida no encontrará espacios de nombres importados en la definición de flujo de trabajo.Quick Find will not locate namespaces imported in the workflow definition.

Buscar en archivosFind in Files

Las palabras clave buscadas en flujos de trabajo coincidirán con el contenido real de los archivos de flujo de trabajo.Keywords searched in workflows will match the actual content of the workflow files. Los resultados de la búsqueda se mostrarán en el panel de la vista Resultados de la búsqueda de Visual Studio.The search results will be shown in Visual Studio Find Results view pane. Al hacer doble clic, el elemento de resultado navegará a la actividad que contiene la coincidencia en el diseñador de flujo de trabajo.Double-clicking the result item will navigate to the activity which contains the match in workflow designer.

Eliminar elemento de menú contextual en el Diseñador de variables y argumentosDelete context menu item in variable and argument designer

En .NET Framework 4.NET Framework 4, las variables y los argumentos solo se podían eliminar en el diseñador con el teclado.In .NET Framework 4.NET Framework 4, variables and arguments could only be deleted in the designer using the keyboard. A partir de .NET Framework 4.5, variables y argumentos pueden eliminarse mediante el menú contextual.Starting with .NET Framework 4.5, variables and arguments can be deleted using the context menu.

En la captura de pantalla siguiente se muestra el menú contextual del diseñador de variables y argumentos.The following screenshot shows the variable and argument designer context menu.

Menú contextual del diseñador de variables y argumentos

Función de rodear automáticamente con secuenciaAuto-surround with Sequence

Debido a que un flujo de trabajo o determinadas actividades de contenedor (como NoPersistScope) solo pueden contener una única actividad de cuerpo, para agregar una segunda actividad el desarrollador tenía que eliminar la primera actividad, agregar una actividad Sequence y, a continuación, agregar ambas actividades a la actividad de secuencia.Since a workflow or certain container activities (such as NoPersistScope) can only contain a single body activity, adding a second activity required the developer to delete the first activity, add a Sequence activity, and then add both activities to the sequence activity. A partir de .NET Framework 4.5, al agregar una segunda actividad a la superficie del diseñador, un Sequence actividad se crearán automáticamente para incluir ambas actividades.Starting with .NET Framework 4.5, when adding a second activity to the designer surface, a Sequence activity will be automatically created to wrap both activities.

La captura de pantalla siguiente muestra una actividad WriteLine en Body de NoPersistScope.The following screenshot shows a WriteLine activity in the Body of a NoPersistScope.

Una actividad WriteLine en el cuerpo de una actividad NoPersistScope.

La captura de pantalla siguiente muestra la actividad Sequence creada automáticamente en Body cuando se coloca un segundo elemento WriteLine debajo del primero.The following screenshot shows the automatically created Sequence activity in the Body when a second WriteLine is dropped below the first.

Una secuencia creada automáticamente en el cuerpo de un NoPersistScope.

Modo panorámicoPan Mode

Para navegar con mayor facilidad en un flujo de trabajo grande en el diseñador, se puede habilitar el modo panorámico, lo que permite al desarrollador hacer clic y arrastrar para mover la parte visible del flujo de trabajo, en lugar de tener que usar las barras de desplazamiento.To more easily navigate a large workflow in the designer, pan mode can be enabled, allowing the developer to click and drag to move the visible portion of the workflow, rather than needing to use the scroll bars. El botón para activar el modo panorámico está en la esquina inferior derecha del diseñador.The button to activate pan mode is in the lower right corner of the designer.

En la captura de pantalla siguiente se muestra el botón de panorámica que se encuentra en la esquina inferior derecha del diseñador de flujo de trabajo.The following screenshot shows the pan button which is located at the bottom right corner of the workflow designer.

El botón de panorámica resaltado en el Diseñador de flujo de trabajo.

El botón central del mouse o la barra espaciadora también se pueden usar para aplicar la panorámica al diseñador de flujo de trabajo.The middle mouse button or space bar can also be used to pan the workflow designer.

Selección múltipleMulti-select

Se pueden seleccionar varias actividades al mismo tiempo; para ello, se arrastra un rectángulo alrededor de ellas (cuando no se ha habilitado el modo panorámico) o manteniendo presionada la tecla CTRL y se hace clic en las actividades deseadas una por una.Multiple activities can be selected at one time, either by dragging a rectangle around them (when pan mode is not enabled), or by holding down Ctrl and click the desired activities one by one.

Asimismo, se pueden arrastrar y colocar en el diseñador selecciones múltiples de actividad, y también se puede interactuar con ellas mediante el menú contextual.Multiple activity selections can also be dragged and dropped within the designer, and can also be interacted with using the context menu.

Vista de esquema de los elementos de flujo de trabajoOutline view of workflow items

Para que sea más fácil navegar en los flujos de trabajo jerárquicos, los componentes de un flujo de trabajo se muestran en una vista de esquema de árbol.In order to make hierarchical workflows easier to navigate, components of a workflow are shown in a tree-style outline view. La vista de esquema se muestra en el esquema del documento vista.The outline view is displayed in the Document Outline view. Para abrir esta vista, en el menú superior, seleccione vista, Other Windows, esquema del documento, o bien presione Ctrl W, U.To open this view, from the top menu, select View, Other Windows, Document Outline, or press Ctrl W,U. Al hacer clic en un nodo en la vista de esquema navegará a la actividad correspondiente en el diseñador de flujo de trabajo, y la vista de esquema se actualizará para mostrar las actividades seleccionadas en el diseñador.Clicking on a node in outline view will navigate to the corresponding activity in the workflow designer, and the outline view will be updated to show activities that are selected in the designer.

Captura de pantalla siguiente del flujo de trabajo completada desde la Tutorial de introducción muestra la vista de esquema con un flujo de trabajo secuencial.The following screenshot of the completed workflow from the Getting Started Tutorial shows the outline view with a sequential workflow.

Captura de pantalla de vista de esquema con un flujo de trabajo secuencial en Visual Studio.

Expresiones de C#C# Expressions

Antes de .NET Framework 4.5, todas las expresiones de flujos de trabajo solo podrían escribirse en Visual Basic.Prior to .NET Framework 4.5, all expressions in workflows could only be written in Visual Basic. En .NET Framework 4.5, solo se usan expresiones de Visual Basic para proyectos creados con Visual Basic.In .NET Framework 4.5, Visual Basic expressions are only used for projects created using Visual Basic. Los proyectos de Visual C# ahora usan C# para expresiones.Visual C# projects now use C# for expressions. Se proporciona un editor de expresiones de C# totalmente funcional con capacidades tales como resaltado de gramática e IntelliSense.A fully functional C# expression editor is provided which capabilities such as grammar highlighting and intellisense. Seguirán funcionando los proyectos de flujo de trabajo de C# creados en versiones anteriores que usan expresiones de Visual Basic.C# workflow projects created in previous versions that use Visual Basic expressions will continue to work.

Las expresiones de C# se validan en tiempo de diseño.C# expressions are validated at design-time. Los errores en las expresiones de C# se marcan con un subrayado ondulado rojo.Errors in C# expressions will be marked with a red wavy underline.

Para obtener más información sobre las expresiones de C#, vea expresiones de C#.For more information about C# expressions, see C# Expressions.

Más control de visibilidad de barra de shell y el encabezado de elementosMore control of visibility of shell bar and header items

En un diseñador rehospedado, algunos de los controles estándar de la interfaz de usuario pueden no tener significado para un flujo de trabajo determinado y se pueden desactivar.In a rehosted designer, some of the standard UI controls may not have meaning for a given workflow, and may be turned off. En .NET Framework 4.NET Framework 4, solo la barra de shell de la parte inferior del diseñador admite esta personalización.In .NET Framework 4.NET Framework 4, this customization is only supported by the shell bar at the bottom of the designer. En .NET Framework 4.5, la visibilidad de los elementos de encabezado de shell en la parte superior del diseñador se puede ajustar estableciendo WorkflowShellHeaderItemsVisibility con los valores adecuados ShellHeaderItemsVisibility valor.In .NET Framework 4.5, the visibility of shell header items at the top of the designer can be adjusted by setting WorkflowShellHeaderItemsVisibility with the appropriate ShellHeaderItemsVisibility value.

Conexión automática e inserción automáticas en flujos de trabajo de diagrama de flujo y la máquina de EstadosAuto-connect and auto-insert in Flowchart and State Machine workflows

En .NET Framework 4.NET Framework 4, las conexiones entre los nodos de un flujo de trabajo de diagrama de flujo tenían que agregarse manualmente.In .NET Framework 4.NET Framework 4, connections between nodes in a Flowchart workflow had to be added manually. En .NET Framework 4.5, los nodos de diagrama de flujo y la máquina de estados tienen conexión automática de puntos que se hacen visibles cuando se arrastra una actividad desde el cuadro de herramientas a la superficie del diseñador.In .NET Framework 4.5, Flowchart and State Machine nodes have auto-connect points that become visible when an activity is dragged from the toolbox onto the designer surface. Al colocar una actividad en uno de estos puntos se agrega automáticamente la actividad junto con la conexión necesaria.Dropping an activity on one of these points automatically adds the activity along with the necessary connection.

La captura de pantalla siguiente muestra los puntos de unión que se hacen visibles cuando se arrastra una actividad desde el cuadro de herramientas.The following screenshot shows the attachment points that become visible when an activity is dragged from the toolbox.

Puntos de conexión automática de que se muestra el nodo de inicio de diagrama de flujo

Las actividades también se pueden arrastrar a las conexiones entre los nodos y estados de un diagrama de flujo para insertar automáticamente el nodo entre otros dos nodos.Activities can also be dragged onto connections between flowchart nodes and states to auto-insert the node between two other nodes. La captura de pantalla siguiente muestra la línea de conexión resaltada donde se pueden arrastrar y colocar actividades del cuadro de herramientas.The following screenshot shows the highlighted connecting line where activities can be dragged from the toolbox and dropped.

Controlador de inserción automática para colocar actividades

Anotaciones de diseñadorDesigner Annotations

Para facilitar el desarrollo de flujos de trabajo de mayor tamaño, el diseñador admite ahora agregar anotaciones para ayudar a realizar el seguimiento del proceso de diseño.To facilitate developing larger workflows, the designer now supports adding annotations to help keep track of the design process. Se pueden agregar anotaciones a actividades, estados, nodos del diagrama de flujo, variables y argumentos.Annotation can be added to activities, states, flowchart nodes, variables and arguments. En la captura de pantalla siguiente se muestra el menú contextual usado para agregar anotaciones al diseñador.The following screenshot shows the context menu used to add annotations to the designer.

Captura de pantalla que muestra un menú para agregar anotaciones.

Estados de depuraciónDebugging states

En .NET Framework 4.NET Framework 4, los elementos de no actividad no podían admitir puntos de interrupción de depuración porque no eran unidades de ejecución.In .NET Framework 4.NET Framework 4, non-activity elements could not support debug breakpoints since they were not units of execution. Esta versión proporciona un mecanismo para agregar puntos de interrupción a objetos State.This release provides a mechanism for adding breakpoints to State objects. Cuando se establece un punto de interrupción en un State, la ejecución se interrumpirá cuando se cambie al estado, antes de que se programen las actividades o desencadenadores de entrada.When a breakpoint is set on a State, execution will break when the state is transitioned to, before its entry activities or triggers are scheduled.

Definir y usar objetos ActivityDelegate en el diseñadorDefine and consume ActivityDelegate objects in the designer

Las actividades de .NET Framework 4.NET Framework 4 usaban objetos ActivityDelegate para exponer puntos de ejecución donde otras partes del flujo de trabajo podían interactuar con la ejecución de un flujo de trabajo, pero para usar estos puntos de ejecución a menudo era necesaria una cantidad de código considerable.Activities in .NET Framework 4.NET Framework 4 used ActivityDelegate objects to expose execution points where other parts of the workflow could interact with a workflow's execution, but using these execution points usually required a fair amount of code. En esta versión, los desarrolladores pueden definir y usar delegados de actividad mediante el diseñador de flujo de trabajo.In this release, developers can define and consume activity delegates using the workflow designer. Para obtener más información, vea Cómo: Definir y consumir delegados de actividad en el Diseñador de flujo de trabajo.For more information, see How to: Define and consume activity delegates in the Workflow Designer.

Validación en tiempo de compilaciónBuild-time validation

En .NET Framework 4.NET Framework 4, los errores de validación del flujo de trabajo no se contaban como errores de compilación durante la compilación de un proyecto de flujo de trabajo.In .NET Framework 4.NET Framework 4, workflow validation errors weren’t counted as build errors during the build of a workflow project. Esto significaba que la compilación de un proyecto de flujo de trabajo podía realizarse correctamente aunque hubiera errores de validación del flujo de trabajo.This meant that building a workflow project could succeed even when there were workflow validation errors. En .NET Framework 4.5, los errores de validación del flujo de trabajo provocar un error en la compilación.In .NET Framework 4.5, workflow validation errors cause the build to fail.

Validación de tiempo de diseño en segundo planoDesign-time background validation

En .NET Framework 4.NET Framework 4, flujos de trabajo se validaban como un proceso en primer plano, que potencialmente podría bloquear la interfaz de usuario durante los procesos de validación complejo o largo.In .NET Framework 4.NET Framework 4, workflows were validated as a foreground process, which could potentially block the UI during complex or time-consuming validation processes. La validación del flujo de trabajo ahora tiene lugar en un subproceso de fondo, para no bloquear la interfaz de usuario.Workflow validation now takes place on a background thread, so that the UI is not blocked.

Estado de vista se encuentra en una ubicación diferente en archivos XAMLView state located in a separate location in XAML files

En .NET Framework 4.NET Framework 4, la información de estado de la vista para un flujo de trabajo se almacena en el archivo XAML en muchas ubicaciones diferentes.In .NET Framework 4.NET Framework 4, the view state information for a workflow is stored across the XAML file in many different locations. Esto es un problema para los desarrolladores que desean leer directamente XAML o escribir código para quitar la información de estado de la vista.This is inconvenient for developers who want to read XAML directly, or write code to remove the view state information. En .NET Framework 4.5, la información de estado de vista en el archivo XAML se serializa como un elemento independiente en el archivo XAML.In .NET Framework 4.5, the view state information in the XAML file is serialized as a separate element in the XAML file. Los desarrolladores fácilmente pueden localizar y editar la información de estado de vista de una actividad o quitar por completo el estado de vista.Developers can easily locate and edit the view state information of an activity, or remove the view state altogether.

Extensibilidad de la expresiónExpression extensibility

En .NET Framework 4.5, se proporciona una manera para que los desarrolladores crear su propia expresión y la expresión de experiencia de creación que puede incluirse en el Diseñador de flujo de trabajo.In .NET Framework 4.5, we provide a way for developers to create their own expression and expression authoring experience that can be plugged into the workflow designer.

Participar en las características de flujo de trabajo 4.5 en el diseñador rehospedadoOpt-in for Workflow 4.5 features in rehosted designer

Para mantener la compatibilidad con versiones anteriores, algunas nuevas características incluidas en .NET Framework 4.5 no están habilitadas de forma predeterminada en el diseñador rehospedado.To preserve backward compatibility, some new features included in .NET Framework 4.5 are not enabled by default in the rehosted designer. Esto sirve para asegurarse de que las aplicaciones existentes que usan el diseñador rehospedado no dejen de funcionar por la actualización a la versión más reciente.This is to ensure that existing applications that use the rehosted designer are not broken by updating to the latest version. Para habilitar las nuevas características en el diseñador rehospedado, establezca TargetFrameworkName en ".NET Framework 4.5" o establezca miembros individuales de DesignerConfigurationService para habilitar características individuales.To enable new features in the rehosted designer, either set TargetFrameworkName to ".NET Framework 4.5", or set individual members of DesignerConfigurationService to enable individual features.

Nuevos modelos de desarrollo de flujo de trabajoNew Workflow Development Models

Además de los modelos de desarrollo de flujo de trabajo de diagrama de flujo y secuenciales, esta versión incluye flujos de trabajo de máquina de estados y servicios de flujo de trabajo de contrato primero.In addition to flowchart and sequential workflow development models, this release includes State Machine workflows, and contract-first workflow services.

Flujos de trabajo de equipo de estadoState machine workflows

Los flujos de trabajo de máquina de estados se incluyeron como parte de .NET Framework 4, versión 4.0.1 en la Microsoft .NET Framework 4 Platform Update 1.State machine workflows were introduced as part of the .NET Framework 4, version 4.0.1 in the Microsoft .NET Framework 4 Platform Update 1. Esta actualización incluía varias clases y actividades nuevas que permitían a los desarrolladores crear flujos de trabajo de máquina de estados.This update included several new classes and activities which allowed developers to create state machine workflows. Estas clases y actividades se han actualizado para .NET Framework 4.5.These classes and activities have been updated for .NET Framework 4.5. Las actualizaciones incluyen:Updates include:

  1. Capacidad de establecer puntos de interrupción en estadosThe ability to set breakpoints on states

  2. Capacidad de copiar y pegar transiciones en el diseñador de flujo de trabajoThe ability to copy and paste transitions in the workflow designer

  3. Compatibilidad del diseñador para la creación de transiciones de desencadenador compartidasDesigner support for shared trigger transition creation

  4. Actividades usadas para crear flujos de trabajo de máquina de estados, incluidas: StateMachine, State y TransitionActivities used to create State Machine workflows, including: StateMachine, State, and Transition

Captura de pantalla siguiente muestra el flujo de trabajo de máquina de estado completado de la Tutorial de introducción paso Cómo: Crear un flujo de trabajo de máquina de estados.The following screenshot shows the completed state machine workflow from the Getting Started Tutorial step How to: Create a State Machine Workflow.

Ilustración que muestra el flujo de trabajo de máquina de estado completado.

Para obtener más información sobre la creación de flujos de trabajo de máquina de Estados, vea flujos de trabajo de máquina de estados.For more information on creating state machine workflows, see State Machine Workflows.

Desarrollo de flujo de trabajo de contrato primeroContract-first workflow development

La herramienta de desarrollo de flujo de trabajo de contrato primero permite al desarrollador diseñar un contrato en code first y, después, con unos pocos clics en Visual Studio, generar automáticamente una plantilla de actividad en el cuadro de herramientas que representa cada operación.The contract-first workflow development tool allows the developer to design a contract in code first, then, with a few clicks in Visual Studio, automatically generate an activity template in the toolbox representing each operation. Estas actividades se usan para crear un flujo de trabajo que implemente las operaciones definidas por el contrato.These activities are then used to create a workflow that implements the operations defined by the contract. El diseñador de flujo de trabajo validará el servicio de flujo de trabajo para garantizar que estas operaciones se implementan y la signatura del flujo de trabajo coincide con la signatura del contrato.The workflow designer will validate the workflow service to ensure that these operations are implemented and the signature of the workflow matches the contract signature. El desarrollador también puede asociar un servicio de flujo de trabajo a una colección de contratos implementados.The developer can also associate a workflow service with a collection of implemented contracts. Para obtener más información sobre el desarrollo de servicios de flujo de trabajo de contrato primero, vea Cómo: Crear un servicio de flujo de trabajo que consuma un contrato de servicio existente.For more information on contract-first workflow service development, see How to: Create a workflow service that consumes an existing service contract.