Autor: ochoscar (Página 3 de 7)

Robot para diligenciar encuestas con UIPath

Este artículo muestra un uso más avanzado de UIPath que permite interactuar con páginas web, el desarrollo será un Robot para diligenciar encuestas con UIPath, aprenderás a usar muchas de las características de este sistema que permitirán hacer un uso en casos más reales y aplicaciones empresariales.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Archivos necesarios para ejecutar este robot

Para este robot vamos a requerir un archivo tipo csv que son archivos separados por coma o por punto y coma, en este caso será punto y coma y con dos columnas que son el nombre y el número de identificación de la persona. Este archivo se puede construir fácilmente en Excel y guardarlo como CVS, como tal es un archivo de texto por lo cual se puede abrir en block de notas para constatar el contenido.

Se recomienda que dejes al menos tres filas para poder apreciar la ejecución del robot.

Además del archivo, para este Robot para diligenciar Encuestas con UIPath será necesario preparar una encuesta digital a través de un formulario, en este tutorial se estará usando Google Forms, la encuesta entonces debe generarse de la siguiente manera.

Encuesta a diligencia
Figura 1. Encuesta a diligencia

2. Actividades que se usarán en este robot

En este robot usaremos las actividades explicadas en el robot de manipulación de archivos que se encuentra en el siguiente vínculo:

Robot para manipular archivos

Adicionalmente se utilizaran las actividades para manipular el navegador para lo cual es necesario que se tenga habilitada la extensión del navegador de tu preferencia, en este caso se estará usando Google Chrome.

3. Robot RPA para diligenciar encuestas con UIPath completo

El robot completo se aprecia en las siguientes imágenes en las cuales se explica el paso a paso de su construcción.

Este Robot para diligenciar encuestas con UIPath va a requerir leer el archivo CSV que creamos con los datos que llevaremos a la encuesta online. En esta actividad es importante revisar la parametrización del carácter que separa las columnas en el archivo CSV, como se indico habitualmente es la coma pero en este caso se utilizará punto y coma, adicionalmente se indica que el archivo tiene encabezado por lo cual la primera fila tiene la información de los nombres de las columnas.

En esta misma imagen y similar al robot de archivos se realiza un ciclo por cada una de las filas que contiene el archivo y se utiliza la actividad de manipular el navegador para abrirlo con la URL apuntando a la encuesta que previamente creamos.

Con esto la ejecución del robot lee el archivo, almacena su contenido en una variable tipo tabla y por cada fila abre el navegador a fin de, posteriormente diligenciar la encuesta.

Lectura de datos y ciclo
Figura 2. Lectura de datos y ciclo

El segundo paso en la construcción de nuestro robot consiste en escribir en los campos de nombre y tipo de identificación, la información que vamos a escribir esta en la tabla de datos leída del archivo y para lo cual se usa una instrucción como la siguiente: fila(“nombre”).ToString.

Además debemos configurar en que zona de la pantalla queremos escribir, lo cual se ilustra en los pasos siguiente y que deben ser repetidos por cada campo que deseemos escribir.

En la figura 2, adicionalmente se aprecia que después de escribir en el campo de identificación y de escribir en el campo nombre, nuestro robot hará clic en el botón para enviar el formulario y completar la encuesta. Recuerde que esta actividad se hará por cada una de las filas en el archivos de datos y que para el momento se tiene almacenado en una variable de tipo tabla.

Escritura en los campos y clic para diligenciar encuesta
Figura 3. Escritura en los campos y clic para diligenciar encuesta

Para seleccionar un elemento de una interface grafica de usuario siempre tendrás a la mano la opción de indicar el objetivo en pantalla. Esta opción permitirá seleccionar un elemento en pantalla y para el caso de una página web la selección corresponde a un elemento HTML del DOM de la página que se puede apreciar en la propiedad objetivo (target) de la actividad.

Para efectos del clic en el botón se procede de la misma manera.

Seleccionar elemento en la interface gráfica de la página web
Figura 3. Seleccionar elemento en la interface gráfica de la página web

La figura 4, muestra un ejemplo al momento de seleccionar un componente en la pantalla, esta ventana tiene todas las opciones de selección y permite mucha flexibilidad a la hora de seleccionar elemento, por ejemplo puede esconder la interface de selección durante unos segundos, esto es particularmente útil si necesitamos interactuar con elementos como tooltips o combos de selección.

Ventana para la selección de elemento gráfico
Figura 4. Ventana para la selección de elemento gráfico

Finalmente en el proceso de selección, pueden aparecer componentes en rojo y en amarillo, el primero indica que la selección ha sido invalida y el segundo que se encontró un elemento repetido, esto sucede porque UIPath no tiene forma de diferenciar entre un elemento y el otro y para poderlo distinguir debemos con el mouse anclar el campo de otro elemento de forma que el componente de la página que estemos seleccionando termine siendo único.

Selección única de componente
Figura 5. Selección única de componente

4. Ejecutando el robot

Para ejecutar el robot como es costumbre, solo basta con dar clic al botón de ejecutar, recordar que si el robot se hizo en el mismo archivo principal se puede ejecutar el proyecto o en su defecto elegir la opción ejecutar este archivo si lo tientes abierto. El resultado será el nuevo archivo y los mensajes de texto en pantalla.

Ejecución del robot
Figura 6. Ejecución del robot

5. Artículos de Interés

Un robot RPA para manipular archivos con UIPath

En este artículo aprenderás a crear Un robot RPA para manipular archivos con UIPath, este robot te permitirá conocer algunas de las características y actividades o tareas más utilizadas en UIPath para la automatización de procesos.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Actividades necesarias para el robot

El propósito de este robot es manipular algunos archivos de texto con UIPath que estén ubicados en una carpeta, revisar su contenido y armar otro archivo de texto que junte el contenido de todos los archivos en uno solo, en caso que uno de los archivos este vacío se sacará un mensaje en pantalla indicando esta situación ya que se considera que no debe haber archivos en blanco y en tal caso se requiere intervención humana.

2. Creación de archivos de ejemplo

Antes de proceder a crear el robot RPA para manipular archivos con UIPath debemos preparar algunos archivos para trabajar con ellos. Cada uno de los archivos puede tener algún contenido y algunos de ellos estar vacíos.

Archivos de ejemplo
Figura 1. Archivos de ejemplo

3. Robot completo

En la siguiente imagen se muestra la primera parte del robot que lee archivos y los muestra en pantalla, en este punto es importante observar que se utiliza la actividad de asignar para dar valor a una variable y concretamente se obtiene un arreglo de cadenas de texto (string) con las rutas absolutas de los archivos de una carpeta, y para ello se usa la instrucción Directory.GetFiles.

Posteriormente se usa un ciclo tipo para (for) que se ejecutara por cada archivo en la carpeta, luego se leerá el archivo en la ruta dada para finalmente mostrarlo en pantalla, esto último ayudará con la depuración o la verificación que nuestro robot se este ejecutando bien.

filestxt1
Figura 2. Lectura de archivos

La segunda parte de este robot toma una decisión en función del texto leído del robot, en este caso si el texto del archivo esta vacío se muestra un mensaje en pantalla en caso contrario se agrega el contenido de este archivo a otro.

Aquí es importante ver que la decisión se debe tomar con operadores lógicos que devuelvan verdadero o falso a fin de poder tomar dicha decisión.

El archivo de resultado es un txt el cual se va formando con el contenido de cada uno de los archivos leídos en la carpeta.

filestxt2
Figura 3. Condicional en UIPath

4. Ejecutando el robot RPA UIPath

Para ejecutar el robot como es costumbre, solo basta con dar clic al botón de ejecutar, recordar que si el robot se hizo en el mismo archivo principal se puede ejecutar el proyecto o en su defecto elegir la opción ejecutar este archivo si lo tientes abierto. El resultado será el nuevo archivo y los mensajes de texto en pantalla.

Ejecución del robot
Figura 4. Ejecución del robot

5. Artículos de Interés

Hola Mundo usando UIPath RPA

En este artículo aprenderás lo básico de RPA y podrás hacer una aplicación tipo Hola Mundo usando UIPath RPA como software base de automatización, aprenderás las tareas básicas y a dominar el entorno de UIPath.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Qué es UIPath

UIPath es una herramienta categoría RPA y calificada como líder mundial por Gartner y Forrester, que además de tener versión comunitaria para pequeñas empresas o pequeños grupos es muy fácil de aprender y de utilizar.

UIPath tiene dos versiones Studio y StudioX siendo esta segunda una versión más simple para usuarios de negocio que busquen automatizaciones sencillas, de otra parte la versión Studio es más completa y cuenta con mayor cantidad de comandos y funcionalidades.

Para usar UIPath debes descargarlo creando una cuenta que te dará acceso al portal llamado Orquestador desde el cual no solo se descarga el instalador sino también se pueden programar las ejecuciones de los robot o almacenar información sensible en forma de assets o activos. El siguiente link podrás crear la cuenta de UIPath gratuitamente.

Descarga UIPath

2. El entorno de UIPath

La siguiente imagen muestra el entorno general de UIPath. A este punto se llega luego de crear un primer proyecto seleccionando la opción proceso.

Aquí se aprecia varios puntos de la interfaz gráfica de UIPath, siendo los más importantes:

  • Menu: este es un menú muy simple con solo tres pestañas donde se agrupan todas las funcionalidades de UIPath.
  • Pestaña proyecto: aquí se puede visualizar el proyecto en curso junto con todos sus archivos.
  • Actividades: esta pestaña muestra toda las actividades o tareas que un robot puede llegar a realizar.
  • Snippets: son pequeños fragmentos de robot que permiten ser reutilizados.
  • Zona central: es aquella donde se arrastran las actividades y se construyen los robot.
  • Propiedades: son todos los atributos de cada una de las actividades que realiza un robot.
  • Salida: muestra toda la información de la ejecución de un robot.
Entorno general de UIPath
Figura 1. Entorno general de UIPath

En este punto es importante comprender que un robot en UIPath corresponde a un archivo y el mismo puede tener un elemento inicial que o bien es una secuencia o bien es un workflow, aunque los dos son equivalente el segundo mostrará una representación más gráfica especialmente de las decisiones.

Otro punto importante es que ejecutar un robot va a requerir que el usuario haya iniciado sesión y conectado a la cuenta del orquestador con el que se descargó la aplicación, así mismo la ejecución permite la depuración, es decir la ejecución paso a paso para la inspección de variables y la detección de errores.

3. Creación de un proyecto de UIPath

Para la creación de un proyecto basta con seleccionar la opción proceso en el menu HOME de UIPath, darle un nombre, ubicación y si se quiere una descripción al proyecto.

Este proyecto contendrá uno o varios archivos y cada uno de ellos representará un robot que luego puede ser ejecutado en las máquinas destinadas para ello.

Creación de Proyecto UIPath
Figura 2. Creación de Proyecto UIPath

4. Cuadro de mensaje y aplicación Hola Mundo UIPath

Este es el primer proyecto de UIPath y es bastante simple, basta con arrastrar un cuadro o bandeja de mensajes sobre el lienzo principal de UIPath y configurar la tarea con un texto (que se debe escribir entre comillas dobles) el cual se quiera mostrar en pantalla. Este texto también puede construirse con variables o con operaciones entre textos como la concatenación.

 Hola Mundo con UIPath
Figura 3. Hola Mundo con UIPath

El resultado de la ejecución del robot hola mundo se muestra en la siguiente imagen.

Ejecución de Hola Mundo
Figura 4. Ejecución de Hola Mundo

5. Lectura de datos del usuario en UIPath

Si se quiere hace un robot un poco más elaborado que el simple robot Hola Mundo, se puede pedir al usuario que introduzca su nombre a fin que el sistema lo solicite y posteriormente se pueda almacenar el resultado introducido por el usuario en una variable que luego sea almacenada y concatenada en la actividad anterior.

Para las variables se tiene una pestaña específica que muestra su nombre, tipo (naturaleza de la información), su valor inicial y su ámbito (que permite saber en qué tareas es visible una variable).

Las variables se pueden crear de muchas formas, entre ellas esta:

  • En los campos de salida de los atributos de las actividades dando click derecho crear variable.
  • En los campos de salida de los atributos de las actividades presionando ctrl+k.
  • Directamente en la pestaña de variables.

Observe que las actividades se encadenan en secuencias de forma que la ejecución del robot sigue este flujo o secuencia, así mismo que la ejecución tiene dos posibilidades y es ejecutar un archivo puntal o ejecutar el proyecto, en la segunda opción el proyecto iniciará la ejecución en el archivo marcado como main o en negrita en la lista de archivos del proyecto.

Otro aspecto importante a considerar en la ejecución de un robot es que como cada archivo es un robot, un robot puede llamar a otro y terminar dividiendo la complejidad de un gran robot en partes más pequeñas y manejable de parte del desarrollador del robot.

Robot de lectura de datos
Figura 5. Robot de lectura de datos

El resultado de la ejecución del robot que lee datos del usuario se muestra en la siguiente imagen.

Ejecución Lectura de Datos 1
Figura 6. Ejecución Lectura de datos 1
Ejecución Lectura de Datos 2
Figura 7. Ejecución Lectura de Datos 2

6. Artículos de Interés

Que es RPA Aplicaciones y Usos

Entre las tecnologías que han aparecido en las empresas recientemente se encuentra la robotización, este artículo aborda Que es RPA sus Aplicaciones y Usos más comunes y cómo esta tecnología está cambiando el trabajo de millones de personas.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Que es RPA

Es la automatización de flujos de trabajo actuales que a través de robots ayudan a reducir el trabajo humano. Esta tecnología se fundamenta en que existen muchos procesos de carácter repetitivo y con muy poco valor agregado desde el punto de la Inteligencia Humana, por lo cual estos trabajo que a menudo no requieren decisiones son fáciles de automatizar con herramientas de este tipo, incluso aquellos que pueden requerir decisiones son susceptibles de automatizar.

Ahora el auge que ha tenido RPA es que automatiza las actividades desde el front o las interfaces de usuario de las aplicaciones en lugar de hacerlo en el backend donde operan algoritmos y servidores. Lo anterior tiene tanto cosas positivas como negativas que deben considerarse en el momento de implementar un robot y que se abordarán más adelante en este artículo.

RPA significa Automatización de Procesos Robóticos.

Robotic: replican las acciones del trabajo de un humano.

Process: secuencia de actividades significativas que producen valor.

Automation: cualquier trabajo hecho por un robot sin intervención humana.

Significado de RPA
Figura 1. Significado de RPA

2. Impacto de RPA en el trabajo y la economía

Algunos estudios muestran que para la década del 2020 – 2030 RPA se posicionará como una de las tecnologías clave y que la posibilidad de automatización de procesos traerá consigo un fuerte impacto en el trabajo y la economía, por ello cada vez más profesionales buscan capacitarse en este tipo de soluciones tecnológicas.

Impacto de RPA en el trabajo
Figura 2. Impacto de RPA en el trabajo. Crédito Xataka.

Este gran impacto se dará especialmente porque RPA permite la automatización de las interacciones humanas con los sistemas de información a través de sus GUI (Graphical User Interface) con lo cual gran cantidad de las actividades operativas que se han construido para realizar por parte de humanos en los sistemas de información serán automatizadas, incluso aquellas que tienen algún grado de decisión o de inteligencia se podrán automatizar disminuyendo en gran medida la actividad operativa y el día a día de los trabajadores.

Lo anterior no implica que se vayan a reducir a cero, pero sí en gran medida, los trabajos operativos tienen sus días contados en el mundo digital moderno.

3. Factores críticos en una solución RPA

Aunque pueden haber muchos factores críticos que impliquen el éxito de una solución RPA a continuación se recopilan algunos de los más importantes, y se incluyen algunos TIPS para los proyectos RPA.

  • Escalabilidad: esta caracteristicas implica que RPA debe poder crecer o decrecer en función de la demanda y de forma casi instantánea, esto es algo que no se puede lograr con equipos humanos.
  • Velocidad: la velocidad de ejecución de un proceso o una actividad contrastada con su ejecución humana debe ser mayor.
  • Confiabilidad: un robot debe ser confiable y su actividad debe ser repetible, es decir debe ser confiable, muchas veces esto también depende de otros factores u otros sistemas de información por lo cual el robot debe ser resiliente a fallos o caídas de otros sistemas.
  • Simpleza: este concepto aplica a casi todas las tecnologías que se construyan, un software o sistema simple será más administrable y será fácil y conveniente su mantenimiento, por lo cual las zonas de complejidad deben encapsularse o redefinirse.
  • Inteligencia: un robot debe agregar cierto grado de inteligencia que permita realizar tareas humanas sencillas y lograr así un mayor grado de automatización.
  • Clase empresarial: como la robótica aplica sobre todo a nivel empresarial, los RPA deben contar con características como soporte y respaldo sobre lo cual se deposite la operación de una empresa.

Cuando desarrolle proyectos RPA siempre tenga en cuenta automatizar aquellas actividades que agreguen valor, además que siempre es mejor comenzar con alcances pequeños e ir creciendo sobre una base funcional a intentar implementar soluciones muy grandes que normalmente cuando estan listas el proceso ya es diferente.

4. Aplicaciones y usos de RPA

Algunas de las aplicaciones más importantes para los software tipo RPA incluyen:

  • Integraciones: las integraciones de aplicaciones se puede realizar a través del backend con tecnologías como SOAP y REST y el paradigma SOA, sin embargo con RPA se puede realizar en el front, con resultados en tiempos de construcción mucho mejores que con otras alternativas, además de no requerir desarrollo de software en ambas partes.
  • Automatización de trabajo repetitivo: esta situación es muy común en todas las organizaciones, y realmente aportan poco valor, aunque son actividades necesarias en la ejecución de los procesos, estas actividades son automatizables con RPA.
  • Ayudas al trabajador: en ocasiones los trabajadores requiere hacer actividades en sus procesos con alcances muy definidos pero muy operativas, el alcance completo y las actividades que requieren mayor inteligencia seguirán realizadas por los humanos pero con ayuda de RPA para los alcances operativos.
  • Registros y manejo de grandes volúmenes de datos: este es un ejemplo de casos comunes que requieren de tareas repetitivas pero a menudo no tan frecuentes, en estas situaciones RPA puede servir de solución.

5. Productos RPA comerciales

Algunos de los productos comerciales más usados en el mundo en cuanto a RPA se refiere son: UIPath, Automation Anywhere y BluePrism.

Estos tres proveedores son los líderes en los diferentes estudios como el Cuadrante Mágico de Gartner o la Ola Forrester.

UIPath
Figura 3. UIPath
Automation Anywhere
Figura 4. Automation Anywhere
Blue Prism
Figura 5. Blue Prism

6. Artículos de Interés

Principios de la Arquitectura Orientada a Servicios SOA

Este artículo compila los Principios de la Arquitectura Orientada a Servicios SOA màs importantes, incluye las referencias a material oficial explicando en detalle cada principio.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Manifiesto SOA

El manifiesto SOA es una serie de principios desarrollado por un grupo de profesionales y especialistas en el tema que encontraron la necesidad de describir correctamente en términos de principios las buenas prácticas que los Arquitectos SOA deben cumplir a fin de lograr la adopción SOA con las mejores características.

En las siguientes secciones se abordarán estas buenas prácticas y principios.

Para conocer el manifiesto SOA completo siga este vínculo.

Algunos de los principios fundamentales que se deben considerar en el momento de realizar una Arquitectura SOA son:

  • Los servicios deben ser reusables.
  • Los servicios deben proporcionar un contrato formal.
  • Los servicios deben tener bajo acoplamiento.
  • Los servicios deben permitir la composición.
  • Los servicios deben de ser autónomo.
  • Los servicios no deben tener estado.
  • Los servicios deben poder ser descubiertos.

Una palabra que se usará mucho en las siguientes secciones será servicio y aquí servicio puede referirse a un servicio web pero en general se debe entender como una capacidad que los sistemas ofrecen para realizar alguna tarea, tenga esto en mente cuando lea las siguientes secciones.

2. Servicios y contratos

Cuando un servicio es implementado como un Servicio Web, el contrato del servicio puede estar compuesto por una definición WSDL, múltiples definiciones de esquemas XML, políticas, y documentos complementarios, tal como un ANS.

Contratos de servicios
Figura 1. Contratos de servicios

De forma similar, los contratos deben estar catalogados en inventarios que hagan fácil su ubicación y determinar sus características y usos. Una buena forma de inventariarlos es por proyectos, como se muestra en la siguiente figura, sin embargo debe considerarse la conveniencia de tener diferentes dimensiones para catalogar como aplicaciones o módulos o grupos de funcionalidad.

Inventarios de servicios
Figura 2. Inventario de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA, que impulsa que los servicios tengan contratos impulsa el enfoque del “contrato primero” para la entrega del servicio, por el cual los contratos se desarrollan de forma personalizada (antes del desarrollo de la lógica del servicio) de acuerdo con los estándares de diseño que aplican a todos los servicios dentro de un inventario dado de servicios.

Principio del contrato primero
Figura 3. Principio del contrato primero

3. Centralización de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA asegura que los consumidores tengan un único punto de acceso a la capa de lógica, de esta manera se asegura que los consumidores estén llegando a la versión correcta y publicada del servicio y su contrato, por lo cual la documentación también es importante centralizarla.

Centralización de servicios
Figura 4. Centralización de servicios

4. Acoplamiento de servicios

En general los servicios se acoplan cuando se usan y esto puede dar lugar a un acoplamiento positivo o negativo y esto último tiene que ver con el impacto que se genera en los consumidores especialmente cuando existen cambios.

La siguiente imagen resume los tipos de acoplamiento, su generación y características como Principio de la Arquitectura Orientada a Servicios SOA.

Acoplamiento de servicios
Figura 5. Acoplamiento de servicios

5. Ocultamiento de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA aboga por el ocultamiento deliberado de información del servicio, de tal forma que una mínima cantidad de información sobre el servicio es accedida por el mundo exterior.

Ocultamiento de servicios
Figura 6. Ocultamiento de Servicios

6. Control de acceso a servicios

Los procedimientos de control de acceso son un Principio de la Arquitectura Orientada a Servicios SOA, por consiguiente se pueden convertir en un requerimiento, el cual necesitaría ser orientado sobre un nivel organizacional, a través de la introducción de procesos nuevos o modificados.

Control de acceso
Figura 7. Control de acceso

7. Composición de servicios

La aplicación de este Principio de la Arquitectura Orientada a Servicios SOA puede convertir, efectivamente, a un servicio en una “caja negra”, donde la única información que esté disponible acerca del servicio es la que está publicada en su contrato.

Como resultado de este principio, los diseñadores del programa consumidor del servicio puede no ser conscientes que un servicio está componiendo a otros.

Esto coloca un gran énfasis en la fiabilidad de un servicio (lo cual también plantea cuestiones en cuanto a lo que debería publicarse en los ANS del servicio).

Composición de servicios
Figura 8. Composición de servicios

8. Reutilización de servicios

Dentro de la orientación de servicios y como Principio de la Arquitectura Orientada a Servicios SOA, la reutilización representa una característica primaria y central del diseño que esta ligada a la meta de alcanzar un ROI. Proporcionar los servicios como recursos empresariales reutilizables se relaciona con el patrón de diseño Centralización de la lógica.

Figura 9. Reutilización de servicios

9. Autonomía de servicios

La autonomía de los servicios individuales es especialmente importante para la efectividad de las composiciones del servicio. Debido a que un servicio que compone a otro automáticamente pierde autonomía, el nivel de autonomía entonces también depende de la composición de servicios.

Autonomía de servicios
Figura 10. Autonomía de servicios

10. Artículos de Interés

Servicios Web e Integración entre Aplicaciones

Este artículo aborda los Servicios Web como mecanismo fundamental para la Integración entre Aplicaciones, además establece los protocolos y lenguajes fundamentales utilizados por los profesionales para lograr el objetivo que los sistemas se comuniquen entre si.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Definición de Servicios Web

El término “servicios web” se refiere a una tecnología que permite que las aplicaciones se comuniquen en una forma que no depende de la plataforma ni del lenguaje de programación. Un servicio web en escencia agrega una capacidad a las aplicaciones para que las mismas interactuen.

Un servicio web describe un conjunto de operaciones accesibles por la red a través de mensajería como XML (aunque no necesariamente sea la única) y  usa protocolos (como HTTP) con el objetivo de describir una operación para ejecutar  acciones o datos para intercambiar información con otro servicio web.

Servicios Web
Figura 1. Servicios Web

Por lo tanto, la finalidad de los Servicios Web son entre otras, las siguientes:

  • Proporcionar mecanismos de comunicación estándares entre aplicaciones, que interactúan entre sí.
  • Proporcionan interoperabilidad y extensibilidad para el intercambio de información entre aplicaciones.

Cuando los Servicios Web se agrupan resulta el concepto denominado API (Application Programming Interface) que permite referirse a todas las capacidades de comunicación que tiene una aplicación con el mundo externo.

En la misma API se definen muchos conceptos que ayudan a la administración, uno de los clave es el versionamiento que permite evolucionar el API sin necesidad de cambiar todos los clientes que consumen en un mismo momento.

2. Ciclo de vida de un Servicio Web

Teniendo presente que un Servicio Web es expuesto por una aplicación y consumido por otra, se da un ciclo de vida en función de los cambios que se produzca, este ciclo de vida se ilustra en el siguiente gráfico.

Ciclo de vida de los Servicios Web
Figura 2. Ciclo de vida de los Servicios Web

3. Lenguajes de intercambio de información XML, JSON, Binario

En general, el intercambio de información se da en algún tipo de formato que la codifique, el formato que primero se puede establecer es el binario pero este implicaría que la interpretación de información tenga un estándar definido, incluso que los sistemas de información se hubiesen programado con un mismo lenguaje para facilitar la interpretación, como lo anterior no ocurre, es decir un mismo lenguaje de programación y estandarización entre sistemas de información, se requiere formatos como XML y JSON.

A continuación se listan algunas características de estos formatos y se muestra una gráfica de ejemplo de cada uno de ellos.

  • El lenguaje extensible de marcado (XML) y JSON (JavaScript Object Notation) permite el modelamiento en un formato legible por el humano.
  • XML como tal es tan potente que permite desde el modelamiento de bases de datos hasta la configuración de sistemas de información, además sirve como superconjunto para otros formatos como HTML muy utilizado en páginas web.
  • JSON es un formato alternativo y similar a XML para representar información más fácil de procesar para una máquina e igualmente sencillo de leer para un humano.
  • En general JSON ofrece menor overheading que XML, es decir menos información para describir cada parte del dato lo cual lo hace mejor para transmisión por redes de datos y procesamiento de máquina.
XML y JSON
Figura 3. XML y JSON

4. Protocolo SOAP

Se trata de un protocolo basado en XML, que permite la interacción entre aplicaciones y a la vez tiene la capacidad de transmitir información compleja. Puede transmitir información a través de HTTP, SMTP, u otros.

El protocolo SOAP (Simple Object Access Protocol) permite la comunicación entre diferentes sistemas intercambiando paquetes formados de forma específica.

El mensaje SOAP está compuesto por:

  • envelope (sobre)
  • header  (cabecera)
  • body (cuerpo)
Paquete SOAP
Figura 4. Paquete SOAP

El protocolo SOAP utiliza un estándar denominado WSDL (Web Service Description Language) para definir las operaciones de un servicio web así como la información que el servicio recibe y la que entrega. La imagen siguiente muestra el detalle técnico de como se encuentra descrito una operación dentro de un servicio web y este a su vez donde se encuentra dentro del XML descrito por el WSDL.

WSDL y las operaciones descritas
Figura 5. WSDL y las operaciones descritas

Para mayor claridad considere que cuando nos referimos a un Servicio Web este puede conformarse por diferentes acciones a realizar cada una de ellas denominada operación (en términos de programación puede llamarse también métodos o funciones) por lo cual el WSDL describe todas estas operaciones del servicio web, note además que cada operación puede tener datos de entrada y salida que son descritos en el mismo WSDL.

Así como existe WSDL, en SOAP se define el concepto de UDDI (Universal Description, Discovery and Integration) son las siglas del catálogo de servicios cuyo registro se hace en XML. UDDI es una iniciativa industrial abierta enfocada en el contexto de los Servicios Web.

UDDI es por tanto un repositorio donde se almacenan los diferentes WSDL que expone una aplicación a fin que sus servicios web puedan ser descubiertos de forma programatica.

UDDI
Figura 6. UDDI

Para consumir un servicio web SOAP se requiere un poco de programación o utilizar un cliente como SOAPUI que permite armar los XML de datos y enviarlos a los servicios web.

Para descargar SOAP UI siga este enlace.

5. Protocolo REST

REST significa “REpresentational State Transfer”, cuya traducción es: “transferencia de representación de estado” y es un patrón de diseño para la implementación de servicios web que utiliza HTTP y en general JSON y no requiere un envelope como el caso de SOAP lo cual mejora el rendimiento sustancialmente.

La palabra clave de REST es que un servicio REST no tiene estado (es stateless), lo que quiere decir que, entre dos llamadas, el servicio pierde todos sus datos. Esto es, que no se puede llamar a un servicio REST y pasarle unos datos (p. ej. un usuario y una contraseña) y esperar que los “recuerde” en la siguiente petición.

REST se ha vuelto muy utilizado por su facilidad de implementación y consumo y hoy día se vuelve un estándar para diseño de aplicaciones y sus API.

Para consumir servicios web REST basta usar el navegador para peticiones tipo GET o para operaciones más complejas puede usar clientes como postman.

Si desea descargar postman siga este link.

6. Protocolo GraphQL

De forma más reciente se tiene GraphQL, que es similar a REST o SOAP sin embargo permite obtener exactamente lo que se necesita, este lenguaje creado por Facebook se encuentra muy orientado al consumo de información por parte del frontend de las aplicaciones, sin embargo también es útil para la integración entre aplicaciones.

Este lenguaje permite realizar las consultas y especificar la data almacenada en bases de datos, con lo cual resulta en aplicaciones muy eficientes y rápidas de construir.

7. SOAP vs REST

Algunas de las consideraciones que debe tener en cuenta cuando hable de SOAP y REST, son:

  • Lenguajes de programación: PHP, Java, .NET, Ruby, Python, etc
  • Intercambios de información: XML, JSON
  • Protocolos: SOAP, REST
  • Exposición de servicios: UDDI
  • Contratos: WSDL, WADL
Comparativa SOAP y REST
Figura 7. Comparativa SOAP y REST

8. Artículos de Interés

SOA Arquitectura Orientada a Servicios

Las Arquitecturas Orientadas a Servicios SOA constituyen un paradigma que si bien no es nuevo, si ha estado vigente durante la revolución informática. Este concepto ha sido estudiado y se ha buscado la forma de implementarlo por muchas empresas a fin de guiar la forma en que se organizan los sistemas de información en una empresa, este artículo explora este concepto.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. El Software en la Empresa

En general una empresa cuando necesita un sistema a fin de sistematizar o automatizar un proceso tiene varias opciones:

  • Desarrollo a la medida con lo cual el sistema será especifico para la necesidad
  • Comprar un software para la necesidad y adaptar el proceso
  • Utilizar una plataforma low code
  • Utilizar una plataforma estándar con un proceso personalizado como un software tipo BPMS

Hacía los años 80 la premisa era desarrollar en los lenguajes disponible, hoy día aun se conserva esta opción, pero en menor medida. En 90 se realizaba mucha compra de paquete y el proceso se adaptaba para que funcionara de tal manera.

Esto genero que las empresas tuvieran diferentes sistemas de información y fuese necesario pensar en integrarlos, fue aquí en el inicio del milenio donde aparece las tecnologías para integración y marcos de trabajo como EIA (Enterprise Integration Application) y SOA (Service Oriented Architecture) como soluciones, y desde entonces la tendencia a sido hacia la composición que permita que los software vayan de la mano del paradigma de la Gestión por Procesos.

2. Definición de SOA

Aunque pueden existir muchas definiciones de SOA, una buena aproximación se logra desde su impacto, SOA como filosofía define un marco para organizar las aplicaciones o sistemas de información en una empresa.

Algunas de las características que encontramos en la definición de SOA se listan a continuación.

  • Proporciona servicios a clientes por medio de interfaces basadas en estándares, públicas y visibles.
  • Las aplicaciones pueden ligarse a servicios que evolucionan y mejoran en el tiempo.
  • No son necesarias modificaciones a las aplicaciones que consumen los servicios.
  • Proporciona un modelo claro para integrar sistemas de información dentro y fuera de la organización.
  • Constituye la base para la construcción de aplicaciones globales sobre el concepto de interoperabilidad.

Así mismo, la siguiente gráfica muestra que SOA no solo se refiere a Sistemas de Información, de manera que su impacto va más allá y contempla Personas, Procesos, Plataformas y Prácticas.

SOA
Figura 1. SOA

En definitiva podemos definir SOA como: la arquitectura que permite organizar los sistemas de información heterogéneos en las compañías bajo un marco de interoperabilidad.

La siguiente imagen muestra el momento de aparición histórico de SOA, aquí es importante observar que EIA (que básicamente se trata de archivos planos esta limitado y tiene un techo, adicionalmente que SOA aparece antes que BPMS y que hoy día se habla de conceptos como CEP (Complex Event Processing) y Web 2.0.

Aparición histórica de SOA en el tiempo
Figura 3. Aparición histórica de SOA en el tiempo

Finalmente es conveniente observar que SOA puede tener diferentes significados en función de que tipo de profesional este hablando del tema, para mayor detalle de este concepto se deja este artículo al lector.

Ambiguedad SOA

3. Arquitecturas de Aplicaciones

Las arquitecturas de aplicaciones en el marco SOA tienen dos dimensiones importantes: el nivel de desacoplamiento y la estandarización, el desarrollo de estos conceptos en las aplicaciones permitirá obtener uno de los puntos más relevantes de SOA que es la Interoperabilidad.

Las siguientes imágenes muestran como estas arquitecturas han evolucionado con el tiempo, que para este caso coinciden con el eje horizontal.

Arquitecturas de aplicaciones bajo la óptica de SOA
Figura 3. Arquitecturas de aplicaciones bajo la óptica de SOA
Tecnologías de Integración e Interoperabilidad para arquitecturas de aplicaciones
Figura 4. Tecnologías de Integración e Interoperabilidad para arquitecturas de aplicaciones

4. El proceso de Adopción SOA

Cuando una compañía organiza sus sistemas usando SOA debe realizar un proceso denominado Adopción SOA, en este proceso normalmente se sigue una hoja de ruta que incluye revisar y evaluar los siguientes aspectos:

  • Esquema SOA
  • Controles al crecimiento de TI
  • Administración de infraestructura de servicios
  • Gobierno SOA
  • Composición, reutilización y agilidad
  • Control de la guerra de dependencias

En este proceso de adopción, el Arquitecto SOA se puede asimilar al Arquitecto urbanista que busca optimizar los servicios de la ciudad incluyendo movilidad, acueducto, iluminación entre otros, por lo tanto hay que diferenciar de la Orientación al Servicio de la Arquitectura Orientada al Servicio, la palabra Arquitectura define articulación y organización alrededor de muchos conceptos de interes.

El Arquitecto SOA como Urbanista
Figura 5. El Arquitecto SOA como Urbanista

5. SOA y BPMS

En las compañías que se hace uso de estas dos tecnologías se pueden encontrar muchas mejoras en concreto los siguientes aspectos son impactados.

5.1. Productividad

En cuanto a productividad se refiere SOA y BPMS se mezclan para potenciar esta características de las empresas, recordemos también que esta caracteristica se refiere a la cantidad de tareas producidas o ejecutadas de forma correcta (los errores no cuentan!), en general se obtiene:

  • Modelado, diseño, construcción, despliegue y puesta en marcha de los procesos de forma sencilla.
  • Construcción de procesos mediante reutilización de componentes.
  • Catálogo de servicios y acciones ampliable con los componentes de la organización.
  • Minimizar los tiempos de Implantación y Formación.
  • Aplicación de protocolos y estándares de forma racional.
  • Romper la brecha entre el analista de negocio y el equipo de TI.
  • Los analistas “programan” las acciones de cada tarea sin necesidad de bajar a código.

5.2. Flexibilidad

En cuanto a flexibilidad se refiere una empresa debe amoldarse a las condiciones cambiantes de su entorno, por lo cual, la fusión entre SOA y BPMS potencia esta característica así:

  • Aplicación práctica de las tecnologías BPM y SOA
  • La utilización de estándares que faciliten la interoperabilidad tanto interna como externa.
  • Integrable en la estrategia SOA corporativa.
  • Neutralidad tecnológica y multiplataforma.
  • Construcción de procesos sobre servicios corporativos o de terceros.
  • No hay modelos propietarios ni tecnologías propietarias.
  • Separación entre capas de presentación y de aplicación.

5.3. Potencia

La potencia la podemos definir en este contexto como la capacidad de la organización para ejecutar procesos, por lo cual las siguientes características son obtenidas al unir SOA y BPMS:

  • Conjunto completo de módulos para la definición, diseño, construcción, despliegue, ejecución y administración de procesos BPM.
  • Capacidad para diseñar y mantener sistemas de información complejos en términos manejables de tiempo y costo.
  • Actualización a las últimas tecnologías.
  • Adecuación a requisitos funcionales.
  • Capacidad de integrar distintos componentes software y distintas arquitecturas de productos.
  • Capacidad para definir modelos verticales: Administración Electrónica, Banca Electrónica, Captura Documental, CMMI, Calidad.

5.4. Costos

Finalmente los costos, que son uno de los aspectos más importantes a evaluar cuando se introducen Arquitecturas Orientadas a Servicios, algunas de las ventajas que se pueden obtener se listan a continuación:

  • Minimizar los tiempos de implantación y formación.
  • Reducir costos adicionales de desarrollo.
  • Posibilitar la obtención de resultados visibles a corto plazo. Agilizar la incorporación de procesos de negocio.
  • Mejorar los costos de mantenimiento de aplicaciones.
  • Evitar instalar y mantener múltiples productos.
  • Reducir costos de licencias y mantenimiento.
  • Alinear las arquitecturas de la organización a las necesidades del negocio para definir procesos integrados.
  • Acelerar el “Time To Market”.

7. Artículos de Interés

Sistemas de Información en Empresas ERP CRM

´Los Sistemas de Información en Empresas ERP y CRM les permiten desarrollar su misión en el mundo moderno compitiendo de forma eficiente y generando ventajas sobre la competencia. Es por esto que se han especializado muchos sistemas de información y hoy día encontramos una gran cantidad que permiten realizar funciones empresariales de todo tipo.

En este artículo se explora los sistemas más populares de información dado sus categorías o clasificaciones.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Sistemas de Información en las Empresas

Los Sistemas de Información en las Empresas como ERP y CRM son fundamentales para mantener la competitividad y habilitar la ejecución de procesos modernos, estos también permiten alcanzar algún grado de automatización y lograr mejores resultados empresariales.

Ahora bien surge una discrepancia entre los sistemas de información que utilizamos en el día a día en la sociedad y la empresa, estos últimos suelen ser más obsoletos y con muchos más problemas y lo anterior sucede, entre otras causas, por el volumen de personas que utilizan estos sistemas, adicionalmente por la misma complejidad de representar negocios y operaciones que a menudo son muy particulares y requieres cierto grado de personalización.

empresasociedad
Figura 1. Empresa y sociedad

En este punto es bueno hacer algunas definiciones y clarificar los tipos de software.

Definición de software

Conjunto de programas que permiten al computador realizar determinada tarea.

Definición de aplicación

Programa o conjunto de programas que realizan un trabajo especifico.

clasificacionsoftware
Figura 2. Clasificación de software

En este sentido los sistemas de información a la larga son programas de computadora, pero que de forma coloquial se utilizan estos términos como sinónimos. De igual manera es importante comprender que los sistemas de información pueden ser de Escritorio lo cual implica instalar el programa, Web que utiliza un navegador para acceder al sistema y móvil que es similar al de escritorio pero corre en un celular. Aquellos sistemas que utilizan instalación se termina llamando cliente pesado y aquellos que usan el navegador se llaman cliente liviano.

2. Sistemas ERP

2.1. Qué es ERP

Los Sistemas de Información en Empresas tipo ERP (Enterprise Relationship Management) son cruciales en el desarrollo de cualquier empresa, de hecho podríamos decir que cualquier empresa de cualquier sector de la economía debe tener un sistema ERP, puesto que estos controlan la gran mayoría de funciones empresariales básicas y comunes como contabilidad o nómina.

Así mismo hay gran cantidad de fabricantes de sistemas de este tipo, algunos de ellos tienen características globales y se parametrizan a las particularidades del país donde operan y otros son de ámbito local y ya contemplan todos los requerimientos de ley del país.

Figura 3. ERP

2.2. Aplicaciones de ERP

Las aplicaciones tipo ERP se pueden usar en los siguientes casos de uso puesto que traen funcionalidades para ello.

  • Pagos
  • Contabilidad
  • Recursos humanos
  • Proveedores
  • Inventario
  • Compras
  • Finanzas
  • Manufactura
  • Almacenes
  • Proyectos

3. Sistema CRM

2.1. Qué es CRM

Los Sistemas de Información en Empresas tipo CRM son cruciales en los procesos de ventas, estos se encargan de administrar las relaciones con los clientes, de hecho la palabra CRM (Customer Relatioship Management) es una parte del marketing que estudia estas relaciones.

Estos sistemas son más globales y no dependen tanto de las regulaciones y la legislación interna de un país, sin embargo hay que observar que dependiendo el sector pueden existir particularidades necesarias de considerar.

Algunos de los fabricantes más comunes de CRM se muestran en la siguiente imagen.

Figura 4. CRM

2.2. Aplicaciones de los CRM

Los sistemas CRM se caracterizan también por sus funcionalidades y algunas de las más usuales son:

  • Clientes
  • Ventas
  • Ingresos
  • Marketing
  • Comunicaciones
  • Presupuestos
  • Facturación
  • Recordatorios
  • Automatizaciones
  • Estadísticas

Por lo cual es común encontrar CRM que ayudan a controlar el proceso de ventas, generando embudos por el cual los prospectos de cliente van pasando y aumentando su probabilidad de ventas, así mismo permiten controlar las fuerzas comerciales, registrando contactos, clientes, llamadas realizadas, emails o comunicaciones realizados y de esta forma almacenar esta información en un sistema cosa que facilita entre otras empalmes entre vendedores.

Los CRM también son fuertes en las estadísticas que producen y que permiten a los directivos visualizar como se encuentra el proceso de ventas en un momento determinado.

4. Artículos de Interés

Modelo MVVM Propiedades Directivas y Eventos en VUE

Este artículo comienza explicando el Modelo MVVM y luego muestra las Propiedades Directivas y Eventos de los Componentes en VUE lo cual puede ser una guía rápida y muy útil para programar y tener en cuenta las diferentes opciones que el programador del front end tiene.

Si deseas aprender sobre programación en Java sigue este link.

1. Modelo MVVM

El Modelo – Vista – Vista Modelo MVVM de VUE establece diferentes mecanismos de comunicación usando Propiedades Directivas y Eventos entre la lógica y especialmente los datos contenidos en la sección data de la instancia de VUE y los elementos de la vista. De esta forma se tienen 4 posibles mecanismos definidos para comunicarnos entre estos dos elementos (datos y elementos de la página web)

  • Una vez: este mecanismo determina que un dato se utiliza en los componentes HTML o DOM de la página web una sola vez, de esta forma si el dato cambia no se vera reflejado en la página web.
  • Una dirección: este mecanismo implica que un dato se utiliza en los componentes HTML o DOM de la página web y cada vez que el dato cambie, normalmente por instrucciones en la lógica JS este cambio se vera reflejado o refrescado en la página web.
  • Invertido: este mecanismo implica que un dato de la página web puede refrescarse o actualizarse en una variable que se tenga en la sección de JS, un buen ejemplo de esto ocurre en los formularios en los cuales el usuario ingresa información y esta será requerida en la lógica para realizar algún proceso como validaciones o envío al back end para el procesamiento.
  • Dos direcciones o bidireccional: los datos en esta modalidad de comunicación serán actualizados en la página web y en el javascript, de tal forma que un cambio se vea reflejado en tanto en la lógica como en el HTML o viceversa.

2. Propiedades Directivas y Eventos de los Componentes en VUE

2.1. Directivas v-once

Esta es una de las Propiedades de los Componentes en VUE de la sección HTML indica a la instancia de VUE que la etiqueta se muestre solo una vez por lo cual es muy útil para depurar. De esta manera, aunque existan actualizaciones de las variables estas no serán tenidas en cuenta y no se actualizará el componente a excepción de la primera vez.

<span v-once>Entrada</span>

2.2. Directivas v-bind

Esta es otra de las Propiedad de de los Componentes en VUE y permite actualizar datos de la vista, recuerde que también se realizó con el render declarativo, pero v-bind permite enlazar data a atributos de HTML.

En la sección HTML del siguiente ejemplo se muestra como vincular en atributo src de una etiqueta img a una variable de forma que el atributo sea dinámico, note que el uso de v-bind es opcional y se puede simplificar significativamente usando solo dos puntos.

Algo muy importante del v-bind es que se puede usar para propiedades como el class que define el estilo CSS aplicado a una etiqueta, esto permite programáticamente cambiar los estilos usando variables que contengan el nombre de la clase CSS que queremos aplicar a la etiqueta.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span v-once>Entrada</span>
      <img v-bind:src="imagen"></img>
      <img :src="imagen"></img>
    </div>
  </template>
  
  <!-- #################################################################################### -->
  <!-- ###### Sección de Script                                                      ###### -->
  <!-- #################################################################################### -->
  <script>
  export default {
    name: 'Entrada',
    data() {
      return {
        imagen: 'https://www.ochoscar.com/wp-content/uploads/2022/08/cropped-cropped-logoh-transparente.png'
      }
    }
  }
  </script>

2.3. Directivas v-on

La Propiedad maneja Eventos de los Componentes en VUE, v-on nos va a permitir capturar eventos de los elementos HTML y procesarlos a través de métodos de JavaScript. En el siguiente ejemplo se muestra como hacerlo.

Un punto importante y muy usado es que similarmente a como sucedia con v-bind en el caso de v-on se puede abreviar usando @ de esta manera no es necesario escribir v-on: sino que en su lugar simplemente se escribe la @

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span v-once>Entrada</span>
      <button v-on:click="processClick()">click me</button>
    </div>
  </template>
  
  <!-- #################################################################################### -->
  <!-- ###### Sección de Script                                                      ###### -->
  <!-- #################################################################################### -->
  <script>
  export default {
    name: 'Entrada',
    methods: {
      processClick() {
        console.log("click en boton")
      }
    }
  }
  </script>

Otros eventos que son muy útiles y normalmente utilizados son:

  • mousemove: sucede cuando el mouse pasa por encima del componente.
  • mousedown: sucede cuando el click principal del mouse se presiona.
  • mouseup: sucede cuando el click principal del mouse se suelta.
  • keydown: ocurre cuando se presiona una tecla.
  • keyup: ocurre cuando se suelta una tecla.

Es importante anotar que todos los métodos que procesan eventos pueden recibir, aunqque no se especifique en la sección HTML, un parámetro denominado event con la información del evento, por ejemplo la posición del mouse o el texto de una caja de texto.

Los modificadores de eventos también nos van a permitir dar un comportamiento más particular, para ello solamente es indicar después del evento el modificador, por ejemplo @keyup.enter solamente se disparará el evento si la tecla es enter, o por ejemplo @mousedown.left para controlar un click derecho, en este último caso será conveniente agregar al componente @contextmenu.prevent para evitar procesar el menú contextual del navegador.

2.4. Directivas ref y refs

Esta directiva nos permite referencia componentes de HTML en la sección de JavaScript a fin de poder modificar alguna de sus propiedades.

Esto se logra dando un valor al atributo ref de los componentes HTML y luego para su uso en JavaScript podemos acceder al conjunto de todas las referencias usnaod this.$refs, como se muestra en el ejemplo siguiente, en el cual tenemos un canvas en el lado de HTML y el mismo lo podemos obtener en el lado JavaScript para realizar alguna acción con el mismo.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span v-once>Entrada</span>
      <canvas ref="canvas"></canvas>
    </div>
  </template>
  
  <!-- #################################################################################### -->
  <!-- ###### Sección de Script                                                      ###### -->
  <!-- #################################################################################### -->
  <script>
  export default {
    name: 'Entrada',
    data() {
      return {
        canvasContext: null
      }
    },
    mounted() {
      canvasContext = this.$refs.canvas.getContext('2d');

      // set strokeSyle (color) y lineWidth
    },
    methods: {
      processClick() {
        console.log("click en boton")
      }
    }
  }
  </script>

2.7. Directivas v-model

La directiva v-model permite la comunicación bidireccional que se vio en el Modelo MVVM y establecer Propiedades y Eventos de VUE. En este caso un cambio en HTML se verá reflejado en la data asociada con v-model y viceversa.

En el siguiente ejemplo se muestra una variable de data vinculada con v-model en el HTML.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span >Entrada</span>
      <input v-model="email">
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	data() {
		return {
			email
		}
	}
}
</script>

2.8. Directivas props

Los props es un atributo muy conveniente porque permite que en el momento de agregar un componente hecho por nosotros podamos recibir valores del componente padre donde se está insertando el componente hijo. En el siguiente ejemplo se recibe un valor del email desde un componente padre donde se inserta el componente Entrada.

Algunas cosas importante por observar es que el props es un arreglo con los nombres de las propiedades que serán enviadas, lo segundo es que en el momento de enviar el valor se usa v-bind como se aprendió anteriormente. Observe también que la propiedad se comporta como si fuera una etiqueta más de la etiqueta HTML y que la misma va a funcionar como si fuera una variable que estuviera en data.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span >Entrada</span>
      <input v-model="email">
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	props: ['attrEmail'],
	data() {
		return {
			email
		}
	}
}
</script>
<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
  <div id="app">
    <entrada :attrEmail="email"></entrada>
  </div>
</template>

<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
import Usuario from '@/views/Usuario.vue'
import Entrada from '@/views/Entrada.vue'

export default {
  name: 'App',
  components: { Usuario, Entrada },
  data() {
    return {
      email: "user@email.com"
    }
  }
}
</script>

2.9. Directivas $emit

Emit permite realizar la comunicación inversa que realiza prop, es decir de los hijos al padre, en este caso la directiva emit nos permitirá lanzar eventos que serán escuchados por el padre.

El siguiente código muestra un evento capturado en el padre y lanzado desde el hijo. En el momento de disparar el evento llamando a emit este recibe dos parametros, el primero es el nombre del evento y el segundo es el nombre del evento a disparar y el segundo el valor.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span >Entrada</span>
      <input v-model="email" @keyup.enter="actualizar" type="text">
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	props: ['attrEmail'],
	data() {
		return {
			email
		}
	},
	methods: {
		actualizar(event) {
			this.$emit("onChange", this.email);
		}
	}
}
</script>
<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
  <div id="app">
    <entrada :attrEmail="email" @onChange="change"></entrada>
  </div>
</template>

<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
import Usuario from '@/views/Usuario.vue'
import Entrada from '@/views/Entrada.vue'

export default {
  name: 'App',
  components: { Usuario, Entrada },
  data() {
    return {
      email: "user@email.com"
    }
  },
  methods: {
    change(param) {
      console.log("change" + param)
    }
  }
}
</script>

2.10. Directivas v-watch

Esta directiva nos permitirá observar una variable en particular y ejecutar un código cuando esta cambie. Normalmente se observan variables de data, pero se puede observar cualquiera, ya sea de data, de props o de la instancia VUE.

Para observar una variable, es suficiente con declarar en la sección watch un método con exactamente el mismo nombre de la variable como se muestra en el siguiente ejemplo. En el método que trata el cambio se pueden recibir el newValue y el oldValue para realizar comprobaciones y acciones en el momento del cambio.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span >Entrada</span>
      <input v-model="email" @keyup.enter="actualizar" type="text">
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	props: ['attrEmail'],
	data() {
		return {
			email
		}
	},
	methods: {
		actualizar(event) {
			this.$emit("onChange", this.email);
		}
	},
	watch: {
		attrEmail(newValue, oldValue) {
			console.log(this.attrEmail)
		}
	}
}
</script>

2.11. Directivas v-if y v-show

Esta directiva nos permite mostrar o ocultar elementos de acuerdo a condiciones. Opcionalmente también existe v-else-if y v-else que permiten armar una secuencia de comprobaciones para facilitar la comprobación. Es importante observar que estas condiciones son siempre booleanas y que se pueden definir en la misma sección del atributo HTML.

La directiva v-show es similar a v-if, la diferencia es que utiliza CSS para ocultar o mostrar los elementos en lugar de crearlos o destruirlos del DOM como si lo hace v-if, en general v-show puede ser mejor en términos de recursos de la máquina, sin embargo se pueden visualizar en el DOM si se inspecciona la página.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span v-if="condicion">Entrada</span>
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	data() {
		return {
			condicion: true
		}
	}
}
</script>

2.12. Directivas v-for

Esta directiva nos permitirá crear elementos HTML desde una lista que tengamos en la lógica. Aquí hay varias cosas importante que anotar, la primera es que en el for se recorrerá con dos variables, la primera que captura el valor del array y la segunda un índice que servirá como key del botón, este key es indispensable definirlo puesto que tendremos varios botones y es necesario diferenciarlos.

Observe también que habiendo construido los botones con los valores del arreglo y con un índice como clave se pueden enviar a un método que procese los eventos de click enviando el identificador del botón para diferenciarlos en el momento de procesar la lógica.

<!-- #################################################################################### -->
<!-- ###### Sección de HTML                                                        ###### -->
<!-- #################################################################################### -->
<template>
    <div id="nav" class="principal">
      <span>Entrada</span>
	  <button @click="buttonClick(elemento, i)" v-for="(elemento, i) in elementos" :key="i">{{ elemento }}</button>
    </div>
</template>
  
<!-- #################################################################################### -->
<!-- ###### Sección de Script                                                      ###### -->
<!-- #################################################################################### -->
<script>
export default {
	name: 'Entrada',
	data() {
		return {
			elementos: ['OBJ1', 'OBJ2', 'OBJ3', 'OBJ4', 'OBJ5']
		}
	},
	methods: {
		buttonClick(elemento, i) {
			console.log("click en: " + elemento + " " + i)
		}
	}
}
</script>

3. Artículos de Interés

Hooks y Ciclo de Vida de Componentes en VUE

Cuando programamos en VUE es importante conocer los Hooks y Ciclo de Vida de Componentes que permiten realizar acciones en los diferentes momentos de la ejecución de un programa, en este artículo se muestra todo lo que tienes que saber para dominar los diferentes hooks de VUE.

Si quieres aprender a programar en Java sigue este link.

1. Ciclo de Vida de los Componentes

En la siguiente imagen se puede observar los diferentes estados de un componente en VUE.

ciclovidavue
Figura 1. Ciclo de vida de componentes

Siempre que VUE carga un componente sigue este patrón, y puede observar como cada estado esta precedido de uno anterior llamado before, por ejemplo antes de ser creado un componente se leen los datos y antes de ser montado se lee la plantilla o template, de forma similar y quizás el más importante por comprender es que antes que se actualicen los datos estos serán actualizados en el DOM o página web. y el ciclo en la actualización ocurre cada vez que un dato es cambiado, por eso la sección de data es tan importante porque las variables que se definen allí permiten cambiar el estado de los componentes y refrescarlos en la página web.

2. Hooks disponibles en los Componentes

Cada uno de los estados del ciclo de vida de los componentes en VUE tiene un hook, en este caso un método especial que es definido al mismo nivel de la data, el nombre o los métodos y que hace parte de la instancia de VUE como tal, estos métodos pueden ser sobreescritos ya sea uno o varios para cambiar el comportamiento o definir acciones que se quieran realizar en alguno de los momentos en el Ciclo de Vida de los Componentes en VUE.

El siguiente código muestra la sección de script de un componente VUE con la definición de todos los Hooks.

  <script>
  export default {
    name: 'Entrada',
    beforeCreate() {
      console.log('beforeCreate');
    },
    created() {
      console.log('created');
    },
    beforeMount() {
      console.log('beforeMount');
    },
    mounted() {
      console.log('mounted');
    },
    beforeUpdate() {  
      console.log('beforeUpdate');
    },
    updated(){
      console.log('updated');
    },
    beforeDestroy() {
      console.log('beforeDestroy');
    },
    destroyed() {
      console.log('destroyed');
    }
  }
  </script>

3. Artículos de Interés

« Entradas anteriores Entradas recientes »

© 2024 ochoscar's blog

Tema por Anders NorenArriba ↑