Skip to content

Instantly share code, notes, and snippets.

@mejibyte
Created November 11, 2011 21:35
Show Gist options
  • Save mejibyte/1359365 to your computer and use it in GitHub Desktop.
Save mejibyte/1359365 to your computer and use it in GitHub Desktop.
Uninteresting homework.

Parámetros Método RealizarActividad

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>

Semántica Operativa Método RealizarActividad

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
 }

Tipo de Retorno Método RealizarActividad

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>

Excepciones Método RealizarActividad

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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment