Full text
DISEÑO INTERACTIVO DE INTERFACES
GRÁFICAS DE USUARIO PARA
PROGRESS
Rica do Caballe o Sánchez
Ad ián Díaz Jiménez
GRADO EN INGENIERÍA INFORMÁTICA
GRADO EN INGENIERÍA DEL SOFTWARE
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
TRABAJO DE FIN DE GRADO
Di ec o : Manuel Mon eneg o Mon es
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 2/75
A nues os amilia es, amigos y compañe os
de uni e sidad y abajo po su in e és y apoyo cons an e
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 3/75
Con enido
RESUMEN ............................................................................................................................................... 8
PALABRAS CLAVE ....................................................................................................................................... 8
ABSTRACT ............................................................................................................................................. 9
KEYWORDS ................................................................................................................................................ 9
CAPITULO 1.- INTRODUCCIÓN ....................................................................................................... 10
1.1.- ANTECEDENTES Y MOTIVACIÓN ..................................................................................................... 10
1.2.- OBJETIVOS .................................................................................................................................. 10
1.3.- PLAN DE TRABAJO ....................................................................................................................... 11
CAPITULO 2.- INTRODUCTION ........................................................................................................ 13
2.1.- BACKGROUND AND MOTIVATION .................................................................................................... 13
2.2.- GOALS ........................................................................................................................................ 13
2.3.- WORKING PLAN ........................................................................................................................... 14
CAPITULO 3.- TECNOLOGÍAS ......................................................................................................... 16
3.1.- ELECTRON .................................................................................................................................. 16
3.1.1.- Node.js ......................................................................................................................... 16
3.1.2.- Ch omium ..................................................................................................................... 17
3.1.3.- Es uc u a Elec on.JS .................................................................................................. 17
3.2.- PEG.JS ..................................................................................................................................... 17
3.3.- VISUAL STUDIO CODE .................................................................................................................. 18
3.4.- GITHUB ...................................................................................................................................... 18
3.5.- LENGUAJE DE PROGRAMACIÓN JAVASCRIPT .................................................................................. 18
3.6.- FRAMEWORK PARA LA CAPA DE PRESENTACIÓN JQUERY ................................................................. 18
3.7.- CAPA DE PRESENTACIÓN.............................................................................................................. 19
3.7.1.- HTML5 ......................................................................................................................... 19
3.7.2.- CSS .............................................................................................................................. 19
3.7.3.- Boo s ap ...................................................................................................................... 19
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 4/75
3.7.4.- jQue y UI ...................................................................................................................... 19
3.7.5.- In e ac .JS .................................................................................................................... 20
CAPITULO 4.- CREACIÓN DE INTERFACES DE USUARIO ........................................................... 21
4.1.- FORMULARIOS ............................................................................................................................. 21
4.1.1.- F ames ......................................................................................................................... 21
4.1.2.- Va iables ...................................................................................................................... 21
4.1.3.- Fo mula io de F ame .................................................................................................... 22
4.1.4.- Fo mula io de Va iable ................................................................................................. 23
4.2.- FRAME DE ENTRADA .................................................................................................................... 24
4.2.1.- Zonas p incipales ......................................................................................................... 24
4.2.2.- Posicionamien o de Va iables ...................................................................................... 25
4.2.3.- Modi icación de a iables ............................................................................................. 32
4.2.4.- Elemen os del F ame. .................................................................................................. 33
4.2.5.- Código gene ado .......................................................................................................... 34
4.3.- FRAME DE SALIDA ........................................................................................................................ 35
4.4.- VISTA DE CÓDIGO ........................................................................................................................ 37
CAPITULO 5.- GENERACIÓN Y ANÁLISIS SINTÁCTICO DE CÓDIGO PROGRESS .................... 38
5.1.- ESTRUCTURA DE DATOS EN JAVASCRIPT ....................................................................................... 38
5.1.1.- Clase P og ess ............................................................................................................. 38
5.1.2.- Clase F ame ................................................................................................................. 40
5.1.3.- Clase Va iable .............................................................................................................. 43
5.2.- ESTRUCTURA DE DATOS EN PROGRESS ......................................................................................... 46
5.2.1.- Gene ación de código P og ess ................................................................................... 46
5.3.- ANALIZADOR SINTÁCTICO DE PROGRESS ........................................................................................ 48
5.3.1.- G amá ica y Semán ica de PEG.js ............................................................................... 48
5.3.2.- Reglas u ilizadas .......................................................................................................... 50
CAPITULO 6.- OTRAS FUNCIONALIDADES ................................................................................... 52
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 5/75
6.1.- VALIDACIÓN DE DATOS ................................................................................................................. 52
6.1.1.- Validación de da os en la c eación de código. ............................................................. 52
6.1.2.- Validación de da os en la ca ga de a chi o. ................................................................. 56
6.1.3.- Mensajes de Validación de Da os: ............................................................................... 59
CAPITULO 7.- CONCLUSIONES Y TRABAJO FUTURO ................................................................. 61
7.1.- CUMPLIMIENTO DE OBJETIVOS ...................................................................................................... 61
7.2.- DIFICULTADES ENCONTRADAS ....................................................................................................... 62
7.3.- TRABAJO FUTURO. ....................................................................................................................... 63
7.3.1.- Ampliación de ipos. ..................................................................................................... 63
7.3.2.- E ec os isuales. .......................................................................................................... 64
7.3.3.- Alineaciones po de ec o. ............................................................................................. 64
7.3.4.- Añadi ejilla.................................................................................................................. 64
7.3.5.- O dena isualización de ames. ................................................................................. 64
7.3.6.- Amplia ca ac e ís icas del ame. ................................................................................ 64
7.3.7.- Ampliación de lec u a de documen os. ......................................................................... 64
7.3.8.- Vis a simulada del ame de salida. .............................................................................. 64
CAPITULO 8.- CONCLUSIONS AND FUTURE WORK .................................................................... 65
8.1.- ACHIEVEMENT OF GOALS .............................................................................................................. 65
8.2.- DIFFICULTIES ENCOUNTERED ........................................................................................................ 66
8.3.- FUTURE WORK............................................................................................................................. 67
8.3.1.- Type ex ension ............................................................................................................. 67
8.3.2.- Visual e ec s ................................................................................................................ 67
8.3.3.- De aul alignmen s ........................................................................................................ 67
8.3.4.- Add g id ........................................................................................................................ 67
8.3.5.- O de display o ames ................................................................................................ 67
8.3.6.- Expand cha ac e is ics o he ame ............................................................................. 68
8.3.7.- Ex ension o documen eading .................................................................................... 68
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 6/75
8.3.8.- Simula ed iew o he ou pu ame .............................................................................. 68
CAPITULO 9.- CONTRIBUCIONES DE CADA PARTICIPANTE ...................................................... 69
9.1.- CONTRIBUCIÓN RICARDO CABALLERO SÁNCHEZ ............................................................................ 69
9.2.- CONTRIBUCIÓN ADRIÁN DÍAZ JIMÉNEZ ........................................................................................... 72
BIBLIOGRAFÍA ..................................................................................................................................... 75
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 7/75
Tabla de ilus aciones
1.-Es uc u a Elec on.js [11] .................................................................................................................. 17
2.- Fo mula io de F ame ........................................................................................................................ 23
3.- Fo mula io de Va iable ...................................................................................................................... 24
4.-Vis a del ame de en ada ................................................................................................................. 25
5.-F ame de en ada – Paso 1 ............................................................................................................... 26
6.- F ame de en ada – Paso 2 .............................................................................................................. 27
7.- F ame de en ada – Paso 3 .............................................................................................................. 28
8.- Panel isualización de a iable ......................................................................................................... 32
9.- Zona 4 ( Elemen os del F ame) ........................................................................................................ 33
10.- Ven ana Edi a F ame ..................................................................................................................... 33
11.- Vis a Upda e ................................................................................................................................... 34
12.- Vis a Display ................................................................................................................................... 34
13.-QAD ................................................................................................................................................. 35
14.- Ejemplo F ame de Salida ................................................................................................................ 36
15.- Vis a de Código............................................................................................................................... 37
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 8/75
RESUMEN
Es e p oyec o se cen a en la c eación de una aplicación de esc i o io que, median e ecnologías web,
nos pe mi e c ea , de mane a isual, in e aces g á icas.
El p oyec o nace de la necesidad de c ea in e aces g á icas con un lenguaje que no es á muy p epa ado
pa a ello: P og ess. P og ess es un lenguaje de p og amación u ilizado pa a el man enimien o y uso de
bases de da os. Es po ello que la c eación de la capa isual con es e lenguaje es una a ea ediosa y el
esul ado es di ícil de man ene .
En es e p oyec o hemos desa ollado un p og ama que nos pe mi e elegi una se ie de ca ac e ís icas
que end á la in e az y las a iables mos adas en ella con el obje i o de gene a el código P og ess
co espondien e. Además, se c ean los componen es isuales que pueden se a as ados y mo idos a
la zona de la pan alla donde inalmen e se e án al ejecu a el código P og ess. De es a o ma, se
simpli ica mucho la elabo ación y modi icación de es as pan allas, iendo en odo momen o el esul ado
isual inal que end á es e código al se ejecu ado. También nos pe mi e e en iempo eal el código
P og ess que se gene a au omá icamen e con cada acción y gua da es e código en un iche o. Los
iche os que se gene an con la aplicación pueden se ca gados de nue o pa a ealiza modi icaciones.
Enlace a p oyec o Gi Hub.
PALABRAS CLAVE
P og ess, ames, a iable, emp- able, in e az g á ica, Elec on, In e ac .JS, analizado sin ác ico,
PEG.JS.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 9/75
ABSTRACT
This p ojec is ocused on he c ea ion o a desk op applica ion ha , using web echnologies, allows us o
c ea e g aphical in e aces in a isual way. The p ojec is bo n om he need o c ea e g aphical in e aces
wi h a language ha is no p epa ed o i , P og ess. P og ess is a p og amming language used o he
main enance and use o da abases. Tha is why he c ea ion o he isual laye wi h his language is a
edious ask, and he esul ing iews a e di icul o main ain.
In his p ojec we ha e de eloped a p og am ha allows us o choose a se ies o p ope ies in he in e ace
and a se ies o a iables shown in i in o de o gene a e he co esponding P og ess code. Addi ionally,
isual componen s c ea ed can be d agged and mo ed o he a ea o he sc een whe e hey will inally be
displayed when he co esponding P og ess code is un. In his way, his ool g ea ly simpli ies he
elabo a ion o hese sc eens and allows us o modi y hem quickly, and o see a all imes he inal isual
esul his code will ha e when execu ed. I also allows us o see in eal ime he P og ess code ha is
au oma ically gene a ed wi h each ac ion and sa e his code in a ile. The iles ha ha e been gene a ed
wi h he applica ion can be eloaded o make modi ica ions.
Link o Gi Hub p ojec .
KEYWORDS
P og ess, ames, a iable, emp- able, g aphical use in e ace, Elec on, In e ac .JS, pa se , PEG.JS
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 16/75
CAPITULO 3.- TECNOLOGÍAS
Ac ualmen e exis en F amewo ks pa a c ea aplicaciones de esc i o io, en las que se puede usa las
ecnologías web conocidas, ales como HTML5, Ja aSc ip , CSS, JSON en e o os.
Como ejemplo de aplicaciones de esc i o io ealizadas median e ecnologías web, podemos menciona
A as y Nod32.
Al usa es e ipo de desa ollo se nos b inda la acilidad de c ea in e aces g á icas con mucha más
acilidad ya que podemos eu iliza nues os conocimien os de HTML y CSS, cosa que con o os
F amewo ks de aplicaciones de esc i o io pod ía esul a mucho más abajoso y complicado.
Po es a azón, nues o p oyec o se ha desa ollado con muchas de es as he amien as, las cuales
menciona emos a con inuación, odas ellas elacionadas con ecnologías web.
3.1.- ELECTRON
Pa a lle a a cabo nues o p oyec o, nos hemos decidido po el F amewo k Elec on, ya que pa a noso os
nos ha pa ecido más adecuado dado nues os conocimien os ace ca de las ecnologías web que hay
de ás.
Elec on (an e io men e A om Shell) es un F amewo k de código abie o. Pe mi e el desa ollo de
aplicaciones g á icas de esc i o io usando un modelo clien e se ido simila al u ilizado en aplicaciones
web [13],[14].
Del lado del clien e nos encon a íamos con un mo o Ch omium como in e az y de la pa e del se ido
el en o no de ejecución Node.js [10].
Elec on es el F amewo k elegido pa a el desa ollo de algunas aplicaciones conocidas como, po
ejemplo, Mic oso Visual S udio Code o A om de Gi Hub.
3.1.1.- Node.js
Node.js es un en o no en iempo de ejecución mul ipla a o ma de código abie o. Es á diseñado pa a la
capa de se ido de las aplicaciones web, aunque no necesa iamen e se debe limi a a ello. Node.js,
diseñado pa a c ea aplicaciones web escalables, es un en o no de ejecución de Ja aSc ip o ien ado a
e en os asínc onos [16].
Al con a io que la mayo ía de código Ja aSc ip , el código esc i o pa a Node.js no se ejecu a en la pa e
del na egado web, sino en el se ido .
Al es a basado en el lenguaje Ja aSc ip , Node.js se puede combina pa a un desa ollo homogéneo
en e clien e y se ido , y pe mi e la adap ación de pa ones pa a desa ollo del lado del se ido como
MVC, acili ando la eu ilización de código en e el lado del clien e y del se ido .
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 17/75
3.1.2.- Ch omium
Es la e sión de código abie o de Google Ch ome. Es e p oyec o se c eó pa a ob ene la ayuda de la
comunidad con el in de mejo a en e odos el mo o del na egado , o a su ez c ea su p opio na egado .
Ch omium es usado po Elec on como mo o de la in e az, es deci la isión de la aplicación en el lado
del clien e es á gene ada po Ch omium [10].
3.1.3.- Es uc u a Elec on.JS
El uncionamien o de Elec on se di ide en dos ipos de p ocesos, el p oceso p incipal main y el p oceso
ende e . El p oceso p incipal es el p oceso de Node.js el cual se comunica con a ias API de
Elec on.js pa a ayuda nos a comunica nos con el Sis ema Ope a i o, podemos deci que es nues a
aplicación.
El p oceso ende e es un p oceso de Ch omium, pe o es e p oceso iene Node.js inco po ado pa a
pode accede a los módulos y a los posibles módulos que ins alemos con npm [10].
1.-Es uc u a Elec on.js [11]
3.2.- PEG.JS
Es un simple gene ado de analizado es sin ác icos pa a Ja aSc ip . Gene a ápidos analizado es con
un excelen e con ol de e o es [15].
En nues a aplicación usamos PEG.js pa a pode analiza agmen os del lenguaje de P og ess y pode
c ea nues os obje os que se án a ados en nues a aplicación.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 18/75
3.3.- VISUAL STUDIO CODE
Es un edi o de código uen e desa ollado po Mic oso , c eado con Elec on. Lo u ilizamos pa a el
desa ollo del p oyec o.
3.4.- GITHUB
Es una pla a o ma web de ges ión de p oyec os y con ol de e siones de código.
Pe mi e abaja colabo a i amen e con cualquie pe sona del mundo, plani ica p oyec os y hace un
seguimien o de los mismos.
Es á basado en el sis ema de con ol de e siones Gi , desa ollado po Linus To alds. Es e sis ema
ealiza el con ol de e siones median e un egis o de cambios ealizados en el código.
Usamos es a ecnología ya que, como explicamos en el apa ado de Elec on, es la compañía
desa ollado a de es a he amien a, además de po su acilidad de uso y su in eg ación con Visual S udio
Code.
3.5.- LENGUAJE DE PROGRAMACIÓN JAVASCRIPT
Como lenguaje de p og amación hemos elegido Ja aSc ip . Ja aSc ip es un lenguaje o ien ado a
obje os, débilmen e ipado y dinámico [2] ,[7].
Ba ajamos la posibilidad de usa TypeSc ip . TypeSc ip es un supe conjun o de Ja aSc ip que
esencialmen e añade ipos es á icos y obje os basados en clases. Es po eso que nos podía in e esa
pa a de ini una es uc u a de da os más ígida. Finalmen e decidimos no u iliza TypeSc ip y pe de la
capacidad de ene un ue e ipado po que:
• TypeSc ip es á más indicado pa a p oyec os de mayo amaño mien as que Ja aSc ip es ideal
pa a p oyec os de meno en e gadu a.
• TypeSc ip necesi a se compilado.
• Tene que ap ende un lenguaje nue o.
Pa a de ini nues a es uc u a de da os, u ilizamos clases de Ja aSc ip , las cuáles nos o ecen lo que
necesi ábamos pa a es e p oyec o. Comen a emos es as clases pos e io men e, en el capí ulo 5.1.-
Es uc u a de da os en Ja aSc ip .
3.6.- FRAMEWORK PARA LA CAPA DE PRESENTACIÓN JQUERY
Nos decidimos a usa jQue y pa a el manejo de los componen es isuales (HTML).
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 19/75
jQue y es una biblio eca de Ja aSc ip que nos pe mi e p incipalmen e manipula el á bol DOM
(Documen Objec Model) de una página web, simpli icando la mane a de in e ac ua con los documen os
HTML y maneja e en os [4],[5].
3.7.- CAPA DE PRESENTACIÓN
3.7.1.- HTML5
HTML5 es la úl ima e sión de HTML (“Hype Tex Ma kup Language”). Podemos de ini HTML como un
es ánda que si e pa a de ini la es uc u a y el con enido de una página web [8].
3.7.2.- CSS
CSS (“Cascading S yle Shee s”), en español «Hojas de es ilo en cascada», es un lenguaje de diseño
g á ico que nos pe mi e de ini y c ea la p esen ación de un documen o HTML [2]
3.7.3.- Boo s ap
Boo s ap es un F amewo k CSS y Ja aSc ip diseñado pa a la c eación de in e aces más limpias de
una mane a más ápida y cómoda. Incluye plan illas de diseño basadas en HTML y CSS con la que es
posible modi ica ipog a ías, o mula ios, bo ones, ablas, na egaciones, menús desplegables, e c [1],[3].
Una de las mayo es en ajas que apo a es el sis ema de g id o cuad ículas de Boo s ap. Se a a de un
sis ema de cuad ículas que c ea diseños de página median e el uso de a ias ilas y columnas en las que
se inse a el con enido. El amaño de la cuad ícula se adap a a medida que se edimensiona al amaño
de la en ana. También nos o ece la posibilidad de de ini el amaño de las columnas en unción del
amaño de las en anas. Es o nos pe mi e c ea un diseño adap ado a a ios disposi i os.
3.7.4.- jQue y UI
jQue y UI es una biblio eca de componen es pa a jQue y.
Es a lib e ía añade un conjun o de plug-ins, widge s y e ec os isuales que nos pe mi e ene una capa
de p esen ación in e ac i a desa ollada de mane a más ápida y sencilla. Po ejemplo, enemos la
unción so able, que u ilizamos en el p oyec o, la cual nos pe mi e o dena los elemen os de un
componen e isual, como po ejemplo una lis a. Uno de los elemen os que ambién u ilizamos en el
p oyec o es el da epicke , que nos hace apa ece un pequeño calenda io en una a iable y nos pe mi e
selecciona una echa en di e en es o ma os. Apa e de es os ejemplos iene o as muchas
uncionalidades y e ec os que no u ilizamos en el p oyec o como po ejemplo las unciones d aggable,
d oppable, esizable, que nos pe mi en, a as a , sol a y edimensiona espec i amen e [6].
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 20/75
3.7.5.- In e ac .JS
Es una lib e ía de Ja aSc ip la cual es á c eada pa a acili a la cap u a de e en os de a as a y sol a
con el a ón, eescalado y ges os mul i ác iles [12]. Su API es simple y lexible, es á uni icada pa a ges os
de pan allas ác iles y e en os de a ón. Es a ecnología es la que usamos a la ho a de mo e los obje os
de nues a aplicación.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 21/75
CAPITULO 4.- CREACIÓN DE INTERFACES DE
USUARIO
En es e pun o habla emos del desa ollo y uso de la in e az de usua io, que debido a la na u aleza del
p oyec o es una pa e muy impo an e de és e. Reco demos que nues o p oyec o consis e en c ea una
aplicación que nos pe mi a desa olla una in e az g á ica de mane a isual, en lenguaje P og ess pa a
el ERP de QAD.
4.1.- FORMULARIOS
An es de habla de los o mula ios es necesa io e las es uc u as elegidas en P og ess pa a la c eación
de in e aces isuales y sus ca ac e ís icas. Así pod emos en ende mejo los ipos de campos que hay
en los o mula ios y sus casos de uso.
4.1.1.- F ames
Un ame en P og ess se puede de ini como un panel donde se engloban las a iables a mos a . Puede
concebi se como un conjun o de a iables que se mues an en el mismo momen o, an o pa a in oduci
in o mación como pa a mos a in o mación ya gua dada.
Podemos dis ingui dos clases de ames: Un ame de en ada es una ag egación de a ias a iables
que son mos adas pa a añadi in o mación. Un ame de salida si e exclusi amen e pa a mos a la
in o mación.
Un ame puede se usado an o pa a en ada como pa a salida de da os. Sin emba go, en nues o
p oyec o conside amos a los ames de en ada como paneles pa a la in oducción de da os, es deci
pa a pan allas de man enimien o del ERP, y los ames de salida pa a pan allas de epo e de in o mación.
4.1.2.- Va iables
En P og ess enemos p incipalmen e los siguien es ipos de a iables:
• In ege : un en e o que emplea 4 by es de almacenamien o. El ango de alo es que puede
ep esen a a de -231 a 231-1.
• Cha ac e : un ca ác e o cadena de ca ac e es.
• Logical: a iable booleana con alo es ue o alse.
• Decimal: da o numé ico de has a 50 dígi os de longi ud, incluyendo 10 dígi os a la de echa del
pun o decimal.
• Da e: u ilizado pa a ep esen a echas en di e en es o ma os.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 22/75
En nues a aplicación hemos c eado un o mula io pa a la ob ención de da os del ame a c ea (como,
po ejemplo, su í ulo o sus p opiedades) y o o o mula io pa a la in o mación ela i a a las a iables del
ame.
4.1.3.- Fo mula io de F ame
En un ame puede se pueden de ini muchas ca ac e ís icas, como el colo de ondo, elegi si iene o no
bo de que englobe el ame, dónde coloca la e ique a que de ine la a iable, el amaño del ame, e c.
En nues a aplicación, noso os hemos elegido una se ie de ca ac e ís icas ijas y o as modi icables.
Las ca ac e ís icas ijas son las siguien es:
• Tamaño: Un ame puede se de inido po el núme o de columnas que puede habe en su in e io .
Cada columna es del amaño de un ca ác e , po lo que se u iliza un o ma o monoespaciado de
le a pa a man ene la p opo ción. La mayo ía de los ames en QAD son de 80 columnas po que
en sus inicios las pan allas que u ilizaban los o denado es no admi ían un amaño mayo . Hoy
en día se pe mi e ene más amaño, pe o el es ánda sigue siendo 80 columnas de ancho po
lo que dejamos es a ca ac e ís ica ija a es e alo .
• Posición de las e ique as: Las e ique as son un a ibu o de las a iables que pe mi en una
b e e desc ipción de la a iable a la que an asociadas. Es deci , si enemos una a iable
llamada “a”, le podemos pone la e ique a “Núme o de coches” y así pe mi imos al usua io que
u ilice la in e az comp ende qué da o es á modi icando, independien emen e del nomb e que
u ilice esa a iable en el código.
Pa a los ames de en ada hemos elegido que es a e ique a se posicione a la izquie da del alo
que a a mos a ya que cumple con el es ánda . O as opciones son: mos a po encima del
alo , o que no exis a.
Los ames de salida es án pensados como epo es que mues an mucha in o mación en o ma de lis a,
po lo que no hemos seleccionado la posibilidad de ajus a la posición de la e ique a en es os casos.
Cada a ibu o se ep esen a como una columna, debajo de la cual apa ece la in o mación de odas las
a iables mos adas sin epe i se la e ique a. Más adelan e e emos un ejemplo pa a cla i ica es e pun o.
Las ca ac e ís icas modi icables de un ame son:
• Nomb e: Nomb e que amos a da al ame en el código.
• Tipo: Indica si el ame es de en ada o de salida.
• Tí ulo: Al ame se le puede ag ega una desc ipción que indique pa a qué se i á el ame si así
se desea. Dejamos es a ca ac e ís ica a elección del usua io.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 23/75
2.- Fo mula io de F ame
4.1.4.- Fo mula io de Va iable
En una a iable enemos una se ie de ca ac e ís icas que el usua io de ine al c ea la:
• Nomb e: nomb e de la a iable a u iliza en el código.
• Tipo: P og ess o ece muchos más ipos a elegi que los desc i os en la sección 4.1.2.-, pe o
pa a simpli ica la c eación de las a iables nos hemos quedado con los ipos básicos: in ege ,
cha ac e , decimal, logical y da e.
• Label o e ique a: como comen ábamos an e io men e, en P og ess se pe mi e ene asociada
a una a iable un nomb e o desc ipción que se mues a en el ame como sus i u o del nomb e
de la a iable en el código. Si es a ca ac e ís ica se deja acía oma po de ec o el nomb e de la
a iable.
• Valo Inicial: Valo que que emos que enga po de ec o nues a a iable al se c eada.
• Fo ma o: el o ma o es una ca ac e ís ica que nos indica cómo se á mos ada la a iable en el
ame. En unción del ipo de a iable enemos di e en es o ma os. Po ejemplo, si la a iable es
de ipo decimal podemos elegi cuan os decimales debe mos a la a iable; si es de ipo
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 24/75
cha ac e , podemos elegi cuán os ca ac e es se isualizan El ejemplo más cla o se ía el de las
a iables ipo da e, en el que podemos mos a las echas en di e sos o ma os. Habla emos
más en de alle de los di e en es o ma os en el CAPITULO 6.-.
3.- Fo mula io de Va iable
4.2.- FRAME DE ENTRADA
Es e apa ado lo amos a dedica a desc ibi el uncionamien o y la is a del ame de en ada.
Como se ha comen ado en el pun o an e io , usa emos el ame de en ada pa a in oduci los da os con
los que que emos abaja , y con ello c ea emos una is a de man enimien o del ERP.
4.2.1.- Zonas p incipales
Una ez c eado el ame, debemos p ocede a c ea las a iables necesa ias al y como se ha indicado
en la sección 4.1.4.-. En es e apa ado podemos di e encia a g andes asgos cua o zonas den o de la
is a del ame de en ada:
• Zona 1, en la cual se c ean las a iables. Si c eamos a ias a iables se an posicionando una
debajo de la o a.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 25/75
• Zona 2 o ame, es la zona limi ada en la cual se pueden si ua las a iables cuando las
a as amos.
• Zona 3, zona en la cual podemos e un esumen de los da os de la a iable ac ualmen e
seleccionada.
• Zona 4, con oles de selección, edición y c eación de ames.
4.-Vis a del ame de en ada
4.2.2.- Posicionamien o de Va iables
Uno de los pun os cla e de es e p oyec o es la acilidad que damos al posicionamien o de las a iables.
Es as se pueden mo e sob e el ame c eado, bien sea a as ando con el a ón o bien una ez den o
del ame, mo iéndolas con las lechas del eclado. Al mo e las con el a ón es ingimos su mo ilidad
g acias a la uncionalidad de In e ac .js:
in e ac .modi ie s. es ic ({
es ic ion: documen .ge Elemen ById("inne -d opzone"),
endOnly: alse
}
),
Se ap ecian dos es icciones:
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 32/75
}
}
4.2.3.- Modi icación de a iables
Una ez c eadas las a iables podemos edi a las en caso de necesidad. En el panel de la de echa (Zona
3) podemos e los da os de la a iable seleccionada, que se á la úl ima en c ea se o la úl ima en
selecciona se.
En la pa e supe io de es e panel emos el iden i icado de la a iable seleccionada y la posición en la
que se encon a ía en el ame. Si la posición es columna 0 y ila 0, en endemos que es a a iable
únicamen e ha sido c eada y aún no se ha mo ido den o del ame. Es e da o se modi ica una ez se ha
si uado la a iable en una zona álida den o del ame.
En la pa e media de es a zona podemos e los da os de la a iable que hemos c eado: e ique a, ipo
de a iable, alo inicial y o ma o.
En la pa e in e io del panel hay dos bo ones, uno pa a modi ica la a iable y o o pa a elimina la. Si
edi amos la a iable se nos ab i á una en ana idén ica a la de c eación de a iables, en la que podemos
modi ica los da os que deseemos. Una ez gua dados es os da os la a iable se modi ica
au omá icamen e.
8.- Panel isualización de a iable
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 33/75
4.2.4.- Elemen os del F ame.
En la Zona 4 explicada al p incipio de es e capí ulo nos encon amos con odas las opciones
co espondien es al ame, an o a ni el de con igu ación como a ni el isual. Vamos a explica las
di e en es opciones de izquie da a de echa.
9.- Zona 4 ( Elemen os del F ame)
• Lis a desplegable en la cual podemos selecciona el ame en el que que emos abaja . En es a
lis a se nos mos a án odos los ames c eados en el p oyec o ac ual, an o de en ada como de
salida.
• Bo ón “Edi a F ame”. Si seleccionamos es a opción se nos mos a á una en ana con la
con igu ación del ame en el que nos encon amos. Es a in o mación se puede modi ica y los
cambios se aplica án en cuan o los acep emos. La en ana que se ab e es muy pa ecida a la
que se nos ab e al c ea F ame, explicado en pun os an e io es. La di e encia con es e, es que
aho a no podemos modi ica si el ame es de en ada o salida:
10.- Ven ana Edi a F ame
• Bo a F ame. Si seleccionamos es a opción el ame se elimina po comple o, no pudiendo
ecupe a nada de lo que eníamos c eado den o de es e ame.
• Cambia a is a Display o cambia a is a Upda e. Es e bo ón iene la uncionalidad de cambia
la is a del ame. Su ex o cambia en unción de la is a en la que nos encon emos, mos ando
el cambio hacia la is a con a ia. La is a que enemos po de ec o es la is a Upda e, en la que
se nos mues an las a iables con los campos edi ables. Si, po el con a io, deseamos que es os
campos no se puedan edi a , debe emos cambia la is a a “display”, en la que los campos dejan
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 34/75
de se edi ables. A con inuación, dejamos dos imágenes en las que se puede ap ecia la
di e encia en e ambas is as:
11.- Vis a Upda e
12.- Vis a Display
4.2.5.- Código gene ado
A con inuación, podemos e un ejemplo del código c eado en un ame de en ada. Según la igu a 11.-
Vis a Upda e
/* BEGIN VARS Au ogene a ed */
de ine a iable a 1 as in ege ini 156 o ma "->,>>>,>>9" no-undo .
de ine a iable a 2 as da e ini "12/05/2020" o ma "mm/dd/yy" no-undo .
de ine a iable a 3 as logical ini ue no-undo .
/* END VARS Au ogene a ed */
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 35/75
/* BEGIN INPUT F ame Au ogene a ed */
de ine ame 1
a 1 label "Can idad" a ow 3 column 17
a 2 label "Fecha" a ow 3 column 64
a 3 label "S ock" a ow 3 column 40
wi h side-labels i le " ame_p ueba".
/* END INPUT F ame Au ogene a ed */
4.3.- FRAME DE SALIDA
Tal como hemos comen ado, el ame de salida es un ame que se á u ilizado pa a hace lis as de
epo es de in o mación. En é minos de diseño, son mucho más sencillos que los ames de en ada.
Pa a en ende mejo es a in e az es necesa io in oduci un nue o concep o: las ablas empo ales de
P og ess.
En P og ess, exis en unas es uc u as, llamadas emp- ables, que son simila es a un s uc en C++.
Es un ipo de da o compues o que pe mi e almacena un conjun o de da os de di e en e ipo. En lenguaje
na u al lo pod íamos de ini como una súpe - a iable que engloba di e en es campos, que son a su ez
a iables.
Cuando elegimos un ame de salida, u ilizamos es e ipo de es uc u a pa a ag upa las a iables.
Ejemplo: si c eamos un ame de salida pa a los p oduc os que endemos en un almacén, pod íamos
c ea a ias a iables que co esponden a un mismo p oduc o, pe o que de inen di e en es ca ac e ís icas,
como, po ejemplo: iden i icado , can idad, p ecio uni a io y un alo booleano que nos diga si hay o no
s ock disponible en es os momen os.
En QAD nos mos a ía el esul ado de la siguien e o ma:
13.-QAD
Es po ello que, en es a in e az (14.- Ejemplo F ame de Salida), las a iables se c ean como elemen os
de una lis a. Y son in e cambiables en e sí pa a elegi el o den en el que apa ecen en el epo e.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 36/75
Pa a pe mi i al usua io a as a y sol a los elemen os de una lis a con el in de dispone los en un
de e minado o den, hemos u ilizado la unción so able de la lib e ía jQue y UI. Es a lib e ía pe mi e al
usua io o dena de mane a sencilla los elemen os isuales de una lis a de HTML y ans o ma esa
in o mación en un a ay. De es a o ma, cuando el usua io in e cambia isualmen e las posiciones
ela i as de dos a iables, es e cambio se e leja en las posiciones de dichas a iables den o del a ay.
Siguiendo con el ejemplo an e io , la c eación del ame en nues a aplicación queda ía de la siguien e
o ma:
14.- Ejemplo F ame de Salida
El código gene ado pa a es e ame es el siguien e:
/* BEGIN Tempo alTable Au ogene a ed */
de ine emp- able _ ame_ejemplo no-undo
ield a 1 as cha ac e o ma "x(20)"
ield a 2 as in ege ini 0 o ma "->,>>>,>>9"
ield a 3 as decimal ini 0.00 o ma "->,>>>,>>9.99<<<<<<<<"
ield a 4 as logical ini ue
.
/* END Tempo alTable Au ogene a ed */
/* BEGIN OUTPUT F ame Au ogene a ed */
de ine ame ame_ejemplo
a 1 label "Iden i icado "
a 2 label "Can idad (ud)"
a 3 label "P ecio Uni a io"
a 4 label "S ock Disponible"
wi h i le "P oduc os".
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 37/75
/* END OUTPUT F ame Au ogene a ed */
En es a abla empo al se pueden c ea di e en es egis os, pa a luego se mos ados con el ame
ame_ejemplo del código an e io , al como se mues a en la igu a (13.-QAD)
4.4.- VISTA DE CÓDIGO
Como sabemos, nues o obje i o es c ea código P og ess que nos pe mi a hace una in e az isual pa a
QAD, pe o de una o ma menos ediosa y mucho más ápida que si esc ibié amos el código di ec amen e.
En pa e, es o iene de i ado de que P og ess no es aba pensado en un p incipio pa a ene in e aces
isuales amigables pa a el usua io, ya que es un lenguaje concebido pa a el manejo ápido y sencillo de
g andes olúmenes de da os gua dados en el sis ema. Es po ello que hemos c eado una is a de cómo
queda ía el código P og ess gene ado en el momen o en el que lo es amos desa ollando. Así podemos
e ápidamen e cómo queda á nues o código an es de gua da lo ealmen e en un a chi o. Es a u ilidad
ayuda incluso a en ende qué consecuencias en código iene la acción que el usua io es á ealizando
isualmen e.
15.- Vis a de Código
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 38/75
CAPITULO 5.- GENERACIÓN Y ANÁLISIS
SINTÁCTICO DE CÓDIGO PROGRESS
En es e capí ulo habla emos de la con e sión de código P og ess a Ja aSc ip y ice e sa.
Como ya sabemos, nues a aplicación nos pe mi e c ea in e aces isuales de una mane a simple y
ob ene el código P og ess co espondien e. Habla emos p ime o de la es uc u a de da os, en Ja aSc ip ,
que u ilizamos pa a gua da es a in o mación y más a de de cómo se ans o ma es a es uc u a a código
P og ess.
5.1.- ESTRUCTURA DE DATOS EN JAVASCRIPT
Como elemen os p incipales en el modelo de da os de la aplicación enemos los ames y las a iables.
Cabe eco da que un ame en P og ess nos pe mi e da un o ma o isual a las a iables a la ho a de
p esen a las al usua io., es deci , nos dice cómo se e án las a iables.
Nues a es uc u a cons a de es en idades: los ames, las a iables y una clase auxilia que hemos
denominado P og ess.
5.1.1.- Clase P og ess
Es a clase es la que c eamos cuando el usua io elige c ea una nue a plan illa o al ca ga un a chi o. Es
la que gua da oda la in o mación de a iables y ames con los que es amos abajando.
Es a clase iene como a ibu os:
• idF ames: es un con ado que u ilizamos como iden i icado cuando c eamos los di e en es
ames.
• ames: es un Map de obje os F ame.
• ileName: a ibu o en el que gua damos el nomb e del a chi o en el que gua da emos el código
P og ess gene ado o en el que es á gua dado.
En cuan o a las unciones, podemos des aca las siguien es:
• addF ame: es a unción ecibe como pa áme os las ca ac e ís icas del ame, c ea un obje o de
la clase F ame con el iden i icado co espondien e y lo gua da en el Map ames. Finalmen e,
ac ualiza el con ado de ames.
• addVa oF ame: ecibe como pa áme o la in o mación de una a iable y el ame al que debe
añadi se. Busca el ame co espondien e y llama a la unción addVa iable de és e.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 39/75
• addVa oOu pu F ame: es simila a la an e io , pe o además de añadi la a iable al ame de
salida, añade la in o mación de la a iable en el a ay de posiciones. Es o se debe, a que como
hemos hablado an e io men e, un ame de salida y uno de en ada son di e en es. El ame de
salida gua da las posiciones en las que es án las a iables en un a ay, mien as que el ame
de en ada no gua da las posiciones, sino que son las a iables las que gua dan dicha
in o mación.
Aquí podemos e en de alle la clase P og ess:
class P og ess{
cons uc o (){
his.idF ames = 1;
//inicializamos ids a 1
his. ames = new Map();
//inicializamos map de ames
his. ileName = "Sin í ulo.p" //inicializamos el nomb e del a chi o
}
//LLamamos al cons uc o de la clase ame pa a c ea un nue o ame, lo
me emos en nues o a ay y ac ualizamos idF ames
addF ame(name, i le, ype){
le newF ame=new classF ame.F ame( his.idF ames,name, i le, ype);
his. ames.se ( his.idF ames,newF ame);
his.idF ames ++;
e u n his.idF ames -1;
}
addVa oF ame(idF ame, a In o){
le ame = his. ames.ge (pa seIn (idF ame));
e u n ame.addVa iable( a In o['name'], a In o[' ype'],
a In o[' o ma '], a In o['label'], a In o['ini ial'],
a In o[' am']);
}
addVa oF ameRead(idF ame, a In o){
le ame = his. ames.ge (pa seIn (idF ame));
/* console.log(" a iable que me llega: ", a In o); */
e u n ame.addVa iableRead( a In o['name'], a In o[' ype'],
a In o[' o ma '], a In o['label'], a In o['ini ial'],
a In o['col'], a In o[' o w'], a In o['mo ido']);
}
addVa oOu pu F ame(idF ame, a In o){
le ame = his. ames.ge (pa seIn (idF ame));
le id = ame.addVa iable( a In o['name'], a In o[' ype'],
a In o[' o ma '], a In o['label'], a In o['ini ial'],0);
ame.addVa iableOu pu (id);
e u n id;
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 40/75
}
ge F ames(){
e u n his. ames;
}
ge F ame(idF ame){
e u n his. ames.ge (pa seIn (idF ame));
}
ge FileName(){
e u n his. ileName;
}
se FileName( ileName){
his. ileName = ileName;
}
dele eF ame(idF ame){
his. ames.dele e(pa seIn (idF ame));
}
dele eVa iable(idF ame, idVa ){
his. ames.ge (pa seIn (idF ame)).dele eVa iable(idVa );
}
edi F ame(idF ame, newDa a){
le ame = his. ames.ge (pa seIn (idF ame));
ame.edi Da a(newDa a);
}
ge Va iableByKey(idF ame,keyVa ){
le ame= his. ames.ge (pa seIn (idF ame));
e u n ame.ge Va iable(keyVa );
}
}
5.1.2.- Clase F ame
U ilizamos es a clase pa a gua da la in o mación de cada ame, con sus ca ac e ís icas y las a iables
que mos a á.
Sus a ibu os son los siguien es:
• idVa : con ado que u iliza emos de iden i icado pa a las a iables asignadas a es e ame.
• id: el iden i icado con el que localiza a es e ame en la clase P og ess. Viene inicializado po
es a úl ima clase al c ea un obje o de clase F ame.
• name: nomb e del ame con el que se á iden i icado en el código P og ess.
• i le: ca ac e ís ica i le que u iliza emos en el código P og ess.
• ype: a ibu o que nos indica si el ame es de en ada o de salida.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 41/75
• a s: Map que con end á las a iables asignadas a es e ame.
• iew: a la ho a de isualiza el ame en la aplicación, nos indica si se es á isualizando en modo
upda e o en modo display. Es o es á explicado con más de alle en el pun o 4.2.4.-. U ilizamos
es a ca ac e ís ica pa a i cambiando de una is a a o a.
• a sOu F ame: es e a ibu o es sólo u ilizado po los ames de salida. Se a a de un a ay de
iden i icado es de a iables asignadas a es e ame. Es e a ay se o dena en unción de la
posición en la que que amos que se ean las a iables en la salida. Pa a en ende mejo es a
ca ac e ís ica e isa el pun o 4.3.-.
El código de es a clase es el siguien e:
class F ame {
/*Type = 0 en ada
= 1 salida
*/
cons uc o (id,name, i le, ype){
his.idVa =1;
// inicializamos ids a iables
his.id=id;
// mi id me iene dado de la clase P og ess
his.name=name;
his. i le= i le;
i ( ype == "0")
his. ype="inpu ";
i ( ype == "1")
his. ype="ou pu ";
his. a s= new Map();
//inicializamos map de a iables
his. iew = "upda e";
his. a sOu F ame = new A ay(0);
//inicializamos a ay pa a a iables de salida
}
addVa iable(name, ype, o ma , label, ini ial, am){
le newVa = new classVa .Va iable( his.idVa ,name, ype, o ma ,
label, ini ial, am);
his. a s.se ( his.idVa ,newVa );
his.idVa ++;
e u n his.idVa -1;
}
addVa iableRead(name, ype, o ma , label, ini ial,col, ow,mo ido){
le newVa = new classVa .Va iable( his.idVa ,name, ype, o ma ,
label, ini ial);
i (mo ido==1){
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 48/75
• /* BEGIN Tempo alTable Au ogene a ed */ y /* END Tempo alTable
Au ogene a ed */ que son colocadas en cada de inición de abla empo al que es u ilizada
en un ame de salida.
• /* BEGIN INPUT F ame Au ogene a ed */ y /* END INPUT F ame Au ogene a ed
*/ nos ma can los ames de en ada.
• /* BEGIN OUTPUT F ame Au ogene a ed */ y /* END OUTPUT F ame Au ogene a ed
*/ nos señalan cada ame de salida.
Con es as ma cas sabemos qué pa e de código manda a cada uno de los analizado es sin ác icos que
u ilizamos pa a ob ene los da os del código como se comen a en la p óxima sección.
5.3.- ANALIZADOR SINTÁCTICO DE PROGRESS
Una de las uncionalidades de la aplicación es pode lee código P og ess y ca ga los ames y a iables
co espondien es en nues a aplicación pa a se modi icados.
Una ez en endida la ep esen ación de las es uc u as en los di e en es lenguajes podemos me e nos
en p o undidad en el análisis de código P og ess.
Como se menciona en el CAPITULO 3.- u ilizamos el analizado sin ác ico PEG.js.
5.3.1.- G amá ica y Semán ica de PEG.js
Una g amá ica en PEG.js consis e en una se ie de eglas. Cada egla iene un nomb e que iden i ica esa
egla y una exp esión de análisis que de ine el pa ón que debe cumpli la en ada.
También se puede in oduci código en Ja aSc ip pa a de ini acciones cuando la en ada cumple el
pa ón, es deci , al pasa la egla sa is ac o iamen e.
Una egla puede con ene ambién una e ique a que puede se usada pa a la ges ión de e o es. El
análisis comienza en la p ime a egla, que ambién es llamada la egla de inicio. La egla de inicio puede
se p ecedida po un inicializado , es o no es más que código Ja aSc ip en e lla es “{” “}”. Es e código
se ejecu a an es de que el gene ado de análisis comience. Todas las a iables y unciones de inidas en
el inicializado son accesibles en las eglas.
Tipos de exp esiones de análisis:
• "li e al" o 'li e al': Comp ueba que los siguien es ca ac e es de la en ada se ajus an
exac amen e al s ing indicado y lo de uel e. Añadiendo i a la de echa del li e al hacemos el
ajus e insensible a mayúsculas.
• . : Ajus a exac amen e con un ca ác e y lo de uel e como s ing.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 49/75
• [cha ac e s]: Ajus a la en ada con un ca ác e del conjun o dado y lo de uel e como s ing.
La lis a de ca ac e es puede con ene ambién angos (po ejemplo, [a-z] signi ica “ odas las
le as en minúscula”). Pone delan e del ca ác e “^” niega la condición (ej: [^a-z] signi ica “ odos
los ca ac e es que no sean le as minúsculas”). Añadiendo i a la de echa lo hacemos insensible
a mayúsculas.
• egla: Ajus a la en ada con el análisis de una exp esión o una egla ecu si amen e y de uel e
su esul ado.
• ( exp esión ): Ajus a con una subexp esión y de uel e el esul ado.
• exp esión *: Ajus a con ce o o más epe iciones de la exp esión y de uel e sus esul ados en
un a ay.
• exp esión +: Ajus a con una o más epe iciones de la exp esión y de uel e su esul ado en un
a ay.
• exp esión ?: In en a ajus a con la exp esión dada. Si lo hace con éxi o, de uel e el esul ado,
en o o caso, de uel e null.
• & exp esión : In en a ajus a la en ada con la exp esión dada. Si lo hace con éxi o, de uel e
unde ined y no consume ninguna en ada, en o o caso, conside a la e i icación allida.
• ! exp esión : In en a ajus a con la exp esión dada. Si alla de uel e unde ined y no consume
ninguna en ada.
• { p edicado}: El p edicado es una pa e de código Ja aSc ip que se ejecu a den o de una
unción.
• $ exp esión: Ajus a con la exp esión dada y si el ajus e iene éxi o de uel e el ex o pa seado
como esul ado.
• e ique a: exp esión: De uel e el esul ado bajo la e ique a especi icada. La e ique a debe se
un iden i icado de Ja aSc ip .
• exp esión1 exp esión2... exp esiónN: Ajus a con una secuencia de exp esiones y de uel e el
esul ado en un a ay.
• exp esión{ acción}: Ajus a la en ada con la exp esión dada, si el ajus e iene éxi o, ejecu a la
acción.
• exp esión1 / exp esión2 / ... / exp esiónN: In en a ajus a con la p ime a exp esión. Si alla,
sigue con la siguien e y así sucesi amen e.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 50/75
5.3.2.- Reglas u ilizadas
A con inuación, e emos un ejemplo de uno de los analizado es sin ác icos que hemos u ilizado en el
p oyec o. Hemos ealizado es analizado es di e en es. Uno pa a ames, o o pa a emp- ables y o o
pa a las a iables. En es e ejemplo emos como analizamos sin ác icamen e las a iables:
a iables = a iable+
a iable = _ de ineVa __ line:line _ noUndo _ "."_{
e u n { a s: line}
}
de ineVa = "de ine a iable"
noUndo = "no-undo"
line = : a _ opciones:Opcion+ _{
e u n {name: , opciones: opciones}
}
a = !( ese edWo ds __) ("_" / [a-zA-Z0-9] / "-")* {
e u n ex ()
}
ese edWo ds = " ield" / de Type / " emp- able"
/ noUndo / "as " / "ini " / " o ma "
Opcion = _ opcion:( ype/OpcionLabel/OpcionIni /OpcionFo ma ) {
e u n opcion
}
ype = "as" __ :$de Type {
e u n { ype:" ype", alue: }
}
de Type = "in ege " / "cha ac e " / "da e" / "logical" / "decimal"
OpcionLabel = "label" __ cadena:Li e alCadena {
e u n { ype: "label", label: cadena }
}
OpcionIni = "ini " __ esul :(Li e alCadena/In ege ) {
e u n { ype: "ini ", alue: esul }
}
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 51/75
OpcionFo ma = " o ma " __ cadena:Li e alCadena {
e u n { ype: " o ma ", o ma : cadena }
}
Li e alCadena = " "" ex o:([^ "]*) " "" {
e u n ex o.join("")
}
In ege "in ege "
= _ [0-9]+ { e u n pa seIn ( ex (), 10); }
_ "whi espace"
= [ n ]*
__ "whi espace_manda o y"
= [ n ]+
A con inuación, amos a analiza las eglas u ilizadas. Pa a hace lo más cómodo ob iamos las eglas “_”
y “__” que pe mi en los espacios y sal os de línea. Como p ime a egla enemos “ a iables”, que
comp ueba que puede habe una o más apa iciones de la egla “ a iable”. La egla “ a iable” es una
sucesión de eglas, po lo que debe cumpli cada una de ellas. Den o de és a, enemos la egla
de ineVa , la egla noUndo y la exp esión “.”, odas ellas comp ueban un li e al. Después nos
encon amos con la egla line. Es a egla cons a de la egla a que comp ueba que el iden i icado de
una a iable sea cualquie ca ác e . Aquí enemos que ene en cuen a la egla ese edWo ds que
comp ueba que el iden i icado no sea una palab a ese ada. También enemos la egla Opciones, en
es a egla comp obamos si apa ecen cada una de las ca ac e ís icas que espe amos en una a iable y
de uel e el esul ado como ex o con la ca ac e ís ica co espondien e.
Como ejemplo de una de las ca ac e ís icas end íamos label. Con la egla OpcionLabel comp obamos
el li e al label y el li e al que lo acompañe en e comillas. De es a o ma, de ol emos un obje o con dos
campos: el campo ype es igual label y el campo label es igual al ex o en e comillas que lo acompañe.
De es a o ma conseguimos ene una es uc u a de da os que nos de uel e la in o mación en un obje o
Ja aSc ip que pos e io men e u iliza emos a la ho a de ab i el a chi o.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 52/75
CAPITULO 6.- OTRAS FUNCIONALIDADES
Pa a pode consegui un co ec o uncionamien o de oda la aplicación hemos enido que se muy
igu osos con cie os pa áme os, como, po ejemplo, la alidación de da os.
Una g an debilidad de segu idad de una aplicación web es la al a de alidación de da os asociada a la
en ada de da os po pa e del clien e. Nunca debemos con ia en los da os que in oduce el clien e, sino
que enemos que ga an iza que la aplicación sea obus a en e a la ob ención de da os po pa e del
usua io.
La alidación de da os es muy impo an e pa a que no haya p oblemas con la uncionalidad de nues o
p oyec o. En los siguien es pun os amos a comen a como se ha desa ollado el con ol de los da os de
en ada.
6.1.- VALIDACIÓN DE DATOS
Es e pun o lo debemos a a desde dos pun os de is a di e en es. En p ime luga , amos a comen a
la alidación de da os desde la pa e de c eación de código po el usua io, y la segunda pa e nos amos
a cen a en la alidación de da os a la ho a de ca ga un a chi o de P og ess.
Toda alidación de da os se ejecu a en la pa e del se ido . Como comen amos an es, nues a aplicación
es á c eada con Ja aSc ip , pe o si alidamos los da os en la pa e clien e pod íamos segui es ando
expues os a un a aque po pa e del usua io, ya que se puede usa so wa e pa a la desac i ación de
es a alidación.
6.1.1.- Validación de da os en la c eación de código.
Comenzamos comen ando las alidaciones de da os que ealizamos a la ho a de gene a código con la
aplicación.
• Validación de amaño: Tenemos que con ola que el amaño en e el label y los o ma os
in oducidos no supe en las 80 columnas del F ame
• Validación de nomb e de F ame: No pe mi imos que se puedan c ea dos ames con el mismo
nomb e, además de no pode c ea un F ame con nomb e acío. Es o lo conseguimos
eco iendo oda la clase del p oyec o en el que es amos abajando y e isamos que no exis a
una clase F ame que con enga el mismo nomb e. A la ho a de edi a dicho F ame ejecu amos el
código igual que el que se mues a a con inuación, pe o con la di e encia que comp obamos si
el nomb e ha cambiado:
expo s. alida eNewF ame = unc ion alida eNewF ame( ameIn o, callback){
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 53/75
le encon ado = alse;
i ( ameIn o["nomb e"] == ""){
callback("Nomb e de ame acío, debe ellena es e campo");
}
else{
nue aPlan illa.ge F ames(). o Each( unc ion (elemF, indexF, a ay) {
i (elemF.ge Nomb e() == ameIn o["nomb e"]){
encon ado = ue;
}
}
);
i (encon ado){
callback("Nomb e de ame ya exis en e, elija o o");
}
else
callback("Ok");
}
}
Di e encia a la ho a de edi a el F ame.
i ( ameIn oNew["name"] !== ameIn oOld["name"]){
//Si ha cambiado el nomb e, comp uebo que no sea uno exis en e
nue aPlan illa.ge F ames(). o Each( unc ion (elemF, indexF, a ay){
i (elemF.ge Nomb e() == ameIn oNew["name"]){
encon ado = ue;
}
}
);
}
i (encon ado){
callback("Nomb e de ame ya exis en e, elija o o");
}
else
callback("Ok");
• Validación en la c eación de a iables: cuando se c ean a iables no sólo debemos
comp oba el nomb e, sino que debemos comp oba que odos los o ma os y campos
in oducidos coincidan en e sí con el o ma o de inido. Po lo an o, la alidación de da os de
a iables podemos sepa a la en dos apa ados di e en es:
o Validación del nomb e: Como en el paso an e io con el F ame, e isamos que la
a iable no se encuen e c eada en odo el p oyec o, es deci , no puede exis i la a iable
en dos ames di e en es.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 54/75
nue aPlan illa.ge F ame(idF ame).ge Va iables(). o Each( unc ion (elemF, index
F, a ay) {
i (elemF.ge Nomb e() == a In o["name"]){
alidaciones["nomb e"]=" epe ido"
}
}
);
o Validación y consolidación de o ma os: Con los o ma os debemos se más
cau elosos pa a que ealmen e los da os que se in oduzcan co espondan con los
alo es que se pueden pone .
▪ En e os: comp obamos que el alo in oducido es un núme o. Si es co ec o
el amaño del di de la a iable co esponde á con el alo mayo en e 8 y la
longi ud del núme o in oducido.
i ( a In o[" ype"]=="in ege "){
//in ege
alidaciones["ini"]=!isNaN( a In o["ini ial"]);
i ( alidaciones["ini"]){
a In o[" am"]=Ma h.max(8, a In o["ini ial"].leng h);
a In o["ini ial"]=pa seIn ( a In o["ini ial"]). oFixed();
}
}
▪ Fecha: La echa se puede in oduci con a ios o ma os di e en es como:
• dd/mm/yyyy - mm/dd/yyyy - yyyy/mm/dd
Además, se puede in oduci la echa de o ma manual, o seleccionando en un
calenda io. Si la echa es manual pod ía habe p oblemas de consis encia de
da os, como días que no exis en en cie o mes, po ejemplo. Aun así, siemp e
comp obamos que la echa sea co ec a y álida, po lo que hemos c eado una
unción pa a comp oba es os da os:
unc ion isValidDa e(da eS ing, o ma ){
a pa s = da eS ing.spli ("/");
i ( o ma =="dd/mm/yyyy"){
i (!/^ d{1,2} / d{1,2} / d{4}$/. es (da eS ing) )
e u n alse;
a day = pa seIn (pa s[0], 10);
a mon h = pa seIn (pa s[1], 10);
a yea = pa seIn (pa s[2], 10);
}else i ( o ma =="mm/dd/yyyy"){
i (!/^ d{1,2} / d{1,2} / d{4}$/. es (da eS ing) )
e u n alse;
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 55/75
a day = pa seIn (pa s[1], 10);
a mon h = pa seIn (pa s[0], 10);
a yea = pa seIn (pa s[2], 10);
}else i ( o ma =="yyyy/mm/dd"){
i (!/^ d{4} / d{1,2} / d{1,2}$/. es (da eS ing))
e u n alse;
a day = pa seIn (pa s[2], 10);
a mon h = pa seIn (pa s[1], 10);
a yea = pa seIn (pa s[0], 10);
}else
e u n alse;
// C eamos angos pa a años y meses
i (yea < 1000 || yea > 3000 || mon h == 0 || mon h > 12)
e u n alse;
a mon hLeng h = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
// Ajus amos años bisises os
i (yea % 400 == 0 || (yea % 100 != 0 && yea % 4 == 0))
mon hLeng h[1] = 29;
// Comp obamos el día con el mes
e u n day > 0 && day <= mon hLeng h[mon h - 1];
};
▪ Decimales: Cuando c eamos una a iable de ipo decimal debemos comp oba
que la pa e decimal obliga o ia sea un núme o en e o mayo que 0 y el alo
inicial sea un núme o en e o o decimal. Si es e núme o es decimal y se
in oducen más decimales de los que hemos indicado en la “pa e decimal
obliga o ia” el núme o se edondea a los decimales que hemos indicado.
i ( a In o[" ype"]=="decimal"){
//decimal
le ini ial=!isNaN( a In o["ini ial"]);
le decimal=!isNaN( a In o["decimal"]);
i (ini ial && decimal){
i (pa seIn (decimal)<=0){
a In o["decimal"]=1;
}
else{
a In o["decimal"]=pa seIn ( a In o["decimal"]);
}
a In o["ini ial"]=pa seFloa ( a In o["ini ial"]). oFixed(pa seIn (
a In o["decimal"]));
a In o[" o ma "]=ge Fo ma Decimal(pa seIn ( a In o["decimal"]));
a In o[" am"]= a In o["ini ial"]. oS ing().leng h;
}
else i (ini ial== alse && decimal){
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 56/75
alidaciones["ini"]="decimalIni ial";
}
else i (ini ial== alse && decimal== alse){
alidaciones["ini"]="ini&decimal";
}
else{
alidaciones["ini"]="decimal"
}
}
▪ Ca ac e es: En es e caso sólo e i icamos que el o ma o, es deci la longi ud,
sea un o ma o álido, un núme o. Si es á acío o es 0 es e o ma o se c ea con
alo X(8). Una ez que comp obamos que es un o ma o álido, c eamos el
o ma o pa a P ogess de la o ma X( nº ca ac e es ).
i ( a In o[" ype"]=="cha ac e "){
i (!isNaN( a In o[" o ma "])){
i (pa seIn ( a In o[" o ma "])<=0){
a In o[" o ma "]='x(8)';
}
else{
a In o[" am"]=pa seIn ( a In o[" o ma "]);
a In o[" o ma "]='x('+pa seIn ( a In o[" o ma "])+')';
}
}
else alidaciones["ini"]="cha ac e ";
}
6.1.2.- Validación de da os en la ca ga de a chi o.
A la ho a de ca ga un a chi o de P og ess, lo analizamos a a és del analizado sin ác ico como
explicamos en la sección 5.3.-Analizado sin ác ico de P og ess, con lo que ob enemos los da os
es uc u ados en un o ma o JSON, en el que podemos di e encia es ipos de da os:
• Da os de las ‘ emp- ables’: en es os da os ecogemos las a iables que se han inicializado pa a
pode c ea los ames de salida.
• Da os de las a iables: almacenamos las de iniciones de las a iables de los ames de en ada.
• Da os de los ames: se ecoge oda la in o mación de los ames c eados, además de sus
a iables co espondien es.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 57/75
Una ez enemos odos los da os es uc u ados es la ho a de a a los pa a pode con e i ese código a
las is as de nues o p oyec o. Cabe des aca que la alidación de da os es muy pa ecida que la
comen ada an e io men e incluso llegamos a u iliza las mismas unciones:
• Comenzamos eco iendo la es uc u a de da os de los ames. Po cada ame que nos
encon amos comp obamos sus da os básicos: nomb e, ipo y í ulo.
• Con inuamos con el a amien o de las a iables que con iene cada ame. Pa a es o es
necesa io sabe el ipo de ame, ya que si es de en ada o de salida es e a amien o es di e en e.
o F ame de En ada: como hemos comen ado an e io men e, es os da os es án di ididos
en la pa e de de inición de a iables en la cual nos encon amos con el ipo, o ma o y
alo inicial (es os da os se encuen an en la es uc u a de da os de a iables), y po o a
pa e enemos la label y la posición en el ame (es os da os se encuen an en los da os
de los ames).
Reco emos es as es uc u as e inicializamos o co egimos cie os alo es que nos
amos encon ando. Po ejemplo, cuando el alo de la a iable no coincide con el
o ma o de la inicialización. Más adelan e comen amos la lis a de alo es co egidos que
son compa idos con los ames de salida.
o F ame de Salida: es os da os se encuen an di ididos en dos pa es. Una de ellas es la
de inición de las a iables en la es uc u a de las emp- ables y la o a se encuen a
en la es uc u a de los ames.
• Lis a de alo es co egidos en los ames:
o In ege : si el alo de la a iable no es un núme o lo inicializamos a 0. Además, en
cualquie caso, le aplicamos el o ma o indicado en el iche o P og ess.
o Decimal: si al lee el documen o la a iable ipo decimal no con iene o ma o ec i icamos
el alo de la pa e obliga o ia decimal a 1. De no se acío a amos el o ma o pa a
sabe cuán os decimales son necesa ios. Además, al igual que con los In ege , si el alo
inicial no es un núme o lo inicializamos a 0.
o Cha ac e : ecogemos el alo del o ma o pa a sabe el amaño de la a iable.
o Da e: comp obamos que la echa co ec a al igual que en la sección 6.1.1.-
A con inuación, se puede obse a el agmen o de código que ealiza es a co ección de alo es:
unc ion p epa aDa os( a In o){
i ( a In o[" ype"]=="in ege "){
i ( isNaN(pa seIn ( a In o["ini ial"])))
a In o["ini ial"]=0;
else
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 64/75
7.3.2.- E ec os isuales.
Se pod ían gene a di e sos e ec os isuales a la ho a de a as a a iables, como, po ejemplo, ma ca
las a iables seleccionadas, o pode selecciona a ias a iables y mo e las a la ez.
7.3.3.- Alineaciones po de ec o.
O a ampliación in e esan e se ía ag ega di e en es bo ones pa a alinea odas las a iables de un
mismo modo. Po ejemplo, que se coloquen odas a la izquie da, a la de echa o cen adas.
7.3.4.- Añadi ejilla
Se pod ía añadi un e ec o de ejillas pa a e di e enciadas las ilas y columnas en el ame, pa a acili a
su alineación.
7.3.5.- O dena isualización de ames.
Se puede ag ega la uncionalidad de o dena el o den en el que que emos que se ayan mos ando los
ames en el ERP.
7.3.6.- Amplia ca ac e ís icas del ame.
Como hemos comen ado, hemos elegido una se ie de ca ac e ís icas muy conc e as con las que
pe sonaliza el ame, pe o hay muchas más posibilidades, como pe mi i cambia colo de ondo, la
anspa encia del bo de, la colocación de las e ique as de cada a iable, e c. Una ampliación in e esan e
se ía ene en cuen a algunas de es as ca ac e ís icas.
7.3.7.- Ampliación de lec u a de documen os.
Nos hemos cen ado en pode lee un documen o P og ess con las a iables y o ma os que hemos
c eado en el p oyec o. Un pun o muy ue e como ampliación se ía que ué amos capaces de pode lee
un código P og ess bas an e más comple o, además de pode hace una e isión po si hubie a
p oblemas con es a nue a lec u a.
7.3.8.- Vis a simulada del ame de salida.
Como hemos comen ado en el apa ado 4.3.- los ames de salida se isualizan como columnas con
in o mación ya que es án pensados pa a hace epo es. Pa a simpli ica la c eación de es os ames en
la aplicación, noso os c eamos una lis a en la que se mues a el o den en el que apa ece án a la ho a
de se mos adas. Pod íamos añadi una uncionalidad pa a que el usua io pudie a isualiza cómo
queda ía ealmen e la ep esen ación de es e ame en el ERP.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 65/75
CAPITULO 8.- CONCLUSIONS AND FUTURE WORK
Th oughou he de elopmen o ou p ojec we ha e encoun e ed di icul ies, which we ha e add essed
as well as we could, bu inally eaching he expec ed esul . We ha e also achie ed a de elopmen
b oade han he one ini ially planned.
In his sec ion we a e going o ocus on he p oblems encoun e ed and explain o wha ex en he
objec i es o he p ojec ha e been mee . in he las sec ion we shall alk abou he ex ensions ha can
be made in he u u e.
8.1.- ACHIEVEMENT OF GOALS
As we ha e commen ed in sec ion 2.2.- a he beginning o his p ojec , we se some accep able objec i es
o be able o inish i in he scheduled ime. A his poin we will summa ize he main objec i e and he
seconda y ones.
Build an applica ion o c ea e inpu ames o P og ess. This was he main objec i e o he p ojec :
o c ea e an applica ion which would allow us o c ea e a P og ess g aphical use in e ace simply by
d agging he objec s we wan on a ame. This objec i e has been me , as we ha e de eloped an
applica ion wi h which we c ea e a ame and a iable s uc u e.
This is he key poin o he p ojec , in which we could summa ize all he o he objec i es, bu we will di ide
hem in o h ee o he pa s.
• C ea ion o g aphical use in e ace: we can conside his poin he mos impo an o he
p ojec . We a e able o c ea e a iables and we a e able o in e ac wi h hem wi h ges u es and
mo emen s. We ha e c ea ed an applica ion wi h which he end use can eel e y com o able
when mo ing and placing he c ea ed a iables wi hin a panel ha has p e iously been gene a ed
in a ew simple s eps.
The use can in e ac isually wi h he a iables, he use can see in eal ime he P og ess code
ha is being gene a ed wi h each mo emen o c ea ion o ames o a iables.
• Code impo : we wan ed o ensu e ha once he code was c ea ed wi h ou applica ion we we e
able o impo i again. This poin has been achie ed. In addi ion, i he use con inues c ea ing
code wi h he same guidelines ha we use in ou applica ion, he code could be loaded in o he
applica ion success ully.
A he momen i is no possible o load a P og ess ile wi h di e en labels han he ones we deal
wi h in he p ojec . The P og ess language is oo b oad o deal wi h in a i s phase, so we discuss
his poin la e in sec ion.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 66/75
• Da a alida ion: his is one o he mos complex poin s o his p ojec . The da a p ocessing as
we discussed in sec ion 6.1.-was qui e complex. We can p ocess da a ha use en e s h ough
ou o ms and con ol he e o s ha we ind when code is impo ed om an inpu ile.
8.2.- DIFFICULTIES ENCOUNTERED
The goals o he p ojec we e di icul o achie e due o he lack o knowledge o P og ess language by
one o he eam membe s and he lack o knowledge o some o he ools used.
The i s p oblem we encoun e ed was how o de elop a desk op applica ion using web de elopmen ools.
This was one o ou main objec i es, which was esol ed ai ly quickly as soon as we had a mee ing wi h
he p ojec di ec o , Manuel. He p esen ed us se e al op ions o de elop ou applica ion as we wan ed.
Once he echnologies and he p oblem app oach had been decided, we s a ed wi h he de elopmen
i sel . When de eloping we ha e encoun e ed he p oblems ha we discuss below:
• How o enable d ag and d op unc ionali y? This was one o he main p oblems we had. Once
we s a ed o in es iga e on his opic, we ound a ai ly easy o use lib a y, so we decided o use
In e ac .JS and no na i e code.
• Si ua ion o he a iables once mo ed. When we c ea ed he a iables and d agged hem, he
gap ha his a iable occupied s ill was shown in he bo ommos pane because du ing he d ag
he co esponding ‘di ’ objec did no eally mo e. We ound a solu ion by cloning his objec and
mo ing i o a highe sec ion. Also, his way we could di e en ia e he a iables ha we had mo ed
om hose ha we had no . This p ocess is explained in de ail in sec ion 4.2.1.-
• Calcula e dis ances om he o igin o he a iable. In ou ini ial es s wi h In e ac .JS we did
no know how o ge he dis ance ha he a iable had been mo ed wi h espec o i s ini ial
posi ion. Reading he documen a ion, we ind he solu ion o ou p oblems. Once we had hese
dis ances we had o de elop on pape how a a iable mo ed and calcula e i s new coo dina es
o be able o sol e which ow and which column i co esponds o. We ha e de ailed his poin in
he sec ion 4.2.2.-
• Le e i o size. We had a p oblem wi h he le e s o he a iables, since each one occupied a
di e en amoun o pixels. We needed a ype ace in which all o i s cha ac e s ook up exac ly he
same amoun o ho izon al space. We ocus on he use o monospaced le e s, so we decided o
use "Cou ie New Monospace".
• C ea ion o complemen a y windows. A he beginning o he p ojec we encoun e ed he
p oblem o eques ing da a om he use , so we decided o c ea e complemen a y windows o
his p oposal. We an in o a lo o p oblems when wo king wi h web echnologies, as i in ol ed
spending a g ea deal o ime c ea ing se ices ha could communica e wi h he Elec on.JS main
p ocess, whe e he applica ion was unning. So, we decided o use modal windows, which a e
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 67/75
dialog boxes ha appea on he main page, blocking he es o he in e ace in o de o ocus on
his pa icula ac ion.
• Con ol di sizes o i he o ma . Once we gene a ed he di s o he a iables, hey occupied
a whole line, so we had o adjus hem o sol e p oblems when d agging o mo ing he a iables
so ha hey could be placed in he ame co ec ly.
• How o ep esen he ou pu ames so hey a e easily edi able. As we ha e commen ed, he
ou pu ames a e epo s o in o ma ion in columns. To ep esen hem in ou applica ion we
inally choose a lis wi h he a iables o de ed in he o de in which he columns would be
displayed. In his way, he edi ing and iewing is much mo e com o able.
8.3.- FUTURE WORK
In his sec ion we will discuss he possible imp o emen s o ex ensions ha could be made. We will ocus
exclusi ely on wha we belie e could be done in he sho e m.
8.3.1.- Type ex ension
We ha e mainly ocused on a se ies o ypes ha a e he mos common, bu one poin ha could be
ex ended is o inco po a e mo e da a ypes o he c ea ed a iables, such as: da e ime, ecid,
in 64, e c. You can also de ine he ype o a a iable in P og ess h ough a ield in a able in a da abase,
so i would also be an ex ension o conside .
8.3.2.- Visual e ec s
Va ious isual e ec s could be gene a ed when d agging a iables, such as ma king selec ed a iables,
o being able o selec se e al a iables and mo e hem a he same ime.
8.3.3.- De aul alignmen s
Ano he in e es ing ex ension would be o add di e en bu ons o align all he a iables in he same way.
Fo example, hey can be aligned o he le , igh , o cen e ed.
8.3.4.- Add g id
A g id e ec could be added o see he ows and columns in he ame di e en ia ed, o acili a e hei
alignmen .
8.3.5.- O de display o ames
We can add he unc ionali y o speci ying he o de in which we wan he ames o be displayed in he
ERP.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 68/75
8.3.6.- Expand cha ac e is ics o he ame
As we ha e commen ed, we ha e chosen some speci ic p ope ies o cus omize he ame, bu he e a e
many o he s, such as he backg ound colo , he anspa ency o he bo de o he placemen o he labels
o each a iable. An in e es ing ex ension would be o ake in o accoun some o hese p ope ies.
8.3.7.- Ex ension o documen eading
We ha e ocused on being able o ead a P og ess documen wi h he a iables and o ma s ha we ha e
c ea ed in he p ojec . An ex ension could be o be able o ead a much mo e comple e P og ess code, in
addi ion o being able o do a e iew in case he e we e issues wi h his new eading p ocess.
8.3.8.- Simula ed iew o he ou pu ame
As we ha e commen ed in sec ion 4.3.- he ou pu ames a e isualized as columns wi h in o ma ion,
since hey a e in ended o make epo s. To simpli y he c ea ion o hese ames in he applica ion, we
c ea ed a lis showing he o de in which hey will appea when hey a e displayed. We could add a
unc ionali y o isualize he ep esen a ion o how his ame would ac ually look in he ERP.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 69/75
CAPITULO 9.- CONTRIBUCIONES DE CADA
PARTICIPANTE
9.1.- CONTRIBUCIÓN RICARDO CABALLERO SÁNCHEZ
• P opues a de abajo.
Como hemos comen ado en la in oducción, la p opues a de es e p oyec o nace al ene un
p oblema con el lenguaje nue o que es aba u ilizando en el abajo, P og ess.
En un p incipio omé de e e encia Ne beans, p og ama que había u ilizado en cu sos an e io es
en la ca e a, como en la asigna u a Modelado de So wa e en la que implemen amos
aplicaciones de esc i o io con Ja a. Pa iendo de es a base, comencé a in es iga un poco más
sob e las in e aces en P og ess, qué se podía hace y qué no, ya que las in e aces que solíamos
c ea en el abajo e an bas an e simples, pe o que ía sabe has a qué pun o se podía llega .
Después hablé con mi je e, ya que él iene mucha más expe iencia con el lenguaje y sabe de las
en ajas y las ca encias de és e. Hicimos unos boce os de cómo pod ía se la in e az pa a que
uese cómoda de u iliza , a la ez que simple y ambién de las uncionalidades que es ábamos
buscando. La mayo de es as uncionalidades e a u iliza la aplicación pa a c ea pan allas de
man enimien o, lo que llamamos en el abajo ames de en ada. Es as pan allas son bas an e
u ilizadas en un ERP y nos pe mi en accede a cie os da os e i modi icándolos. Po ejemplo:
una pan alla de man enimien o de ó denes de en as es á compues a de muchos campos que
se an ellenando pa a hace la en a. Tenemos da os en la cabece a, como echa e ec i a,
clien e al que a di igida, da os sob e impues os, e c. Después en cada línea enemos el p oduc o,
la can idad, el p ecio, descuen os y o as ca ac e ís icas. Como emos, son muchos da os y se
an p esen ando en dis in os ames pa a que el usua io aya ellenando los da os de o ma
cómoda o que se ellenen po de ec o en base a o os da os in oducidos an e io men e.
P og ama es as pan allas en P og ess es muy edioso. Al e es e p oblema pensé que
pod íamos apo a una solución a pa i de un T abajo de Fin de G ado y así hace un p oyec o
que sea ú il y que no sea simplemen e un p oyec o con el que cumpli con los c édi os, sin
mo i ación y sin un p opósi o eal. Po es a azón, opino que nues o p oyec o iene un g an alo
al es a basado en un p oblema eal y al esol e lo de una mane a e icien e.
• Es udio de he amien as y ecnologías.
Al ene una idea de la in e az que que íamos cons ui nos pusimos a in es iga sob e lib e ías
de Ja aSc ip que nos pe mi ie an a as a y sol a elemen os en la pan alla. Encon é una
lib e ía, jQue y UI, que inalmen e desca amos pa a es e p opósi o pe o que u ilizamos pa a
mos a un calenda io a la ho a de elegi el alo inicial en a iables de ipo echa. De es a misma
lib e ía ambién u ilizamos la unción so able en los ames de salida.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 70/75
También es u e in es igando el uso de o os lenguajes en luga de Ja aSc ip , como TypeSc ip .
La pa e que más iempo de es udio me lle ó ue el uso de PEG.JS como analizado sin ác ico.
En la ca e a no había is o nunca cómo se de inían unas eglas pa a analiza un lenguaje y
cons ui un obje o con los da os que nos in e esan, po lo que al p incipio me cos ó algo más
en ende el uncionamien o, pe o u ilizando el pa seado online con algunos ejemplos que nos
o ecían y la ayuda de Manuel, ha sido más lle ade o.
• Desa ollo de in e aces isuales.
He desa ollado en es e p oyec o las in e aces de los o mula ios de c eación y edición de
a iables y ames, el menú p incipal, la cabece a, la is a de código y los ames de salida.
La pa e isual que no he desa ollado es de la que se ha enca gado mi compañe o, en los
ames de en ada, la isualización de las a iables y el mo imien o de és as.
El cambio en e pan allas y la ocul ación de cie as pa es de las is as en unción de la pan alla
en la que nos encon emos ambién han sido pa e de mi abajo en es e apa ado.
Pa a la pa e isual como hemos comen ado he u ilizado lib e ías con las que ya había abajado
an e io men e, como Boo s ap y o as nue as, como jQue y UI. El uso de es as lib e ías me ha
pe mi ido c ea las in e aces de una mane a bas an e sencilla y cómoda de amplia . En la
pan alla de ames de salida he u ilizado la unción so able de jQue yUI que iene una unción
pa a ans o ma el elemen o o denado en un a ay, lo cual ha hecho bas an e cómodo el abajo
con la in e az y la capa de da os.
• Desa ollo de backend.
En es e pun o podemos des aca el desa ollo de la c eación de las a iables y ames a pa i
de los da os ob enidos en los o mula ios y la edición de los da os ya in oducidos. De la
alidación de es os da os se ha enca gado mi compañe o.
• Analizado sin ác ico de código P og ess.
En es e apa ado he desa ollado las eglas u ilizadas pa a ob ene las a iables y los ames de
salida. Los analizado es sin ác icos se gene an au omá icamen e en base a es as eglas y
u iliza los es muy sencillo. Simplemen e se llama a su mé odo pa se y e de uel e un obje o
con la in o mación ob enida.
• Lec u a del a chi o.
En elación a es e apa ado he desa ollado el lujo comple o: la lec u a del a chi o en sí, el uso
de los pa seado es pa a ob ene los da os y inalmen e la ans o mación del obje o de uel o po
los pa seado es a mis obje os de las clases F ame y Va iable.
De nue o, la alidación de és os da os ha sido desa ollada po Ad ián.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 71/75
• De inición de es uc u a de da os.
Como hemos comen ado en la memo ia, u ilizamos clases de Ja aSc ip pa a de ini nues a
es uc u a de da os, compues a de una clase P og ess, que con end á un Map de clases F ame
y que cada uno de és os iene o o Map de clases Va iable. La de inición de es as clases ha sido
lle ada en g an medida po mí, excep uando algunos a ibu os y unciones que se u ilizan pa a
la isualización de las a iables en los ames de en ada.
• Gene ación de Código P og ess.
La gene ación de código P og ess la he desa ollado yo comple amen e, ya que Ad ián no
conocía el lenguaje p e iamen e.
A la ho a de gene a es e código hay cie as ca ac e ís icas que no son elegidas po el usua io.
Es as ca ac e ís icas ijas se pueden encon a en la sección 4.1.1.-F ames y en la sección 4.1.2.-
Va iables y son usadas pa a simpli ica la c eación de código y ajus a nos a los es ánda es que
de ine el ERP pa a sus pan allas.
• P uebas de código P og ess.
En es e pun o cabe menciona que la emp esa en la que abajo, De el C11, nos cedió un en o no
de desa ollo del ERP, en el que pode hace p uebas con el código P og ess que íbamos
gene ando y e si compilaba y el esul ado de la pan alla en el ERP e a el espe ado. El desa ollo
de es as p uebas ha sido pa e de mi abajo en el p oyec o.
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 72/75
9.2.- CONTRIBUCIÓN ADRIÁN DÍAZ JIMÉNEZ
• Es udio de ecnologías.
En cuan o se plan eó el p oyec o al di ec o y ue ap obado, la p ime a a ea que debíamos hace
e a el es udio de ecnologías pa a lle a lo a cabo.
Es a ue mi p ime a con ibución: pensa cuales iban a se las ecnologías más impo an es que
pod íamos usa pa a es e p oyec o, po lo que puedo enume a las p incipales:
o Elec on.JS: es udio e in es igación sob e cómo desa olla una aplicación con es e
F amewo k, además es a ía pensado pa a usa lo con Ja aSc ip , aunque mi compañe o
es udió la posibilidad de u iliza TypeSc ip .
o Elección del analizado sin ác ico: e isa a ios analizado es sin ác icos, ANTLR y
PEG.js, al inal op é po elegi PEG.js. Po o o lado, es e paso se decidió de ini i amen e
en una pa e más adelan ada del p oyec o, ya que mi compañe o Rica do ue el que
inalmen e es udió es e analizado .
o Elección de lib e ías pa a pode a as a y sol a : enía dudas sob e la con eniencia
de u iliza Ja aSc ip na i o o, en su luga , acili a el abajo usando una lib e ía. Al inal
me decan é po la elección de In e ac .JS ya que una ez consul ada la documen ación
y su u ilización, me esul ó bas an e más sencilla que u iliza di ec amen e el código
na i o en Ja aSc ip .
• Plan eamien o del desa ollo del p oyec o
En es e apa ado cabe des aca la plani icación y plan eamien o del desa ollo del p oyec o. Es e
pun o es consecuencia del pun o an e io .
Una ez enía elegidas las ecnologías que se u iliza ían en es e p oyec o, u e que plan ea
cómo se iba a desa olla , po ejemplo, o ganización median e clases, elegi cómo se iban a
mos a los o mula ios al usua io ( en ana nue a o modal), e c.
Comencé a gene a la aplicación, un p oyec o desde ce o, y c eé las en anas básicas pa a
pode e el uncionamien o de Elec on.JS, la impo ación de Boo s ap, y expe imen a con
jQue y, median e p uebas muy sencillas.
• Desa ollo de la is a de F ames a as a -sol a con el a ón / mo e con el eclado.
Es e es el apa ado en el cual in e í mayo pa e del iempo, an o en el es udio de la lib e ía
In e ac .JS como en la co ec a implan ación y uncionamien o de la misma. Lo puedo di idi en
a ias ases ya que como he comen ado ha sido la pa e más amplia:
o Comienzo de mo ilidad de a iables: Es uc u a el código HTML, además de
comp ende las unciones pa a a as a las a iables. Desa ollo de las unciones de
Diseño in e ac i o de in e aces g á icas de usua io pa a P og ess 73/75
cálculo de aslación de las a iables. En es e pun o las a iables se podían mo e a lo
la go de oda la en ana.
o Mo imien o y eposicionamien o de a ias a iables: ol e a es uc u a el código
HTML y ol e a calcula las dis ancias de aslación espec o al o igen, ya que aho a
eníamos la ila y la columna en la que se encon aba, pe o al clona los di s y
eubica los cambiaban las dis ancias de aslación. Es o se explica en la sección 4.2.1.-
Zonas p incipales.
o Res ingi el mo imien o de las a iables: en es e apa ado puedo comen a que
quise es ingi el mo imien o a cie as coo denadas, pe o no e a capaz, po lo que
después de muchos in en os op é po es ingi el mo imien o al ‘di ’ del ame:
‘ es ic ion: documen .ge Elemen ById("inne -d opzone")’
Una ez enía una pequeña es icción u e que c ea cie as eglas pa a que aun así
la a iable no se salie a de su zona.
o Mo imien o con eclado: cuando e miné con el mo imien o con el a ón, comencé a
c ea el código pa a que podamos mo e las a iables con el eclado. Después de
in en a cen a el oco en la a iable sin éxi o conseguí c ea el código cen ándome en
los da os de la a iable que enemos seleccionada en la is a del F ame.
Una ez conseguimos mo e las a iables con el eclado u e que c ea unas nue as
es icciones pa a es os mo imien os.
• C eación de analizado es sin ác icos de emp- ables y ames de en ada: he desa ollado
el código pa a pode analiza sin ác icamen e el código P og ess an o de las ‘ emp- ables’ como
de los ames de en ada. A aíz de la explicación de Rica do sob e el uncionamien o de PEG.JS
me esul ó más sencillo es e desa ollo, gene ando unas eglas muy sencillas siguiendo una
se ie de pasos.
• Validación de da os de en ada: una ez c eada oda la uncionalidad del p oyec o, e a ho a
de consegui adap a nos a las eglas necesa ias pa a que no hubie a p oblemas a la ho a de
c ea código P og ess, po lo que u e que c ea una alidación de los da os de en ada del
usua io, de modo que se cumplie an cie as es icciones, po ejemplo:
o Comp oba que hay consis encia en e los da os in oducidos y el ipo seleccionado pa a
cada a iable.
o A isa al usua io de p oblemas con los da os in oducidos.
o No pe mi i cie os alo es acíos como el nomb e de la a iable o ame, además de
in en a co egi au omá icamen e los alo es omi idos po el usua io como, po ejemplo,
los alo es iniciales.