Skip to Content

Chapitre 3.3 — Organizations, items, SCO vs asset

⏱️ TL;DR — Le bloc <organizations> est l’arbre de navigation du module : le menu que verra l’apprenant. Une <organization> contient des <item> imbriqués ; chaque <item> est soit un titre de regroupement (sans identifierref, il ne lance rien) soit une feuille lançable (avec identifierref pointant une <resource>). Ce que la feuille lance est soit un SCO (lançable et dialoguant avec le LMS : il remonte statut, score…), soit un asset (fichier passif : un PDF, une image, qui s’affiche mais ne remonte rien). La distinction SCO/asset se joue dans <resources> (via adlcp:scormType), mais c’est l’arbre <organizations> qui décide de l’ordre et de la hiérarchie.

🎯 Objectifs

  • Construire un arbre de navigation à plusieurs niveaux avec des <item> imbriqués.
  • Distinguer un <item> de regroupement (sans ref) d’un <item> feuille lançable (avec ref).
  • Comprendre à fond la différence SCO vs asset et ses conséquences au runtime.
  • Relier chaque feuille de l’arbre à sa <resource> via identifierref.
  • Lire l’attribut isvisible et le rôle du <title> à chaque niveau.

L’arbre de navigation : organization → item → item…

<organizations> est le plan du module. Le LMS le transforme en menu (souvent une arborescence dépliable à gauche de l’écran). Sa grammaire est simple et récursive :

  • <organizations default="…"> : le conteneur. Son attribut default désigne l’organisation active (un paquet peut en déclarer plusieurs — une par langue, par exemple — mais une seule est jouée).
  • <organization identifier="…"> : une structure de cours, avec un <title>.
  • <item> : un nœud de l’arbre. Il porte un <title>, peut contenir d’autres <item> (regroupement), et peut porter un identifierref (feuille lançable).

La règle d’or : un <item> avec identifierref = une feuille lançable ; un <item> sans identifierref mais avec des <item> enfants = un titre de regroupement. Un même arbre mélange les deux.

Sur ce schéma : « Introduction », « Phishing », « Mots de passe » et « Charte PDF » sont des feuilles (elles ont un identifierref). « Menaces » est un regroupement : un simple intertitre qui organise le menu, sans rien lancer au clic.

💡 Réflexe — Pour savoir si un <item> lance quelque chose, une seule question : a-t-il un identifierref ? Si oui, c’est une feuille et le LMS ouvrira la <resource> correspondante. Si non, c’est un intertitre : au clic, le LMS déplie/replie, mais ne lance rien.

Un arbre à plusieurs items : le module complet

Voici les <organizations> du module « Sécurité numérique » de FormaCampus, avec regroupement et trois SCO + un asset :

<organizations default="ORG_SECU"> <organization identifier="ORG_SECU"> <title>Sécurité numérique</title> <!-- Feuille lançable : un SCO, car identifierref pointe une resource sco --> <item identifier="ITEM_INTRO" identifierref="RES_INTRO"> <title>Introduction à la sécurité</title> </item> <!-- Regroupement : PAS d'identifierref => ne lance rien, structure seulement --> <item identifier="ITEM_MENACES"> <title>Les menaces courantes</title> <item identifier="ITEM_PHISHING" identifierref="RES_PHISHING"> <title>Reconnaître un phishing</title> </item> <item identifier="ITEM_MDP" identifierref="RES_MDP"> <title>Mots de passe robustes</title> </item> </item> <!-- Feuille asset : ouvre un PDF passif, ne dialogue pas avec le LMS --> <item identifier="ITEM_CHARTE" identifierref="RES_CHARTE"> <title>Charte informatique (PDF)</title> </item> </organization> </organizations>

Ce que le LMS en fait :

  1. Il affiche le titre du cours (« Sécurité numérique ») en haut du menu.
  2. Il liste Introduction (cliquable → lance le SCO), puis Les menaces courantes comme intertitre dépliable, avec Phishing et Mots de passe en sous-entrées cliquables, puis Charte informatique (cliquable → ouvre le PDF).
  3. L’ordre du menu = l’ordre des <item> dans le XML. Pour réordonner le module, tu réordonnes les <item>.

⚠️ Piège — Confondre « niveau de menu » et « lançabilité ». Un <item> de regroupement peut lui-même porter un identifierref (rare, mais permis) : il serait alors à la fois lançable et parent. Le plus souvent, garde la règle claire — les parents regroupent, les feuilles lancent — pour un menu lisible. Ce qui rend une entrée cliquable n’est jamais sa profondeur, toujours la présence d’un identifierref.

SCO vs asset : la distinction qui change tout

C’est le concept de SCORM. Une <resource> (ce que la feuille lance) est de l’un de deux types, fixé par adlcp:scormType :

SCO (scormType="sco")asset (scormType="asset")
NatureUnité lançable interactiveFichier passif
Dialogue avec le LMSOui : trouve l’API, appelle LMSInitialize, remonte statut/scoreNon : s’affiche, c’est tout
ExemplesUn écran de cours interactif, un quiz, une simulationUn PDF, une image, une vidéo autonome, une page HTML statique
Remonte une complétion / un scoreOuiNon (le LMS ne saura pas si l’apprenant l’a « fini »)
Contient du code de trackingOui (le wrapper scorm-api.js + les appels)Non

En clair : un SCO parle, un asset se laisse regarder. Le module « Sécurité numérique » a trois SCO (Intro, Phishing, Mots de passe — ils suivent la progression et le score) et un asset (la charte PDF — on veut juste la mettre à disposition, sans tracer sa lecture).

📚 La spec — « SCO » = Sharable Content Object, l’unité qui dialogue avec le LMS via l’API RTE ; « asset » = une ressource passive (image, PDF) qui ne dialogue pas. La distinction est portée par adlcp:scormType (valeurs sco ou asset) sur chaque <resource>. C’est la même frontière que reprendra cmi5 plus tard, avec son AU (Assignable Unit) à la place du SCO. Référence : livre CAM de SCORM, adlnet.gov.

⚠️ Piège — Déclarer en asset un contenu qui devrait être un SCO. Symptôme classique : « mon module s’affiche parfaitement mais le LMS le marque incomplet pour toujours et aucun score ne remonte ». Un asset ne peut pas signaler sa complétion : il n’a pas de canal vers le LMS. Si tu veux tracer une complétion ou un score, la ressource doit être un sco (et embarquer le code de dialogue). L’inverse est plus rare mais existe : un pur PDF déclaré sco cherchera une API qu’il n’utilise pas — inutile, mais moins grave.

💡 Réflexe — Pose-toi, pour chaque écran : « Ai-je besoin de savoir que l’apprenant l’a vu/réussi ? » Oui → SCO. Non, c’est juste une ressource à consulter → asset. En cas de doute pour un contenu suivi, choisis SCO : un SCO peut toujours choisir de ne rien remonter, un asset ne pourra jamais remonter quoi que ce soit.

isvisible, et le titre à chaque niveau

Deux détails d’expert :

  • <title> est requis à chaque niveau : sur <organization>, sur chaque <item>. C’est le libellé affiché dans le menu. Un <item> sans <title> casse l’affichage (ou hérite d’un « sans titre » disgracieux).
  • isvisible="false" sur un <item> le rend invisible dans le menu tout en le gardant dans la structure. Utile pour un SCO « technique » (page de démarrage, redirection) qu’on ne veut pas montrer, mais qu’on veut quand même dans l’arbre. Par défaut, isvisible="true".
<item identifier="ITEM_START" identifierref="RES_START" isvisible="false"> <title>Amorçage (masqué)</title> </item>

🧭 Sur FormaCampus — Choix de structure pour « Sécurité numérique » : trois SCO traçables regroupés sous des intertitres non lançables, plus la charte en asset (consultée mais non notée). L’équipe a hésité à mettre la charte en SCO « pour avoir la preuve de lecture », puis a tranché : un asset suffit, et si un jour une preuve de consultation devient nécessaire, ce sera un vrai sujet xAPI/cmi5 (tracer l’acte de lire), pas un bricolage SCORM. Bonne discipline : ne pas tordre le type d’une ressource pour un besoin qui relève d’un autre standard.

🔌 Côté intégration — Côté Moodle, l’arbre <organizations> devient l’arborescence de l’activité SCORM et pilote la navigation et souvent le rollup de complétion (« module terminé quand tous les SCO sont terminés »). Un arbre propre — feuilles clairement lançables, regroupements clairement passifs, titres explicites — donne un import lisible et un suivi de complétion prévisible. Un arbre confus (items sans titre, ref cassées, tout à plat) rend le suivi illisible côté enseignant, même si « ça se lance ».

✏️ Exercices

Exercice 1 — SCO ou asset ? Pour chaque contenu, dis s’il devrait être un SCO ou un asset, et pourquoi : (a) un quiz interactif noté sur 100 ; (b) un règlement intérieur en PDF à mettre à disposition ; (c) une vidéo dont on veut savoir si l’apprenant l’a regardée jusqu’au bout ; (d) le logo de l’organisme affiché sur chaque écran.

✅ Solution

  • (a) SCO — il faut remonter un score et une réussite : seul un SCO dialogue avec le LMS.
  • (b) asset — pur document à consulter, aucune complétion à tracer.
  • (c) SCO — vouloir savoir qu’elle a été vue implique de remonter une complétion : ça nécessite le dialogue avec le LMS, donc un SCO (le lecteur vidéo envoie completed à la fin). Un simple .mp4 en asset ne saurait rien signaler.
  • (d) asset (ou simple <file> d’une autre ressource) — image passive, jamais lancée seule, aucune interaction.

Exercice 2 — Construire l’arbre. Écris le bloc <organizations> d’un module « Onboarding » avec : un SCO « Bienvenue », un regroupement « Vos outils » contenant deux SCO (« Messagerie », « Agenda »), et un asset « Livret d’accueil (PDF) ». (Tu peux référencer des identifier de ressources fictifs.)

✅ Solution

<organizations default="ORG_ONB"> <organization identifier="ORG_ONB"> <title>Onboarding</title> <item identifier="I_WELCOME" identifierref="R_WELCOME"> <title>Bienvenue</title> </item> <item identifier="I_OUTILS"> <title>Vos outils</title> <item identifier="I_MAIL" identifierref="R_MAIL"> <title>Messagerie</title> </item> <item identifier="I_AGENDA" identifierref="R_AGENDA"> <title>Agenda</title> </item> </item> <item identifier="I_LIVRET" identifierref="R_LIVRET"> <title>Livret d'accueil (PDF)</title> </item> </organization> </organizations>

« Vos outils » n’a pas d’identifierref : c’est un regroupement. Les quatre autres <item> sont des feuilles lançables (« Bienvenue », « Messagerie », « Agenda » pointeront des ressources sco ; « Livret » une ressource asset).

Exercice 3 — Débuguer un menu. Un apprenant se plaint : « Le module se charge, mais quand je clique sur Les menaces courantes, rien ne se passe. » Or c’est voulu. Explique pourquoi, et ce qu’il faut faire s’il doit au contraire y avoir un écran d’intro pour cette section.

✅ Solution

« Les menaces courantes » est un <item> de regroupement (sans identifierref) : c’est un intertitre, il ne lance rien au clic — c’est le comportement normal. Ce n’est pas un bug.

Si l’on veut un écran d’introduction pour cette section, deux options : (1) donner à cet <item> de regroupement un identifierref vers une <resource> d’intro (il devient alors lançable et parent) ; ou, plus lisible, (2) ajouter avant ses enfants un <item> feuille « Introduction aux menaces » avec son propre identifierref. L’option 2 garde la règle « les parents regroupent, les feuilles lancent ».

🧠 Quiz de révision

1. À quoi sert le bloc organizations ?

C’est l’arbre de navigation du module : le LMS le transforme en menu. Il définit les titres, la hiérarchie (<item> imbriqués), l’ordre d’affichage et quelles entrées sont lançables.

2. Comment distingue-t-on un item de regroupement d’une feuille lançable ?

Par la présence d’un identifierref. Avec identifierref → feuille lançable (le LMS ouvre la <resource> pointée). Sans identifierref (mais avec des <item> enfants) → titre de regroupement, non lançable.

3. Quelle est la différence fondamentale entre un SCO et un asset ?

Un SCO est lançable et dialogue avec le LMS (il trouve l’API, remonte statut, score, etc.). Un asset est passif : il s’affiche mais ne communique pas avec le LMS, donc ne remonte ni complétion ni score. Le type est fixé par adlcp:scormType (sco ou asset).

4. Un PDF de règlement déclaré comme asset : le LMS saura-t-il si l’apprenant l’a lu ?

Non. Un asset n’a aucun canal vers le LMS : il ne peut pas signaler de complétion. Pour tracer une lecture, il faudrait un SCO (qui enverrait une complétion), ou passer à un standard fait pour ça (xAPI/cmi5).

5. À quoi sert isvisible sur un item ?

isvisible="false" garde l’<item> dans la structure mais le masque du menu — pratique pour un SCO technique (amorçage, redirection) qu’on ne veut pas montrer à l’apprenant. Par défaut isvisible="true".


Chapitre suivant : Resources & fichiers — on passe de l’arbre à l’inventaire : déclarer chaque fichier, gérer les dépendances et déjouer les pièges de chemins.

Last updated on