Guía de TriggersVersión 5.1.0
iSUM 5.1.0: Guía de Triggers                                                           Triggers (Disparadores)            ...
iSUM 5.1.0: Guía de TriggersDefinición de Trigger            Un trigger es una clase que implementa una interfaz que dispo...
iSUM 5.1.0: Guía de Triggers                                </class>                                <class>               ...
iSUM 5.1.0: Guía de TriggersImplementación y configuración de una tarea            Para implementar una tarea debe constru...
iSUM 5.1.0: Guía de Triggerscuenta de acceso al servicio correctamente, iSUM notificará al triggerAddProfileToUser llamand...
Próxima SlideShare
Cargando en…5
×

Triggers

553 visualizaciones

Publicado el

Publicado en: Empresariales
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
553
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
8
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Triggers

  1. 1. Guía de TriggersVersión 5.1.0
  2. 2. iSUM 5.1.0: Guía de Triggers Triggers (Disparadores) En esta guía se define el concepto de trigger, los diferentes tipos de evento que se pueden registrar, y por que objetos de iSUM son soportados. • Introducción • Activación de los triggers • Tipos de evento • Definición de Trigger • Características de un trigger • Registrar un trigger • Objetos que soportan la gestión de triggers • Implementación y configuración de una tareaIntroducción iSUM proporciona un mecanismo con el cual puede automatizar tareas, de forma que estas sean ejecutadas antes o después de que se produzca un determinado evento sobre un objeto.Activación de los triggers Dentro del fichero isum.xml se especifica si iSUM debe gestionar triggers. También puede cambiar el nombre del fichero donde se registran y definen los trigers. ... <trigger> <enabled>false</enabled> <definition_file_name>triggers.xml</definition_file_n ame> </trigger> ...Tipos de evento Se entiende como evento la llamada a un método de un objeto de persistencia. Puede definir una tarea para que se lleve a cabo cuando se produzca un evento, pero la tarea asociada al evento puede ser ejecutada antes o después de que se produzca dicho evento.Tipos de evento • Insert: Se produce cuando se intenta guardar el objeto por primera vez. • Update: Se produce cuando se intenta modificar algún dato del objeto. • Remove: Se produce cuando se intenta eliminar el objeto. 1
  3. 3. iSUM 5.1.0: Guía de TriggersDefinición de Trigger Un trigger es una clase que implementa una interfaz que dispone de un método run(...), en el cual se implementa la tarea que debe ser llevada a cabo, y un método error(...), en el cual se implementa la tarea que debe ser llevada a cabo en caso de que se produzca algún problema, en la mayoría de casos debería deshacer las acciones llevadas a cabo en el método run().Características de un trigger Puesto que los trigger se establecen sobre objetos de persistencia, cada objeto de persistencia que soporte la gestión de triggers tiene asociado un tipo de trigger. Cada trigger implementa una interfaz concreta, así pues para gestionar un trigger sobre un objeto que implemente la interfaz Device dispone de una interfaz DeviceTrigger la cual define los siguientes métodos. • public void run(Device device); • public void error(Device device); Como puede observar los dos métodos proporcionan un objeto, este objeto es el objeto sobre el cual se produjo el evento.Registrar un trigger Para que una tarea se lleve a cabo, debe registrar el trigger previamente. Para registrar un trigger existe un fichero de registro llamado triggers.xml en el cual debe especificar el nombre de la clase que implementa el código de la tarea que el trigger se encargara de ejecutar, e indicar si la tarea es critica o no. Una tarea critica implica que si alguno de los triggers registrados para el mismo evento no se ejecuta correctamente, los triggers anteriormente ejecutados serán notificados del imprevisto con una llamada al método error(...), e iSUM abortará la acción que iba a realizar sobre el objeto, en el caso en el cual iSUM ya hubiera realizado la acción, como ocurre en los triggers definidos para ejecutarse después de haberse realizado la acción, iSUM no deshará dicha acción sobre el objeto, pero si notificara a los triggers anteriormente ejecutados. Cada objeto de iSUM que soporta la gestión de triggers tiene una entrada definida en el fichero de configuración triggers.xml que debe ser completada para definir o registrar un trigger. Estructura del fichero de configuración de triggers correspondiente a la definición de triggers para gestionar eventos sobre objetos device. Puede observar que la estructura <class> <name>class_name</name> <critical>is_critical</critical> </class> solo debe ser definida cuando se define un trigger. <triggers> … <device> <before_insert> </before_insert> <after_insert> <class> <name>Name_One</name> <critical>false</critical> 2
  4. 4. iSUM 5.1.0: Guía de Triggers </class> <class> <name>Name_Two</name> <critical>false</critical> </class> </after_insert> <before_update> </before_update> <after_update> </after_update> <before_remove> </before_remove> <after_remove> <class> <name>Name_three</name> <critical>false</critical> </class> </after_remove> </device> … </triggers>Objetos que soportan la gestión de triggers Cada objeto de iSUM que soporta la gestión de triggers tiene asociada una interfaz, la cual debe ser implementada por el trigger que defina alguna tarea sobre dicho objeto.Relación de objetos iSUM con sus respectivas interfaces trigger. • AttributeTrigger – GroupAttribute, PortalAttribute, ServiceAttribute, UserAttribute • CertificationAuthorityTrigger – CertificationAuthority • ContentTypeTrigger -- ContentType • DescriberTrigger -- Describer • DeviceTrigger -- Device • GroupTrigger -- Group • IntegratorTrigger -- Integrator • InterfaceTrigger -- Interface • LanguageTrigger -- Language • PortalTrigger -- Portal • ProfileTrigger -- Profile • RendererDescriptorTrigger -- RendererDescriptor • RenderizationRuleSetTrigger -- RenderizationRuleSet • ServiceTrigger -- Service • ShortcutTrigger -- Shortcut • SkinTrigger -- Skin • SourceTrigger -- Source • SourceValueTrigger -- SourceValue • TableSourceTrigger -- TableSource • TransformationRuleSetTrigger -- TransformationRuleSet • TransformerDescriptorTrigger -- TransformerDescriptor • UserTrigger -- User • UsersGroupTrigger -- UsersGroup • UsersGroupTypeTrigger -- UsersGroupType 3
  5. 5. iSUM 5.1.0: Guía de TriggersImplementación y configuración de una tarea Para implementar una tarea debe construir una clase que implemente la interfaz del trigger correspondiente y registrarla en el fichero triggers.xml . Ejemplo: public class AddProfileToUser implements UserTrigger{ public Trigger_Test(){ } public void run(User user){ IsumFactory iFactory; iFactory = PersistenceManager.getIsumFactory(Config.getInstance( ).persistenceType); Profile profile = iFactory.getProfile(“E-COMMERCE”); user.addProfile(profile.getID()); } public void error(User user){ IsumFactory iFactory; iFactory = PersistenceManager.getIsumFactory(Config.getInstance( ).persistenceType); Profile profile = iFactory.getProfile(“E-COMMERCE”); user.removeProfile(profile.getID()); } } Como puede apreciar en el código, la función que este realiza es la de asignar un perfil a un usuario. Ahora hay que registrar el trigger en el fichero triggers.xml. <triggers> … <user> <before_insert> </before_insert> <after_insert> <class> <name>AddProfileToUser</name> <critical>false</critical> </class> <class> <name>CreateAccount</name> <critical>true</critical> </class> </after_insert> <before_update> </before_update> <after_update> </after_update> <before_remove> </before_remove> <after_remove> </after_remove> </user> … </triggers> Puede apreciar, que el trigger no se ha definido como critico, sin embargo si se ha implementado el método error(...), también puede ver que hay definido otro trigger, llamado CreateAcound que su tarea es la de crear automáticamente una cuenta de acceso, a un servicio de comercio electrónico. Como la creación de la cuenta es posterior a la asignación del perfil que da acceso al servicio, si no se ha creado la 4
  6. 6. iSUM 5.1.0: Guía de Triggerscuenta de acceso al servicio correctamente, iSUM notificará al triggerAddProfileToUser llamando al método error(...) el cual quitara el perfilanteriormente asignado al usuario, para que no tenga acceso a un servicio para elcual no dispone de los datos requeridos. 5

×