Tipo de dato | Nombre | Uso | Dónde se puede consultar más sobre él |
---|---|---|---|
String | usuarioActual | El nombre de usuario del usuario que está actualmente loggueado en la aplicación, ó nulo si no hay ningún usuario loggueado. | |
Actividad | actividad | La actividad que va a realizarse | Actividad es una clase que representa una actividad a realizarse. Para consultar todos los atributos y métodos de esta clase ver el diagrama de clases. |
Estos parámetros se reciben en un XML que satisface el siguiente esquema:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="usuarioActual" type="xs:string"/>
<xs:element name="actividad">
<xs:complexType>
<xs:element name="id" type="xs:integer"/>
<xs:element name="accion" type="xs:string"/>
<xs:element name="moduloEncargado" type="xs:string"/>
<xs:element name="fechaRealizacion" type="xs:date"/>
<xs:element name="duracion" type="xs:positiveInteger"/>
<xs:element name="parametrosModulo" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
Un ejemplo de un XML que satisface este esquema es:
<?xml version="1.0"?>
<usuarioActual>jaimito</usuarioActual>
<actividad>
<id>666</id>
<accion>Borrar</accion>
<moduloEncargado>Contenido</moduloEncargado>
<fechaRealizacion>31/06/2006 23:58</fechaRealizacion>
<duracion>1234</duracion>
<parametrosModulo>
<![CDATA[
<id>33</id>
]]>
</parametrosModulo>
</actividad>
Pseudocódigo:
String realizarActividad(String usuarioActual, Actividad actividad) {
autorizado = Políticas.tienePermisos?(usuarioActual, actividad)
if (!autorizado) {
raise ActividadNoAutorizadaException
}
horaAntes = Tiempo.ahora
nombreModulo = actividad.moduloEncargado
modulo = Modulo.encontrarModulo(nombreModulo)
resultado = nulo
try {
resultado = modulo.invocar(actividad.accion, actividad.parametrosModulo)
} catch (Exception e) {
raise ActividadNoRealizadaException(e.mensaje)
}
duracion = Tiempo.ahora - horaAntes
try {
BaseDeDatos.almacenarActividad(actividad, duracion)
} catch (Exception e) {
raise ErrorEnBaseDeDatosException(e.mensaje)
}
return resultado
}
El método RealizarActividad
retorna un único valor. Este valor es el HTML que retornó el módulo encargado de la actividad (por ejemplo, si la actividad es "Ver texto" el módulo de Contenidos retornará un HTML con el texto; éste será el valor retornado por este método). Este HTML estará empacado en un XML que satisface el siguiente esquema:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="response" />
</xs:schema>
Un ejemplo de un XML con este esquema es:
<response>
<![CDATA[
<html><body>Two minutes to midnight</body></html>
]]>
</response>
Nombre de la excepción | Cuándo se produce | Información que maneja |
---|---|---|
ActividadNoAutorizadaException | Cuando el módulo de Políticas indica que el usuario actual no está autorizado para realizar esta actividad. | Nada |
ActividadNoRealizadaException | Cuando el módulo encargado de ejecutar la actividad lanza una excepción (es decir, cuando ocurre una excepción fuera del módulo de Actividades). | Información extra que haya sido pasada por el módulo encargado sobre el error |
ErrorEnBaseDeDatosException | Cuando se produce un error al almacenar la actividad en la base de datos. | Causa de la excepción (por ejemplo, falta de espacio en disco o servidor de base de datos caído) |