API Rest de gestión de formularios

Ofrece una serie de métodos para facilitar la gestión de formularios de forma externa. La ruta a los servicios web de G·Forms es la siguiente:

$contexto_gforms$/seam/resources/rest/Questionnaire

El sistema ofrece una librería de integración con los servicios web de G·Forms para simplificar el uso de los mismos llamada gforms-ws-client. Todo el código de ejemplo usado para ilustrar las opciones de integración de webservices hace uso de dicha librería.
Para obtener el recurso para operar con la api de gestión de formularios es necesario incluir las siguientes líneas en nuestro código:
QuestionnaireService questionnaireService = new QuestionnaireService("$contexto_gforms$/seam/resources/rest");

Estructura del XML Questionnaire

<questionnaire>
   <definicion></definicion>
   <descripcion></descripcion>
   <formulario></formulario>
   <publicado></publicado>
   <version></version>
</questionnaire>

Estructura de la clase Questionnaire

public class Questionnaire {

    private String formulario;
    private String descripcion;
    private Boolean publicado;
    private String version;
    private String definicion;
/*
* Getters and Setters
*/
}

Obtención de formulario

Obtiene la definición completa de un formulario a traves de los parámetros formulario y version (opcional) pasados en el objeto Questionnaire. Si versión es nulo o vacío se devuelve la ultima versión del formulario. Si se encuentra el formulario que cumpla con los filtros especificados el método retornará un objeto Questionnaire con sus atributos rellenos. En caso de no encontrarlo o de error inesperado se lanzará una excepción GFormsWSException con la causa del error.

Invocación a través de gforms-ws-client

Questionnaire questionnaireQuery = new Questionnaire();
questionnaireQuery.setFormulario("id_formulario");
questionnaireQuery.setVersion("version_formulario"); //Opcional
Questionnaire questionnaire = questionnaireService.getQuestionnaire(questionnaireQuery);

Invocación REST
Se realizará una petición PUT a la url $contexto_gforms$/seam/resources/rest/Questionnaire/query enviando el siguiente XML:

<questionnaire>
  <formulario>id_formulario</formulario>
  <version>version_formulario</version> <!-- Opcional -->
</questionnaire>

Creación de formulario

Crea un formulario nuevo vacío con los campos formulario (opcional) y descripcion (opcional) pasados en el objeto Questionnaire. Si no se pasan se definirán aleatoriamente. Devuelve un String con el id del formulario creado. En caso de que el código de formulario no sea válido, que ya exista en el sistema o de error inesperado se lanzará una excepción GFormsWSException con la causa del error.

Invocación a través de gforms-ws-client

Questionnaire questionnaire = new Questionnaire();
questionnaire.setFormulario("id_formulario"); //Opcional
questionnaire.setDescripcion("desc_formulario"); //Opcional
String form_id = questionnaireService.createQuestionnaire(questionnaire);

Invocación REST
Se realizará una petición PUT a la url $contexto_gforms$/seam/resources/rest/Questionnaire/create enviando el siguiente XML:

<questionnaire>
  <formulario>id_formulario</formulario>
  <descripcion>desc_formulario</descripcion>
</questionnaire>

Eliminación de formulario

Elimina el formulario especificado en el campo formulario, si el campo version esta relleno elimina sólo esa versión, en caso contrario eliminará todas las versiones. También se eliminan todas las respuestas que tenga el formulario asociadas. En caso de que el código de formulario venga vacío o no exista se lanzará una excepción GFormsWSException con la causa del error.

Invocación a través de gforms-ws-client

Questionnaire questionnaireDelete = new Questionnaire();
questionnaireDelete.setFormulario("id_formulario");
questionnaireDelete.setVersion("version_formulario"); //Opcional
questionnaireService.deleteQuestionnaire(questionnaireDelete);

Invocación REST
Se realizará una petición PUT a la url $contexto_gforms$/seam/resources/rest/Questionnaire/delete enviando el siguiente XML:

<questionnaire>
  <formulario>id_formulario</formulario>
  <version>version_formulario</version> <!-- Opcional -->
</questionnaire>

Clonación de formulario

Crea un formulario nuevo copia del formulario original con los campos formulario (opcional) y version (opcional) pasados en el objeto Questionnaire contenido en el objeto QuestionnaireClone. Si no se indica versión se cogerá la última del formulario original. Se utilizarán los campos pasados en el objeto Questionnaire copia (opcional) contenido en el objeto QuestionnaireClone, formulario (opcional), descripcion (opcional) y version (opcional) para el nuevo formulario. Si no se pasan se añadirá a los valores de formulario original formulario y descripcion con la cadena "_copia" concatenada y el campo versión comenzará en '1'. En caso de que el formulario original esté vacío o no exista, o que el id del formulario de copia ya exista en el sistema se lanzará una excepción GFormsWSException con la causa del error.

Invocación a través de gforms-ws-client

Questionnaire questionnaireOriginal = new Questionnaire();
Questionnaire questionnaireCopia = new Questionnaire(); //Opcional
questionnaireOriginal.setFormulario("id_formulario_original"); 
questionnaireOriginal.setVersion("version_formulario_original"); //Opcional
questionnaireCopia.setFormulario("id_formulario_copia"); //Opcional
questionnaireCopia.setDescripcion("desc_formulario_copia"); //Opcional
QuestionnaireClone questionnaireClone = new QuestionnaireClone();
questionnaireClone.setOriginal(questionnaireOriginal);
questionnaireClone.setCopia(questionnaireCopia);
questionnaireService.cloneQuestionnaire(questionnaireClone);

Invocación REST
Se realizará una petición PUT a la url $contexto_gforms$/seam/resources/rest/Questionnaire/clone enviando el siguiente XML:

<questionnaireClone>
    <original>
        <formulario>id_formulario_original</formulario>
        <version>version_formulario_original</version> <!-- Opcional -->
    </original>
    <copia>
        <formulario>id_formulario_original</formulario> <!-- Opcional -->
        <descripcion>desc_formulario_copia</descripcion> <!-- Opcional -->
    </copia>
</questionnaireClone>