anonymous Log in
Search
Recents:
v3.0
genexusextensions
Extension para GXServer
02/12/19 17:30

Enrique Almeida

Replies: 2

Hola, quiero hacer una extension para instalar en un GXServer, que haga
controles sobre un objeto y no deje hacer commit si no cumple alguna
condiocion.
Por ejemplo, para empezar, podria hacer una extension que no acepte un
commit si algun objeto del commit tiene parametros y no tiene IN/OUT/INOUT
en los parametros.
Tambien como ejemplo, me gustaria dar warning cuando hay una variable que
no este basada en un atributo o un dominio.
Me pueden ayudar con algun ejemplo?. Nunca hice una extensio para GXServer
y no se que diferencias tiene con las extensiones para el GX IDE.
Gracias,
Enrique
Replies

jlr

07/01/20 21:50
Hola, Enrique Creo que la mejor forma de hacer esto sería que tu extension se suscriba el evento BeforeSaveKBObject, y que en caso de que lo entienda necesario indique un error. Al participar del Save del objeto, te puede servir tanto del lado del cliente como del lado del server. Para que la extension sirva del lado del server simplemente tiene que ser una extension a nivel de BL (tu clase Package deriva de AbstractPackage, implementa IGxPackageBL, la dll no referencia paquetes de UI). Luego puedes elegir si lo instalas sólo del lado del cliente, sólo del lado del server o de los dos lados. Incluso podrías tener condiciones de error diferentes según de qué lado estás. Sería algo así: [EventSubscription(ArchitectureEvents.BeforeSaveKBObject)] public void OnBeforeSaveKBObject(object sender, KBObjectCancelEventArgs args) { if (!CheckRules(args.KBObject, out string message)) { args.Cancel = true; args.CancelMessage = message; } } private bool CheckRules(KBObject obj, out string message) { if (/* some condition */) { message = "Some error message"; return false; } if (/* some other condition */) { message = "Some other error message"; return false; } message = String.Empty; return true; } Saludos, ---------- Forwarded message ---------

Enrique Almeida

09/01/20 16:20
Gracias Jose por la rapida respuesta. Enrique El mar., 7 de ene. de 2020 a la(s) 18:51, José Lamas Ríos (jlr@genexus.com)


Back to genexusextensions