Development

Connection Pooling

What Is Connection Pooling?

Connection pooling enables the reuse of existing connections to reduce the overhead of continuously creating and disposing of connections that have the same configuration. In other words, opening and closing connections that use the same connection string and credentials can reuse a connection that is available in the pool. Typical applications use the same connection objects to continuously fetch and update data from a database. Connection pooling provides a much higher level of performance by eliminating the need for the database to constantly create and dispose of connections. Connection pools are separated by process, application domain, and connection string. For connection strings that use integrated security, a separate pool is created for each unique identity.

Controlling Connection Pooling Options

Connection pooling is enabled by default when creating ADO.NET connection objects. You can control connection pooling behavior (or disable pooling altogether) by setting connection string keywords specific to connection pooling. For example, to specifically disable connection pooling, you set Pooling=False in your connection string. Table 5-7 provides a list of connection string keywords that can be used to control how a specific connection interacts with the connection pool. Not all keywords are available for every provider. For example the OLE DB provider controls connection pooling (also known as resource or session pooling) based on the value set for the OLE DB Services keyword in the connection string.

Table Connection Pooling Connection StringIn addition to connection string properties that control connection pooling behavior, there are also methods available on connection objects that can affect the pool as well. The available methods are typically used when you are closing connections in your application and you know they will not be used again. This clears the connection pool by disposing of the connections instead of returning them to the pool when they are closed. Any connections that are already in the pool and open will be disposed of the next time they are closed. Table 5-8 lists the available methods for interacting with connection pools.

Configuring Connections to Use Connection Pooling

By default, all .NET Framework Data Providers available in ADO.NET have connection pooling turned on, but the level of control available for working with connection pooling varies  based on the provider being used.

Configuring Connection Pooling with SQL Server Connections

By default, the SqlConnection object automatically uses connection pooling. Each time you call Sqlconnection.Open with a unique connection string, a new pool is created. Control connection pooling behavior by setting the connection pool keywords in the connection string as described earlier in Table 5-7. For example, consider a connection where you want to set the minimum pooi size. By assigning a value greater than zero to the Mîn Pool Size keyword you ensure the pool will not be destroyed until after the application ends. To set the minimum pooi size to 5, use a connection string similar to the following:

Data Source=SqlServerName;Initial Catalog=DatabaseName; Integrated Security=True;Min Pool Size=5

The minimum pool size is 0 by default, which means each connection needs to be created and initialized as they are requested, by increasing the minimum pool size in the connection string the indicated number of connections are created and ready to use, which can reduce the time it takes to establish the connection on those initial connections.

Configuring Connection Pooling with Oracle Connections

Connections that use the .NET Framework Data Provider for Oracle automatically use connection pooling by default. You can control how the connection uses pooling by setting connection string keywords. Table 5-10 details the connection string keywords available for altering connection pooling activities.

Handling Connection Errors

When SQL Server returns a warning or an error, the .NET Framework Data Provider for SQL Server creates and throws a SqlException that you can catch in your application to deal with the problem. When SqlException is thrown, inspect the SqlException.Errors property to access the collection of errors that are returned from the SQL server. The SqlException.Errors property is a SqlErrorCollectíon class (a collection of SqlError classes) that always contains at least one SqlError object.

MORE INFO SQL Server errors

SqlConnection will remain open for messages with a severity level of 19 and below, but it will typically close automatically when the severity is 20 or greater.

Summary

  • Connection pooling is enabled by default.
  • Connection pooling options are set in the connection string except for the ODBC provider, which uses the ODBC Data Source Administrator dialog box in Windows.
  • A SqlException object is created when an error is detected on the SQL server.
  • Every instance of a SqlException exception contains at least one SqlError warning that contains the actual error information from the server.
  • Windows Authentication (also called Integrated Security) is the suggested method for connecting to data securely.
  • Store connection strings that contain sensitive information in the application configuration file and encrypt all settings that contain confidential information.
Advertisements
Development

Moodle

Moodle es un CMS (Content Management System). Esta plataforma, enmarcada en el proceso de enseñanza-aprendizaje, es una aplicación diseñada para facilitar tanto a los educadores a crear rápidamente cursos y sus contenidos en línea, así como a los estudiantes, quienes pueden interactuar de manera intuitiva y participar en dicho proceso de aprendizaje virtual.

Moodle fue creado por el Australiano Martín Dougiamas (inicio 1999), quien basó su desarrollo sobre el constructivismo en pedagogía, que afirma que el conocimiento se construye en la mente del estudiante en lugar de ser transmitido sin cambios a partir de libros o enseñanzas. Esta aplicación se distribuye gratuitamente como Software libre (Open Source) (bajo la Licencia pública GNU) y aún es dirigido por su creador. La primera versión salió en 2002 y empezó su crecimiento exponencial. Hoy va en camino a convertirse en un estándar de plataforma educativa virtual, con usuarios tan prestigiosos como la británica Open University, con 180.000 estudiantes. Está presente en más de 146 países y se ha traducido a 70 idiomas.

Moodle tiene un diseño modular que permite ir construyendo el curso mediante actividades de aprendizaje.
Los usuarios pueden ser estudiantes, profesores, creadores y administradores. Los privilegios de la creación de un curso son asignados a un profesor.
Al crear un curso, este puede estar estructurado en base a un formato de temas, formato semanal, formato social, formato de curso LAMS o formato SCORM.

Una vez que se ha creado un curso se puede activar el modo de edición y colocar el contenido. También se dispone del modo vista de estudiantes que permite visualizar la forma en como un estudiante vería el contenido del curso.

Características

Para el administrador del Sistema

1. Moodle se ejecuta sin modificaciones bajo Unix, Linux, Windows, Mac OS X, Netware y otros sistemas operativos que permitan PHP (la mayor parte proveedores de alojamiento Web lo permiten)

2. Moodle esta diseñado de manera modular, y permite una gran flexibilidad para agregar y quitar funcionalidades en muchos niveles.

3 Moodle se actualiza muy fácilmente desde una versión anterior a la siguiente – tiene un sistema interno para actualizar y reparar su bases de datos cada cierto tiempo.

4. Moodle usa solamente una base de datos (si lo necesita puede compartirla con otras aplicaciones).

5. Moodle usa una completa abstracción de bases de datos, soporta las principales marcas de bases de datos.

6. Se ha puesto énfasis en una seguridad sólida en toda la plataforma.

7. Todos los formularios son revisados, las cookies encriptadas, etc.

8. Si ocurre una falla se puede restablecer al nivel anterior de funcionamiento. Además muestra mensajes de ayuda y se cuenta con un área de foro que brinda soporte a los usuarios de esta aplicación.

9. Moodle permite integrar con facilidad actividades de otras aplicaciones, por ejemplo las del Hot Potatos, LAMS (Learning Activitiy Management System). Así mismo es posible integrarse con otras aplicaciones como el Mambo, Xoops, etc.

continuara…

Development

Arquitectura de Software – Overview

Paradigmas de Desarrollo

Un paradigma de desarrollo de software es un estilo o manera standard de pensar el desarrollo

 Paradigmas de Desarrollo de Software

·         La manera en cómo se encara un problema, puede significar la diferencia de algunas órdenes de gran complejidad en el desarrollo de software.

·         En virtud a esta importancia, surgieron diversos paradigmas donde el estudio de estas permite comprender la evolución de la ciencia de computación

·         Así como diferentes grupos de ingeniería de software proponen diferente s metodologías; diferentes lenguajes de programación proponen diferentes paradigmas de programación.

·         Los paradigmas de programación se diferencian muchas veces por las técnicas que prohíben o permiten.

·         La relación entre paradigmas de programación y lenguaje de programación puede ser complejas pero los lenguajes de programación pueden soportar más de un paradigma.

Por ejemplo, la programación estructurada no permite el uso de la sentencia GoTo.

Nombraré algunos paradigmas:

·         Programación no estructurada

·         Programación procedural

·         Programación estructurada

·         Programación declarativa

·         Programación funcional

·         Programación dirigida a eventos

·         Programación orientada a flujos

·         Programación orientada a flujo de datos

·         Programación orientado a políticas

·         Programación orientado a objetos

·         Programación de pasajes de mensajes

·         Programación orientada a aspectos

Programación No Estructurada

·         Todo código contenido en un único bloque.

·         Uso de la sentencia Goto.

·         Assembly

·         Batch

Programación Estructurada

·         Basado en programación procedural

§  Código organizado en bloques llamados procedures

·         Principal restricción es la prohibición del uso de la sentencia GoTo.

Ejemplo en lenguaje Basic:

Dim i
For i=1 to 10
                Print i; “ squared = “; i*i;
Next
Print “ Program completed.”

Programación Funcional

·         Con una concepción de computación como evolución de funciones matemáticas, la programación funcional enfoca la ausencia de estado y modificación de contenido.

·         Lenguajes como XSLT son funciones, y C o C++ son bastante apropiado para implementación de aplicaciones siguiendo este paradigma.

·         La construcción de código funcional facilita el uso de recursos de paralelismo en aplicaciones

Conceptos:

·         Funciones Higher-order

·         Funciones como Entrada y/o Salida

·         Funciones Puras

·         Recurrencia

Ejemplo lenguaje J:

Key sin(exp), cos(exp) plot(;(sin, :cos)@^)-:>:i:3j100

Programación orientada a eventos

·         Lenguajes de programación orientados a eventos como Visual Basic 6 o anteriores, tomaron gran importancia con el uso de interfaces graficas en usuarios de Windows.

·         El principio básico es el que una aplicación espera acciones del usuario, de otras aplicaciones, del sistema operativo, o de hardware, que provocan los llamados eventos.

El tratamiento de eventos de Windows es organizado por colas de mensajes. Este proceso es conocido como “Message Pump”.

Programación orientada a objetos

·         Utiliza la abstracción de objetos para el modelaje de clases

§  Tienen estado y funcionalidad

Principales conceptos: Clases, Objetos, Métodos, Herencia, Encapsulamiento, Abstracción, Polimorfismo.

Diagrama UML – Programación orientada a objetos

Clase: Course

Properties: Name, Course Number, Fees

Methods: GetFullName(), GetCourseNumber(), SetCourseNumber(number), GetFees(), SetFees(amount), GetName(), SetName(name)

Objeto: Course1

Objeto: Course 2

Name=Mathematics

Name=Literature

Course Number=1

Course Number=2

Fees=20

Fees= 25


Programación de Pasaje de Mensajes

Conceptos:

·         Loose Coupling

·         Concurrent Computing

·         Distributed Computing

Loose Coupling

·         Que las clases dependan lo menos posible entre si

·         Permite independizar las distintas áreas de funcionalidad y se aplica varios patrones de diseño. Ej. Patrón de diseño Arquitectónico de división  en capas, Patrón de diseño de programación orientada a servicios.

En el caso de las capas el Loose Coupling nos permite hacer desarrollos independientemente de la tecnología, nos permite trabajar con interfaces graficas diferenciadas desacoplando la capa de presentación como por ejemplo podría ser una capa Web o una capa de dispositivo Móvil permitiendo que se pueda crear una capa independiente de la capa de negocio.

Concurrent Computing

Atender a varios usuarios de forma simultanea

Facilita:

·         Programación Asincrónica

·         Programación sin gerenciamiento de estado

·         Programación concurrente

·         Programación distribuida

·         Programación funcional

Ejemplos:

·         SOAP – Web Services

·          Project (Para C# 3.0)

Aplicada juntamente con la aplicación orientada a objetos, permite el desarrollo de aplicaciones basadas en arquitectura SOA.

Lo más obvia es la basada en el protocolo SOAP (Simple Object Access Protocol) que es la base de los servicios web donde tenemos pasajes de mensajes de formato XML de un lado a otro usando el protocolo de transporte http.

Código Net para tratamiento de documentos XML:

decimal GetTotalbyZip(XmlDocument doc, int zip)

        {

            //for each order in 98052 zip code, do price * quantity, of item and add it

            //to the running total.

            decimal total =0;

            string xpathQuery = "orders/order[zip=’" + zip+ "’]/item";

 

            foreach (XmlDocument item in doc.SelectNodes(xpathQuery))

            {

                XmlNode price = item.SelectSingleNode("price");

                XmlNode qty = item.SelectSingleNode("qunatity");

                decimal p = Decimal.Parse(price.InnerText);

                decimal q = Decimal.Parse(qty.InnerText);

                total +=p*q;

            }

            return total;

        }

Código

public decimal GetTotalbyZip(Orders orders, int zip)

{

float total =0;

 

      foreach (Item item in orders.order[zip == zip].item)

      {

            Total += item.price * item.quantity;

      }

      Order.total = total;

}

Programación orientada a Políticas

·         Lenguajes basadas en plataformas de maquinas virtuales como Java o .Net, posibilitan el desenvolvimiento de aplicaciones que tengan un comportamiento modificado por el entorno en tiempo de compilación o de ejecución.

·         Políticas de compilación pueden envolver configuraciones como selección de la base de datos utilizada o plataforma destino.

·         Políticas de ejecución pueden indicar el lugar del servidor de base de datos o el de aplicación y políticas de seguridad, con alguna cuenta a ser utilizada o detalles de acceso.

Reglas establecidas para ejecución de código

En .Net las políticas son implementadas con la clausula Atributos:

[HelpAttribute(“http://localhost/MyClassInfo”)]
class MyClass{}

Programacion orientada a Aspectos

Este paradigma procura aislar (isolate) los diversos aspecxtos de una aplicación, llamados de intereses (concern)

Caracteristicas: Crosscutting Concerns, Join Point, Piunt Cut, Mixin, Weaving, Advice

Enterprise Library nos brinda muchas de estas características.

Aplicación de Paradigmas

·         Service Oriented Architecture (SOA)

·         High-Performance Computing (HPC)

Paradigmas involucrados:

·         Programación orientada a objetos

·         Programación de pasajes de mensajes

·         Programación orientada a políticas

Jonnathan De La Barra PC
"Manteniendo el Aprendizaje Continuo"
"Las preguntas derivan de una curiosidad natural por aprender "
"Nuestro miedo a cometer errores está tan arraigado en nosotros que habitualmente reaccionamos ante ellos cegándonos a la enseñanza y al aprendizaje real que contienen"

Development

Windows WorkFlow Foundation – Part III

Windows Workflow Persistence Services

Muchos procesos de negocios demoran largos períodos de tiempo en completarse. Mantener el Workflow en memoria no sólo es poco práctico (por limitaciones de memoria), sino que también evita el escalamiento, porque una instancia debe ser procesada en un solo servidor.

Muchos de estos workflows de larga duración no están actualmente ejecutando un flujo o una lógica de procesos y son efectivamente lentos, esperando un ingreso por parte de un usuario u otro sistema. Al descargar una instancia lenta, la aplicación host puede ahorrar memoria y permitir la escalabilidad entre servidores que están procesando.

Cuando ciertas condiciones ocurren mientras un workflow se está ejecutando, el motor del runtime de workflow usa un servicio de persistencia, si uno es cargado en el runtime, para persistir el estado de información sobre la instancia workflow. Estas condiciones incluyen las siguientes:

Ø  Cuando transacciones atómicas en actividades TransactionScopeActivity y CompensatableTransactionScopeActivity son completadas.

Ø  Cuando una instancia workflow se torna lenta y el flag UnloadOnIdle es establecido en true para un WorkflowPersistenceService.

Ø  Cuando la aplicación host del runtime llama a  System.Workflow.Runtime.WorkflowInstance.Unload o a System.Workflow.Runtime.WorkflowInstance.RequestPersist en la instancia workflow.

Ø  Cuando una instancia workflow es terminada o finaliza.

Ø  Cuando una actividad personalizada que usa el atributo PersistOnCloseAttribute se completa.

Ø  Cuando una actividad CompensatableSequenceActivity se completa.

Si se cumple alguna de estas condiciones y el servicio de persistencia es agregado al motor del runtime, éste llama a métodos que son proporcionados por el servicio de persistencia para guardar el estado de información sobre la instancia workflow. De manera similar, cuando el motor del runtime tiene que recuperar una instancia workflow previamente persistida, llama a métodos que son proporcionados por el servicio de persistencia para cargar este estado de información. En otras palabras, el motor del runtime de workflow determina cuándo debería producirse la persistencia, pero la ejecución de las operaciones de persistencia necesarias depende de un servicio de persistencia.

Creando servicios de persistencia

Se pueden crear servicios de persistencia derivando una clase desde la clase WorkflowPersistenceService. Es posible agregar su servicio de persistencia al motor del runtime del workflow invocando a AddService o realizando una entrada apropiada en el archivo de configuración de la aplicación.

Windows Workflow Foundation provee la clase SqlWorkflowPersistenceService, un servicio de persistencia “out-of-box”, el cual se puede usar como está o extenderlo.

Bloqueando información de estado del workflow

El motor del runtime de workflow tiene semánticas para bloquear la información de estado del workflow, para usarlas en ambientes donde los servicios de persistencia que se están ejecutando en distintos procesos pueden llegar a tener acceso a un solo almacenador de datos. La clase WorkflowPersistenceService le permite soportar esta funcionalidad del runtime proporcionando un parámetro a SaveWorkflowInstanceState, que especifica si la información de estado de una instancia workflow debería ser destrabada en el almacenador de datos, y proporcionando un método UnlockWorkflowInstanceState para desbloquear información de estado del workflow previamente bloqueado. En un servicio de persistencia que involucra al bloqueado, una llamada a LoadWorkflowInstanceState debería bloquear la información de estado para una instancia workflow.

Cuando cree su propio servicio de persistencia, tire un PersistenceException si el servicio no guarda la información de estado en su almacenador de datos o carga información de estado desde su almacenador de datos. El runtime del workflow espera este comportamiento.

Persistence Service Batching Behavior

Un mecanismo de batching es proporcionado por servicios que usan un almacenador duradero para salvar información de estado de un workflow. En estos casos es importante mantener consistencia entre el almacenador que es usado por el servicio de persistencia y el estado interno del runtime del workflow. Se le puede agregar funcionalidad al servicio, que es definida por la interfaz IPendingWork, y hacer que participe en el batching de la transacción del workflow que es proporcionado por el servicio WorkflowCommitWorkBatchService, agregando estos cambios a su almacenador de datos como ítems de trabajo al WorkBatch.

Complex Hosting Scenarios

Un escenario posible para el despliegue de las soluciones de Windows Workflow Foundation es crear múltiples aplicaciones host, cada una con un conjunto diferente de servicios que estén corriendo en distintas configuraciones de escritorio y servidores. Bajo este escenario, un requerimiento puede ser que algunos workflows que están definidos en la solución sólo se puedan ejecutar en ciertos sistemas. Los servicios “out-of-box” en Windows Workflow Foundation, como el servicio SqlWorkflowPersistenceService, no soportan este tipo de configuración. Para controlar qué instancias workflow se cargaran en qué sistema, se deberá crear un servicio de persistencia personalizado.

Windows Workflow Tracking Services

Windows Workflow Foundation le permite rastrear su información relacionada con un workflow de una manera consistente, confiable y flexible. El framework de rastreo de Windows Workflow Foundation está diseñado para permitirles a los hosts observar las instancias workflow durante la ejecución capturando eventos que son disparados durante el tiempo de ejecución.

El framework es un diseño “conectable” que les permite a hosts escribir su propio servicio de rastreo o usar un servicio de rastreo “out-of-the-box” o de un tercero. Adicionalmente, debido a que el runtime de Windows Workflow Foundation permite agregar varios servicios de runtime durante su tiempo de vida, múltiples servicios de rastreo de diferentes tipos pueden ser habilitados simultáneamente. Por ejemplo, Windows Workflow Foundation contiene un servicio “out-of-box” SqlTrackingService que permite escribir una cantidad configurable de información de rastreo a una base de datos SQL Server.

Windows Workflow Foundation contiene varias características incorporadas para permitir el rastreo en una aplicación workflow.

l  Se asegura de que el rastreo ocurra de una manera consistente.

l  Provee escalabilidad y confiabilidad.

l  Permite que los datos sean rastreados a pesar del almacén de datos subyacente.

l  Provee una locación para consultar por datos relacionados con el workflow por medio de ambientes de hosting.

l  Brinda la habilidad para consultar en ciclos de vida de workflows pasados y presentes, y determinar posibles futuros pasos de ejecución de instancias workflow.

Perfiles de rastreo

Los servicios de rastreo determinan la cantidad de datos que reciben usando un perfil de rastreo para filtrar esos datos. Un servicio de rastreo puede recibir eventos workflow, estados de ejecución, e ítems de rastreo de datos personalizados del usuario. El servicio de rastreo es responsable por los datos de rastreo que recibe del runtime cuando una instancia workflow se está ejecutando. Puede almacenar los datos en un archivo o en una base de datos, crear un almacén de consultas en memoria, escribir los datos en el log de eventos del sistema, o sólo darle salida de los datos de rastreo a la consola.

Se pueden crear perfiles de rastreo usando un esquema de Perfil de Rastreo XML, o programáticamente, usando el modelo de objeto Tracking Profile. Adicionalmente, los perfiles de rastreo basados en XML pueden ser deserializados a una instancia TrackingProfile usando el TrackingProfileSerializer de la API.

Cuando se usa el rastreo en Windows Workflow Foundation, se puede rastrear un simple evento o un grupo de eventos que son levantados durante la ejecución del workflow. Los eventos que pueden ser rastreados para actividades están definidos en la enumeración ActivityExecutionStatus.

En adición a los servicios de rastreo para actividades, la infraestructura de rastreo también le permite rastrear eventos que ocurran a nivel de la instancia workflow. El nivel de instancias de eventos que es posible rastrear puede ser definido en la enumeración TrackingWorkflowEvent.

Tipos de Worflows Soportados

Existen dos modelos de workflow: Sequential y State-Machine.

El modelo Sequential ejecuta actividades con un patrón predefinido, mientras que el modelo de State-Machine sólo conoce los estados posibles del sistema, a qué se dedica cada estado, a qué eventos externos responde y cómo (aquí se suele incluir cierta lógica en forma de workflow secuencial).

Sequential Workflow

Los workflows secuenciales están orientados a aplicaciones donde las actividades del workflow son ejecutadas en algún tipo de secuencia. Esta secuencia puede incluir loops, decisiones y otros tipos de controles de flujo, pero, no obstante, el workflow tiene un camino definido de principio a fin.

wwf_Sequential

State-Machine Workflow

En un workflow State-Machine, el workflow en sí está formado por un conjunto de estados. Cada estado puede recibir una cierta cantidad de conjuntos de eventos. El workflow State-Machine puede tener un estado final. Cuando una transición es hecha al estado final, el workflow se completa.

Organizar actividades workflow de esta manera es útil cuando la secuencia exacta de eventos es desconocida, como para un proceso de negocio Event-Driven, o cuando el número de posibilidades hace que definir todos los caminos posibles sea poco práctico. Un ejemplo primario de esto es un workflow que coordina el trabajo de personas en vez de aplicaciones. Los workflows State-Machine hacen que sea más fácil saltear pasos “al vuelo”, saltar a cualquier paso del proceso de negocio, o cancelar el proceso de negocio en cualquier momento. Los State-Machines pueden, también, proveer una manera de definir workflows que coincida en el modo en que algunas organizaciones piensan y documentan sus procesos de negocios. En casos como éstos, modelar workflows de esta manera puede ayudar a los desarrolladores y a la gente de negocios a trabajar juntos de una forma más eficiente.

También es posible anidar estados. Un evento definido en un estado externo aplica ambos a ese estado y a todos los estados que contiene. Esto provee una manera directa de expresar eventos que puedan ocurrir en cualquier momento en cualquiera de estos estados, como la cancelación de una orden.

wwf_StateMachine

Jonnathan De La Barra Hot

Development

Windows WorkFlow Foundation – Part II

Runtime Hosting

Todos los workflows dependen del Windows Workflow Foundation Runtime Engine. Este motor ejecuta cada workflow y maneja su estado a lo largo de su tiempo de vida. El Windows Workflow Foundation Runtime es una librería; por lo tanto, debe ser ejecutado en algún proceso host. En vez de proveer un host requerido, Windows Workflow Foundation le permite al runtime (y a cualquier workflow que ejecute) ser alojado en cualquier proceso Windows, desde una simple aplicación de consola de Windows o una aplicación de formulario, hasta un servidor complejo diseñado teniendo en cuenta el ambiente de workflow.

Windows Workflow Foundation cuenta con un conjunto de servicios que le permiten al runtime ejecutarse dentro de ASP.NET, aunque los vendedores independientes de software y los usuarios finales son libres de crear sus propias aplicaciones contenedoras de workflows para aplicaciones existentes.

Los diferentes hosts tendrán distintas características. Por ejemplo, un workflow que se ejecuta en un escritorio en una simple aplicación de Windows Forms, será menos escalable y menos confiable que un workflow hosteado en Windows SharePoint Services (WSS) o BizTalk Server.

A pesar de que cada host usa el mismo Runtime Engine, cada uno debe proveer un conjunto de servicios runtime. Estos servicios brindan soporte para persistir el estado de un workflow, rastrear su ejecución, usar transacciones, etc.  

Windows Workflow Foundation provee una implementación predeterminada para todos estos servicios que pueden ser usados por cualquier host. Para darse una idea de cómo trabaja el runtime de Windows Workflow Foundation con los servicios proporcionados por el host, se debe pensar en los aspectos fundamentales de un workflow.

Un workflow puede ser de larga duración, ya que podría ejecutarse durante horas, días o semanas, y el runtime de Windows Workflow Foundation podría apagarse durante un workflow, y persistentemente almacenaría su estado si hubiera estado inactivo por un período de tiempo.

La decisión de descargar el workflow se puede lanzar porque éste se encuentra bloqueado esperando un evento externo; esta decisión es tomada típicamente por el runtime. Para escribir estados del workflow en el disco, el runtime depende del servicio de persistencia proporcionado por su proceso host.

El host basado en ASP.NET que contiene Windows Workflow Foundation depende de Microsoft SQL Server para la persistencia. Otro host podría preferir persistir workflows usando otra tecnología, como, por ejemplo, una base de datos propietaria utilizada por una aplicación de un vendedor de software independiente.

Cualesquiera que sean los servicios que proporciona el host, las bases de hosting del Windows Workflow Foundation Runtime son muy simples. Una vez que una instancia es creada, puede ser inicializada llamando a su método StartRuntime. El proceso host es una parte importante del ambiente en el que se ejecuta un workflow, ya que el runtime puede ser contenido en un rango de procesos de Windows. Asimismo, los workflows de Windows Workflow Foundation pueden ser usados en una variedad de escenarios.

Workflow Runtime Events

Los eventos workflow son procesados por el Workflow Runtime a través de los delegados de manejo de eventos. Estos eventos son generados/levantados por el Workflow Runtime y no por el Workflow Instance. Asimismo, tampoco son modelados como parte de la definición de workflow.

El Workflow Runtime levanta eventos en tiempo de ejecución para instancias workflow.

Los eventos mandados por el Workflow Runtime contienen un objeto de tipo WorkflowId, que corresponde al workflow que generó el evento.

Provee un mecanismo para mantener el paso del ciclo de vida de las instancias de workflow:

WorkflowCreated, WorkflowCompleted, etc

Provee un mecanismo para seguir todas las instancias de workflow, ya que los workflows pueden ser:

Ø  Creados

Ø  Abortados

Ø  Terminados

Ø  Etc.

La clase WorkflowRuntime expone la funcionalidad requerida por una aplicación host, y servicios para configurar y controlar el runtime.

public class WorkflowRuntime : IServiceProvider, IDisposable

El namespace System.Workflow.Runtime contiene clases e interfaces que se pueden usar para controlar el runtime de workflow y la ejecución de una instancia workflow.

El namespace System.Workflow.Runtime contiene la clase WorkflowRuntime, que usted puede usar para configurar, controlar y suscribir a eventos para el runtime de workflow asociado con su dominio de aplicación. La clase WorkflowInstance provee un proxy para cada instancia workflow y le deja controlar la ejecución de un workflow. Además de estas clases, varias clases que tienen que ver con las colas de eventos workflow y con excepciones lanzadas por el runtime de workflow son contenidas en este namespace

CorrelationProperty: representa el nombre de la propiedad y el valor usado en un conjunto de correlación que maneje el tiempo de vida de la transacción entre un mensaje y un workflow.

CorrelationToken: maneja las suscripciones de la CorrelationProperty a las actividades del dueño. Esta clase no puede ser heredada.

Runtime Services

Windows Workflow Foundation provee distintos servicios que se pueden usar para manejar hilos de instancias workflow, trabajos batch a través de transacciones, persistencia de instancias workflow a un medio de almacenamiento para ser recuperadas más tarde, y el rastreo de ejecuciones de instancias workflow.

El runtime de workflow usa muchos servicios cuando una instancia de workflow se ejecuta. Estos componentes del servicio son “enchufables”, lo que les permite a las aplicaciones proveer servicios de maneras que son únicas a su ambiente de ejecución.

Windows Workflow Foundation provee implementaciones predeterminadas de los servicios del runtime que cumplen las necesidades de varios tipos de aplicaciones. Por ejemplo, estos componentes determinan el modelo de programación que es usado para correr instancias workflow, cómo se comunican el workflow y la aplicación host, cómo monitorear y rastrear su workflow, y demás.

Windows Workflow Scheduling Services

Los servicios Windows Workflow Scheduling controlan el modo en que las instancias workflow son programadas por el runtime de workflow, ya sean manejadas de una manera asincrónica a través del DefaultWorkflowSchedulerService, o manual, de manera sincrónica, a través del ManualWorkflowSchedulerService.

wwf_SchedulingServices

DefaultWorkflowSchedulerService es usado por el runtime de workflow por default. Crea y maneja los hilos que ejecutan las instancias workflow de una manera asincrónica en el runtime del workflow. Los workflows que están esperando para ejecutarse son almacenados en la cola interna del DefaultWorkflowSchedulerService. Cuando el DefaultWorkflowSchedulerService quiere empezar un workflow, un hilo es adquirido del thread pool del framework de .NET y es usado para correr el workflow. La propiedad MaxSimultaneousWorkflows determina qué cantidad de hilos simultáneos permitirá el servicio scheduler en un tiempo. Si el límite es cuatro, por ejemplo, el DefaultWorkflowSchedulerService adquirirá hasta cuatro hilos del thread pool del framework de .NET para ejecutar los workflows. Si cuatro workflows se están ejecutando actualmente, ítems adicionales de trabajo (workflows) son colocados en la cola y eventualmente ejecutados a medida que los hilos se van habilitando.

ManualWorkflowSchedulerService controla el número de hilos que aparecen en un proceso ASP.NET reutilizando el hilo que hizo la petición ASP.NET Web para correr la instancia workflow. Esto asegura que en cualquier momento, el número de hilos activos en el runtime de workflow iguale el número de peticiones Web activas en el proceso activo de ASP.NET.

ManualWorkflowSchedulerService no ejecuta automáticamente una instancia workflow que esté en la cola. El host debe invocar al RunWorkflow para ejecutar un workflow específico.

El ManualWorkflowSchedulerService provee un servicio de threading que le permite a la aplicación host que crea una instancia workflow donar el thread en el cual la instancia workflow es ejecutada. Usando este servicio de threading, las aplicaciones host pueden correr una instancia workflow en un simple thread (eso es, en modo sincrónico).

Windows Workflow CommitWorkBatch Services

El propósito de los servicios CommitWorkBatch es permitir una lógica personalizada a pesar de la comisión de batches de trabajo (también conocida como puntos persistentes). Cuando un trabajo batch es cumplido, el runtime llama al servicio CommitWorkBatch y pasa un delegado para que llame a hacer el cumplimiento del batch de trabajo. Igualmente, el runtime debe hacer el finalizado, pero permitiéndole a un servicio insertarse a sí mismo dentro de un proceso, lo que permite una personalización alrededor del proceso de finalización.

Existen dos tipos de CommitWorkBatch Services:

Ø  DefaultWorkflowCommitWorkBatch Service

Ø  SharedConnectionWorkflowBatch Service

DefaultWorkflowCommitWorkBatch Service

La razón principal de este tipo de servicios es permitir una lógica de manejo de errores personalizada. Si el servicio DefaultWorkflowCommitWorkBatchService posee la transacción, porque creó una, cuando Current retorna null (Nothing en Visual Basic), puede llamar al delegado más de una vez, creando una nueva transacción para cada llamada. El ejemplo más común de esto es manejar problemas de red intermitentes o cluster failovers de SQL. Si la llamada al CommitWorkBatchCallback tira una excepción, WorkflowCommitWorkBatchService puede atrapar esta excepción, empezar una nueva transacción, y llamar al delegado nuevamente. Esto da un nivel de resistencia a la ejecución de instancias workflow que de otra manera causaría que los workflows se terminaran.

SharedConnectionWorkflowCommitWorkBatch Service

Cuando el motor del runtime es iniciado, la clase WorkflowRuntime crea un objeto DefaultWorkflowCommitWorkBatch Service si ningún otro servicio WorkflowCommitWorkBatch fue agregado. Se puede usar este servicio en el workflow para soportar batches de trabajo que son necesarios para la integridad de datos.

También se puede decidir utilizar el servicio SharedConnectionWorkflowCommitWorkBatchService. Este servicio es usado para transacciones de bases de datos que utilizan una conexión compartida entre objetos diferentes.

static void Main(string[] args)

{

    string connectionString = " Initial Catalog=WorkflowDataStore;Data          Source=localhost;Integrated Security=SSPI;";

    WorkflowRuntime workflowRuntime = new WorkflowRuntime();

    workflowRuntime.AddService(new SharedConnectionWorkflowCommitWorkBatchService(connectionString));

    workflowRuntime.StartRuntime();

   // … workflowRuntime.StopRuntime();

}

Para utilizar el servicio SharedConnectionWorkflowCommitWorkBatchService en vez del servicio DefaultWorkflowCommitWorkBatchService en la instancia WorkflowRuntime, se puede usar el método AddService, como se muestra en el ejemplo. El parámetro para el constructor SharedConnectionWorkflowCommitWorkBatchService es el string de conexión a la base de datos.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <configSections>

    <section name="WorkflowServiceContainer" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>      

  </configSections>

  <WorkflowServiceContainer Name="Container Name" UnloadOnIdle="true">

    <CommonParameters>

      <add name="ConnectionString" value="Initial Catalog=WorkFlowStore;Data Source=localhost;Integrated Security=SSPI;" />

    </CommonParameters>

    <Services>

      <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

      <add type="System.Workflow.Runtime.Hosting.SharedConnectionWorkflowTransactionService, System.Workflow.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

      <add type="System.Workflow.Runtime.Tracking.SqlTrackingService, System.Workflow.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      <add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

    </Services>

  </WorkflowServiceContainer>

  <system.diagnostics> </system.diagnostics>

</configuration>

También se puede usar el archivo de configuración de la aplicación para crear el objeto SharedConnectionWorkflowCommitWorkBatchService. Cuando se hace eso, hay que agregar la información del string de conexión a la sección CommonParameters del archivo app.config. El ejemplo muestra un archivo de configuración de la aplicación que usa el servicio SharedConnectionWorkflowCommitWorkBatchService.

Jonnathan De La Barra Hot

Development

Windows Workflow Foundation (WWF) – Part 1

Windows Workflow Foundation permite la automatización de tareas, actividades y procesos (manejo de estado, flexibilidad), permitiendo utilizar transacciones integradas a través de workflows (flujos de trabajo). Además, aprovecha las capacidades de BizTalk Server.

En otras palabras, Windows Workflow Foundation permite abstraer la lógica de proceso en un componente adicional, que cuenta con una serie de servicios, y está encargado de coordinar el flujo de la ejecución de todo un programa. De esta forma, permite tener bien definidos los mecanismos que puedan ofrecer el estado apropiado y la transparencia de un proceso.

¿Qué es un workflow?

Un workflow es un conjunto de unidades elementales llamadas actividades, que son almacenadas en forma de un modelo que describe un proceso del mundo real. Los workflows proveen una manera de describir el orden de ejecución y de relaciones dependientes entre piezas cortas o largas de un trabajo que se está ejecutando. Este trabajo pasa por el modelo de principio a fin, y las actividades pueden ser ejecutadas por personas o por funciones de sistema.

wwf_intro

Facilita y describe procesos del mundo real

·         Actividades que realizan personas

·         Actividades que realizan sistemas

WWF incluye soporte para workflow tanto de sistemas como humano, a través de un extenso rango de escenarios, que incluyen:

– Workflow dentro de la línea de aplicaciones de negocios.
– Flujo de página de la interfaz del usuario.
– Workflow humano.
– Workflow compuesto para aplicaciones orientadas a servicios.
– Workflow conducido por reglas de negocios.
– Workflow para manejo de sistemas.

Se asocia con otras tecnologías:

 ASP.NET
– Windows Communication Foundation.
– Windows Presentation Foundation.

Aplicaciones que podrían llegar a usar workflows

Una aplicación ASP.NET que muestre páginas a sus usuarios podría usar un workflow para controlar el orden en que esas páginas son exhibidas. Esto hace que sea más fácil cambiar el flujo de las páginas sin que ellos tengan que modificarlas, como también separar la aplicación de la interfaz del usuario de su lógica de control.

Una aplicación compuesta en un ambiente orientado a servicios podría implementar su comportamiento de base usando un workflow. Como cada vez más y más las aplicaciones exponen su lógica a través de servicios Web, crear procesos de negocios que utilicen esos servicios se vuelve más fácil. Una tecnología workflow como Windows Workflow Foundation provee un contenedor para la lógica que invocaría a esos servicios, poniéndolos juntos en una aplicación compleja.

Una aplicación que apunte a un problema específico, como, por ejemplo, el manejo de la relación con el cliente (CRM: Customer Relationship Management), o un mercado vertical concreto, como el de servicios financieros, podrían ser construidos alrededor de un workflow. Este tipo de aplicación comúnmente implementa un número diferente de procesos de negocios, construyendo la lógica que manejan esos procesos en un WF común. De esta forma, la aplicación será más rápida de construir, más rápida de cambiar y más fácil de personalizar.

Requerimientos que debe cumplir un workflow simple

1.    Debe tener la habilidad de tomar decisiones basadas en reglas de negocios.  Este requerimiento incluye reglas simples, por ejemplo, una decisión de o no basada en el resultado de un chequeo de crédito, como también reglas más complejas, por ejemplo, conjuntos potencialmente largos que deben ser evaluados para hacer una decisión inicial.

2.    Formas de comunicarse con otros programas y otros sistemas fuera de workflows. Un ejemplo son los servicios Web u otras tecnologías.

3.    Maneras de interactuar con las personas. Por ejemplo, un encargado debe aprobar a sus empleados. Por lo tanto, el workflow debe ser capaz de mostrar una interfaz para el usuario o interactuar con los seres humanos a través de otro software.

4.    La habilidad de mantener el estado durante el tiempo de vida de un workflow. Especialmente cuando hay gente envuelta, como el encargado en este ejemplo, un workflow puede tomar mucho tiempo en completarse (por ejemplo, ¿qué pasaría si el encargado se tomara el día o dos semanas de vacaciones?). Construir sistemas escalables requiere una manera de desactivar el workflow y almacenar su estado persistentemente, para luego reactivarlo y cargar ese estado cuando el siguiente paso sea ejecutado.

Un workflow puede ofrecer cosas como:

1.    Un componente de tipo acercamiento a workflows, donde cada paso pueda ser implementado por una porción específica de software. Como en otras tecnologías de componentes, es posible especificar declarativamente los comportamientos para estos pasos (como, por ejemplo, transacciones) en vez de escribir código que implemente estos comportamientos. También se pueden crear pasos predefinidos para workflows que son útiles en un dominio en particular, como, por ejemplo, aplicaciones de seguros o manejo de sistemas, y luego usar éstos en diferentes workflows

2.    Herramientas que crean y modifican workflows gráficamente. Como un workflow consiste en un número definido de pasos, puede ser construido usando herramientas que ilustran esos pasos y las relaciones entre ellos.

3.    La habilidad de monitorear un workflow que se está ejecutando, examinando su  ejecución en tiempo real. Por ejemplo, con la actividad Tracing.

4.    Una manera de cambiar una instancia workflow que se está ejecutando; por ejemplo, agregar un paso. Aunque esto no es típicamente necesario cuando sólo se abarca software, este tipo de flexibilidad es un requerimiento común para que Workflows interactúe con personas.

Los procesos de negocios comúnmente involucran tanto a personas como a aplicaciones y automatizan acciones entre software, la cual es muy diferente de automatizar interacciones entre personas

Workflows de sistemas

Los workflows de sistemas son interacciones automatizadas entre aplicaciones. Estas interacciones son usualmente predecibles y relativamente estáticas. La lógica que dirige esta interacción puede ser especificada una sola vez, y luego ser utilizada una y otra vez sin cambios. Los workflows de sistemas también intercambian datos bien definidos y estructurados, como, por ejemplo, documentos XML, que pueden ser procesados efectivamente por software sin ninguna intervención humana.

Workflows humanos

Un workflow humano es el que coordina interacciones con personas. Las aplicaciones que interactúan a favor de las personas tienden a necesitar más flexibilidad que aquellas que interactúan puramente con otro software.

Esto contrasta con los workflows de sistemas, ya que las personas cambian de parecer, introducen nuevas ideas y excepciones, deciden cancelar un proceso inesperadamente y realizan otras cosas que hacen a los workflows humanos más efectivos y más dinámicos.

Los programas que soportan workflows humanos deberían permitir un acercamiento más flexible orientado a eventos. Éstos también trabajan con datos menos estructurados y más comprensibles para los humanos, como, por ejemplo, mensajes de e-mail y documentos de texto, en vez de la información estructurada que es utilizada en los workflows de sistemas.

Componentes principales

Arquitectura de Windows Workflow Foundation

La arquitectura de Windows Workflow Foundation consta de seis partes principales:

          Activity: es una unidad de trabajo. El trabajo que una actividad implementa puede variar de forma muy simple a muy compleja.

          Workflow Model: es un grupo de actividades que implementa todas o algunas partes de la lógica de negocios.

          Designers: son herramientas gráficas que pueden ser usadas para crear y modificar actividades de workflows.

          Base Activity Library: es un grupo de actividades que los desarrolladores pueden usar para crear workflows.

          Runtime Engine: es una librería que ejecuta workflows. El Runtime Engine también provee otros servicios, como mecanismos para comunicarse con software fuera del workflow.

          Host Process: es una aplicación de Windows que da soporte al Windows Workflow Foundation Runtime Engine y a cualquier workflow que ejecuta. El Host Process provee servicios de soporte en ejecución para un estado persistente del workflow, para manejar transacciones y otras funciones.

wwf_architecture

Actividades

Las activities son la unidad elemental de un workflow. Son agregadas de manera similar a como se añade en XML un Child Node a un Root Node. Una vez que todas las actividades en el camino de un flujo dado terminan de ejecutarse, la instancia Workflow se completa.

Windows Workflow Foundation contiene una librería de mecanismos estándar que permiten crear actividades propias. Esto permite también extensibilidad y reutilización entre workflows.

Las activities se implementan en clases. Son heredables, anidables y, por supuesto, reutilizables

Dentro de la Base Activity Library, las más relevantes son:

          Code: ejecuta código C# para acciones personalizadas.

          EventDriven: representa una sucesión de actividades cuya ejecución es iniciada por un evento.

          EventSink: le permite al workflow recibir información de un Data Exchange Service (DES) registrado en el Workflow Runtime.

          Invoke Method: permite al workflow invocar un método en la interfaz para mandar un mensaje al DES.

          Invoke WebService: permite al workflow invocar un Web Service.

          Invoke Workflow: permite que el workflow llame o inicie otro workflow totalmente independiente.

          Select Data: le permite al workflow realizar queries indirectamente a través del host.

Workflow Model Layer

La Capa de Modelo de Workflow (Workflow Model Layer) es donde muchos de los desarrolladores pasarán la mayor parte de su tiempo escribiendo código para sus aplicaciones en Windows Workflow Foundation. Esta capa incluye soporte para tipos de modelos de workflow, actividades y la programación principal de APIs, que es usada por muchos desarrolladores.

A pesar de que Windows Workflow Foundation incluye estos dos modelos, los clientes pueden heredar de ellos, para crear sus propios modelos específicos o nuevos.

Capa de Diseño

Dentro de Visual Studio .NET, Windows Workflow Foundation provee un conjunto de herramientas gráficas que apuntan a los diseñadores. El objetivo es que la experiencia de desarrollo en Visual Studio .NET sea lo más familiar posible a las ya existentes aplicaciones de desarrolladores .NET en C# y VB.NET; y que se puedan construir aplicaciones utilizando Windows Presentation Foundation (WPF) y Windows Communication Foundation(WCF).

wwf_design_layer

Estas herramientas gráficas facilitan el desarrollo en Workflows. Esto es similar a las herramientas que se pueden usar en Visual Studio 2008, donde se arrastran hasta un formulario y luego se sueltan, para crear una interfaz gráfica para el usuario.

Runtime Layer

La capa Runtime (Runtime Layer) cumple un papel esencial en Windows Workflow Foundation e incluye:

          Execution: es el servicio de ejecución que programa actividades y soporta comportamientos comunes, tales como el manejo de eventos, excepciones, rastreo y transacciones.

          Tracking: este servicio crea los eventos de rastreo y son serializados a través de la misma interfaz.

          State management: es el servicio de manejo de estado que, como su nombre lo indica, maneja estados que puedan ser retenidos a través de la interfaz de la persistencia.

          Scheduler: es el servicio programador que programa la ejecución de actividades.

          Rules: es el servicio de reglas que provee la funcionalidad de política de ejecución y la evaluación de condición de CodeDOM (Code Document Object Model).

Jonnathan De La Barra Acalorado

Development

SQL 2008 – Novedades en Integration Services (SSIS 2008)

Mas que todo es un OverView bastante Resumido sobre las Nuevas Features and Kinds de SSIS 2008.

 

Soporta código en lenguaje C# (Menos mal, ya era hora, ya que aburre un poco Visual Basic.NET, jaja Open-mouthed)

 

• Nuevos tipos de datos para hora y fecha

• Mejora del rendimiento y el uso de la caché para las transformaciones Lookup

• Nuevos componentes ADO.NET

• Nuevos objetos: tarea y visor para la clasificación de datos

• Escalabilidad del flujo de trabajo

• Mejoras en la herramienta de importación/exportación

• SuperDump

 

VSTA

SSIS 2005 usaba un componente “obsoleto” para diseñar y ejecutar código llamado VSA

– Diseño de código limitado

– Solo aceptaba Visual Basic

– Conjunto limitado de asseblies referenciables

– Está “muerto”

• El SSIS 2008 usa VSTA

– Actualización directa de las tareas de código y transformaciones

– Diseñador altamente mejorado. Es una parte de VS

– Permite código en C#

– Puede referenciar cualquier assembly .net

 

Introduce los nuevos tipos de datos para fecha y hora que incluye SQL Server 2008

– DT_DBTIME2

– DT_DBTIMESTAMP2

– DT_DBTIMESTAMPOFFSET

• Beneficios de los nuevos tipos de datos

– Soporta una mayor escala para segundos fraccionados (milesimas)

– Soporta precisión definida por el usuario

– Soporta las diferencias horarias entre distintas bandas horarias

 

Lookup:

 

Nueva transformación Lookup

GUI totalmente rediseñado

El tiempo de vida y el intercambio de los datos referenciados están controlados de forma explícita

– Un gestor de conexión los almacena en caché

– Todos los lookups parecidos pueden compartir la misma caché

– Un flujo de datos puede llenar la caché y luego ésta puede ser usada por otros flujos de datos

– La caché se puede llenar en cualquier punto del flujo de datos (antes de ser usada por el lookup)

– La caché se puede guardar en un fichero y ser usada más tarde.

• Obtener los datos más usados una vez a la semana

 

Otras curiosidades:

– Una caché para no coincidentes. No más consultas contra filas que no existen

– Salida para filas no coincidentes, no más salidas de error

– Los ficheros para caché persintente (.caw) tienen el mismo formato que un RawFile

 

Componentes ADO.NET

• Se trata ADO.Net como a un ciudadano de primera clase

– Se renombra. ¿Porque se llamaba DataReader Source Adapter?

– UI específico para el Source Adapter

• Drop down para lista de tablas

• Invoca el diseñador de queries

• “expression-able” para cambios dinámicos

– Un Destination adapter

• UI específico

• ODBC

 

Clasificación de datos

 

• Crea una clasificación de las tablas SQL para el mantenimiento y la exploración de la calidad de los datos

– Se ejecuta como una tarea en SSIS

– Genera un fichero XML de salida

– Tiene una herramienta visual amigable para trabajar con las clasificaciones

– Inclusión de valores

• La información aportada por la clasificación ayuda a identificar problemas potenciales con la calidad de los datos

 

Hay clasificaciones para ayudar a identificar problemas dentro de una columna individual

– La distribución de longitudes de los valores en una columna

– El porcentaje de valores nulos

– La distribución de los valores en la columna

– Estadísticas para columnas numéricas

– Expresiones regulares que encajan con columnas tipo string

 

Hay clasificaciones para ayudar a identificar problemas con las columnas que forman parte

de relaciones

– Candidatos a columna clave

– Dependencias funcionales entre columnas

– Incluir el conjunto de valores de una columna en el conjunto de valores de otra columna

 

WorkFlow escalable

 

El planificador de los hilos de ejecución de las tareas de flujo de datos es nuevo y mejora el

comportamiento anterior

– Es capaz de optimizar largas cadenas de transformaciones “sincronas”

– Multicast y conditional split se benefician

 

Herramienta Importación/Exportación

 

Soporte ADO.Net para origenes y destinos de datos (ODBC)

– Se da soporte a proveedores de datos propios u “obscuros”

• Conversiones de tipos de datos

– Nueva página que muestra los mapeos y posibles incidencias

– Puede insertar transformaciones de conversión de datos dentro de flujos de datos

– Los mapeos por defecto se pueden configurar (a través del Notepad)

Nuevo sistema para la ampliación del número de tablas

– Se hace como una secuencia de tareas de flujo de datos

– Cada uno con 5 pumps (movimientos bruscos???)

 

SuperDump

 

Se basa en Watson

• Provee visibilidad a la actividad de un paquete en ejecución

• El usuario puede ejecutarlo cuando desee. No detiene los paquetes (demasiado tiempo)

• Se genera un log ante caídas

• Se puede programar para que se dispare automáticamente ante una condición de error específica

• Ring Buffers recoge la historia de los eventos, códigos de error y otros estados

• Se vuelca en un fichero de texto

 

Welcome SSIS 2008!!! Wink

http://www.microsoft.com/sqlserver/2008/en/us/integration.aspx

 

hero-static-sql-trusted-dg