Crear un Workflow Reutilizable con Tipos de Contenido en SharePoint 2010 (Parte 3/3)

Asociar Workflow a la librería Shared Documents

  1. Ubicados en Sharepoint Designer 2010, dar clic en la opción List and Libraries.


  1. Seleccionamos Shared Documents.


  1. Activar la opción Allow management of content types.


 

  1. Nos desplazamos a la sección Content Type y damos clic en el botón Add.


 

  1. En la pantalla Content Types Picker marcamos el valor Reporte de Gastos
    y presionamos el botón OK.


 

  1. Ahora verificamos que haya sido agregado en la sección Content Types.


 

  1. Ubicados en la sección Content Types, marcamos la opción Reporte de Gastos.


  1. Presionamos el botón superior Set as Default.


  1. Verificamos el cambio en la sección Content Types.


 

Verificar funcionamiento del Content Type y Workflow

  1. Ingresamos a la sección Shared Documents dentro del Portal de Sharepoint 2010 [http://sp2010-wfe1:100] utilizando el Internet Explorer.

     

  2. En el Ribbon presionamos la pestaña Documents>New Document. Inmediatamente podemos visualizar el documento que asociamos a la librería.


 

  1. Ahora modifique la vista de la librería de documentos para añadir la columna Departamento.


  1. Muy bien, ubicados en la pestaña Documents damos clic en el botón New Document y seleccionamos el documento Reporte de Gastos. Escribimos algunos valores dentro del documento, guardamos el documento (OBlancoGastos) y asignamos el departamento Ventas.


  1. Damos clic en el vínculo Completed
    para revisar el log histórico del workflow.


Como podemos apreciar, en la sección Workflow History
NO aparece el mensaje “Ventas”
debajo de la columna Description, ya que en la definición del Workflow no se integró mensaje para el uso del departamento Ventas.

 

  1. Ahora repitamos los pasos 4 y 5, y en esta ocasión asignamos el departamento IT.


  1. Nuevamente revisemos el log histórico del workflow del nuevo documento (ITGastos), dando clic en el vínculo Completed.


Como podemos apreciar, en la sección Workflow History
SI aparece el mensaje “IT”
debajo de la columna Description, ya que en la definición del Workflow se integró mensaje para el uso del departamento IT.

 

  1. ¡Hemos terminado! Espero sea de utilidad para todos.

Crear un Workflow Reutilizable con Tipos de Contenido en SharePoint 2010 (Parte 2/3)

Asociar Workflow al Content Type

  1. Muy bien, ahora regresamos al Sharepoint Designer 2010 y refrescamos el área de trabajo. Listo, podremos ver los cambios que tenemos hasta el momento.


  1. De la sección Navigation damos clic en la opción Workflows.


  1. En seguida presionamos el botón Reusable Workflow.


  1. En la pantalla Create Reusable Workflow asignamos el nombre Reporte de Gastos.


  1. En el Paso 1, asignamos la acción Log to History List y en la sección This Message definimos el valor Iniciando Flujo.


  1. Agregamos la condición If current item field equals value.


  1. Dar clic en el texto field. En la pantalla no se visualiza la columna que necesitamos, entonces presionamos el botón Association Columns.


  1. En la pantalla Association Columns presionamos el botón Select
    Site Column…
    y seleccionamos la columna Departamento. Dar clic en el botón OK.


  1. De nuevo en el workflow, creamos las condiciones necesarios para obtener la siguiente pantalla:


  1. En seguida publicamos el Workflow presionando el botón Publish.


  1. Excelente, ahora vamos a realizar la asociación del content type al Workflow. Presionamos el botón Workflow Settings.


  1. A continuación damos clic en el botón Associate to Content Type.


  1. En las opciones que se muestran marcamos la opción Reporte de Gastos.


  1. En seguida se visualiza la página web que incluye la información del Workflow. Activamos la opción Start this workflow when a new item is created. Para concluir dar clic en el botón OK.


 

  1. En la sección Add a Workflow asignamos la opción Name el valor Reporte de Gastos y en la opción Task List definimos el valor Task. Realicemos la validación con la siguiente imagen.


 

  1. A continuación visualizamos el Workflow generado en la sección Workflows.


Crear un Workflow Reutilizable con Tipos de Contenido en SharePoint 2010 (Parte 1/3)

Ahora crearemos un ejemplo que muestre la creación de un flujo de trabajo en SharePoint 2010. Los prerrequisitos para realizar el ejemplo son:

  • Software instalado
    • SharePoint Designer 2010.
    • Microsoft Office 2010.

       

  • SharePoint 2010

     

  • MS Excel 2010
    • Crear un archivo de Microsoft Excel 2010 llamado Plantilla de Gastos y guardarlo en el escritorio de su computadora.
    • El archivo previamente creado debe tener una distribución similar a la siguiente imagen:


Excelente, iniciamos nuestro ejemplo.

Validación de nuestro Sitio Web

  1. Mediante Internet Explorer 8 ingresamos al sitio http://sp2010-wfe1:100/finanzas en SharePoint 2010. Ustedes pueden emplear cualquier nombre siempre y cuando sigan la misma forma de estructurar el flujo de trabajo.


  1. Ingresamos a SharePoint Designer 2010 y establecemos la conexión al sitio web http://sp2010-wfe1:100/finanzas.

     


     

     

  2. De la sección Navigation damos clic en la opción Site Columns.


 

  1. Agregamos una columna del tipo Choice. En la pantalla Create a Site Column y asignamos los valores que vemos en la siguiente pantalla.

     


 

  1. Ubicados en la pantalla Column Editor definimos los valores: IT, Mercadotecnia, Ventas. En la opción Default value escribimos el valor IT. Dar clic en el botón OK.


 

  1. De la sección Navigation damos clic en la opción Content Types.


  1. Dar clic en el botón Content Type. En la pantalla Create a Content Type asignamos el nombre Reporte de Gastos. Posteriormente definimos otros valores que se establecen en la siguiente de la tabla. Al finalizar dar clic en el botón OK.

Opción

Valor

Select parent content type from

Document Content Type

Select parent content type

Document

New group

AW

 


 

Asociar Site Columns al Content Type

  1. Dar doble clic en el content type Reportes de Gastos. Clic en el vínculo Edit content type columns.


  1. Clic en el botón Add existing Site Columns
    y seleccionamos la columna Departamento.


  1. Realizado el paso anterior, guardamos los cambios.

 

Asociar Archivo de Excel al Content Type

  1. Para asociar el documento de Excel que generamos como parte de los prerrequisitos al content type, damos clic en el botón Content Type Settings.


  1. En seguida damos clic en el botón Administration Web Page.


  1. Dar clic en el vínculo Advanced Setting.
  2. En la sección Documento Template presionamos el botón Browse. Seleccionamos el archivo de Excel. Al finalizar dar clic en el botón OK.


Uso de los DDL Triggers en MS SQL Server 2005-2008

Cuando tenemos necesidad de monitorear la seguridad de nuestros servidores, podemos emplear los DDL Triggers. En esta ocasión incluimos un ejemplo de paso a paso que nos brinde la oportunidad de explorar esta funcionalidad.

  1. Ingresar a MS Server Managent Studio 2005 ó 2008.
  2. Crear una base de datos asignando el nombre dbDemo.
  3. Escribimos las siguientes instrucciones T-SQL para activar un DDL Trigger.
    1. Verificamos que no exista el trigger, en caso contrario se elimina.

      USE dbDemo;

      GO

      IF OBJECT_ID(‘tgCrearTabla’) IS NOT NULL

      DROP TRIGGER (‘tgCrearTabla’)

      GO

    2. Crear el DDL trigger a nivel de la Base de Datos dbDemo que va a monitorear la creación de tablas.

      USE dbDemo;

      GO

      CREATE TRIGGER tgCrearTabla

      ON DATABASE

      FOR CREATE_TABLE

      AS

      BEGIN

      DECLARE @event_data XML;        

      SELECT @event_data = EVENTDATA();

      DECLARE @event_type NVARCHAR(2000);

      DECLARE @command NVARCHAR(2000);

      SELECT @event_type = @event_data.value(N’(/EVENT_INSTANCE/EventType)[1]‘,

      N’NVARCHAR(2000)’);

      SELECT @command = @event_data.value(

      N’(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]‘, N’NVARCHAR(2000)’);

      PRINT N’Event type = ‘ + @event_type;

      PRINT N’La instrucción T-SQL que active el trigger fue = ‘ + @command;

      PRINT N’Event data = ‘ + CAST(@event_data AS NVARCHAR(MAX));

      END

      GO

    3. Finalmente probamos el trigger escribiendo la instrucción T-SQL.

      USE dbDemo;

      GO

      –Evaluar el trigger.

      CREATE TABLE catVehiculo

      (idVehiculo INT NOT NULL PRIMARY KEY,

      descVehiculo varchar(50));

      GO

      – Eliminar la tabla.

      DROP TABLE catVehiculo;

      GO

      –Eliminar el trigger.

      DROP TRIGGER tgCrearTabla

      ON DATABASE;

      GO

Al ejecutar el paso anterior, podemos apreciar en pantalla la impresión de las instrucción PRINT emitidas por el DDL trigger.

Ahora bien, me siento comprometidoa incluir una breve tabla con todos los TAGS que genera la función EVENTDATA() y los cuales he resaltado en negrita. Cada uno de ellos nos dará la oportunidad de manipular el resultado y así, poder almacenarlo en una tabla de auditoría.

<EVENT_INSTANCE>

<EventType>CREATE_TABLE</EventType>

<PostTime>2011-04-4T20:13:40.090</PostTime>

<SPID>51</SPID>

<ServerName>W2008ENT</ServerName>

<LoginName>W2008ENT\Administrator</LoginName>

<UserName>dbo</UserName>

<DatabaseName>dbDemo</DatabaseName>

<SchemaName>dbo</SchemaName>

<ObjectName>NewTable</ObjectName>

<ObjectType>TABLE</ObjectType>

<TSQLCommand>

    <SetOptions ANSI_NULLS=”ON”     

    ANSI_NULL_DEFAULT=”ON”

    ANSI_PADDING=”ON”     

    QUOTED_IDENTIFIER=”ON” ENCRYPTED=”FALSE”/>

<CommandText>CREATE TABLE NewTable (Column1 INT NOT NULL PRIMARY KEY);

</CommandText>

</TSQLCommand>

</EVENT_INSTANCE>

 

Espero que lo implementen en su empresa, son una buena herramienta para supervisar el trabajo de los equipos de desarrollo de software y apoyo para cualquier DBA.

Saludos

Video de apoyo que muestra el manejo de índices en MS SQL Server 2000

Para todos los colegas que desconocen cómo funcionan los 2 tipos de índices de MS SQL Server 2000, pongo a su disposición un video que es de gran utilidad en los cursos de Programación para MS SQL Server.

Presiona <aquí> para descargar el archivo (TIP Cambia la extensión del archivo a .ZIP).

Saludos

Equivalencias de Tipos de Datos .NET Vs SQL Server 2005-2008

Durante los cursos de capacitación necesitamos conocer los tipos de datos equivalentes entre .NET y la Base de Datos SQL Server 2005-2008, motivo por el cual aprovecho la ocasión para publicar esta breve tabla de equivalencias.

Tipo de Dato .NET

Tipo de Dato SQL Server

Byte

Tinyint

Short

Smallint

Integer

Int

Long

Bigint

Single

Real

Double

Float

Decimal

Decimal, Numeric

Money en caso de manipular valores de moneda.

Boolean

Bit

Char

Char, varchar, nvarchar

String

Char, varchar, nvarchar

DateTime

Datetime, smalldatetime

 

Espero que la tabla sea de utilidad para sus proyectos, ¡Suerte!

Sitios de Interés .NET

Hola, les incluyo algunos links de interés para que brinden más la funcionalidad a sus aplicaciones.

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Default.aspx

http://www.devexpress.com/

 

Nomenclatura para Desarrollo de Aplicaciones .NET

La nomenclatura personal para el desarrollo de aplicaciones .NET es la siguiente:

Tipo de Objeto

Sintaxis

Ejemplo

Formulario

frm + Nombre Pantalla (camel)

Frm + Nombre Pantalla (Pascal)

frmMenu

FrmMenu

Textbox

Txt + Nombre descriptivo

TxtNombreCliente

Button

Btn + Nombre descriptivo

BtnCalcularCostoMateriaPrima

Label

Lbl + Nombre descriptivo

LblRazonSocial

ListBox

Lst + Nombre descriptivo

LstTiposMaterial

Combobox

Cbo + Nombre descriptivo

CboPaises

Status

St + Nombre descriptivo

StHora

Menu

Mnu + Nombre descriptivo

MnuCatalogoClientes

GridView

Gw + Nombre descriptivo

GwListadoMateriales

 

Cabe mencionar que pueden hacer uso de 2 tipos de escritura:

  • camel (primera palabra en minúsculas y las siguientes palabras empiezan con letra mayúscula).
  • Pascal (todas las palabras empiezan con letra mayúscula).

Sugerencias para desarrollo de una Solución Integration Services 2005-2008

Aprovecho la ocasión para compartir con ustedes algunas sugerencias que pueden considerar al momento de iniciar un proyecto de Integration Services.

Cuando realicemos un proyecto SSIS, debemos considerar los siguientes aspectos:

  1. Identificar los orígenes de datos (Data Sources).

     

    En esta sección debemos hacer una relación de las bases de datos y archivos que van a ser utilizados para la extracción de información. Para ello sugiero la siguiente tabla como apoyo.

     

Nombre Archivo

Tipo de Archivo

Ubicación del Archivo

Nombre del Equipo

Sistema Operativo

produccionMensual.xls

Microsoft Excel 2003

\\PRODUCCION\documentos

PRODUCCION

Windows Server 2008 STD

controlMaquinasEnsamble.txt

Texto separado por Tabuladores

C: \archivosMaquinas\

ENSAMBLE

Windows XP Pro

 

Nombre Base de Datos

Manejador Base de Datos

Nombre del Equipo

Sistema Operativo

dbVentas

MS SQL Server 2008

SERVERSQL

Windows Server 2008 STD

dbSAP

Oracle 11g R2

SERVERORA

Suse Linux

 

  1. Identificar los destinos de datos (Data Destination).

     

    Ahora definimos los destinos de bases de datos y archivos que van a consolidar la información.

     

Nombre Base de Datos

Manejador Base de Datos

Nombre del Equipo

Sistema Operativo

dbDataMartVentas

MS SQL Server 2008

SERVERSQLDW

Windows Server 2008 STD

dbDataMartProduccion

MS SQL Server 2008

SERVERSQLDW

Windows Server 2008 STD

 

 

  1. Crear o aplicar un estándar en la nomenclatura tanto en Base de Datos como en Proyectos SSIS.

     

    Es importante definir los estándares en nomenclatura para definir Conexiones a Bases de Datos, Tablas, Vistas, Stored Procedures, etc, así como para los Proyectos SSIS. Cito algunos ejemplos de nomenclatura que a muchos clientes les ha sido de utilidad.

     

    Bases de Datos

     

    Sintaxis (escritura camel)

    Ejemplo

    Nombre Base de Datos

    db + Nombre Base de Datos

    dbVentasNacionales

    Tabla de Catálogo

    cat + Nombre Tabla

    catEmpleado

    Tabla Transaccional

    mov + Nombre Tabla

    movInventario

    Tabla Relación

    rel + Nombre Tabla

    relProductosFacturas (detalle de facturas)

    Stored Procedure

    stp + Nombre Stored Procedure

    stpAgregarCreditoBancario

     

    Proyecto SSIS

     

    Sintaxis

    Ejemplo

    Nombre Proyecto(Solución)

    SSIS + guión bajo + Nombre Proyecto

    SSIS_VentasNacionales

    Conexión a Base de Datos

    ds + SQL (Tipo Manejador) + guión bajo + Nombre Base de Datos

    dsSQL_AdventureWorks2008

    dsORA_SAP

    Paquetes

    Nombre Módulo

    consolidarVentasMensuales

    etlDataMartFinanzas

     

     

  2. Crear o utilizar un Diccionario de Datos Corporativo, que permita la fácil integración de los diversos sistemas en un futuro.

     

    Considero importante el desarrollo de este punto, ya que constantemente nos enfrentamos a una gran diversidad de tipos de datos. Les comento que en una ocasión participé en un proyecto en donde una sola base de datos en Oracle 9i incluía 80 tipos de datos diferentes. El problema no estaba en la cantidad de tipos de datos, sino en las interfaces y ajustes que tenían que generar los equipos de desarrollo para la integración de todos los sistemas, y si a esta problemática le suman la integración con SAP, ya podrán descifrar lo que les esperaba.

     

    Como apoyo para el proyecto citado, utilizamos la herramienta ER/Studio, la cual pueden conseguir para prueba en www.embarcadero.com. Al instalar la herramienta se obtuvo el Diagrama Entidad Relación mediante la Ingeniería Inversa, cabe mencionar que esta herramienta tiene macros muy útiles para generar información de la metadata.

     

    Pues bien, después de un trabajo intenso se definió un Diccionario de Datos Corporativo con 25 tipos de datos y el cuál es aplicado exitosamente en los nuevos desarrollos logrando así, minimizar los tiempos de desarrollo e implementación de procesos de ETL (Extract-Transform-Load).

     

  3. Documentar el mapeo de las columnas origen contra las columnas destinos.

     

    Esta etapa debe incluir conversiones de tipos de datos, validaciones y limpieza de la información; por ejemplo la eliminación de datos NULL, sustituir columnas numéricas con NULL por 0 (CERO), concatenación de columnas, etc. Cabe mencionar que esta etapa demanda tiempo para garantizar la correcta integración de los datos entre diversos sistemas y la consolidación final.

     

  4. Desarrollar un diagrama de flujo que permita visualizar la secuencia de ejecución de cada tarea (Task), previo al modelado del Proyecto SSIS.

     

    Considero importante, más no obligatorio, el diseñar un DF (Diagrama de Flujo) en papel que puede apoyarnos en el desarrollo de nuestro proyecto SSIS. Éste podrá darnos un panorama general para definir los pasos a seguir y que debemos aplicar en el diseñador de Integration Services.

     

Si tienen oportunidad de ingresar a embarcadero, busquen un webcast que desarrollé aplicando el uso de ER/Studio y conceptos de la disciplina Data Governance.

Espero que sean de utilidad estas sugerencias ¡Suerte!

 

 

Condicionar la ejecución de Tareas en un Paquete de SSIS 2005-2008

En las consultorías y capacitaciones, me encuentro frecuentemente con la necesidad de generar un flujo de Integration Services que permita verificar el estatus en una tabla y en base a éste, ejecutar tareas de carga de información. Atendiendo esta inquietud por parte de muchos, mencionaré los pasos necesarios para hacer esta actividad.

Generación de Base de Datos

1) Ubicados en MS SQL Server Management Studio, generamos una base de datos llamada dbSSISPanelControl.

 

 

2)Creamos una tabla que llamaremos dbo.configuracionSSIS, con la siguiente estructura:

 

 

 

Incluyo el script SQL para apoyo.

USE [dbSSISPanelControl]

GO

 

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N’[dbo].[configuracionSSIS]‘) AND type in (N’U’))

DROP TABLE [dbo].[configuracionSSIS]

GO

 

USE [dbSSISPanelControl]

GO

 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

SET ANSI_PADDING ON

GO

 

CREATE TABLE [dbo].[configuracionSSIS](

    [idEvento] [int] IDENTITY(1,1) NOT NULL,

    [DescEvento] [varchar](50) NOT NULL,

    [ValorEvento] [int] NOT NULL,

CONSTRAINT [PK_configuracionSSIS] PRIMARY KEY CLUSTERED

(

    [idEvento] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

 

GO

 

SET ANSI_PADDING OFF

GO

 

3)Insertamos en la tabla los siguiente valores:

 

DescEvento

ValorEvento

FLAG EJECUCION CONDICIONAL

1

 

donde ValorEvento = 0 significa no ejecutar tarea y ValorEvento = 1 significa ejecutar tarea.

 

Generación de Proyecto SSIS

1)Ahora creamos un proyecto Integration Services. Asignamos el nombre SSIS_EjecucionCondicional.


 

2)Cambiamos el nombre del paquete Package.dtsx por EjecucionCondicional.dtsx.

 

 

 

3)Agregamos los siguientes objetos en el Control Flow .

Tarea

Descripción

Execute SQL Task

SQL Obtener Flag Ejecucion Condicional

Script Task

SCR Ejecutar Tarea ValorEntero igual 1

 


 

4)En la sección Connection Managers, creamos una conexión a la Base de Datos en MS SQL Server dbSSISPanelControl. El nombre de la conexión será dbSSISPanelControl_cm.

 

5)Muy bien, ahora creamos una variable que llamaremos FlagEjecucionCondicional con Scope a nivel del paquete, tipo de dato Int32 y valor 0.

 

6)Enseguida vamos a modificar la tarea Execute SQL Task. Dar doble clic en el objeto y asignar los siguientes valores.

Opción

Valor

ResultSet

Single row

Connection Type

OLE DB

Connection

dbSSISPanelControl_cm

SQL Statement

SELECT ValorEvento

FROM dbo.configuracionSSIS

WHERE (DescEvento = ‘FLAG EJECUCION CONDICIONAL’)

 

 

7)Ahora damos clic en el menú izquierdo Result Set. En esta sección configuramos el resultado que nos genera la instrucción SELECT para asignarlo a la variable FlagEjecucionCondicional.

 

8)Situados en la sección Result Set, damos clic en el botón Add y definimos los siguientes valores:

Columna

Valor

Observaciones

Result Name

ValorEvento

Este valor equivale al nombre de la columna que recibimos en el SELECT.

Variable Name

User::
FlagEjecucionCondicional

 

 

9)Para confirmar los cambios, damos clic en cl botón OK.

 

10)A continuación generamos el constraint Success entre el objeto Execute SQL Task y Script Task.

 

11)Realizado el paso anterior, damos doble clic en el constraint para modificar las condiciones que involucrarán al evento Success y el valor de la variable FlagEjecucionCondicional. Asignamos los valores de la siguiente tabla.

Opción

Valor

Evaluation operation

Expression and Constraint

Value

Success

Expressión

@FlagEjecucionCondicional == 1

 

 

12)Presionamos el botón Test para verificar la condición. Ahora dar clic en el botón OK.

 

13)Nuevamente presionamos el botón OK para guardar los cambios en el objeto Execute SQL Task. Podemos apreciar que aparece un símbolo fx, el cual indica que existe una expresión.

14)Seleccionamos el objeto Script Task dando doble clic en él y asignamos los valores en base a la siguiente tabla.

Opción

Valor

ReadOnlyVariables

User::
FlagEjecucionCondicional

 

 

15)Ahora damos clic en el botón Edit Script y
en el método Main escribimos el siguiente código.

MessageBox.Show(Dts.Variables(“FlagEjecucionCondicional”).Value)

 

16)Cerramos el editor de código y damos clic en el botón OK.

 

17)En seguida probamos el paquete presionando la tecla F5 (Start Debugging).

18)Presionamos el botón OK de la pantalla que muestra el valor 1. Apreciamos que el paquete se ejecuta satisfactoriamente.

19)Ahora modificamos el valor 1 por 0 (CERO) del registro FLAG EJECUCION CONDICIONAL.

 

20)Finalmente ejecutamos el paquete y verificamos el funcionamiento condicional.

Espero que artículo sea de utilidad para muchos. ¡Suerte!

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.