Pregunta
Mathew Lambert · Jun 16, 2020

Callback de resultado CRUD para clases persistentes

Me gustaría saber si hay alguna forma de tener un callback o similar para clases persistentes, que se ejecute siempre después de la operacion (ya sea que falle o que vaya bien)

%OnOpen se ejecuta antes de la accion y no hay callback de after.

%OnAfterDelete y %OnAfterSave se ejecutan solo después de una operación satisfactoria.

 

00
1 0 4 67
Log in or sign up to continue

Respuestas

Hola Mathew,

Siempre se puede hacer una clase que herede de %Persistent y que exponga los métodos que quieras para guardar por ejemplo. Internamente allí puedes crear tu Callback y luego llamar al %Save.

Algo así como:

Class MiPersistente Extends %Persistent {

Method OnGuardar() {
}

Method Guardar() {
  ..OnGuardar()
  ..%Save()
}
}

Luego en lugar de heredar de %Persistent heredas de esta clase y sobre escribes el Callback.

No lo he probado pero es una alternativa a investigar

Gracias

Ya pero esto tiene dos problemas, el %Save es diferente para cada clase (es code generator) por llo que no es lo mismo hacer un save de mi clase que de esta "super", por otro lado, me gustaría evitar tener que modificar >17k llamadas a %Save

Buscar/Reemplazar todo 17 mil veces... ¿qué puede salir mal?

Como parece que no hay nada que pueda solucionar esto ahora mismo, vamos a hablar con InterSystems. Creo que puede ser interesante.