1 00:00:00,330 --> 00:00:09,429 Buenas tardes, mi nombre es Denisa y os voy a hacer la presentación de mi proyecto de investigación y desarrollo de técnicas avanzadas de integración entre sistemas. 2 00:00:11,949 --> 00:00:19,309 El contenido que vamos a ver hoy será una breve introducción, vamos a ver un poco la arquitectura en capas tradicional versus Mulesoft, 3 00:00:19,929 --> 00:00:24,750 métodos de integración, la plataforma de Mulesoft y por último la demostración práctica. 4 00:00:28,579 --> 00:00:33,439 Como introducción, mi proyecto se divide básicamente en dos partes. 5 00:00:33,899 --> 00:00:41,939 La primera parte es una investigación de las integraciones, de los métodos de integración actuales y tradicionales, 6 00:00:42,420 --> 00:00:47,060 de las APIs y de la arquitectura NKPAS y la plataforma de MuleSoft. 7 00:00:47,060 --> 00:00:52,299 Y la segunda parte del proyecto es un desarrollo de una aplicación realizada en Android, 8 00:00:52,299 --> 00:01:02,479 de una gestión de una tienda de motos de moda por parte del vendedor que se conecta a una base de datos 9 00:01:02,479 --> 00:01:09,700 y para integrar estas dos partes, tanto Android como la base de datos, vamos a utilizar la plataforma de MuleSoft. 10 00:01:09,700 --> 00:01:23,790 La arquitectura en capas, como ya sabemos, es un estilo de diseño de software que organiza una aplicación en múltiples niveles o capas. 11 00:01:23,790 --> 00:01:31,849 Cada capa tiene su responsabilidad. Las capas se comunican entre una con otra mediante interfaces definidas. 12 00:01:32,370 --> 00:01:40,629 Tenemos como primero la capa de presentación, que sería la interfaz de usuario, que es la que se conecta con el usuario. 13 00:01:41,549 --> 00:01:49,150 Después tenemos la capa de negocio, que es la capa de la lógica, donde está toda la lógica, los procesamientos de los datos. 14 00:01:49,150 --> 00:01:55,609 y por último la capa de acceso a datos, que es la encargada de la conexión con la base de datos 15 00:01:55,609 --> 00:02:00,030 o cualquier almacenamiento de datos, como puede ser, por ejemplo, la nube. 16 00:02:03,950 --> 00:02:08,409 Dentro de MuleSoft tendríamos las mismas capas, la misma arquitectura 17 00:02:08,409 --> 00:02:11,169 y esto se llama Applet Connectivity. 18 00:02:11,849 --> 00:02:15,330 Tenemos las mismas capas, pero con diferentes nombres. 19 00:02:16,629 --> 00:02:19,870 Igual, la primera se encarga de la conexión con el cliente, 20 00:02:19,870 --> 00:02:27,370 ya sea una aplicación móvil o una web, la segunda sería la lógica 21 00:02:27,370 --> 00:02:30,129 y la última la que se conecta con los sistemas finales. 22 00:02:30,949 --> 00:02:37,750 API Let Connectivity de MuleSoft, su concepto fundamental es la reutilización de las APIs, 23 00:02:37,750 --> 00:02:42,610 como podemos ver en este ejemplo del medio en la cual tenemos una API de proceso 24 00:02:42,610 --> 00:02:48,050 que es utilizada por varios clientes, por un cliente de una web y por otro cliente 25 00:02:48,050 --> 00:02:56,930 y también es consumido después por una base de datos y una nube. 26 00:03:01,069 --> 00:03:05,849 El propósito fundamental de MUSEF es utilizar las tres capas, 27 00:03:06,330 --> 00:03:10,110 pero hay veces que los proyectos no requieren la utilización de las tres, 28 00:03:10,590 --> 00:03:12,229 como por ejemplo en este ejemplo. 29 00:03:13,189 --> 00:03:16,909 Simplemente una aplicación móvil quiere consumir datos de una base de datos, 30 00:03:16,909 --> 00:03:23,310 entonces en la capa de proceso no tendríamos ninguna lógica, por tanto solo tendríamos dos capas, la de Experience y la de System. 31 00:03:26,500 --> 00:03:36,520 ¿Qué es la integración de sistemas? Pues la integración de sistemas es la capacidad de conjuntar dos aplicaciones en una única unidad 32 00:03:36,520 --> 00:03:41,159 con el fin de que funcione correctamente y se lleve a cabo todos los procesos. 33 00:03:43,560 --> 00:03:48,719 Las principales formas de integración serían las siguientes, integración punto a punto, integración de API, 34 00:03:48,719 --> 00:03:54,819 las Middleware, las arquitecturas de servicios SOA o el protocolo de transferencia FTP, 35 00:03:55,719 --> 00:04:02,080 el intercambio electrónico de datos, la nube, la integración basada en la nube 36 00:04:02,080 --> 00:04:04,479 y los buses de servicios empresariales. 37 00:04:07,490 --> 00:04:11,210 ¿Qué es MuleSoft? Os voy a comentar un poco las características 38 00:04:11,210 --> 00:04:13,770 y los componentes fundamentales de esta plataforma, 39 00:04:13,930 --> 00:04:16,389 que es el Anypoint Platform y el Anypoint Studio. 40 00:04:16,389 --> 00:04:22,149 MuleSoft es una plataforma de integración actualmente líder en el mercado 41 00:04:22,149 --> 00:04:26,029 que fue adquirida por Salesforce en 2018 42 00:04:26,029 --> 00:04:29,230 MuleSoft actúa como middleware 43 00:04:29,230 --> 00:04:33,829 ya que facilita la comunicación y el intercambio entre diferentes sistemas 44 00:04:33,829 --> 00:04:38,829 también es un bus de servicios empresariales 45 00:04:38,829 --> 00:04:44,290 ya que al conectar sus aplicaciones funciona mediante un bus de comunicación 46 00:04:44,290 --> 00:04:49,230 también actúa con las APIs ya que funciona solo con APIs 47 00:04:49,230 --> 00:04:52,689 dentro de su plataforma que ahora lo vamos a ver 48 00:04:52,689 --> 00:04:56,730 permite crear, gestionar, desplegar las APIs 49 00:04:56,730 --> 00:04:59,250 y también es una integración en la nube 50 00:04:59,250 --> 00:05:05,949 aunque también se puede implementar dentro de la plataforma del cliente 51 00:05:05,949 --> 00:05:08,970 el primer componente de MuleSoft es el Anypoint Platform 52 00:05:08,970 --> 00:05:15,069 que es la plataforma de integración de MuleSoft 53 00:05:15,069 --> 00:05:21,949 que tiene todas las herramientas funcionales y específicas para realizar el flujo de una API. 54 00:05:22,889 --> 00:05:28,750 Podemos validar, hacer el prototipo de una API, diseñar una API, el feedback de una API, publicar una API, 55 00:05:29,410 --> 00:05:33,029 las operaciones de gestión de una API y desplegar una API. 56 00:05:34,110 --> 00:05:36,629 Todo esto se hace en su plataforma. 57 00:05:37,329 --> 00:05:39,129 Os lo voy a enseñar un segundito. 58 00:05:39,129 --> 00:05:48,120 aquí tendríamos el Design Center donde diseñamos una API 59 00:05:48,120 --> 00:05:50,680 se tendría que crear una nueva especificación 60 00:05:50,680 --> 00:05:54,720 os voy a enseñar una de las mías que he tenido que crear para la práctica 61 00:05:54,720 --> 00:06:03,199 en primer lugar lo que realizaríamos sería el Rammel 62 00:06:03,199 --> 00:06:06,740 donde tenemos todos los endpoints que vamos a tener en nuestra API 63 00:06:06,740 --> 00:06:10,120 y los tenemos que ir desarrollando 64 00:06:10,120 --> 00:06:14,879 por ejemplo el endpoint de post tendría el path barra productos 65 00:06:14,879 --> 00:06:21,699 es un post, el body es de tipo producto, que ahora lo veremos, que es donde aquí declaramos los tipos de datos 66 00:06:21,699 --> 00:06:27,240 y por último tendríamos un ejemplo de ese producto que iría en el body. 67 00:06:29,959 --> 00:06:36,040 Este es el tipo de producto, como veis tiene que tener un id producto, un nombre, descripción, precio, stock. 68 00:06:36,319 --> 00:06:43,639 Aquí dentro del data type se declara cómo tienen que ser los tipos de datos, si es string, si tiene que ser requerido, 69 00:06:43,639 --> 00:06:47,660 En este caso todos son requeridos menos este que tiene una interrogación que no es requerido. 70 00:06:48,759 --> 00:06:54,060 También se puede hacer los enumerados y ponerle un límite de caracteres. 71 00:06:55,540 --> 00:07:03,040 El ejemplo sería este, que es el body que deberíamos de insertar en el post para poder realizar el empoe. 72 00:07:03,959 --> 00:07:11,040 Una vez acabado esto se publicaría en el exchange, que es donde están publicadas todas las APIs. 73 00:07:11,800 --> 00:07:23,199 Dentro del Exchange tenemos una pequeña aplicación en la que puedes añadir toda la documentación que quieras sobre el API que tienes 74 00:07:23,199 --> 00:07:30,319 y además se nos ponen todos los endpoints que hemos realizado anteriormente y hemos diseñado en el Rammel aquí. 75 00:07:30,800 --> 00:07:32,800 Por ejemplo el de productos. 76 00:07:33,899 --> 00:07:39,399 Aquí nos aparece toda la información de este post que hemos documentado antes, 77 00:07:39,399 --> 00:07:49,620 el body que se tiene que insertar, como son los campos, requeridos, no requeridos, el enumerado y aquí la respuesta que tendríamos que dar. 78 00:07:49,759 --> 00:07:56,240 Además se pueden hacer pruebas metiendo un body u otro y nos da una respuesta. 79 00:07:57,420 --> 00:08:06,459 Esto se utiliza mucho para hacer un diseño antes de realizar todo el proceso de programación del API y así ir más rápido. 80 00:08:06,459 --> 00:08:12,860 Después, dentro del runtime manager, que es el servidor de MuleSoft, se publicarían 81 00:08:12,860 --> 00:08:18,259 las APIs y se desplegarían para poder utilizarlas. Si no están desplegadas aquí, pues no se 82 00:08:18,259 --> 00:08:23,339 pueden utilizar, por eso si ustedes se conectan a la aplicación de Android les va a funcionar 83 00:08:23,339 --> 00:08:31,170 igual que a mí, porque están desplegadas en el servidor. 84 00:08:31,170 --> 00:08:36,870 El siguiente componente de MuleSoft es el Anypoint Studio, donde es un entorno de desarrollo 85 00:08:36,870 --> 00:08:41,970 igual que Eclipse, básicamente está basado en él, en el que tenemos varias partes, 86 00:08:42,149 --> 00:08:46,289 el Package Explorer, que es donde están todos los archivos y los proyectos, 87 00:08:46,929 --> 00:08:52,830 la consola donde vemos todos los logs y toda la información, el Canvas, donde se procesan todos los flujos 88 00:08:52,830 --> 00:08:59,629 y el Mule Palette, que es lo más importante, que es donde están todos los conectores que nos van a ayudar a realizar dicha lógica. 89 00:08:59,629 --> 00:09:06,789 para programar en el entorno de desarrollo que hemos visto antes 90 00:09:06,789 --> 00:09:11,110 aparte de Java se utiliza y es con lo que se programa el DataWave 91 00:09:11,110 --> 00:09:14,730 el DataWave es el lenguaje de programación de MuleSoft 92 00:09:14,730 --> 00:09:18,929 aquí tenéis un ejemplo en el que pasamos un XML a un JSON 93 00:09:18,929 --> 00:09:23,129 y queremos mostrar por ejemplo en tickets estos dos campos 94 00:09:23,129 --> 00:09:25,570 pues para hacerlo tendríamos que coger el payload 95 00:09:25,570 --> 00:09:29,529 que el payload es la carga útil, el cuerpo que sería todo esto 96 00:09:29,529 --> 00:09:35,190 accederemos al order, a los productos, el name y ya nos saldrían estos dos 97 00:09:35,190 --> 00:09:39,990 y aquí tenemos otro ejemplo en el que pasamos un JSON a CSV 98 00:09:39,990 --> 00:09:41,850 pero no queremos implementar ninguna lógica 99 00:09:41,850 --> 00:09:44,669 simplemente queremos pasarlo de un formato a otro 100 00:09:44,669 --> 00:09:49,450 simplemente con poner output CSV y el payload que queremos es decir la carga útil 101 00:09:49,450 --> 00:09:51,889 ya tendríamos el resultado 102 00:09:51,889 --> 00:09:58,570 vale ahora os voy a explicar un flujo de mi práctica 103 00:09:58,570 --> 00:10:09,879 de MuleSoft y después os voy a compararlo un poquito con Java. Este flujo inicia aquí en el 104 00:10:09,879 --> 00:10:14,259 que siempre se suele poner un logger para saber por dónde va la aplicación ya que luego en la 105 00:10:14,259 --> 00:10:20,519 plataforma vamos viendo los loggers. Al principio lo que hago es guardarme el payload de entrada 106 00:10:20,519 --> 00:10:28,840 que es la carga útil, luego tenemos una validación de email donde MuleSoft tiene un conector que 107 00:10:28,840 --> 00:10:34,279 valida directamente el email con pasarle el campo que quieres ya te valida el por 108 00:10:34,279 --> 00:10:39,759 detrás sólo si es un email o no es un email si es un email continua y si no da 109 00:10:39,759 --> 00:10:43,779 un error lo siguiente que he hecho ha sido un get 110 00:10:43,779 --> 00:10:47,139 de cliente por NIF para saber si el cliente que me está llegando aquí 111 00:10:47,139 --> 00:10:51,559 existe en la base de datos o no esto se conecta a la capa de sistemas y a la 112 00:10:51,559 --> 00:10:58,539 base de datos entonces extrae hace esa query después tenemos un choice que es 113 00:10:58,539 --> 00:11:04,639 es lo mismo que un if en java, lo que hace es comprobar si la primera opción, si puede 114 00:11:04,639 --> 00:11:08,679 entrar por la primera opción y si no por la segunda. La primera opción sería si el 115 00:11:08,679 --> 00:11:12,340 payload que me llega de aquí está vacío, es decir, si no hay ningún cliente, si no 116 00:11:12,340 --> 00:11:17,120 hay ningún cliente, creamos, accedemos a un post que llamamos al post de la capa de 117 00:11:17,120 --> 00:11:23,139 sistemas, creamos el cliente y continuamos. En caso de que el cliente exista, he creado 118 00:11:23,139 --> 00:11:27,960 un manejador de errores que sería este, que el flujo entraría por aquí y se iría al 119 00:11:27,960 --> 00:11:40,519 error propagate que nos daría un status 400 y este mensaje de que el dni ya existe vale este 120 00:11:40,519 --> 00:11:45,700 mismo flujo como sería en java pues primero tendríamos que configurar todo el pon el modelo 121 00:11:45,700 --> 00:11:52,059 del cliente con su clase sus y sus entidades tendríamos que realizar también el servicio con 122 00:11:52,059 --> 00:12:04,919 todos los en points y también los controladores vale con esto vemos que al programar con java 123 00:12:04,919 --> 00:12:06,820 el diseño es mucho más detallado 124 00:12:06,820 --> 00:12:08,679 la implementación es mucho más específica 125 00:12:08,679 --> 00:12:10,340 de todos los componentes y las clases 126 00:12:10,340 --> 00:12:13,820 necesitas un profundo conocimiento tecnológico 127 00:12:13,820 --> 00:12:15,860 y muchísimo más trabajo manual 128 00:12:15,860 --> 00:12:17,879 en cambio al realizarlo con MuleSoft 129 00:12:17,879 --> 00:12:19,620 vemos que es una interfaz muy visual 130 00:12:19,620 --> 00:12:22,820 en la cual los componentes están predefinidos 131 00:12:22,820 --> 00:12:24,679 y al configurarlos 132 00:12:24,679 --> 00:12:27,620 pues aumentamos, disminuimos el tiempo 133 00:12:27,620 --> 00:12:29,759 entonces es mucho más rápido 134 00:12:29,759 --> 00:12:31,960 comentar que estos componentes 135 00:12:31,960 --> 00:12:33,600 por debajo lo que tienen es Java 136 00:12:33,600 --> 00:12:37,019 entonces lo que se hace constantemente es la reutilización de código 137 00:12:37,019 --> 00:12:42,220 ya que el componente al estar ya definido se reutiliza constantemente código 138 00:12:42,220 --> 00:12:48,590 vale, vamos a ver la demostración práctica 139 00:12:48,590 --> 00:12:57,259 se ve grande 140 00:12:57,259 --> 00:13:06,559 vamos a añadir, este sería el get de productos en la que nos muestran todos los productos 141 00:13:06,559 --> 00:13:12,679 aquí lo que hace Android mediante retrofit se conecta a mi capa de experiencia que es la primera 142 00:13:12,679 --> 00:13:16,720 y después va a la lógica donde hace todo 143 00:13:16,720 --> 00:13:20,340 este sería el get de los productos 144 00:13:20,340 --> 00:13:25,080 si pinchamos en cualquiera de los productos nos lleva al get por id 145 00:13:25,080 --> 00:13:29,200 por así decirlo, donde vemos el detalle del producto 146 00:13:29,200 --> 00:13:47,840 también podemos añadir un producto y una categoría 147 00:13:47,840 --> 00:13:54,470 el producto se ha insertado correctamente 148 00:13:54,470 --> 00:13:58,529 entonces si volvemos atrás tenemos la prueba aquí 149 00:13:58,529 --> 00:14:03,440 tenemos exactamente lo mismo con clientes 150 00:14:03,440 --> 00:14:10,440 Un get de clientes en el cual también podemos ver los clientes y añadir un cliente. 151 00:14:37,500 --> 00:14:41,059 Vamos a hacer la prueba del email que hemos comentado antes. 152 00:14:42,299 --> 00:14:48,240 Si no ponemos un email correcto nos tendría que salir el error de que el email no es correcto. 153 00:14:48,820 --> 00:14:58,679 Al poner el email ya se debería de insertar, el cliente se ha insertado correctamente. 154 00:14:58,679 --> 00:15:03,240 Si queremos volver a insertar el mismo con el DNI, igual el DNI ya no existe. 155 00:15:03,440 --> 00:15:07,500 Entonces esta es la prueba del anterior flujo que hemos visto anteriormente. 156 00:15:07,840 --> 00:15:12,679 Vale, y tengo que parar o puedo seguir aunque renuncia... 157 00:15:13,240 --> 00:15:14,080 ¿Sigo? 158 00:15:15,620 --> 00:15:16,919 Renuncio a mis 2,5. 159 00:15:17,200 --> 00:15:18,980 Vale, esto es las ventas. 160 00:15:19,620 --> 00:15:22,840 Voy a añadir una venta que aquí es lo más emocionante, así por decirlo. 161 00:15:22,840 --> 00:15:28,759 lo primero tenemos esa temperatura que es una llamada a una API externa 162 00:15:28,759 --> 00:15:33,159 no es nada configurado por mí sino que simplemente yo desde la capa de proceso 163 00:15:33,159 --> 00:15:39,259 llamo a la de sistemas y la de sistemas está la API externa 164 00:15:39,259 --> 00:15:41,460 llama a una API directamente desde fuera 165 00:15:41,460 --> 00:15:47,220 aquí nos dice que si la temperatura es superior a 15 grados 166 00:15:47,220 --> 00:15:50,500 nos va a hacer un descuento del 10% después lo vamos a ver 167 00:15:50,500 --> 00:16:14,240 Vale, vamos a añadir a este una venta, el 6, vale, la venta se ha insertado correctamente. 168 00:16:17,389 --> 00:16:24,149 Si nos vamos a los productos, aunque no os lo he enseñado antes, el producto número 6 sería este y ha bajado el stock. 169 00:16:32,629 --> 00:16:40,330 Aquí os voy a enseñar la venta de los clientes, que es el cliente que hemos realizado la venta, y el detalle de venta sería este. 170 00:16:41,549 --> 00:16:50,870 La nueva venta que se ha realizado ha sido este, sí, y se le ha realizado un 10%. 171 00:16:50,870 --> 00:16:53,070 El precio final sería este. 172 00:16:54,690 --> 00:16:59,669 Y tengo que activar una alerta para que veáis su funcionamiento. 173 00:17:06,240 --> 00:17:08,859 Ya que la tengo parada porque si no me llega a emails. 174 00:17:09,279 --> 00:17:17,160 Al comprar un producto y que el stock esté inferior a 10, me llega una alerta al correo, 175 00:17:17,160 --> 00:17:28,079 que también la he diseñado, lo único que como es el correo, perdón, es que como lo he cerrado antes todo, 176 00:17:37,349 --> 00:17:46,269 vale, aquí tenéis el correo que acaba de llegar, stock mínimo, stock actual y el 5, sería la alerta 177 00:17:46,269 --> 00:17:53,130 y ya estaría la presentación práctica. 178 00:18:01,039 --> 00:18:01,920 ¿Alguna pregunta? 179 00:18:04,240 --> 00:18:04,880 Muchas. 180 00:18:06,000 --> 00:18:10,250 Pues yo mismo. 181 00:18:10,250 --> 00:18:10,710 Vale. 182 00:18:11,829 --> 00:18:19,940 A mí me ha gustado. La comparación que has hecho entre las capas de un ESO es interesante. 183 00:18:19,940 --> 00:18:21,960 A ver, es que en 15 minutos es complicado. 184 00:18:21,960 --> 00:18:31,920 Es complicado, nadie te dice que no. Pero sí, yo te lo digo. Me parece interesante. 185 00:18:33,799 --> 00:18:37,660 Por darte más tiempo, que expliques a lo mejor alguna cosilla más. 186 00:18:38,279 --> 00:18:44,440 El Anypoint Studio, que es para que lo explicaras un poco más y las herramientas que ofrece. 187 00:18:44,440 --> 00:18:47,519 y que como ayuda a alguien 188 00:18:47,519 --> 00:18:49,339 como tú pones en la memoria 189 00:18:49,339 --> 00:18:51,359 que no tenga muchos conocimientos 190 00:18:51,359 --> 00:18:53,519 explícalo 191 00:18:53,519 --> 00:18:55,700 y luego la segunda pregunta 192 00:18:55,700 --> 00:18:56,480 y ya está 193 00:18:56,480 --> 00:18:59,819 la capa experience, ¿se conecta con los clientes? 194 00:19:00,000 --> 00:19:00,180 sí 195 00:19:00,180 --> 00:19:02,859 pues eso, que expliques cómo conectas 196 00:19:02,859 --> 00:19:04,980 cómo lo conecto con 197 00:19:04,980 --> 00:19:07,059 tú has hecho la aplicación 198 00:19:07,059 --> 00:19:08,200 en Android 199 00:19:08,200 --> 00:19:10,799 yo lo que he realizado ha sido 200 00:19:10,799 --> 00:19:13,460 yo he realizado las 201 00:19:13,460 --> 00:19:22,730 Mira, te explico un segundo, que lo voy a explicar mejor. 202 00:19:35,549 --> 00:19:41,269 Yo lo que he realizado ha sido tres APIs, una en la capa de Experience, otra en la capa de Proceso, 203 00:19:41,750 --> 00:19:47,329 y dentro de la capa de Sistema tengo la API que conecta a mi base de datos que la he creado yo, 204 00:19:47,329 --> 00:19:53,349 y luego tengo otra API que es la que llama a la API externa, que es la de la temperatura. 205 00:19:53,349 --> 00:20:23,230 Entonces, el cliente que es Android me conecto a esta capa de experiencia mediante Retrofit, lanzando las llamadas de los Endpoints mediante Retrofit accedo a esta capa de experiencia, simplemente configurando si queréis verlo la URL, sería mediante la URL del Endpoint puedes conectarte con Retrofit. 206 00:20:23,230 --> 00:20:31,309 Después, lo que me acabas de decir del Anypoint Studio, pues mira, aquí están, aquí tendríamos 207 00:20:31,309 --> 00:20:36,809 todos los conectores, podríamos buscar un montón de conectores más, los de la base 208 00:20:36,809 --> 00:20:44,470 de datos por ejemplo, tienes de la base de datos conectores para borrar, para insertar, 209 00:20:44,470 --> 00:20:52,769 para realizar un montón de funciones, entonces simplemente se arrastraría, arrastrar por 210 00:20:52,769 --> 00:21:02,250 ejemplo un validador se arrastra y se configuraría en función de lo que necesitas realizar vale por 211 00:21:02,250 --> 00:21:09,029 ejemplo aquí a la hora de hacer un de llamar a la capa de sistemas para conectarme a la base 212 00:21:09,029 --> 00:21:18,569 de datos y tal se configura pues la llamada de la otra capa de la de sistemas se configura 213 00:21:18,569 --> 00:21:30,779 ya se configura el pad y ya directamente accede a esa capa y esa capa está aquí, por ejemplo. 214 00:21:30,779 --> 00:21:34,789 Y te va generando también documentación, ¿no? 215 00:21:34,789 --> 00:21:39,630 Sí, mira, y por ejemplo este post que es insertar, pues en la capa de sistemas lo único 216 00:21:39,630 --> 00:21:46,750 que tenemos es las consultas a la base de datos y ya él solo por debajo se encarga 217 00:21:46,750 --> 00:21:51,470 de acceder a esa base de datos y traernos lo que le ponemos en la query. 218 00:21:51,470 --> 00:21:53,470 Muy bien, muchas gracias. 219 00:21:54,470 --> 00:21:55,809 ¿Alguna pregunta más? 220 00:22:06,829 --> 00:22:09,230 Una cosa más sencilla, una pregunta. 221 00:22:10,309 --> 00:22:16,720 El error que te hacía el equivalente a un if. 222 00:22:17,240 --> 00:22:17,519 Sí. 223 00:22:17,640 --> 00:22:24,240 Para procesos más complejos como bucles, ¿también tiene cómo se llama? 224 00:22:24,720 --> 00:22:29,759 Sí, mira, está este conector que es equivalente a un if, ¿vale? 225 00:22:29,819 --> 00:22:33,240 Que si no cumple la primera condición se va por la segunda y así constantemente. 226 00:22:33,240 --> 00:23:05,990 luego hay otro que es un scheduler que iría en paralelo, es decir, completaría la primera fila, luego la segunda, así hasta que acaben todas y se mostraría. 227 00:23:06,349 --> 00:23:09,569 Y en bucle sería mediante el choice. 228 00:23:10,390 --> 00:23:13,450 Hay un montón de conectores también. 229 00:23:13,589 --> 00:23:21,720 ¿Cómo definir los tuyos propios mediante tus propios conectores? 230 00:23:21,720 --> 00:23:25,559 Pues imagínate que tienes que hacer una operación de cualquier tipo. 231 00:23:25,900 --> 00:23:27,519 Ah, sí, eso es, sí, justo. 232 00:23:28,059 --> 00:23:33,619 Si no tienes ningún conector al que puedas apoyarte y utilizarlo, 233 00:23:33,980 --> 00:23:37,480 podrías crear simplemente una clase Java, realizar tu código 234 00:23:37,480 --> 00:23:40,119 y ya llamarías a esa clase Java y lo utilizarías. 235 00:23:40,119 --> 00:23:44,119 De hecho, en la anterior versión MuleSoft utilizaba Java 236 00:23:44,779 --> 00:23:46,880 antes de que estuvieran todos los conectores. 237 00:23:59,130 --> 00:24:00,869 Sí, si le quieres meter una clase Python. 238 00:24:00,869 --> 00:24:02,809 le puedes meter en verdad cualquier clase 239 00:24:02,809 --> 00:24:04,549 de, cualquier lenguaje 240 00:24:04,549 --> 00:24:06,529 de programación en esa clase 241 00:24:06,529 --> 00:24:08,170 pero aquí no termina traduciendo siempre a Java 242 00:24:08,170 --> 00:24:11,130 claro, hace la transformación 243 00:24:11,130 --> 00:24:18,339 sí, sí 244 00:24:18,339 --> 00:24:21,160 por ejemplo para la alerta 245 00:24:21,160 --> 00:24:22,920 he utilizado un componente 246 00:24:22,920 --> 00:24:25,319 que lo lanza solo, automáticamente está configurado 247 00:24:25,319 --> 00:24:27,279 yo lo he puesto cada día por si no me llegan 248 00:24:27,279 --> 00:24:29,680 muchos mensajes y va lanzando 249 00:24:29,680 --> 00:24:37,849 ¿cuál es la competencia de esto? 250 00:24:38,250 --> 00:24:39,529 porque me lo has comparado con Java 251 00:24:39,529 --> 00:24:41,890 seguro que tiene competencia 252 00:24:41,890 --> 00:24:43,750 ¿cuáles serían las competencias y ventajas que tienes? 253 00:24:44,089 --> 00:24:45,869 porque imagínate, yo estoy en una empresa 254 00:24:45,869 --> 00:24:47,509 tengo que elegir el mulesoft 255 00:24:47,509 --> 00:24:49,089 y quiero ver la competencia 256 00:24:49,089 --> 00:24:51,490 pues la competencia tienes IBM 257 00:24:51,490 --> 00:24:52,730 tienes 258 00:24:52,730 --> 00:24:55,950 SOAP, tienes un montón 259 00:24:55,950 --> 00:24:57,869 de otras plataformas 260 00:24:57,869 --> 00:25:00,069 que hacen exactamente lo mismo, lo único que 261 00:25:00,069 --> 00:25:01,910 yo he decidido hablar sobre 262 00:25:01,910 --> 00:25:10,559 esto, sí, a lo mejor 263 00:25:10,559 --> 00:25:12,640 un proyecto en Java te dura un año 264 00:25:12,640 --> 00:25:14,819 y medio y esto en cuatro meses lo tienes 265 00:25:14,819 --> 00:25:18,799 es igual 266 00:25:18,799 --> 00:25:21,319 Está en la nube 267 00:25:21,319 --> 00:25:23,640 Y funciona súper rápido 268 00:25:23,640 --> 00:25:25,000 Sí que es verdad que se puede 269 00:25:25,000 --> 00:25:26,599 Relantizar 270 00:25:26,599 --> 00:25:29,099 Cuando le metes muchísima seguridad 271 00:25:29,099 --> 00:25:30,920 Así que cuando metes mucha seguridad 272 00:25:30,920 --> 00:25:33,480 Otras llamadas a otras APIs 273 00:25:33,480 --> 00:25:35,380 O otras políticas 274 00:25:35,380 --> 00:25:37,920 De seguridad que tiene la plataforma 275 00:25:37,920 --> 00:25:39,539 Ahí sí que puede ir un poco más lento 276 00:25:39,539 --> 00:25:40,740 Pero si no va muy rápido 277 00:25:40,740 --> 00:25:41,680 ¿Y luego de cara a escalar? 278 00:25:42,180 --> 00:25:42,500 ¿El qué? 279 00:25:42,500 --> 00:25:43,339 De cara a escalar 280 00:25:43,339 --> 00:25:46,200 Ahora tengo 100 clientes pero de repente mañana tengo 1000 281 00:25:46,200 --> 00:25:47,440 Y el 1000, un millón 282 00:25:47,440 --> 00:25:48,539 No hay ningún problema 283 00:25:48,539 --> 00:25:49,539 funciona igual 284 00:25:49,539 --> 00:25:51,980 eso es 285 00:25:51,980 --> 00:25:52,539 tiene 286 00:25:52,539 --> 00:25:53,099 a ver 287 00:25:53,099 --> 00:25:54,579 cuando se 288 00:25:54,579 --> 00:25:55,539 cada API 289 00:25:55,539 --> 00:25:56,180 consume 290 00:25:56,180 --> 00:25:58,059 un 0,1 291 00:25:58,059 --> 00:25:58,640 vCores 292 00:25:58,640 --> 00:25:59,319 que los vCores 293 00:25:59,319 --> 00:26:00,019 es como se mide 294 00:26:00,019 --> 00:26:01,420 la memoria 295 00:26:01,420 --> 00:26:02,619 de esta parte 296 00:26:02,619 --> 00:26:03,420 entonces 297 00:26:03,420 --> 00:26:04,619 lo que suelen comprar 298 00:26:04,619 --> 00:26:05,319 los 299 00:26:05,319 --> 00:26:07,019 cuando realizan 300 00:26:07,019 --> 00:26:07,440 un proyecto 301 00:26:07,440 --> 00:26:07,859 se compra 302 00:26:07,859 --> 00:26:08,819 un único vCore 303 00:26:08,819 --> 00:26:09,740 con un único vCore 304 00:26:09,740 --> 00:26:10,440 puedes realizar 305 00:26:10,440 --> 00:26:11,039 20 APIs 306 00:26:11,039 --> 00:26:12,319 no puedes realizar más 307 00:26:12,319 --> 00:26:13,259 ¿qué pasa? 308 00:26:13,359 --> 00:26:14,200 que si quieres más 309 00:26:14,200 --> 00:26:15,480 si quieres ampliar 310 00:26:15,480 --> 00:26:16,880 y no te has podido 311 00:26:16,880 --> 00:26:17,940 centrar en ese diseño 312 00:26:17,940 --> 00:26:19,359 pues se amplía más, se compra 313 00:26:19,359 --> 00:26:21,240 simplemente es dinero 314 00:26:21,240 --> 00:26:22,920 ¿a qué se los compras? 315 00:26:23,559 --> 00:26:24,200 a MuleSoft 316 00:26:24,200 --> 00:26:26,880 todo está en su 317 00:26:26,880 --> 00:26:29,299 exacto, esa es la desventaja 318 00:26:29,299 --> 00:26:31,079 que hay con respecto 319 00:26:31,079 --> 00:26:33,200 que estás atado a una plataforma al final 320 00:26:33,200 --> 00:26:35,660 y que el coste puede ser 321 00:26:35,660 --> 00:26:37,119 más elevado, es más rápido 322 00:26:37,119 --> 00:26:39,799 tiene sus muchas ventajas pero las desventajas 323 00:26:39,799 --> 00:26:40,960 en ese caso sería eso 324 00:26:40,960 --> 00:26:42,880 el coste y 325 00:26:42,880 --> 00:26:44,740 que estás atado 326 00:26:44,740 --> 00:26:46,579 ¿de hecho el escenario? 327 00:26:46,579 --> 00:27:26,200 Sí, aquí, es que esta plataforma tiene un montón, lo que pasa es que tampoco la he podido, mira aquí por ejemplo, tienes para monitorizarlas, ver analíticas, meterle políticas, es que el problema es que la versión gratuita, todos los componentes no están disponibles, es que no van a estar, 328 00:27:26,200 --> 00:27:50,430 A ver, tú en la memoria pones, y también te centras en, al principio comentas que en Mulesoft para la integración de sistemas, 329 00:27:50,430 --> 00:27:58,250 entonces hablas de CRM, RP, en ese momento hablas más de integración entre sistemas, 330 00:27:58,250 --> 00:28:07,009 sí vale entonces como pensamiento tuyo y a la conclusión que puedes hacer la aplicación que 331 00:28:07,009 --> 00:28:14,950 nos has mostrado entonces teniendo en cuenta que es más costoso teniendo en cuenta pues todo lo 332 00:28:14,950 --> 00:28:20,609 que nos asusta la memoria vale harías la aplicación con la que nos han mostrado ese 333 00:28:20,609 --> 00:28:27,250 tipo que al final es una aplicación contra un cliente lo harías con las capas de jabón 334 00:28:27,250 --> 00:28:33,650 ¿O te meterías con Mulesoft? ¿O Mulesoft solo lo dejarías para integración de sistemas más grandes? 335 00:28:34,190 --> 00:28:41,470 No, yo creo que una vez que te metes a realizarlo con una cosa u otra, lo tendrías que hacer con... 336 00:28:41,470 --> 00:28:44,930 Yo en este caso lo haría con Mulesoft, sí que es verdad que para una aplicación tan sencilla, 337 00:28:45,329 --> 00:28:48,589 tener tres capas que consumen un montón, no las haría. 338 00:28:48,589 --> 00:28:54,589 Las he hecho ahora para que vierais cómo es en conjunto, pero realmente con... 339 00:28:54,589 --> 00:29:00,630 O sea, la de experience directamente ni siquiera haría falta porque con conectarte ya puedes llamar directamente a esta. 340 00:29:01,069 --> 00:29:07,930 Pero al final son estándares de MuleSoft que te dice que hagas las tres capas. 341 00:29:08,049 --> 00:29:12,069 Pero claro, es mucho más costoso, consume más y se puede hacer con dos o una. 342 00:29:13,269 --> 00:29:21,670 Vale, gracias. 343 00:29:21,670 --> 00:29:23,329 Me has hundido la asignatura. 344 00:29:23,329 --> 00:29:33,390 Entiendo 345 00:29:33,390 --> 00:29:38,740 que existen las capas 346 00:29:38,740 --> 00:29:41,119 y quizás no me ha quedado muy claro 347 00:29:41,119 --> 00:29:43,660 entre las capas que se están comunicando 348 00:29:43,660 --> 00:29:44,599 en el fondo 349 00:29:44,599 --> 00:29:47,380 es como si fueran cosas distintas 350 00:29:47,380 --> 00:29:49,299 estuvieran en lugares distintos 351 00:29:49,299 --> 00:29:51,160 incluso podrían residir en lugares distintos 352 00:29:51,160 --> 00:29:52,819 porque en el fondo lo que están haciendo 353 00:29:52,819 --> 00:29:53,960 es una petición 354 00:29:53,960 --> 00:29:56,640 a GetPost, etc. 355 00:29:56,839 --> 00:29:58,880 de una capa a otra capa 356 00:29:58,880 --> 00:30:00,599 y le están mandando el hotdash 357 00:30:00,599 --> 00:30:08,519 y está devolviendo Json, lo cual quiere decir que, por ejemplo, una capa de proces desarrollada 358 00:30:08,519 --> 00:30:14,940 me puede servir para enganchar con multitud de capas de system y con multitud de capas de experience, 359 00:30:15,160 --> 00:30:19,079 esto lo cual me permitiría tener una capa de proces, por ejemplo, que podría ser compartida 360 00:30:19,079 --> 00:30:24,660 con multitud de aplicaciones desarrolladas una sola vez para algún conjunto de aplicaciones 361 00:30:24,660 --> 00:30:30,859 e incluso podría venderla como una librería de oportunidades comunes, 362 00:30:31,200 --> 00:30:33,880 es decir, cuando desarrollamos aplicaciones tipo gestión, 363 00:30:34,019 --> 00:30:37,559 pues todo lo que es la gestión de clientes, etc., 364 00:30:37,559 --> 00:30:40,380 ya podría estar casi desarrollada y estaría en un proceso 365 00:30:40,380 --> 00:30:44,819 donde tú enganchas el system para decir a qué base de datos vas 366 00:30:44,819 --> 00:30:49,539 y enganchas el experience para decir quién va a ser tu cliente. 367 00:30:49,920 --> 00:30:50,660 Sí, eso es. 368 00:30:50,660 --> 00:30:53,799 De hecho, si mañana queremos añadir aquí una web, 369 00:30:53,799 --> 00:30:57,180 simplemente realizaríamos la conexión 370 00:30:57,180 --> 00:30:58,619 que sería diferente a la de Android 371 00:30:58,619 --> 00:31:02,500 y todo lo demás sería igual y se podría reutilizar 372 00:31:02,500 --> 00:31:05,940 de hecho hay muchas APIs que ya están creadas 373 00:31:05,940 --> 00:31:09,299 dentro de la plataforma aquí de MuleSoft 374 00:31:09,299 --> 00:31:12,259 que las puedes llamar en este caso en vez de usar la mía 375 00:31:12,259 --> 00:31:14,460 todas las que son de MuleSoft 376 00:31:14,460 --> 00:31:15,579 que hay un mogollón 377 00:31:15,579 --> 00:31:17,920 se podrían llamar y reutilizar 378 00:31:17,920 --> 00:31:21,259 y hacer todo lo que se pueda con ellas 379 00:31:21,259 --> 00:31:38,509 Incluso yo podría utilizar por ejemplo una capa de proces, parte de esa capa de proces de algo que si por ejemplo un ERP me ofrece esa posibilidad de engancharme a él, 380 00:31:38,589 --> 00:31:52,430 yo podría pedirle al ERP una posición, el ERP me devolvería su contestación y podría a su vez trabajar y enviarla al Android después de procesarla. 381 00:31:52,430 --> 00:32:11,589 Sí, totalmente. Como vemos, esta API externa no es nada mío, ni nada, es la API del tiempo, que simplemente yo he cogido el endpoint y me he conectado a esa API del tiempo. 382 00:32:11,589 --> 00:32:21,920 Entonces, ¿de alguna forma se pueden comercializar? 383 00:32:22,000 --> 00:32:26,140 Existe como una tienda de lo que estaba diciendo, por ejemplo. 384 00:32:26,779 --> 00:32:31,299 Tú desarrollas uno de los componentes que hay reutilizables. 385 00:32:32,099 --> 00:32:33,740 No sé si han pensado en... 386 00:32:33,740 --> 00:32:35,240 Sí, sí, exactamente. 387 00:32:35,960 --> 00:32:39,099 Hay componentes que son de pago porque son de ciertas personas 388 00:32:39,099 --> 00:32:40,920 que lo han desarrollado, están en privado, 389 00:32:41,059 --> 00:32:43,859 están publicadas en privado y no se pueden usar 390 00:32:43,859 --> 00:32:45,799 hasta que no realices el pago. 391 00:32:45,799 --> 00:32:48,059 De hecho, también ellos tienen muchos conectores 392 00:32:48,059 --> 00:32:54,920 que son de pago. A la hora de, por ejemplo, conectarte con React o hacer otras funciones 393 00:32:54,920 --> 00:32:59,119 más grandes, sí que tienen conectores que tienes que pagar. 394 00:33:02,240 --> 00:33:02,720 Pues muy bien. 395 00:33:03,279 --> 00:33:04,480 Ya. Gracias. 396 00:33:04,640 --> 00:33:05,000 Muchas gracias. 397 00:33:05,619 --> 00:33:08,339 Por fin.