... | @@ -3,4 +3,58 @@ |
... | @@ -3,4 +3,58 @@ |
|
El _Submission_ y el _Workflow_ son los mecanismos más importantes que provee para permitir el ingreso de bitstreams al repositorio de parte de los usuarios (E-Person) vinculados al repositorio, a través de una interfaz web, amigable y guiada.
|
|
El _Submission_ y el _Workflow_ son los mecanismos más importantes que provee para permitir el ingreso de bitstreams al repositorio de parte de los usuarios (E-Person) vinculados al repositorio, a través de una interfaz web, amigable y guiada.
|
|
|
|
|
|
## Submission
|
|
## Submission
|
|
El proceso de Submission en DSpace es un conjunto de pasos o steps, donde cada step se corresponde con una o más páginas de interfaz. Estos pasos permiten la interacción entre los usuarios y la aplicación a través del envio de formularios de datos. Tambien existen pasos automáticos que no requieren de una vista para ejecutarse, y por lo general, estos son ejecutados automáticamente por DSpace (p.e. un paso para agregar un determinado metadato dinámico). El proceso termina una vez todos los pasos fueron ejecutados, y tras su finalización, el item enviado por el usuario pasa al proceso de Workflow para una revisión por parte de los administradores correspondientes. |
|
El proceso de Submission en DSpace es un conjunto de pasos o steps, donde cada step se corresponde con una o más páginas de interfaz. Estos pasos permiten la interacción entre los usuarios y la aplicación a través del envio de formularios de datos. Tambien existen pasos automáticos que no requieren de una vista para ejecutarse, y por lo general, estos son ejecutados automáticamente por DSpace (p.e. un paso para agregar un determinado metadato dinámico). El proceso termina una vez todos los pasos fueron ejecutados, y tras su finalización, el item enviado por el usuario pasa al proceso de Workflow para una revisión por parte de los administradores correspondientes.
|
|
\ No newline at end of file |
|
|
|
|
|
### Modelo básico
|
|
|
|
El módulo de Submission persiste datos en la base de datos cada vez que un envío es iniciado, generando una tupla en la tabla workspaceitem. La información guardada principalmente es:
|
|
|
|
|
|
|
|
- ID del usuario (EPerson) que inició el envío.
|
|
|
|
- La colección en donde se quiere enviar una publicación.
|
|
|
|
- El item generado y asociado al envío.
|
|
|
|
- A su vez, se guarda en el sistema los bitstreams (archivos) que el usuario quiere depositar.
|
|
|
|
|
|
|
|
## Crear STEP con JSPUI
|
|
|
|
Para crear un STEP de submission se necesitan como mínimo tres archivos:
|
|
|
|
- Clase Step (dspace-api): Esta clase realiza todo el procesamiento detrás de escena que requiere el Step. Los métodos de esta clase son utilizados por JSPUI y XMLUI.
|
|
|
|
- Clase JSPStep (dspace-jspui): Realiza cualquier procesamiento previo o posterior de la Clase Step utilzando clases JSP (si corresponde) para generar la interfaz de usuario.
|
|
|
|
- Vista JSP (dspace-jspui): archivo con extención jsp que muestra la vista del Step declarada en la Clase JSPStep.
|
|
|
|
|
|
|
|
Supongamos que queremos crear el Step "OneStep".
|
|
|
|
Para JSPUI se necesita la creación de tres archivos (mínimo):
|
|
|
|
- OneStep (dspace-api): `dspace\modules\jspui\src\main\java\org\dspace\submit\step\OneStep.java`
|
|
|
|
- JSPOneStep (dspace-jspui): `dspace\modules\jspui\src\main\java\org\dspace\app\webui\submit\step\JSPOneStep.java`
|
|
|
|
- ViewOneStep (dspace-jspui): `dspace\modules\jspui\src\main\webapp\submit\one-step.jsp`
|
|
|
|
|
|
|
|
### Clase Step
|
|
|
|
El método `doProcessing()` de esta se encarga de realizar cualquier procesamiento de la información ingresada por el usuario y/o realizar el procesamiento por pasos (si no se requiere la interacción del usuario). Es decir, guarda los datos en la BD, según sea necesario, y devuelve mensajes de error (si los hay) que luego pueden ser procesados por la interfaz de usuario adecuada (JSPUI o XMLUI)
|
|
|
|
> NOTA: Si este paso es un paso no interactivo (es decir, no requiere interfaz de usuario), ¡debería realizar *todo* su procesamiento en este método!
|
|
|
|
|
|
|
|
Si está utilizando la interfaz de usuario JSP, también deberá crear una clase que implemente `org.dspace.app.webui.submit.JSPStep`, y que proporcione los métodos relacionados con JSP necesarios. Hay una muestra correspondiente de dicha clase en `org.dspace.app.webui.submit.step.JSPSampleStep`.
|
|
|
|
|
|
|
|
Podrá ver un ejemplo en: `dspace-api/src/main/java/org/dspace/submit/step/SampleStep.java`
|
|
|
|
|
|
|
|
### Clase JSPStep
|
|
|
|
Esta clase se encarga del procesamiento anterior con `doPreProcessing()` y posterior con `doPostProcessing()` al método `doProcessing()` de la clase Step.
|
|
|
|
Los siguientes métodos se llaman en este orden:
|
|
|
|
* Se invoca el método `doPreProcessing()`
|
|
|
|
* Si se especificó `showJSP()` en `doPreProcessing()`, se mostrará el JSP especificado
|
|
|
|
* Si no se especificó `showJSP()` en `doPreProcessing()`, se llama al método `doProcessing()` y el paso se completa inmediatamente
|
|
|
|
* Una vez que el usuario retorne del JSP, se invoca el método `doProcessing()` en el _AbstractProcessingStep_ apropiado para procesar la entrada generada
|
|
|
|
* Luego, se ejecuta el método `doPostProcessing()` para determinar si se requiere más interacción con el usuario y si es necesario llamar a otros JSP.
|
|
|
|
* Si existe páginado en el Step creado, el proceso comienza nuevamente (para la nueva página).
|
|
|
|
* Una vez que todas las páginas están completas, el control del Step se reenvía al SubmissionController y se llama al siguiente paso.
|
|
|
|
|
|
|
|
#### Método doPreProcessing()
|
|
|
|
Realiza cualquier procesamiento previo para determinar qué JSP (si corresponde) se utiliza para generar la interfaz de usuario. Este método debe incluir la recopilación y validación de todos los datos requeridos por el JSP, incluso establecer las variables que se pasaran por el Request (Solicitud).
|
|
|
|
- _Si este paso requiere la interacción del usuario_, este método debe llamar al JSP para que se muestre, usando el método "showJSP()" de la clase JSPStepManager.
|
|
|
|
- _Si este paso no requiere la interacción del usuario_ o está utilizando únicamente Manakin (XMLUI) para su interfaz de usuario, entonces este método puede dejarse VACÍO, ya que todo el procesamiento del paso debe ocurrir en el método doProcessing()
|
|
|
|
|
|
|
|
Podrá ver un ejemplo en: dspace-jspui/src/main/java/org/dspace/app/webui/submit/step/JSPSampleStep.java
|
|
|
|
|
|
|
|
El preprocesamiento puede incluir, entre otros:
|
|
|
|
1. Recopilar los datos necesarios (para mostrar en el JSP) de la BD u otras clases de DSpace. Estos datos deben almacenarse en el objeto HttpServletRequest (usando `request.setAttribute()`) para que su JSP pueda acceder a ellos.
|
|
|
|
2. Según la entrada, determine qué JSP realmente desea cargar. Esto puede ser especialmente importante para los Step que usan múltiples JSP.
|
|
|
|
3. Para los pasos con múltiples "páginas", es posible que desee utilizar el método heredado `getCurrentPage()` para determinar en qué página se encuentra actualmente y así saber qué JSP mostrar, por ejemplo.
|
|
|
|
|
|
|
|
|
|
|
|
#### Método doPostProcessing() |