SEGUIMIENTO / PROGRESIÓN
Progresión
La progresión define cuándo una actividad cuenta como terminada, qué elementos son obligatorios y qué contenido debe permanecer bloqueado hasta que el alumno cumpla determinadas condiciones.
1. Modelo mental
Las reglas de progresión viven en el paquete; el estado concreto de cada alumno vive fuera del paquete. El curso puede declarar «esta actividad es obligatoria» o «esta unidad se desbloquea después de aprobar otra», mientras que la plataforma conserva quién ha visto, completado o aprobado cada actividad.
2. Propiedades disponibles
required: booleanIndica que la entidad participa en el cálculo de finalización agregada.
gateFollowing: booleanBloquea los elementos hermanos posteriores hasta satisfacer esta entidad. No puede utilizarse en la entidad raíz del curso.
completionRequirementAcepta viewed, completed o passed y define qué estado satisface la regla.
minScorePorcentaje de 0 a 100. Sólo es válido en actividades y permite exigir una puntuación mínima.
unlockWhenExpresa prerrequisitos mediante una lista all o una lista any.
3. Obligatoriedad y bloqueo no son lo mismo
required afecta a si el curso se considera completado. gateFollowing afecta a la navegación: impide avanzar a hermanos posteriores. Una actividad puede ser obligatoria sin bloquear lo siguiente, o puede bloquear lo siguiente hasta cumplirse.
Si utilizas gateFollowing o unlockWhen, el perfil de progresión debe declararse como requerido para que un reproductor que no comprenda esas reglas no pueda ignorarlas silenciosamente.
4. Prerrequisitos con unlockWhen
unlockWhen contiene exactamente una de estas dos formas: all, cuando deben cumplirse todas las condiciones, o any, cuando basta con una. Cada condición referencia una unidad o actividad existente y puede exigir un estado y una puntuación mínima.
workspace.setProgression('actividad-avanzada', {
unlockWhen: {
all: [
{ entity: 'actividad-intro', status: 'completed' },
{ entity: 'quiz-1', status: 'passed', minScore: 70 },
],
},
});5. Ejemplo de una actividad obligatoria
Este ejemplo exige aprobar la actividad con una nota mínima y mantiene bloqueados los elementos posteriores hasta cumplir la condición.
workspace.setProgression('quiz-final', {
required: true,
gateFollowing: true,
completionRequirement: 'passed',
minScore: 70,
});En este ejemplo el cuestionario es obligatorio, debe aprobarse con al menos un 70 % y mantiene bloqueados los elementos posteriores hasta que se cumpla la condición.
6. Validaciones que evita el Toolkit
minScorefuera del intervalo 0–100.minScoreaplicado a una entidad que no sea una actividad.gateFollowingen la raíz del curso.unlockWhenvacío, conallyanya la vez, o con referencias que no existen.- Ciclos de dependencias, por ejemplo A depende de B y B vuelve a depender de A.
7. Qué hace el Player durante la reproducción
- Renderizado.Cuando una actividad se representa, el Player puede marcar el estado
viewed. - Actividad.Los eventos de puntuación y finalización actualizan el estado de la actividad.
- Reglas.El Player recalcula bloqueos y prerrequisitos después de los cambios relevantes.
- Persistencia.Si existe Host Adapter, carga el estado al comenzar y guarda los cambios mediante la plataforma.
- Notificación.Emite
p2lrn:progressionchangecuando cambia el resultado de progresión.
8. Qué guarda exactamente el estado de progresión
El .p2lrn contiene las reglas; la plataforma conserva el resultado de aplicarlas a cada alumno. El snapshot de progresión usa la versión p2lrn-progression-state/1 y mantiene una entrada por entidad afectada.
{
"version": "p2lrn-progression-state/1",
"entities": {
"urn:uuid:actividad-1": {
"viewed": true,
"completed": true,
"passed": true,
"scorePercent": 82.5,
"updatedAt": "2026-10-16T08:30:00.000Z"
}
}
}viewed puede activarse al renderizar; completed al finalizar; passed y scorePercent se actualizan cuando una puntuación aporta esos datos. El Player guarda este snapshot mediante Host Adapter con un contexto de progresión separado de los estados internos de las actividades.
9. Cómo convertir la progresión en métricas
No utilices p2lrn:progress como porcentaje del curso: ese evento puede representar, por ejemplo, preguntas respondidas dentro de un cuestionario. Para informes de curso combina las reglas del paquete con el estado de progresión y decide en tu plataforma qué agregados quieres mostrar.
Para notas e interacción detallada de cuestionarios, SCORM y H5P consulta Métricas y analítica. Para persistencia mediante Host Adapter consulta Integración.