ejemplo+de+examen+“analista+senior+genexus+x+ev1”

38
Ejemplo de Examen “Analista Senior GeneXus X Ev1” Solo existe una respuesta considerada correcta para cada pregunta. Al lado del número de pregunta se indica el porcentaje que vale la misma. El examen se aprueba con 70% y dura 180 minutos. No se restan puntos por respuestas incorrectas. 1. [5 %] Se tiene una aplicación GeneXus para un casino. La misma cuenta con transacciones para registrar los slots (máquinas de juegos) así como los técnicos encargados de repararlos. Sabiendo que un slot (Slot) puede ser reparado por varios técnicos (Technician), y que un mismo técnico puede reparar varios slots, determine cuál es el diseño de transacciones correcto para representar esta realidad. a) b) c) Slot { SlotId* SlotDescription Technician { TechnicianId* TechnicianName } } Slot { SlotId* SlotDescription Technician { TechnicianId* TechnicianName } } Technician { TechnicianId* TechnicianName } Slot { SlotId* SlotDescription TechnicianId TechnicianName } Technician { TechnicianId* SlotId* TechnicianName }

Upload: sergio-andres-pinto

Post on 24-Jul-2015

207 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Ejemplo de Examen “Analista Senior GeneXus X Ev1”

Solo existe una respuesta considerada correcta para cada pregunta.

Al lado del número de pregunta se indica el porcentaje que vale la misma.

El examen se aprueba con 70% y dura 180 minutos.

No se restan puntos por respuestas incorrectas.

1. [5 %]

Se tiene una aplicación GeneXus para un casino. La misma cuenta con transacciones para

registrar los slots (máquinas de juegos) así como los técnicos encargados de repararlos.

Sabiendo que un slot (Slot) puede ser reparado por varios técnicos (Technician), y que un mismo

técnico puede reparar varios slots, determine cuál es el diseño de transacciones correcto para

representar esta realidad.

a)

b)

c)

Slot { SlotId* SlotDescription Technician { TechnicianId* TechnicianName } }

Slot { SlotId* SlotDescription Technician { TechnicianId* TechnicianName } }

Technician { TechnicianId* TechnicianName }

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Technician { TechnicianId* SlotId* TechnicianName }

Page 2: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

d)

e) Ninguna de las anteriores

2. [5 %]

Se tiene una aplicación GeneXus para un casino. La misma cuenta con transacciones para

registrar los slots así como los tipos de slot existentes.

Sabiendo que cada slot (Slot) corresponde a un tipo determinado (Type) y sólo uno, y que

pueden haber muchos slots del mismo tipo, determine cuál es el diseño de transacciones

correcto para representar esta realidad.

a)

b)

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Technician { TechnicianId* TechnicianName }

Type { TypeId* TypeDescription Slot { SlotId* SlotDescription } }

Slot { SlotId* SlotDescription }

Slot { SlotId* SlotDescription Type { TypeId* TypeDescription } }

Page 3: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

c)

d)

3. [5 %]

Se tiene una aplicación GeneXus para un casino.

Dada la siguiente transacción, determine lo que considere correcto.

a) Se está representando que por cada slot hay muchos premios y cada premio puede ser

brindado por muchos slots.

b) Se está representando que por cada slot hay muchos premios, y que cada premio

corresponde únicamente a ese slot y no a otro (teniendo ambos actores de la realidad existencia

por sí misma).

c) Se está representando que por cada slot hay muchos premios, y que cada premio

corresponde únicamente a ese slot y no a otro (teniendo Slot existencia por sí mismo y SlotPrize

existencia dependiente de Slot).

d) Se está representando que por cada slot hay un solo premio y por cada premio un solo slot

que lo brinda.

Type { TypeId* TypeDescription }

Slot { SlotId* SlotDescription TypeId TypeDescription }

Type { TypeId* TypeDescription SlotId SlotDescription }

Slot { SlotId* SlotDescription }

Slot { SlotId* SlotDescription Prize { PrizeId* PrizeDescription } }

Page 4: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

4. [5 %]

Se tiene una aplicación GeneXus para un casino. La misma cuenta con transacciones para

registrar los clientes así como las tarjetas VIP que se emiten para los mismos.

Sabiendo que cada cliente (Customer) puede tener una única tarjeta VIP (VIPCard) y que cada

tarjeta VIP solo puede pertenecer a un cliente, determine cuál es el diseño de transacciones

correcto para representar esta realidad.

a)

b)

c)

d)

e) Ninguna de las anteriores

Customer { CustomerId* CustomerName }

VIPCard { VIPCardId* VIPCardObservations CustomerId CustomerName }

Customer { CustomerId* CustomerName VIPCardId VIPCardObservations }

VIPCard { VIPCardId* VIPCardObservations }

Customer { CustomerId* CustomerName }

VIPCard { VIPCardId* VIPCardObservations CustomerId CustomerName }

Unique Index

Customer { CustomerId* CustomerName }

VIPCard { VIPCardId* VIPCardObservations VIPCardCustomerId VIPCardCustomerName }

Subtype group: VIPCardCustomer VIPCardCustomerId subtype of CustomerId VIPCardCustomerName subtype of CustomerName

Page 5: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

5. [2.5%]

Se tiene una aplicación GeneXus para un casino.

Dado el siguiente diseño de transacciones, determine la estructura física de las TABLAS que

GeneXus diseñará y creará.

a)

b)

c)

d)

e) Ninguna es correcta

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Technician { TechnicianId* TechnicianName

}

Registration { RegistrationId* RegistrationDate Fx RegistrationAmount Slot { SlotId* SlotDescription TechnicianId TechnicianName } }

SLOT SlotId* SlotDescription TechnicianId

TECHNICIAN TechnicianId* TechnicianName

REGISTRATION RegistrationId* RegistrationDate

REGISTRATIONSLOT RegistrationId* SlotId* TechnicianId

SLOT SlotId* SlotDescription TechnicianId

TECHNICIAN TechnicianId* TechnicianName

REGISTRATION RegistrationId* RegistrationDate RegistrationAmount

REGISTRATIONSLOT RegistrationId* SlotId* TechnicianId

SLOT SlotId* SlotDescription TechnicianId

TECHNICIAN TechnicianId* TechnicianName

REGISTRATION RegistrationId* RegistrationDate

REGISTRATIONSLOT RegistrationId* SlotId*

SLOT SlotId* SlotDescription TechnicianId

TECHNICIAN TechnicianId* TechnicianName

REGISTRATION RegistrationId* RegistrationDate RegistrationAmount

REGISTRATIONSLOT RegistrationId* SlotId*

Page 6: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

6. [2.5%]

Se tiene una aplicación GeneXus para un casino.

Dado el siguiente diagrama de Bachman, determine la tabla extendida de la tabla base

RESERVATION:

a) RESERVATION + RESERVATIONSLOT

b) RESERVATION + CUSTOMER

c) RESERVATION + RESERVATIONSLOT + SLOT

d) Ninguna es correcta

7. [2.5%]

Se tiene una aplicación GeneXus para un casino. La misma cuenta con un conjunto de

transacciones para registrar los slots (Slot), clientes (Customer) y reserva de slots (Reservation)

según se muestra.

Determine la tabla extendida de la tabla base RESERVATIONSLOT.

a) RESERVATIONSLOT + RESERVATION

b) RESERVATIONSLOT + SLOT

c) RESERVATIONSLOT + RESERVATION + SLOT

d) RESERVATIONSLOT + RESERVATION + SLOT + CUSTOMER

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

RESERVATIONSLOT

CUSTOMER RESERVATION

SLOT

Page 7: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

8. [1.5%]

Se tiene una aplicación GeneXus para un Casino. La misma cuenta con un conjunto de

transacciones para registrar los slots (Slot), y la reserva de slots (Reservation), por parte de los

clientes (Customer) según se muestra.

En algunas ocasiones se realizan reservas sin la necesidad de especificar el cliente (CustomerId).

A partir del diseño propuesto, indique la afirmación que cosidere correcta:

a. Por el hecho de haber definido que CustomerId admite nulos, no se controlará la integridad

referencial contra la tabla CUSTOMER.

b. Si bien se definió que CustomerId admite nulos, de especificarse un valor, se controlará la

integridad referencial contra la tabla CUSTOMER.

c. Ninguna de las opciones anteriores es correcta.

9. [3.5%]

Se tiene una aplicación GeneXus para un casino. Esta cuenta con un conjunto de transacciones

para registrar los slots (Slot) y los técnicos encargados de las reparaciones (Technician).

Cada vez que se ingresa un nuevo slot se le debe asociar un técnico responsable y uno suplente.

El sistema deberá controlar que no sea el mismo.

Determine si es verdadero o falso que la siguiente alternativa resuelve correctamente el

requerimiento anterior.

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Nullable = yes

Slot { SlotId* SlotDescription TitularTechnicianId TitularTechnicianName SubstituteTechnicianId SubstituteTechnicianName }

Technician { TechnicianId* TechnicianName }

Page 8: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Verdadero: Falso:

10. [ 3.5%]

Se tiene una aplicación GeneXus para un casino. Esta cuenta con un conjunto de transacciones

para registrar los slots (Slot) y los técnicos encargados de las reparaciones (Technician).

Un slot puede ser reparado por un solo técnico y cada técnico tiene asignados varios slots para

reparar en caso que lo requieran. Es así que a lo hora de facturar los servicios de un técnico

(Invoice) se debe verificar que los slots detallados efectivamente estén a cargo del técnico de la

factura.

Determine de las siguientes opciones la que implementa este requerimiento.

a)

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Invoice { InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount Slot { SlotId* SlotDescription InvoiceSlotAmount } }

Technician { TechnicianId* TechnicianName }

Slot Rules: Error( ‘Invalid Substitute Technician’) if TitularTechnicianId =SubstituteTechnicianId;

Subtype group: SlotTechnicians TitularTechnicianId subtype of TechnicialId TitularTechnicianName subtype of TechnicianName SubstituteTechnicianId subtype of TechnicianId SubstituteTechnicianName subtype of TechnicianName

Page 9: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

b)

c)

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> TechnicianId;

Invoice { InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount Slot { SlotId* SlotDescription TechnicianId TechnicianName InvoiceSlotAmount } }

Technician { TechnicianId* TechnicianName }

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Subtype group: InvoiceTechnician InvoiceTechnicianId subtype of TechnicialId InvocieTechnicianName subtype of TechnicianName

Invoice { InvoiceId* InvoiceDate InvoiceTechnicianId InvoiceTechnicianName InvoiceAmount Slot { SlotId* SlotDescription TechnicianId TechnicianName InvoiceSlotAmount } }

Technician { TechnicianId* TechnicianName }

Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> InvoiceTechnicianId;

Page 10: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

d)

e) Ninguna de las anteriores

11. [ 2.5%]

Se tiene una aplicación GeneXus para un casino.

Se necesita registrar la información de los técnicos que reparan los slots, así como la de los

clientes del casino.

Como tanto los técnicos como los clientes son personas, de las que se registra un conjunto de

información común (nombre y teléfono), se desea registrar la info general una sola vez.

Luego sólo resta registrar la información particular (por ejemplo, si la persona es un cliente, se

desea registrar si es un cliente VIP y el crédito que le proporciona el casino, y si es un técnico,

interesa registrar su salario).

Determine si es verdadero o falso que la siguiente solución resuelve la necesidad descripta

adecuadamente en GeneXus.

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Subtype group: InvoiceSlotTechnician InvoiceSlotTechnicianId subtype of TechnicialId InvocieSlotTechnicianName subtype of TechnicianName

Invoice { InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount Slot { SlotId* SlotDescription InvoiceSlotTechnicianId InvoiceSlotTechnicianName InvoiceSlotAmount } }

Technician { TechnicianId* TechnicianName }

Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> InvoiceSlotTechnicianId;

Page 11: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Verdadero: Falso:

12. [ 1.5%]

Se tiene una aplicación GeneXus para un casino. Se cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Suponga que en la transacción Reservation se declaró la regla:

ReservationDate = Today() on AfterInsert;

“La regla propuesta corresponde a una definición funcionalmente correcta en GeneXus”.

¿Esta afirmación es verdadera o falsa?

Verdadero: Falso:

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Person { PersonId* PersonName PersonPhone }

Technician { TechnicianId* TechnicianName TechnicianPhone TechnicianSalary PersonId }

Customer { CustomerId* CustomerName CustomerPhone CustomerIsVIP CustomerCredit PersonId }

Índice Unique en esta tabla compuesto por PersonId

Índice Unique en esta tabla compuesto por PersonId

Page 12: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

13. [1.5 %]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Suponga que en la transacción Reservation se declaró la regla:

ReservationSlotTime += 60 if SlotId >100 on BeforeUpdate;

“La regla propuesta corresponde a una definición funcionalmente correcta en GeneXus”.

¿Esta afirmación es verdadera o falsa?

Verdadero: Falso:

14. [1.5 %]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Suponga que en la transacción Reservation se declaró la regla:

Something.call(SlotId) on BeforeComplete;

“La regla propuesta corresponde a una definición funcionalmente correcta en GeneXus”.

¿Esta afirmación es verdadera o falsa?

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Page 13: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Verdadero: Falso:

15. [ 2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Suponga que luego de insertarse una reserva, se necesita invocar a un procedimiento que

procese de alguna manera los datos de la reserva (cabezal y líneas).

Suponiendo que es necesario invocar al procedimiento luego de efectuado el commit,

determine cuál de las siguientes reglas de invocación en la transacción Reservation es la

correcta:

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Page 14: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a) Proc.call( ReservationId ) if Insert on BeforeComplete;

b) Proc.call( ReservationId ) If Insert on Commit;

c) Proc.call( ReservationId ) if Insert on AfterComplete;

d) Proc.call( ReservationId ) on AfterInsert;

e) Ninguna de las anteriores

16. [ 2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Dado el siguiente conjunto de reglas declaradas en la transacción Reservation, determine el

orden en el cual serán ejecutadas.

a) Las reglas se disparan en el orden en el que han sido declaradas

b) El orden de ejecución será: b. - c. - d. - a.

c) El orden de ejecución será: c. - b. - d. - a.

d) Ninguna de las opciones anteriores es correcta

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName CustomerIsVIP }

Reservation { ReservationId* ReservationDate CustomerId CustomerName CustomerIsVIP Slot { SlotId* SlotDescription ReservationSlotTime } }

“Reservation” rules: a. Msg( “VIP Customer Registration”) if CustomerIsVIP on AfterComplete; b. ProcX.call(ReservationDate) on AfterInsert; c. ProcA.call( SlotId) on BeforeInsert; d. ProcB.call( ResrevationId ) on BeforeComplete;

Page 15: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

17. [2.5%]

En las reglas de las transacciones sólo se pueden actualizar atributos que pertenecen

físicamente a la tabla base de cada nivel, y no a su extendida.

¿Esta aseveración es verdadera o falsa?

Verdadero: Falso:

18. [2%]

Se tiene una aplicación GeneXus para un casino. Esta cuenta con transacciones para registrar los

slots (Slot), y la reserva de los slots (Reservation) por parte de los clientes (Customer).

Dado el siguiente source de un procedimiento, determine la tabla de partida y la tabla de

evaluación (la que se navega para contar registros) de la fórmula local declarada.

a) Tabla de partida: RESERVATION – Tabla de evaluación: RESERVATIONSLOT

b) Tabla de partida: RESERVATION – Tabla de evaluación: RESERVATION

c) Tabla de partida: CUSTOMER – Tabla de evaluación: RESERVATION

d) Tabla de partida: RESERVATIONSLOT – Tabla de evaluación: RESERVATIONSLOT

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Source: For each &SlotsQuantity = Count( ReservationSlotTime) Print printblock1 // ReservationDate, CustomerName, &SlotsQuantity endfor

Page 16: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

19. [2%]

Se tiene una aplicación GeneXus para un casino. Esta cuenta con transacciones para registrar los

slots (Slot), y la reserva de los slots (Reservation) por parte de los clientes (Customer)

Se quiere imprimir un listado de los clientes que tienen más de 10 reservas efectuadas para la

fecha de hoy.

Determine si es verdadero o falso que el source que se muestra representa una solución al

requerimiento.

Verdadero: Falso:

20. [2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Dados el siguiente par de for eachs anidados, determine sus tablas base.

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription ReservationSlotTime } }

Source: For each Where Count( ReservationDate, ReservationDate = Today() ) > 10 Print printblock1 // CustomerId, CustomerName endfor

Page 17: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a) For each externo: RESERVATIONSLOT For each interno: CUSTOMER

b) For each externo: RESERVATION For each interno: CUSTOMER

c) For each externo: SLOT For each interno: CUSTOMER

d) For each externo: RESERVATIONSLOT For each interno: RESERVATIONSLOT

21. [3%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Dada la implementación del procedimiento que figura a continuación, determine cuál será el

resultado de su ejecución.

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName ReservationAmount Slot { SlotId* SlotDescription ReservationSlotAmount } }

SUM( ReservationSlotAmount)

For each Print printblock1 // ReservationId, ReservationDate y SlotDescritpion For each Print printblock2 // CustomerName endfor Endfor

Page 18: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a) Producto cartesiano: se listan todos los clientes de la tabla CUSTOMER y todos los slots

registrados en la tabla RESERVATIONSLOT, sin hacer ningún filtro en la información. Es decir,

saldrá por cada cliente, todos los slots de todas las reservas.

b) Join: se listan todos los clientes de la tabla CUSTOMER y por cada cliente, se listan sólo los

slots registrados en la tabla RESERVATIONSLOT que corresponden a reservaciones del

cliente (se filtra automáticamente por CustomerId).

c) Ninguna de las anteriores.

22. [4%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Se solicita un listado que muestre todos los clientes y para cada uno sus reservas de slots.

(Interesa que salgan todos los clientes, aunque no haya reservas para ellos).

Determine cuál es la implementación que resuelve este requerimiento.

For each Print printblock1 // CustomerName For each Print printblock2 // ReservationId, ReservationDate y SlotDescritpion endfor Endfor

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName ReservationAmount Slot { SlotId* SlotDescription ReservationSlotAmount } }

SUM( ReservationSlotAmount)

Page 19: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a)

b)

c) Ninguna es correcta

23. [4%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Se solicita un listado que muestre a los clientes y para cada uno sus reservas de slots. Interesa

que salgan en el listado solamente aquellos clientes que tengan reservas.

Determine si es verdadero o falso que el source que se muestra representa una solución al

requerimiento.

For each order CustomerId defined by ReservationDate Print printblock1 // CustomerId, CustomerName For each Print printblock2 // ReservationId, ReservationDate y ReservationAmount endfor Endfor

For each Print printblock1 // CustomerId, CustomerName For each Print printblock2 // ReservationId, ReservationDate y ReservationAmount endfor Endfor

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName ReservationAmount Slot { SlotId* SlotDescription ReservationSlotAmount } }

SUM( ReservationSlotAmount)

Page 20: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Verdadero: Falso:

24. [3%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los tipos de slots (SlotType), clientes (Customer) y las reservas de

slots (Reservation), según se muestra.

Se desea generar un listado de reservas de slots como se muestra (es decir por tipo de slot, para

cada cliente listar sus reservas; y no se desea que salgan tipos de slots y clientes si no hay

reservas para los mismos).

Determine la opción de implementación que considere correcta.

For each defined by ReservationDate Print printblock1 // CustomerId, CustomerName For each Print printblock2 // ReservationId, ReservationDate y ReservationAmount endfor Endfor

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Slot Type: 1 Wizards

Customer: 15 Ann Smith

Reservtion Id Date Slot Description ….. ……. ……. ….. ……. ……. ….. ……. …….

Customer: 120 Peter Jones

Reservtion Id Date Slot Description ….. ……. ……. ….. ……. …….

Slot Type: 1 Wizards

Customer: 15 Ann Smith

Reservtion Id Date Slot Description ….. ……. …….

Page 21: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a)

b)

c) Ninguna de las anteriores

25. [2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Sabiendo que una consulta frecuente será recuperar todas las reservas de un slot en una fecha

determinada, se implementó el data selector que se muestra.

Luego se implementó el web panel que se muestra abajo, el cual referencia al Data Selector.

Seleccione lo que considere correcto.

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Data Selector: SlotReservation Parameters:

&date

&slot Conditions:

ReservationDate = &date

SlotId = &slot

For each order SlotTypeId Print TypePB // SlotTypeId, SlotTypeDescription For each order CustomerId Print CustomerPB // CustomerId, CustomerName For each order ReservationId Print ReservationPB // ReservationId, ReservationDate, SlotDescription Endfor Endfor Endfor

For each order SlotTypeId, CustomerId, ReservationId Print TypePB // SlotTypeId, SlotTypeDescription For each Print CustomerPB // CustomerId, CustomerName For each Print ReservationPB // ReservationId, ReservationDate, SlotDescription Endfor Endfor Endfor

Page 22: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Web panel Form:

a) el web panel implementado, al ejecutarse desplegará en el grid los nombres de los clientes

que tienen reservas para el slot 1 en la fecha de hoy, pero se podrán visualizar nombres de

clientes repetidos, dado que la tabla base del web panel será RESERVATIONSLOT.

b) el web panel implementado, al ejecutarse desplegará en el grid los nombres de los clientes

que tienen reservas para el slot 1 en la fecha de hoy, y se visualizará el nombre de cada

cliente solamente una vez, dado que la tabla base del web panel será CUSTOMER.

c) Ninguna de las opciones anteriores es correcta.

26. [3%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer) y las reservas de slots (Reservation), según

se muestra.

Se necesita obtener una colección de datos, estructurados como se muestra en el SDT de abajo,

que se cargará con los clientes del Casino. De cada cliente se recuperará además una lista de los

slots que tiene reservados a partir de una fecha dada.

Indique si es verdadero o falso que la solución propuesta abajo corresponde a una

implementación correcta del requerimiento.

Slot { SlotId* SlotDescription }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Page 23: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Verdadero: Falso:

27. [3%]

Se tiene una aplicación GeneXus para un casino, que cuenta con un conjunto de transacciones

para registrar los slots (Slot), los clientes (Customer), las reservas de slots (Reservation) por las

que se les cobrará. Interesa generar y grabar automáticamente una factura por cliente, con el

total por concepto de reservas de slots en un período de facturación determinado.

Para ello se declara el Data Provider “GetInvoices” que se indica abajo.

Indique si es verdadero o falso que: “el Data Provider sólo permite cargar datos estructurados,

pero no permite grabar en la base de datos. Para grabar la información deberá invocarse al DP

desde otro objeto y grabar explícitamente, como se muestra abajo”.

Data Provider Source: Rule: parm( &dateFrom); Client { Id = CustomerId Name = CustomerName SlotsAmount = Count( SlotId, ReservationDate >= &dateFrom) SlotsReserved where ReservationDate >= &dateFrom

{ Slot { Description = SlotDescription } }

}

Slot { SlotId* SlotDescription SlotReservationPrice }

Customer { CustomerId* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription SlotReservationPrice } }

Invoice { InvoiceId* InvoiceDate CustomerId CustomerName InvoiceStartPeriodDate InvoiceEndPeriodDate InvoiceAmount }

Business Component = True

Autonumber = True

Page 24: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

Parm( in: &startDate, in: &endDate ); ----------------------------------------------------------------------------------------------- Invoice {

InvoiceDate = Today() CustomerId InvoiceStartPeriodDate = &startDate InvoiceEndPeriodDate = &endDate InvoiceAmount = Sum( SlotReservationPrice, ReservationDate >= &start and ReservationDate <= &end) }

For &invoice in GetInvoices( #2011-01-01#, #2011-01-31#)

&invoice.Save()

If &invoice.Success()

Commit

else

Rollback

endif

endfor

Verdadero: Falso:

28. [3%]

Se tiene una aplicación GeneXus para un casino, que está abierto al público las 24 horas del día.

Para facilitar a los clientes la utilización de los slots, se divide el día en 12 turnos de 2 horas cada

uno, y se permite que los clientes hagan reservas en estos turnos.

Para ello se definen las transacciones Customer (clientes), Shift (turnos) y Slot (con sus

reservas). En Slot se definen la fórmula y reglas que se muestran.

Supongamos que se compra un nuevo slot, “The Wizard”, a pedido de un cliente importante y

hay que ingresarlo al sistema con el Id 100. Se desea junto con su ingreso, reservarle a ese

cliente el slot en la fecha en que se ponga en funcionamiento, para los turnos 1 y 7, que son los

que él frecuenta.

Elija la opción correcta para resolver este requerimiento.

Data Provider: GetInvoices

Page 25: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

a)

Slot { SlotId* SlotDescription Reservation { SlotReservationDate* ShiftId* ShiftDescription CustomerId CustomerName SlotReservationBonus }

Customer { CustomerId* CustomerName }

Shift { ShiftId* ShiftDescription ShiftStartTime ShiftEndTime }

= True if ShiftId < 5; False otherwise

Error( ‘Invalid reservation date’ ) if ReservationSlotDate < Today();

&reservations = CountCustomerReservation.udp( ReservationSlotDate, CustomerId );

Error( ‘Number of reservations exceeded’) if &reservation > 12;

Msg( ‘Customer has extra bonus’ ) if SlotReservationBonus;

// &slot data type: Slot

// &reservation data type: Slot.Reservation

&slot.SlotId = 100

&slot.SlotDescription = “The Wizard”

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 1

&reservation.CustomerId = &customerId

&slot.Reservation.Add( &reservation )

&reservation = new ()

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 7

&reservation.CustomerId = &customerId

&slot.Reservation.Add( &reservation )

&slot.Save()

Business Component = True

Page 26: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

b)

parm( in: &customerId, in: &date);

// &slot data type: Slot

// &reservation data type: Slot.Reservation

&slot.SlotId = 100

&slot.SlotDescription = “The Wizard”

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 1

&reservation.CustomerId = &customerId

&slot.Reservation.Add( &reservation )

&reservation = new ()

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 7

&reservation.CustomerId = &customerId

&slot.Reservation.Add( &reservation )

&slot.Save()

if &slot.Success()

Commit

else

Rollback

endif

Page 27: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

c)

d) Ninguna de las opciones anteriores es correcta.

parm( in: &customerId, in: &date);

// &slot data type: Slot

// &reservation data type: Slot.Reservation

&slot.SlotId = 100

&slot.SlotDescription = “The Wizard”

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 1

&reservation.CustomerId = &customerId

&slot.Save()

&slot.Reservation.Add( &reservation )

&reservation = new ()

&reservation.SlotReservationDate = &date

&reservation.ShiftId = 7

&reservation.CustomerId = &customerId

&slot.Reservation.Add( &reservation )

&slot.Save()

if &slot.Success()

Commit

else

Rollback

endif

Page 28: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

29. [2.5%]

Se tiene una aplicación GeneXus web para un casino, que cuenta con transacciones para

registrar los slots (Slot) y los tipos de slots (SlotType), según se muestra.

Cada vez que se ingresa un nuevo tipo de slot al sistema es porque ya se cuenta con un slot de

dicho tipo, que debe ingresarse inmediatamente, de manera tal que no quede un tipo de slot sin

slot registrado (comparten la misma UTL).

Indique, de las siguientes, la opción correcta (de haber más de una, la más completa).

a) Invocar desde la transacción SlotType, antes del Commit, a la transacción Slot pasándole el

valor de SlotTypeId como parámetro.

b) Invocar desde la transacción SlotType, inmediatamente antes del Commit, a un

procedimiento que ingrese el slot, pasándole el valor de SlotTypeId por parámetro. Se

deshabilita el Commit on Exit del procedimiento.

c) Crear un web panel con dos variables: una de tipo de datos = business component

“SlotType” y otra de tipo de datos = business component “Slot”, insertándolas en el form y

agregando un botón de confirmación con un evento asociado que realiza las dos

grabaciones (Save) y en caso de no detectarse errores, que ejecute el comando Commit.

d) a) y b) son correctas (y las únicas correctas).

e) b) y c) son correctas (y las únicas correctas).

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Page 29: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

30. [1.5%]

Se tiene una aplicación GeneXus web para un casino.

Se desea diseñar un web panel que muestre en un grid Freestyle cada técnico, con los slots que

tiene asignados para reparar, y abajo la cantidad de esos slots.

Determine la opción de implementación que considere correcta.

a)

b)

c)

d)

e) Ninguna de las anteriores

Technician { TechnicianId* TechnicianName }

Slot { SlotId* SlotDescription TechnicianId TechnicianName }

Freestyle Grid: Grid1

Grid: Grid2

Page 30: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

31. [3.5%]

Se tiene una aplicación GeneXus para un casino, que cuenta con una transacción para registrar

los tipos de slots (SlotType) y otra para registrar los slots (Slot).

Se desea diseñar un web panel que permita seleccionar un tipo de slot y que a partir de allí

despliegue en un grid todos los slots existentes de ese tipo. Para ello se define el web panel que

se muestra.

Determine de las opciones que siguen, la correcta.

a) El web panel funcionará correctamente, dado que por la presencia de los atributos SlotTypeId

en las conditions y SlotId, SlotDescription en el evento Load, GeneXus inferirá una tabla base

implícita, y ésta resultará ser SLOT. Por haber tabla base implícita, no es necesario colocar

comando Load dentro del evento Load, ya que el mismo se disparará una vez por slot de tipo de

slot seleccionado.

b) El web panel arrojará un error en la especificación, dado que GeneXus entiende que por no

haber atributos en el grid, será sin tabla base. Por esto, no tiene sentido ni definir una condition,

ni que se quieran utilizar atributos en el evento Load, fuera de un comando For each.

c) El web panel no arrojará un error, pero está mal programado y no mostrará nada en el grid,

dado que para GeneXus no hay tabla base implícita, por lo que faltaría colocar un for each

dentro del evento Load para definir la carga explícitamente y emplear el comando Load para

cargar cada línea en el grid.

d) Ninguna de las opciones anteriores es correcta.

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Page 31: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

32. [3%]

Se tiene una aplicación GeneXus para un casino, que cuenta con una transacción para registrar

los tipos de slots (SlotType) y otra para registrar los slots (Slot).

Se desea diseñar un web panel que:

1) muestre todos los slots en un grid

2) muestre debajo del grid la cantidad de slots que son de los tipos 3, 5 y 7

3) cuando el usuario seleccione una línea del grid, se pueda invocar a otro web panel que

muestre información del tipo de slot correspondiente

Para resolver estas necesidades, se definió el web panel que se muestra, donde en el grid no se

agrega ningún atributo no visible. Seleccione la opción que considere correcta.

a) El web panel resuelve solamente el requisito 1) adecuadamente

b) El web panel resuelve solamente los requisitos 1) y 2) adecuadamente

c) El web panel resuelve los 3 requisitos adecuadamente

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

AllowSelection=True

Page 32: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

33. [2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con transacciones para registrar los

slots (Slot), clientes (Customer) y reservas de slots (Reservation).

Para mostrar todos los slots que tienen reservas para la fecha de hoy, junto con la cantidad de

reservas, se ha implementado el web panel que se muestra.

Suponiendo que solamente 2 slots tienen reservas para la fecha, y que para el primero hay 5

reservas y para el segundo 4. Determine la cantidad de veces que se disparará el evento Load

del grid al ejecutar el web panel.

a) 9 veces

b) 2 veces

c) 11 veces

d) Ninguna de las anteriores

Slot { SlotId* SlotDescription }

Customer { Customerd* CustomerName }

Reservation { ReservationId* ReservationDate CustomerId CustomerName Slot { SlotId* SlotDescription } }

Page 33: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

34. [1%]

Se tiene una aplicación GeneXus para un casino, que cuenta con transacciones para registrar los

slots (Slot), y sus tipos (SlotType) como se indica.

Se desea implementar un web panel con dos grids paralelos, pero cuyas cargas estén

relacionadas de la siguiente manera: que en el primer grid se muestren los tipos de slots y en el

segundo grid los slots, de manera tal que cuando el usuario seleccione un tipo de slot del grid1

(propiedad AllowSelection habilitada), en el segundo grid sólo se muestren los slots de ese tipo.

Determine de las siguientes, cuál es la implementación correcta.

a) Como ambos grids tienen tabla base y están relacionadas, GeneXus automáticamente

resuelve que una vez que el usuario elija una línea del grid1, se carguen automáticamente en el

grid2 los slots relacionados.

b) Si bien ambos grids tienen tabla base y las mismas están relacionadas, GeneXus no establece

relación entre ellos, por lo que hay que implementarlo. Para ello alcanza con hacer lo que sigue

y no es necesario que la variable &typeId esté en pantalla.

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Grid: Grid2 Grid: Grid1

Page 34: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

c) La implementación de la opción b) sería correcta sólo si se colocara la variable &typeId en

pantalla (oculta).

d) Ninguna de las opciones anteriores es correcta.

35. [2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con las transacciones para registrar

los slots (Slot) y sus tipos (SlotType) como se indica.

Se aplica el pattern work with a ambas transacciones, y se desea que el web panel generado

“WWSlotType” no ofrezca la posibilidad de eliminar tipos de slots.

Elija la opción que considere correcta y adecuada para implementar este requerimiento.

a) Se edita el web panel generado automáticamente por el pattern, “WWSlotType” y se elimina

la columna con la variable &Delete y la programación de los eventos que la referencian.

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Page 35: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

b) Se edita la solapa del pattern de la transacción SlotType y en el nodo “modes” que se

muestra, se editan sus propiedades, cambiando el valor de la propiedad “delete”: de “default” a

“false”.

c) Se edita la solapa del pattern de la transacción SlotType y en el nodo “View( Slot Type

Information)” , se expande el mismo, y dentro del Tab (General) se busca la propiedad

Action(Delete) que se muestra, y se le cambia su valor de “default” a “false”.

d) Ninguna de las opciones anteriores es correcta.

Page 36: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

36. [2%]

Se tiene una aplicación GeneXus para un casino, que cuenta con las transacciones para registrar

los slots (Slot) y sus tipos (SlotType) como se indica.

Se aplica el pattern work with a ambas transacciones. Se desea personalizar el “Work With Slot

Types” generado, para poder invocar a un web panel con un botón debajo del grid, que abra un

web panel MySlotTypeQuery, que tiene implementada una consulta dinámica donde pueden

realizarse gráficas de diversos tipos sobre los tipos de slots.

Determine si es verdadero o falso que para resolver este requerimiento, alcanza con crear una

nueva acción en la solapa Patterns de la transacción SlotType como se muestra abajo.

Verdadero: Falso:

SlotType { SlotTypeId* SlotTypeDescription }

Slot { SlotId* SlotDescription SlotTypeId SlotTypeDescription }

Page 37: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

37. [1 %]

Se tiene una aplicación GeneXus para un Casino.

Hasta el momento se trabajó sobre la versión Casino, que se acaba de instalar en el cliente.

Ahora se necesita continuar con el desarrollo, implementando un nuevo módulo sin que estos

cambios afecten a la versión que tiene el cliente.

Para eso se deberá:

a) Crear una Frozen version y comenzar a desarrollar sobre ella.

b) Crear la Frozen version “Version1” y a partir de ella crear una nueva Development version

(“Upgrades for Version1”) y allí comenzar a desarrollar el módulo.

c) Se debe crear un nuevo Environment y setearlo como activo. Luego desarrollar en este

environment el nuevo módulo.

d) Ninguna de las anteriores

Page 38: Ejemplo+de+Examen+“Analista+Senior+GeneXus+X+Ev1”

38. [1%]

Se tiene una aplicación GeenXus para un Casino.

Como aún no se sabe cuál será la plataforma final, se ha definido un environment .NET y otro

environment Java.

El environment por defecto es .NET, y luego de haberse desarrollado varios de sus módulos, se

desea actualizar todas las definiciones en el environment Java.

Determine de las opciones siguientes, la que resuelve esa actualización.

a) Se debe provocar un impacto sobre el Environment Java, a partir del Environment .NET.

b) No es necesario hacer nada, dado que todo cambio se aplica automáticamente a todos los

environments existentes.

c) Se debe utilizar Change Defender

d) Ninguna de las anteriores

Comentarios adicionales para quienes se preparen con este examen de

ejemplo

Si bien la mayoría de los temas que aparecen en este examen aparecen en todos los exámenes por ser

fundamentales en cuanto a la lógica de GeneXus, puede haber cierta variabilidad de examen a examen.

Por ejemplo en este examen no aparecen preguntas de objeto Query, ni de proceso de Build, ni de

GXserver, que sí se incluyen, entre otros, en otros exámenes.