Objetos SCORM
SCORM es el acrónimo de Sharable Content Object Reference Model, se trata de una serie de estándares que permiten que elementos didácticos sean independientes del LMS pero al mismo tiempo se puedan comunicar con este para usarlos en el salón virtual para los alumnos.
Estos objetos didácticos son los SCOs (Sharable Content Object) que se distribuyen usando archivos zip que contiene las páginas html, imágenes, animaciones flash e incluso java applets, es decir, aunque un LMS no necesariamente tienen que ser Web, los SCOs son objetos que están pensados para ejecutarse sólo en el navegador.
Estos archivos zip que empaquetan el SCORM se pueden generar con diferentes programas de autoría SCORM y luego agregarse al LMS (Moodle, Dokeos, Karamelo), es decir son "ciegos" al LMS a donde se agregan. La herramienta libre más usada para generar SCOs es eXe, un proyecto neozelandés desarrollado en Python, sin embargo se ha quedado un poco desactualizado pues sólo crea SCOs 1.2 y no 1.3.
El formato SCORM fue desarrollado por Advanced Distributed Learning (ADL - http://www.adlnet.org) y la versión más reciente es la 1.3 cuarta edición. La versión 1.3 también se conoce como SCORM 2004. En un par de años se espera que se publique el SCORM 2.0.
Algo bueno de los SCOs es que hay buenas oportunidades de negocio pues practicamente nadie en México ofrece soporte a objetos SCORM para empresas, escuelas y universidades. En general (como ya lo hemos mencionado anterioremente), todas las empresas en México que se dicen "e-learning" se limitan a instalar Moodle o Dokeos y a dar un curso básico, en realidad no conocen el código y mucho menos como modificarlo o extendarlo y eso deriva en un nivel de atención muy precario al cliente.
El modelo SCORM posee tres partes:
- La agregación de contenidos para formar el paquete .zip
- El runtime environment (RTE) donde corre el SCO
- La secuenciación de los SCOs
Un paquete SCORM se desarrolla a partir de un archivo XML conocido como "archivo de manifiesto" que debe encontrarse en el directorio root del archivo .zip y debe tener el nombre imsmanifest.xml. Veamos un ejemplo sencillo:
<?xml version="1.0" encoding="utf-8" ?>
<manifest identifier="ims_hello" version="1.0"
xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>CAM 1.3</schemaversion>
</metadata>
<organizations default="crs_hello">
<organization identifier="crs_hello">
<title>Hello World Course</title>
<item identifier="sco_hello"
identifierref="sco_hello_ref">
<title>Hello World Lesson</title>
</item>
</organization>
</organizations>
<resources>
<resource identifier="sco_hello_ref"
type="webcontent"
href="index.htm"
adlcp:scormtype="sco">
</resource>
</resources>
</manifest>
Este archivo posee tres partes principales:
- metadata , que guarda los datos principales del SCO
- organizations, que define como se navega por el SCO
- resources, que guarda los archivos contenidos en el SCO
Un SCO debe tener al menos una sección organizations y una sección resource y todo el XML debe tener el tag <manifest> como el rootElement a partir del cual se hace el parseo de nodos con PHP.
El proceso para importar un SCO a Karamelo consiste en subir el archivo .zip, descomprimirlo en APP/webroot/files/scorms/, buscar el archivo imsmanifest.xml y convertirlo en un array multidimensional usando el API DOMDocument de PHP5 y luego organizar la información de este array para llenar las tablas de PostgreSQL. El código se puede ver en el plugin SCORM de Karamelo.
Primero se inserta la información del nodo metadata en la tabla scorms, se obtiene el ID de este row recién insertado y luego se hace un loop para insertar los resources en la tabla scorms_items.
Nos estamos apoyando en las tablas de Dokeos para extraer la estructura principal y agregar algunos campos para darle más abstracción al objeto. Estoy usando un zip 1.2 y otro 1.3 para las pruebas y verificar que las dos versiones funcionan.
Una vez que tenga el SCORM importado se ejecuta en el runtime environment, que son unas pocas funciones JavaScript que piden y envian información a Karamelo. Esa parte se ve divertida pues es un archivo JS con una serie de valores dinámicos.
El problema es que el Advanced Distributed Learning tiene 78 parámetros para otorgar la certificación SCORM a Karamelo, pero ya con el RTE funcionando bauer, s1m0 y bourne pueden ir cubriendo cada párametro poco a poco.