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), (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) Slot
{ SlotId* SlotDescription Technician
{ TechnicianId* TechnicianName } }
b) Slot
Technician
{
{ SlotId* SlotDescription
TechnicianId* TechnicianName }
Technician
{ TechnicianId* TechnicianName } }
c) Slot
Technician
{
{ SlotId* SlotDescription TechnicianId TechnicianName
}
TechnicianId* SlotId* TechnicianName }
d) Slot
Technician
{
{ SlotId* SlotDescription TechnicianId TechnicianName
TechnicianId* TechnicianName }
}
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)
Slot
{ SlotId* SlotDescription Type
{ TypeId* TypeDescription } }
b)
Type
Slot
{
{ TypeId* TypeDescription Slot
{ SlotId* SlotDescription } }
SlotId* SlotDescription }
d) Slot
Technician
{
{ SlotId* SlotDescription TechnicianId TechnicianName
TechnicianId* TechnicianName }
}
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)
Slot
{ SlotId* SlotDescription Type
{ TypeId* TypeDescription } }
b)
Type
Slot
{
{ TypeId* TypeDescription Slot
{ SlotId* SlotDescription } }
SlotId* SlotDescription }
c)
Type
Slot
{
{ TypeId* TypeDescription
SlotId* SlotDescription TypeId TypeDescription
} }
d)
Type
Slot
{
{ TypeId* TypeDescription SlotId SlotDescription
SlotId* SlotDescription }
}
3. [5 %] Se tiene una aplicación GeneXus para un casino. Dada la siguiente transacción, determine lo que considere correcto. Slot
{ SlotId* SlotDescription Prize
{ PrizeId* PrizeDescription } }
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.
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) Customer
VIPCard
{
{ CustomerId* CustomerName
VIPCardId* VIPCardObservations CustomerId CustomerName
} }
b) Customer
VIPCard
{
{ CustomerId* CustomerName VIPCardId VIPCardObservations
VIPCardId* VIPCardObservations }
}
c) Customer
VIPCard
{
{ CustomerId* CustomerName
VIPCardId* VIPCardObservations CustomerId CustomerName
} }
d)
Customer
VIPCard
{
{ CustomerId* CustomerName
VIPCardId* VIPCardObservations VIPCardCustomerId VIPCardCustomerName
} }
Subtype group: VIPCardCustomer
VIPCardCustomerId subtype of VIPCardCustomerName subtype of
e) Ninguna de las anteriores
CustomerId CustomerName
Unique Index
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á. Slot
Registration
{
{ SlotId* SlotDescription TechnicianId TechnicianName
Fx
RegistrationId* RegistrationDate RegistrationAmount Slot
}
{ SlotId* SlotDescription TechnicianId TechnicianName
Technician
{ TechnicianId* TechnicianName
} }
}
a)
b)
c)
d)
TECHNICIAN
SLOT
REGISTRATION
REGISTRATIONSLOT
TechnicianId* TechnicianName
SlotId* SlotDescription TechnicianId
RegistrationId* RegistrationDate
RegistrationId* SlotId* TechnicianId
TECHNICIAN
SLOT
REGISTRATION
REGISTRATIONSLOT
TechnicianId* TechnicianName
SlotId* SlotDescription TechnicianId
RegistrationId* RegistrationDate RegistrationAmount
RegistrationId* SlotId* TechnicianId
TECHNICIAN
SLOT
REGISTRATION
REGISTRATIONSLOT
TechnicianId* TechnicianName
SlotId* SlotDescription TechnicianId
RegistrationId* RegistrationDate
RegistrationId* SlotId*
TECHNICIAN
SLOT
REGISTRATION
REGISTRATIONSLOT
TechnicianId* TechnicianName
SlotId* SlotDescription TechnicianId
RegistrationId* RegistrationDate RegistrationAmount
RegistrationId* SlotId*
e) Ninguna es correcta
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: RESERVATION
CUSTOMER
SLOT
RESERVATIONSLOT
a) b) c) d)
RESERVATION + RESERVATIONSLOT RESERVATION + CUSTOMER RESERVATION + RESERVATIONSLOT + SLOT 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. Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
} Customer
Slot
{
{ SlotId* SlotDescription
CustomerId* CustomerName }
} }
a) b) c) d)
RESERVATIONSLOT + RESERVATION RESERVATIONSLOT + SLOT RESERVATIONSLOT + RESERVATION + SLOT RESERVATIONSLOT + RESERVATION + SLOT + CUSTOMER
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: Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Nullable = yes
Slot Customer
{
{
SlotId* SlotDescription
CustomerId* CustomerName }
} }
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
Technician
{
{ SlotId* SlotDescription TitularTechnicianId TitularTechnicianName SubstituteTechnicianId SubstituteTechnicianName
}
TechnicianId* TechnicianName }
Subtype group: SlotTechnicians
TitularTechnicianId TitularTechnicianName SubstituteTechnicianId SubstituteTechnicianName
subtype of subtype of subtype of subtype of
TechnicialId TechnicianName TechnicianId TechnicianName
Slot Rules: Error( ‘Invalid Substitute Technician’) if TitularTechnicianId =SubstituteTechnicianId;
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
Invoice
{
{ InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount
SlotId* SlotDescription TechnicianId TechnicianName }
Slot
{
Technician
SlotId* SlotDescription InvoiceSlotAmount
{ TechnicianId* TechnicianName }
} }
b)
Slot
Invoice
{
{ SlotId* SlotDescription TechnicianId TechnicianName
InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount
}
Slot
{
Technician
SlotId* SlotDescription TechnicianId TechnicianName InvoiceSlotAmount
{ TechnicianId* TechnicianName } } }
Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> TechnicianId;
c)
Slot
Invoice
{
{ InvoiceId* InvoiceDate InvoiceTechnicianId InvoiceTechnicianName InvoiceAmount
SlotId* SlotDescription TechnicianId TechnicianName }
Slot
{
Technician
SlotId* SlotDescription TechnicianId TechnicianName InvoiceSlotAmount
{ TechnicianId* TechnicianName } } }
Subtype group: InvoiceTechnician
InvoiceTechnicianId InvocieTechnicianName
subtype of subtype of
TechnicialId TechnicianName
Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> InvoiceTechnicianId;
d)
Slot
Invoice
{
{ SlotId* SlotDescription TechnicianId TechnicianName
}
InvoiceId* InvoiceDate TechnicianId TechnicianName InvoiceAmount
Technician
{
Slot
SlotId* SlotDescription InvoiceSlotTechnicianId InvoiceSlotTechnicianName InvoiceSlotAmount
{ TechnicianId* TechnicianName } } }
Subtype group: InvoiceSlotTechnician
InvoiceSlotTechnicianId InvocieSlotTechnicianName
subtype of subtype of
TechnicialId TechnicianName
Invoice Rules: Error( ‘Invalid Slot’) if TechnicianId <> InvoiceSlotTechnicianId ;
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.
Person
Customer
Technician
{
{
{
PersonId* PersonName PersonPhone
CustomerId* CustomerName CustomerPhone CustomerIsVIP CustomerCredit PersonId
}
TechnicianId* TechnicianName TechnicianPhone TechnicianSalary PersonId }
}
Índice Unique en esta tabla compuesto por PersonId
Verdadero:
Índice Unique en esta tabla compuesto por PersonId
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?
Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
Customer
{
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
Verdadero:
Falso:
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?
Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
Customer
{
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
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
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
Customer
{
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
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
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
{
Customer
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
a) b) c) d) e)
Proc.call( ReservationId ) if Insert on BeforeComplete; Proc.call( ReservationId ) If Insert on Commit; Proc.call( ReservationId ) if Insert on AfterComplete; Proc.call( ReservationId ) on AfterInsert; 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. Slot
Reservation
{
{ SlotId* SlotDescription
}
ReservationId* ReservationDate CustomerId CustomerName CustomerIsVIP
Customer
Slot
{
{ CustomerId* CustomerName CustomerIsVIP
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;
a) b) c) d)
Las reglas se disparan en el orden en el que han sido declaradas El orden de ejecución será: b. - c. - d. - a. El orden de ejecución será: c. - b. - d. - a. Ninguna de las opciones anteriores es correcta
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. Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
Customer
{
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
Source: For each
&SlotsQuantity = Count( ReservationSlotTime) Print printblock1 // ReservationDate, CustomerName, &SlotsQuantity endfor
a) b) c) d)
Tabla de partida: RESERVATION – Tabla de evaluación: RESERVATIONSLOT Tabla de partida: RESERVATION – Tabla de evaluación: RESERVATION Tabla de partida: CUSTOMER – Tabla de evaluación: RESERVATION Tabla de partida: RESERVATIONSLOT – Tabla de evaluación: RESERVATIONSLOT
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. Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
Customer
{
{
SlotId* SlotDescription ReservationSlotTime
CustomerId* CustomerName }
} }
Source: For each Where Count( ReservationDate, ReservationDate = Today() ) > 10
Print printblock1 // CustomerId, CustomerName endfor
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
Reservation
{
{ SlotId* SlotDescription
}
ReservationId* ReservationDate CustomerId CustomerName ReservationAmount
Customer
Slot
{
{ CustomerId* CustomerName
SUM( ReservationSlotAmount)
SlotId* SlotDescription ReservationSlotAmount
} } }
For each
Print printblock1 // ReservationId , ReservationDate y SlotDescritpion For each
Print printblock2 // CustomerName endfor Endfor
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
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
{
Customer
{
SlotId* SlotDescription
CustomerId* CustomerName }
} }
For each
Print printblock1 // CustomerName For each
Print printblock2 // ReservationId , ReservationDate y SlotDescritpion endfor Endfor
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. Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName ReservationAmount
}
Customer
Slot
{
{ CustomerId* CustomerName
SlotId* SlotDescription ReservationSlotAmount
} } }
SUM( ReservationSlotAmount)
a) For each order CustomerId defined by ReservationDate Print printblock1 // CustomerId , CustomerName For each Print printblock2 // ReservationId , ReservationDate y ReservationAmount endfor Endfor
b) For each
Print printblock1 // CustomerId , CustomerName For each
Print printblock2 // ReservationId , ReservationDate y ReservationAmount endfor Endfor
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. Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName ReservationAmount
}
Customer
Slot
{
{ CustomerId* CustomerName
SlotId* SlotDescription ReservationSlotAmount
} } }
SUM( ReservationSlotAmount)
For each defined by ReservationDate Print printblock1 // CustomerId , CustomerName For each Print printblock2 // ReservationId , ReservationDate y ReservationAmount endfor Endfor
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.
SlotType
Slot
Customer
Reservation
{
{
{
{
SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
}
ReservationId* ReservationDate CustomerId CustomerName
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 …….
}
a) 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
b)
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
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
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
} Customer
Slot
{
{
}
} }
Parameters:
&date &slot
Conditions:
SlotId* SlotDescription
CustomerId* CustomerName
Data Selector: SlotReservation
ReservationDate = &date SlotId = &slot
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
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
} Customer
Slot
{
{ SlotId* SlotDescription
CustomerId* CustomerName }
} }
Data Provider Source:
Rule: parm( &dateFrom);
Client {
Id = CustomerId Name = CustomerName SlotsAmount = Count( SlotId, ReservationDate >= &dateFrom) SlotsReserved where ReservationDate >= &dateFrom { Slot {
Description = SlotDescription } } }
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”.
Slot
Reservation
Invoice
{
{
{
SlotId* SlotDescription SlotReservationPrice
ReservationId* ReservationDate CustomerId CustomerName
}
InvoiceId* Autonumber = True InvoiceDate CustomerId CustomerName InvoiceStartPeriodDate InvoiceEndPeriodDate InvoiceAmount
Slot
{
Customer
SlotId* SlotDescription SlotReservationPrice
{ CustomerId* CustomerName }
} }
Business Component = True
}
Data Provider: GetInvoices
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.
Customer
Slot
{
{ CustomerId* CustomerName
Business Component = True
SlotId* SlotDescription
}
Reservation
{ SlotReservationDate* ShiftId* ShiftDescription CustomerId CustomerName SlotReservationBonus
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;
a)
// &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()
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
c)
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
d)
Ninguna de las opciones anteriores es correcta.
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).
SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
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).
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.
Technician
Slot
{
{ TechnicianId* TechnicianName
SlotId* SlotDescription TechnicianId TechnicianName
} }
Freestyle Grid: Grid1 Grid: Grid2
a)
b)
c)
d)
e) Ninguna de las anteriores
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. SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
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.
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. SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
AllowSelection=True
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
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.
Slot
Reservation
{
{ SlotId* SlotDescription
ReservationId* ReservationDate CustomerId CustomerName
}
Slot
{
Customer
SlotId* SlotDescription
{ Customerd* CustomerName }
} }
a) 9 veces b) 2 veces c) 11 veces d) Ninguna de las anteriores
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. SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
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.
Grid: Grid1
Grid: Grid2
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.
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.
SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
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.
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.
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.
SlotType
Slot
{
{ SlotTypeId* SlotTypeDescription
SlotId* SlotDescription SlotTypeId SlotTypeDescription
} }
Verdadero:
Falso:
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