Академический Документы
Профессиональный Документы
Культура Документы
Proyecto de Título
Automatización de procesos mediante RPA
Fecha: 10/11/2017
i
NOTA OBTENIDA:
ii
Dedicatoria
A mis hijos Franco y Millaray por ser mi principal motivación ya que al verlos siento
aún más ganas de trabajar fuertemente para mejorar. Son la razón de todo este
esfuerzo.
Y agradezco a mis abuelos, por darme su apoyo incondicional y sin límites, desde
que comencé este camino, hace 33 años atrás.
iii
Índice General
Hojas de Calificación…………………………………………………………………… ii
Dedicatoria……………………………………………………….……………………… iii
Agradecimientos……………………………………………………….……………….. iii
Índice General………….……………………………………………………………….. iv
Índice de Tablas………………………………………………………………………… v
Índice de Figuras……………………………………………………………………...... vi
Resumen………………………………………………………………………………… ix
I. FUNDAMENTOS……………………………………………………………………. 1
I.1 Introducción……………………………………………………...………………. 1
Bibliografía………………………………………………...……………………………. 61
Anexos…………………………………………………………………..………………. 63
iv
Índice de Tablas
v
Índice de Figuras
vi
Glosario, abreviaturas y simbología
Back End: Es el software que se encuentra del lado del servidor, es decir, lenguajes
de programación como PHP, Python, .Net, Java, etc, es lo que se encarga de
interactuar con bases de datos, verificar manejo de sesiones de usuarios, en
resumen, se encarga de “servir” todas las vistas que el FrontEnd despliega.
Front End: El frontend son todas aquellas tecnologías que corren del lado del cliente,
es decir, todas aquellas tecnologías que corren del lado del navegador web,
generalizándose más que nada en tres tecnologías, Html , CSS Y JavaScript.
vii
MVC: El MVC o Modelo-Vista-Controlador es un patrón de arquitectura de software
que, utilizando 3 componentes (Vistas, Models y Controladores) separa la lógica de
la aplicación de la lógica de la vista en una aplicación. Es una arquitectura importante
puesto que se utiliza tanto en componentes gráficos básicos hasta sistemas
empresariales; la mayoría de los frameworks modernos utilizan MVC (o alguna
adaptación del MVC) para la arquitectura.
viii
INSTITUTO PROFESIONAL SANTO TOMÁS
Ingeniería en Informática
San Joaquín
10-11-2017
Plataformas RPA
ix
I. FUNDAMENTOS
I.1 INTRODUCCIÓN
Para poder comprender el valor que aportan las plataformas RPA, comenzaremos
definiendo que es un proceso BackOffice. Se denomina tareas o procesos
BackOffice, al conjunto de tareas administrativas asociadas a los procedimientos
internos que son realizados antes o después de la interacción con el cliente.
1
I.2 OBJETIVOS DEL PROYECTO
A continuación, se mencionan los objetivos que se busca cumplir con este proyecto
de título.
Objetivo general
El objetivo general del proyecto consiste en que por medio de los robots RPA poder
contribuir en el ahorro de tiempo y disminución de la carga laboral de los ejecutivos.
Para esto, analizaremos cual es la actividad que demanda más tiempo dentro de las
gestiones que realizan los ejecutivos de la Empresa 2080 Sistemas y Servicios,
teniendo identificada la actividad más crítica (que ocupa más tiempo del equipo de
trabajo) procederemos a automatizar lo máximo posible por medio de los robots RPA
(ingreso a sistemas externos, lecturas Excel etc.), para así delegar a estos robots la
mayor parte del tiempo que utilizan los ejecutivos en gestionar esta actividad.
Objetivos Específicos
B. Implementar una interfaz web que permita a los usuarios ingresar solicitudes a los
robots RPA, para que estas sean ejecutadas.
D. Implementar una API Rest que será utilizada por el robot, como interfaz de
comunicación hacia nuestro sistema Web.
2
II DESARROLLO DEL PROYECTO
La empresa en la que se llevará a cabo este proyecto de título será 2080 Servicios y
Sistemas S.A.
Busca relaciones de largo plazo con sus clientes basada en la confianza, calidad de
servicio y en la obtención de resultados, en donde pueda aportar valor al negocio final
del cliente, mejorando sus procesos de negocio y aumentando sus ventajas
competitivas.
3
II.2 Descripción de las tareas desarrolladas en la práctica profesional
4
II.3 Planificación y Metodología del Proyecto
5
Metodología para gestionar el proyecto
Es este escenario el que ha propiciado el auge de las metodologías, ya que este tipo
de metodologías nos ofrecen más flexibilidad en la gestión de los proyectos.
6
Etapas de un Sprint
Cada Sprint puede tener una serie de eventos o etapas. Los más comunes son:
4. Revisión del Sprint: Reunión con el cliente o dueño del proyecto, en la que se
estudia y revisa el Product Backlog del Sprint. Se definen los aspectos a cambiar,
en caso necesario, de mayor valor o probables para planificarlo en el siguiente
Sprint.
7
Roles
• Master Scrum o Facilitador: Elimina los obstáculos que impiden que el equipo
cumpla con su objetivo.
8
II.4 Descripción del Desarrollo del Proyecto
• Interfaz Web
• API
• Capa de Persistencia
• Robot RPA
9
A continuación, detallaremos cada uno de estos componentes y el rol que cumplirán
dentro de nuestra plataforma.
10
• Robot RPA: Este componente corresponde a él o los robots encargados de
ejecutar las actividades ingresadas por los usuarios, que en nuestro proyecto
corresponderán a las de tipo “Aceptación de Ventas”.
Estos robots solicitan una actividad por medio de la API REST, le ejecutan y
posteriormente por medio de la misma API actualizan el estado de la actividad con el
resultado de su ejecución.
Estos robots son el equivalente a un usuario, ingresan datos, utilizan el mouse, a
interfaz gráfica, etc. Por lo que se les debe asignar un “computador” con todos los
componentes, por lo que se le asignará una máquina virtual a cada robot que
queramos que ejecute las actividades.
Los robots RPA serán implementados utilizando UIPath Community edition ya que
proporciona una amplia lista de eventos que pueden ser programados y capturados
con esta herramienta, como leer texto desde una web, leer Excel, enviar hotkeys,
hacer click, doble click, etc.
Y a su vez proporciona una interfaz amigable que facilita el desarrollo de estos los
robots.
11
Descripción Herramientas Utilizadas
Laravel 5
Además, Laravel utiliza MVC en su arquitectura, lo que nos facilitará separar la vista
en json para la API y HTML para la web, la lógica de negocio y los modelos ORM.
12
El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que
separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y
el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC
propone la construcción de tres componentes distintos que son el modelo, la vista y
el controlador, es decir, por un lado, define componentes para la representación de la
información, y por otro lado para la interacción del usuario. Este patrón de arquitectura
de software se basa en las ideas de reutilización de código y la separación de
conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones
y su posterior mantenimiento.
13
Angular
A groso modo, para crear apps utilizando Angular2 se deben seguir los siguientes
pasos:
14
• Data Binding: Sin este framework, nosotros seríamos los responsables de
los valores de los datos en los controles HTML y convertir las respuestas de
los usuarios en acciones y actualizaciones de valores. Implementar esta
lógica de push/pull a mano es tedioso, por lo que este componente es el
encargado de realizarlo.
15
En la siguiente imagen podemos ver como se relacionan los elementos descritos
anteriormente dentro de la arquitectura de angular.
Standard REST
16
Además de estas tres reglas, nunca se debe guardar estado en el servidor, toda
la información que se requiere para mostrar la información que se solicita debe estar
en la consulta por parte del cliente.
Al no guardar estado, REST nos da mucho juego, ya que podemos escalar mejor sin
tener que preocuparnos de temas como el almacenamiento de variables de sesión e
incluso, podemos jugar con distintas tecnologías para servir determinadas partes o
recursos de una misma API.
1. Uso Correcto de URIs
Cada página, información en una sección, archivo, cuando hablamos de REST, los
nombramos como recursos.
El recurso por lo tanto es la información a la que queremos acceder o que queremos
modificar o borrar, independientemente de su formato.
Las URL, Uniform Resource Locator , son un tipo de URI, Uniform Resource Identifier,
que además de permitir identificar de forma única el recurso, nos permite
localizarlo para poder acceder a él o compartir su ubicación.
Una URL se estructura de la siguiente forma:
{protocolo}://{dominio o hostname}[:puerto (opcional)]/{ruta del recurso}?{consulta de
filtrado}
Existen varias reglas básicas para ponerle nombre a la URI de un recurso:
• Los nombres de URI no deben implicar una acción, por lo tanto debe
evitarse usar verbos en ellos.
• Deben ser únicas, no debemos tener más de una URI para identificar un
mismo recurso.
• Deben ser independiente de formato.
• Deben mantener una jerarquía lógica.
• Los filtrados de información de un recurso no se hacen en la URI.
2. HTTP
Para desarrollar APIs REST los aspectos claves que hay que dominar y tener
claros son:
• Métodos HTTP
• Códigos de estado
• Aceptación de tipos de contenido
• Métodos.
Como hemos visto en el anterior nivel, a la hora de crear URIs no debemos poner
verbos que impliquen acción, aunque queramos manipular el recurso.
Para manipular los recursos, HTTP nos dota de los siguientes métodos con los cuales
debemos operar:
17
• GET: Para consultar y leer recursos
• POST: Para crear recursos
• PUT: Para editar recursos
• DELETE: Para eliminar recursos.
• PATCH: Para editar partes concretas de un recurso.
Por ejemplo, para un recurso de facturas.
GET /facturas Nos permite acceder al listado de facturas
POST /facturas Nos permite crear una factura nueva
GET /facturas/123 Nos permite acceder al detalle de una factura
PUT /facturas/123 Nos permite editar la factura, sustituyendo la totalidad de
la información anterior por la nueva.
DELETE /facturas/123 Nos permite eliminar la factura
PATCH /facturas/123 Nos permite modificar cierta información de la factura,
como el número o la fecha de la misma.
18
Standard JSON
Para asignar a un nombre un valor debemos usar los dos puntos ':' este separador es
el equivalente al igual ('=') de cualquier lenguaje.
"Nombre" : "Geeky Theory"
• Objetos JSON
Los objetos JSON se identifican entre llaves, un objeto puede ser en nuestro caso
una fruta o una verdura.
{ "NombreFruta":"Manzana" , "Cantidad":20 }
19
• Arrays JSON
En un Json puedes incluir arrays, para ellos el contenido del array debe ir entre
corchetes []:
{
"Frutas": [
{ "NombreFruta":"Manzana" , "cantidad":10 },
{ "NombreFruta":"Pera" , "cantidad":20 },
{ "NombreFruta":"Naranja" , "cantidad":30 }
Valores Json
Los tipos de valores que podemos encontrar en Json son los siguientes:
20
MariaDB
Lo primero que tiene que quedar totalmente claro es que al ser MariaDB compatible
con MySQL, la migración a MariaDB es simple y directa, no hay que adaptar el código
ni nada.
Ventajas de MariaDB.
21
Uipath
Los robots construidos con UiPath ejecuta procesos con una precisión perfecta.
Pueden ejecutar tareas asistidas, ejecutándose automáticamente bajo el control y la
supervisión de un usuario, o sin ayuda, procesando trabajos de gran volumen
independientemente de la interacción humana.
Automatización Asistida
Este robot está diseñado para cooperar con los empleados en actividades
comerciales donde se requiere intervención humana. Reside en la estación de trabajo
del empleado, se activa cuando es necesario mediante un comando directo o eventos
de flujo de trabajo específicos, entregando una alta productividad y bajos tiempos de
operación en actividades administrativas, los servicios de asistencia y las actividades
de un call-center.
Automatización desatendida
Estos robots operan sin contacto humano, los Robots desatendidos son la clave para
maximizar los beneficios de costos y rendimiento para cualquier tipo de actividades
administrativas. Implementados por Orchestrator en entornos físicos o virtuales, se
activan automáticamente y se ejecutan de manera eficiente en modo por lotes. Es
posible acceder a estos robots de forma remota, con programación, administración
de carga de trabajo, informes, auditoría y monitoreo de forma segura y centralizada.
UiPath Studio presenta una forma visual y declarativa de describir cómo automatizar
un proceso, los usuarios pueden usarlo de la misma manera que usan un diagrama
de Visio.
Los scripts de UiPath son visuales por naturaleza, uno puede observarlos y entender
de inmediato como indicarle al robot lo que se supone que deben hacer. Es muy fácil
mantenerlos y realizar pequeños cambios en el proceso.
22
Ilustración 8 - Flujos UIPath Studio – Fuente: https://www.uipath.com/automate/desktop-automation
23
Máquinas virtuales:
Una característica esencial de las máquinas virtuales es que los procesos que
ejecutan están limitados por los recursos y abstracciones proporcionados por ellas.
Estos procesos no pueden escaparse de esta "computadora virtual".
El software que utilizaremos para virtualizar las máquinas virtuales que utilizarán
nuestros robots RPA, será VirtualBox.
La aplicación fue inicialmente ofrecida bajo una licencia de software privativo, pero en
enero de 2007, después de años de desarrollo, surgió VirtualBox OSE (Open Source
Edition) bajo la licencia GPL 2. Actualmente existe la versión privativa Oracle VM
VirtualBox, que es gratuita únicamente bajo uso personal o de evaluación, y está
sujeta a la licencia de "Uso Personal y de Evaluación VirtualBox" (VirtualBox Personal
Use and Evaluation License o PUEL) y la versión Open Source, VirtualBox OSE, que
es software libre, sujeta a la licencia GPL.
24
VirtualBox ofrece algunas funcionalidades interesantes, como la ejecución de
máquinas virtuales de forma remota, por medio del Remote Desktop Protocol (RDP),
soporte iSCSI, aunque estas opciones no están disponibles en la versión OSE.
En cuanto a la emulación de hardware, los discos duros de los sistemas invitados son
almacenados en los sistemas anfitriones como archivos individuales en un
contenedor llamado Virtual Disk Image, incompatible con los demás softwares de
virtualización.
Otra de las funciones que presenta es la de montar imágenes ISO como unidades
virtuales ópticas de CD o DVD, o como un disquete.
25
GIT
¿Cómo funciona?
26
Al ya tener nuestro proyecto establecido, podremos controlar sus diferentes
versiones, accesos y demás. En caso de que queremos implementar un cambio
drástico (probar una nueva interfaz que no sabemos si se integrará bien con nuestros
componentes…) y no queremos que se cree la revisión de inmediato.
En estos casos podemos generar ramificaciones del proyecto principal (denominadas
‘branchs’), que no son más que una copia temporal en la que trabajaremos en paralelo
al proyecto para implementar o probar estos cambios. Si las pruebas son
satisfactorias podremos integrar esta rama de nuevo al hilo principal, sin embargo, en
caso resultar en catástrofe, podremos descartar los cambios sin asentar ninguna
nueva revisión al hilo principal.
Dependiendo de la configuración que hayamos establecidos, los sistemas de control
de versiones suelen tener cierta “inteligencia” para reconocer qué cambios deben
asentarse como revisiones, no obstante, en caso de no quererlo así o en caso que el
sistema sea incapaz de decidir qué cambios incluir en cada revisión, deberemos
solventar el conflicto manualmente.
Podríamos ilustrar todo esto de las ramas con la siguiente imagen:
27
Un poco de Historia
Los sistemas de control de versiones no son recientes en absoluto, de hecho, ya han
pasado por varias generaciones:
28
GitLab
Gitlab es software libre y gratuito, con una buena comunidad que lo va mejorando y
actualizando, y que crece y nos ofrece diversas funcionalidades interesantes que
listamos a continuación:
29
o en servidores externos al usar GitLab, nos permite crear repositorios a partir de
otros ya creados con anterioridad.
• Cómoda interfaz web; Práctica interfaz web para interaccionar con GitLab que nos
permite trabajar más intuitivamente y que nos da un feedback más elevado que el
terminal además de simplificar el uso del sistema y la revisión de proyectos.
• Copias ed seguridad; Al tener el servicio en el servidor, a persar de trabajar con copias
locales en el ordenador en el que nos hallamos, si perdiésemos alguna parte de
nuestro proyecto, disponemos siempre de copias del sistema que no hayan sido
comprometidas gracias a funcionar usando Git.
• Historial de modificaciones del proyecto; Especialmente práctico en trabajos en grupo
debido a que, cuando alguien hace alguna modificación, nos permite verla clara e
intuitivamente ahorrándonos largas explicaciones o investigación sobre el código.
Para poder instalar y utilizar Gitlab, necesitaremos tener en nuestro servidor ciertos
programas y librerías. Sin entrar demasiado en detalles, comentamos sobre qué
tecnologías trabaja:
• Python.
• Ruby.
• Git.
• Mysql (mysqlserver mysqlclient).
• Nginx.
• El propio código de GitLab.
• Llibrerías externas.
• SecureShell.
Además, nos hará falta el servidor en el que queremos instalar el servicio y la conexión
a través de la cual los usuarios puedan acceder a estos servicios, ya que, al tratarse
de un servidor de repositorios, lo que nos interesará será el acceso remoto.
30
III PRODUCTO FINAL
Después de un análisis efectuado entre todas las actividades realizadas por los
ejecutivos, se pudo determinar la actividad que más demanda tiempo dentro del
universo de actividades es la de “Agendamiento de Equipos”.
A continuación, se detallan los conceptos que nos ayudarán a definir los criterios
utilizados en este análisis para determinar la actividad que demanda más tiempo
dentro del equipo de ejecutivos.
Z = TMO * Cantidad
Con esta fórmula, las actividades que tengan mayor Z, son las que toman más tiempo
dentro de la operación de los ejecutivos del equipo de administración ventas.
31
Se adjunta listado de actividades con su respectivo TMO (en minutos) y Q de
actividades ingresadas en el periodo de enero-octubre del año 2017.
Q
id Tipo Actividad TMO(minutos) actividades
528 Solicitud Portabilidad Web - Remedy 30 20
527 Solictud Venta Web - Remedy 15 574
382 FACTIBILIDAD PORTABILIDAD MOVIL EMPRESAS 10 28.862
398 Venta Contingencia 8,6 430
529 Contacto telefónico AM/Cliente 8 62
400 Ingreso Preventa (GRC/Descuentos/autokit) 7,6 27.342
408 Rechazo Venta (Análisis, Solicitud) - Salesforce/Casilla 6,4 2.774
406 Consultas varias (status peticion-plan-SF) 6 2.664
402 AGENDAMIENTO EQUIPOS 5,8 79.902
405 Solicitudes Back Masivo (Bajas, Mantenedor) - Casilla 5,8 5.656
Seguimientos (Preventa/Creación Plan/Aprobaciones Desc/Grc) - 12.814
403 Salesforce 5,6
404 Notificaciones a AM/CLIENTE 5,4 7.134
410 Gestor Documental - Salesforce/Casilla 5,4 8.146
360 VALIDACION PORTABILIDAD MOVIL EMPRESAS 3,13 18.130
361 PREPARACION PORTABILIDAD MOVIL EMPRESAS 3,13 8.122
362 Seguimiento Despachos Control Salida 1,88 5.172
134 Cambio de Plan 1,74 106.750
357 Visado ventas SF 1,15 67.154
Tabla 2 - TMO Actividades
32
Con la tabla anterior procedemos a aplicar la fórmula mencionada anteriormente para
obtener el TOP 5 de actividades con mayor Z.
Agendamiento Equipos
77.227
Visado ventas SF
288.620
33
¿En qué consiste un Agendamiento de Equipo?
Vamos a partir por definir que es un plan empresas, este tipo de planes lo poseen las
empresas y corporaciones clientes de Telefónica Chile. Este tipo de plan consiste en
un conjunto de líneas y equipos móviles que están a nombre de cada empresa.
Cuando una empresa adquiere una nueva línea o cambia el equipo de una línea que
se encuentra activa, el equipo debe ser despachado donde lo indique el cliente.
Es por eso, que se debe ingresar una solicitud de agendamiento por cada equipo que
adquiere la empresa, para así validar diversos datos como: stock del o los modelos,
valores según plan, servicios de telefonía y datos para cada equipo, etc. Como es de
suponer, las grandes empresas como Cencosud, Falabella, Ultramar, etc. realizan
solicitudes de grandes volúmenes de equipos, por lo que un ejecutivo puede tomarse
más de un día agendando sólo una solicitud de equipos en sistema.
Actualmente, estas solicitudes deben ser ingresadas por los ejecutivos del equipo de
administración ventas, en un sistema web de Telefónica llamado Salesforce, por lo
que debemos darle a nuestro robot RPA las instrucciones para que tenga la capacidad
de poder manipular este sistema para lograr el ingreso de solicitudes de forma
autónoma.
El que Salesforce sea un sistema Web, nos proporciona un gran escenario para que
actúe nuestro robot, ya que UIPath nos proporciona detección de controles dentro del
formulario, reconocimiento de texto mediante OCR, captura de eventos web, etc.
Al robot se le debe informar de alguna forma los datos que debe ingresar en
Salesforce, que modelo seleccionar, que plan asignar al equipo, donde despacharlo,
etc.
Para esto, programaremos nuestro robot con el objetivo de que pueda leer un archivo
Excel en un formato determinado, el cual será el que contenga todos los datos de
cada equipo que debe ser agendado dentro de la solicitud. Este archivo debe ser
llenado por el ejecutivo de Administración Ventas, para posteriormente realizar el
ingreso de una actividad en el sistema web adjuntando el archivo Excel para delegar
su ejecución al robot.
34
Campo Formulario Campo Excel Valor Ejemplo
WEB
Código de Cliente Código de Cliente 31109862
Solicitud Solicitud 000234069
Id de Modelo Id de modelo 3778
Cantidad de equipos Cantidad de Equipos 2
Plan Código de Plan ZVA
Tipo de Contrato Tipo de Contrato 02 - SUMINISTRO SIN
EQUIPO
Código de descuento de modelo Código de Descuento DM-091020
Servicio Catálogo de Servicio1 XXX - NO REQUIERE
SERVIO SEGUN OC
Accion Acción Activar
Contacto Contacto Bárbara Eshmann
Teléfono de contacto Teléfono de Contacto 227202413
Dirección Dirección AV. GLADYS MARIN
5830
Comuna Comuna ESTACION CENTRAL
Modalidad de Venta Modalidad de Venta 1 - CONTADO
SGP Código SGP 578543241405
Número Número a Portar 979476324
Tabla 3 - Tabla Equivalencia Excel - Web
35
Ilustración 13 - Formulario Agendamiento Portabilidad - Fuente: https://telefonicab2b.force.com/portalpartner
36
III.2 Desarrollo del Problema
Cabe destacar que el diseño de nuestra plataforma se ideó de una manera escalable,
para que por el momento cubra el agendamiento de equipos, pero a futuro puedan
ser agregadas más actividades con el menor esfuerzo posible.
Diagrama BPMN
37
Modelo de Datos
El framework Laravel tiene ciertas convenciones que debemos seguir para poder
utilizarlo, una de estas convenciones es el nombre de las tablas, siempre deben ser
el plural del nombre del Modelo que utilizaremos. Por ejemplo, para la tabla empresas
su modelo en Laravel será Empresa. Es por eso que la tabla que almacena las
actividades se llama actividads, para bajo la convención de Laravel su modelo se
llame Actividad.
38
Diccionario de datos
Tabla: actividads
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador unico del registro en la
id Integer X SI
tabla
Estado en el que se encuentra la
estado_id Integer X
actividad
Observaciones ingresadas al
descripcion Text X
momento de crear la actividad
user_id Usuario asociado a la actividad Integer X
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Fecha en que el Robot inicia la
fecha_proceso Timestamp
ejecución de la actividad
Fecha tope de término de actividad,
fecha_termino dada por el SLA del tipo de la Timestamp
actividad
Fecha en que el robot termina la
fecha_cierre Timestamp
ejecución de la actividad
empresa_id Empresa asociada a la actividad Integer X
tipoactividad_id Tipo al que pertenece la actividad Integer X
Tabla: actualizacions
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
actividad_id Actividad asociada a la actualización Integer X
Estado de la actividad, ingresado en
estado_id Integer
la actualización
Usuario que realiza el ingreso de la
user_id Integer X
actualización
Observaciones ingresadas al
descripcion Text X
momento de crear la actualización
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
39
Tabla: adjuntos
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
tipoadjunto_id Tipo al que pertenece el adjunto Integer
Variable
path Ubicación en el servidor del adjunto characters X
(200)
Variable
Nombre con el que fue subido el
nombre_real characters X
adjuntos
(100)
Nombre temporal con el que fue Variable
nombre_tmp guardado el adjunto en el servidor characters X
(hash) (100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
actividad_id Actividad asociada al adjunto Integer X
Tabla: empresas
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
rut Rut de la Empresa X
characters (11)
Variable
razon_social Nombre de la Empresa characters X
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Estado en el que se encuentra la
estado_id Integer X
empresa
Segmento al que pertenece la
segmento_id Integer X
empresa
Tabla: empresas_users
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
empresa_id Empresa asociada al registro Integer X
user_id Usuario asociado al registro Integer X
created Fecha de creación del Registro Timestamp X
40
Tabla: equipos
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
descripcion Nombre del equipo characters X
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Tabla: estados
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
descripcion Nombre del estado characters X
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Tabla: perfils
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
descripcion Nombre del perfil characters X
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Tabla: segmentos
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
Nombre del Segmento de la
descripcion characters X
empresa
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
41
Tabla: tipoactividads
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
descripcion Nombre del Tipo de actividad characters X
(100)
Horas Hábiles que puede demorar
sla Integer X
un tipo de actividad
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Tabla: tipoadjuntos
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable
descripcion Nombre del Tipo de adjunto characters X
(100)
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Extensiones de los tipos de archivo Variable
extensiones que son aceptados por el tipo de characters
adjunto (100)
42
Tabla: users
Nombre Descripción Tipo de Dato Obligatorio PK
Identificador único del registro en la
id Integer X SI
tabla
Variable characters
nombre Nombre del Usuario X
(100)
Variable characters
apellido Apellido del Usuario X
(100)
Variable characters
rut Rut del usuario X
(11)
Nombre de usuario para ingresar al Variable characters
username X
sistema (50)
Contraseña del usuario para ingresar Variable characters
password X
al sistema (100)
Estado en el que se encuentra el
estado_id Integer X
usuario
perfil_id Perfil al que pertenece el usuario Integer X
equipo_id Equipo al que pertenece el usuario Integer X
created Fecha de Creación del registro Timestamp X
Fecha de última actualización del
modified Timestamp
registro
Variable characters
email Email del Usuario X
(100)
Tabla 4 - Diccionario de Datos
43
Diagramas UML
44
Ilustración 17 - Casos de uso - API Rest – Fuente Elaboración Propia
45
Casos de Uso
Precondiciones:
46
Nombre Caso de Uso: Ingresar Actividad
Código Caso de Uso: CAS - 002
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Permite ingresar una actividad en sistema.
Actores: Usuario
47
Nombre Caso de Uso: Obtiene Empresa
Código Caso de Uso: CAS-003
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Obtiene todos los datos de la empresa en base al rut ingresado
Actores: Usuario
48
Nombre Caso de Uso: Actualizar Actividad
Código Caso de Uso: CAS-004
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Permite registrar una actualización de sistema al momento de
actualizar una actividad.
Actores: Usuario/Robot
49
Nombre Caso de Uso: Ver Actividad
Código Caso de Uso: CAS-005
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Obtiene el detalle de una actividad en específico
Actores: Usuario/Robot
Flujo Normal: 1.- El usuario selecciona la opción Ver, de una actividad dentro del
listado de actividades.
2.- El sistema busca los datos de la actividad
3.-Se muestra una pantalla no editable con todos los datos de la
actividad.
4.- Las actualizaciones asociadas a la actividad se muestran en
una tabla, posterior a los datos de la actividad.
Flujo Alternativo: 2-A.- La actividad no existe, se muestra un mensaje de alerta.
50
Nombre Caso de Uso: Buscar Actividades
Código Caso de Uso: CAS-006
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Permite ubicar una o más actividades seleccionando uno o más
filtros de búsqueda.
Actores: Usuario
51
Nombre Caso de Uso: Bandeja Actividades
Código Caso de Uso: CAS-007
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Lista las actividades que se encuentran pendientes de gestionar y
se encuentran asociadas al usuario registrado
Actores: Usuario
52
Nombre Caso de Uso: Selecciona Actividad a Ejecutar
Código Caso de Uso: CAS-008
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Obtiene la actividad más crítica que se encuentra pendiente para
que la pueda ejecutar el robot.
Actores: Robot
53
Nombre Caso de Uso: Crear usuario
Código Caso de Uso: CAS-009
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Permite dar de alta un usuario del sistema
Actores: Admin
Flujo Normal: 1.- El usuario selecciona la opción “Crear usuario” dentro del meno
principal.
2.- Se despliega un formulario con los datos del usuario
3.- Al perder el foco del campo email se ejecuta un Ajax para validar
si correo de usuario ya existe
4.- El usuario completa el formulario
5.- Usuario pulsa el botón Guardar
6.- El sistema ingresa el usuario en sistema
Flujo Alternativo: 3-A.- Si correo existe se debe desplegar un mensaje de alerta en el
formualrio
54
Nombre Caso de Uso: Cambiar contraseña
Código Caso de Uso: CAS-010
Autor: Marco Soruco H.
Fecha: 15-12-2017
Descripción: Permite modificar la contraseña de ingreso al sistema para un
usuario determinado.
Actores: Admin/Usuario
Flujo Normal: 1.- El usuario selecciona la opción “Cambiar contraseña” del menú
principal en caso de ser administrador debe seleccionar la opción
dentro del listado de usuarios.
2.A Si usuario es administrador debe ingresar la nueva contraseña
en el campo contraseña y conformación
2.B Si usuario es normal, debe completar el campo contraseña
actual y los campos nueva contraseña y confirmación.
3.- usuario pulsa sobre el botón actualizar
4.- El sistema actualiza la contraseña del usuario
55
Diagrama de estados
56
Diagrama de Arquitectura Física
57
Mockups
Login
Ingreso de Actividad
58
Bandeja de Actividades
Actualizar Actividad
59
Bitácora Actualizaciones por Actividad
Dashboard
60
IV ASPECTOS COMPLEMENTARIOS
BIBLIOGRAFÍA
Scrum:
https://proyectosagiles.org/que-es-scrum/
https://www.sinnaps.com/blog-gestion-proyectos/metodologia-scrum
Laravel:
https://ajgallego.gitbooks.io/laravel-5/content/introduccion.html
Angular
http://blog.enriqueoriol.com/2016/06/introduccion-a-angular-2-parte-i-componente.html
https://angular.io/guide/architecture
Rest:
http://asiermarques.com/2013/conceptos-sobre-apis-rest/
https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional
Json:
https://www.json.org/json-es.html
https://geekytheory.com/json-i-que-es-y-para-que-sirve-json/
MariaDB
https://mariadb.com/kb/es/what-is-mariadb-51/
http://www.vozidea.com/que-es-mariadb-y-ventajas-frente-mysql
61
UiPath
https://www.uipath.com/community
https://www.uipath.com/robot
Máquinas Virtuales
https://www.xataka.com/especiales/maquinas-virtuales-que-son-como-funcionan-y-
como-utilizarlas
GIT
https://barradevblog.wordpress.com/2013/01/21/que-es-gitgithub/
GitLab
https://about.gitlab.com/
62
ANEXOS
100 - Continue
103 - Checkpoint
Esta clase de código de estado indica que la petición fue recibida correctamente,
entendida y aceptada.
200 - OK
63
201 - Created
202 - Accepted
204 - No Content
El cuerpo del mensaje que sigue es un mensaje XML y puede contener algún
número de códigos de respuesta separados, dependiendo de cuántas sub-
peticiones sean hechas.
64
3xx: Redirecciones
El cliente tiene que tomar una acción adicional para completar la petición.
Esta clase de código de estado indica que una acción subsecuente necesita
efectuarse por el agente de usuario para completar la petición. La acción requerida
puede ser llevada a cabo por el agente de usuario sin interacción con el usuario si y
solo si el método utilizado en la segunda petición es GET o HEAD. El agente de
usuario no debe redirigir automáticamente una petición más de 5 veces, dado que
tal funcionamiento indica usualmente un Bucle infinito.
Indica opciones múltiples para el URI que el cliente podría seguir. Esto
podría ser utilizado, por ejemplo, para presentar distintas opciones de formato para
video, listar archivos con distintas extensiones o word sense disambiguation.
Esta y todas las peticiones futuras deberían ser dirigidas a la URI dada.
302 - Found
65
305 - Use Proxy (desde HTTP/1.1)
Se trata de una redirección que debería haber sido hecha con otra URI, sin
embargo, aún puede ser procesada con la URI proporcionada. En contraste con el
código 303, el método de la petición no debería ser cambiado cuando el cliente
repita la solicitud. Por ejemplo, una solicitud POST tiene que ser repetida utilizando
otra petición POST.
66
4xx Errores del cliente
401 - Unauthorized
La intención original era que este código pudiese ser usado como parte de
alguna forma o esquema de Dinero electrónico o micropagos, pero eso no sucedió,
y este código nunca se utilizó.
403 - Forbidden
La solicitud fue legal, pero el servidor rehúsa responderla dado que el cliente
no tiene los privilegios para hacerla. En contraste a una respuesta 401 No
autorizado, la autenticación no haría la diferencia.
Una petición fue hecha a una URI utilizando un método de solicitud no soportado
por dicha URI; por ejemplo, cuando se utiliza GET en un formulario que requiere que
los datos sean presentados vía POST, o utilizando PUT en un recurso de solo
lectura.
67
406 - Not Acceptable
409 - Conflict
410 - Gone
68
415 - Unsupported Media Type
"Soy una tetera". Este código fue definido en 1998 como una inocentada, en
el Protocolo de Transmisión de Hipertexto de Cafeteras (RFC-2324). No se espera
que los servidores web implementen realmente este código de error, pero es posible
encontrar sitios que devuelvan este código HTTP.
La solicitud está bien formada, pero fue imposible seguirla debido a errores
semánticos.
425 - Unassigned
69
428 - Precondition Required
El servidor requiere que la petición del navegador sea condicional (este tipo
de peticiones evitan los problemas producidos al modificar con PUT un recurso que
ha sido modificado por otra parte).2
449
70
5xx Errores de servidor
Los códigos de respuesta que comienzan con el dígito "5" indican casos en
los cuales el servidor tiene registrado aún antes de servir la solicitud, que está
errado o es incapaz de ejecutar la petición. Excepto cuando está respondiendo a un
método HEAD, el servidor debe incluir una entidad que contenga una explicación de
la situación de error, y si es una condición temporal o permanente. Los agentes de
usuario deben desplegar cualquier entidad incluida al usuario. Estos códigos de
respuesta son aplicables a cualquier método de petición.
71
506 - Variant Also Negotiates (RFC 2295)
La petición del navegador debe añadir más extensiones para que el servidor
pueda procesarla.
El navegador debe autenticarse para poder realizar peticiones (se utiliza por
ejemplo con los portales cautivos que te obligan a autenticarte antes de empezar a
navegar).
72