Llenado previo de scripts con datos capturados

Es posible llenar previamente los valores que se mostrarán al usuario para que las respuestas sólo se deban confirmar o modificar.

Por ejemplo, se puede llenar previamente el nombre y la fecha de nacimiento de un usuario en una página de Detalles personales suponiendo que el usuario ya haya iniciado la sesión y otra base de datos contenga los detalles personales.

El DS se puede llenar previamente antes del inicio de la ejecución de script de la manera siguiente:

Figura 1. Fragmento de código que llena el DS
...
Datastore ds = null;

try {
  // abrir el almacén de datos y crear la entidad raíz
  ds = DatastoreFactory.newInstance().openDatastore(schemaName);
} catch (NoSuchSchemaException e) {
  throw new AppException(IEG.ID_SCHEMA_NOT_FOUND);
}

final EntityType appType = ds.getEntityType("Application");
final Entity rootElement = ds.newEntity(appType);

ds.addRootEntity(rootElement);
    
final EntityType personType = ds.getEntityType("Person");
final Entity person = ds.newEntity(personType);
    
person.setAttribute("firstName", "TestFirstName");
person.setAttribute("lastName", "TestLastName");
person.setAttribute("dateOfBirth", "19700101");
//...
    
rootElement.addChildEntity(person);

Entonces la entidad raíz se puede utilizar en la creación de una nueva ejecución de script de la siguiente manera:

Figura 2. Creación de una ejecución de script
...

// crear la ejecución de script
final IEGRootEntityID rootEntityID = new IEGRootEntityID();
rootEntityID = rootElement.getUniqueID();
final IEGRuntime runtimeAPI = new IEGRuntime();
final IEGScriptExecutionIdentifier executionIdentifier =
  runtimeAPI.createScriptExecutionExistingRootEntity(
    iegScriptID, schemaName, rootEntityID);

Entonces se puede ejecutar el reproductor IEG utilizando esta nueva ejecución de script de la manera siguiente:

Figura 3. Inicio del reproductor IEG
<?xml version="1.0" encoding="UTF-8"?>
<PAGE PAGE_ID="IEGScriptLauncher">
  <JSP_SCRIPTLET>
    <![CDATA[
curam.omega3.request.RequestHandler rh =
  curam.omega3.request.RequestHandlerFactory.getRequestHandler(
    request);

String context = request.getContextPath() + "/";
     
String url =
  context + "ieg/Screening.do?" + "executionID=" + executionID
    + "&" + rh.getSystemParameters();

// Redirigir a la página correcta.
response.sendRedirect(response.encodeRedirectURL(url));
    ]]>
  </JSP_SCRIPTLET>
</PAGE>

Tenga en cuenta que sólo se puede llenar previamente el DS y no las preguntas de control u otra información relacionada con el script ya que éstas se almacenan en la ejecución del script y no en el DS. Esto significa que no es posible llenar previamente los datos visualizados en la primera sección del script y empezar en la segunda sección. La primera sección se visualizará y el usuario podrá confirmar los datos llenados previamente.