Maarch RM permet de déclarer des jeux de métadonnées utilisables pour définir la structure des métadonnées descriptives des unités d'archives, principalement dans les profils d'archives.
Chaque schéma de description implique un ensemble de comportements de l'application pour les opérations d'enregistrement et de gestion des métadonnées :
Il existe 3 moyens de déclarer ces modèles :
Ces trois méthodes peuvent être combinées afin de répondre à l'ensemble des besoins du métier.
Cette méthode permet à l'administrateur fonctionnel de déclarer, via l'interface d'administration, une liste de champs de description.
Elle est adaptée aux besoins simples car limitée à des types de données scalaires : chaînes de caractères, dates, nombres et indicateurs (booléens).
Les profils d'archive et unités d'archive s'appuyant sur ce dictionnaire interne voient toujours les métadonnées gérées par le système de gestion de base :
recordsManagement.archive
, colonne description
)Cette méthode, utilisée par défaut, ne nécessite aucune configuration particulière.
Cette méthode nécessite l'implémentation de classes de description, sous la forme de fichiers source en langage PHP placés dans le répertoire "Model" de l'un des bundles activés pour l'application.
Une classe comporte un jeu de propriétés qui décrivent les champs d'un dictionnaire de données adapté par exemple à un domaine métier.
Cette méthode requiert que du code logiciel soit produit, elle est donc plutôt mise en oeuvre au cours de projets d'intégration, pour des applications qui nécessitent l'utilisation de plusieurs schémas de description ayant des spécificités métier ou techniques.
Une implémentation du schéma SEDA dans sa version 1 et sa version 2.1 sont intégrées à l'extension Archives Publiques.
Cette méthode permet de déclarer via la configuration des schémas de métadonnées disponibles dans l'un des formats acceptés.
Dans cette première version du système, seul le JSONSchema est implémenté, cf le site officiel du projet.
La section [recordsManagement]
comporte la directive complexe descriptionScheme
qui déclare les schémas disponibles.
Il s'agit d'un tableau associatif qui fait correspondre un identifiant de schéma et une configuration de schéma répondant aux spécifications suivantes :
Propriété | Type | Description |
---|---|---|
label |
string | Obligatoire. Intitulé affiché à l'utilisateur pour le choix d'un schéma |
type |
string | Obligatoire. Type de schéma, pour l'instant soit php , soit json |
uri |
string | Obligatoire. Uri ou chemin d'accès au schéma. Pour le type php , il s'agit d'un nom de classe de modèle au format bundle/class , pour le json d'un chemin vers le fichier au format JSONSchema |
controller |
string | Classe de contrôleur qui sera utilisée par le système pour les opérations (création, modification, lecture, suppression, recherche). La classe de contrôleur doit implémenter l'interface bundle\recordsManagement\Controller\descriptionInterface . Si ignoré, le système utilisera le moteur par défaut gérant le stockage en base de données dans une colonne de type json du registre des archives. |
presenter |
string | Classe de présentation qui sera utilisée par le système pour la présentation des métadonnées descriptives. Si ignoré, le système utilisera le moteur par défaut gérant la présentation dynamique basée sur le modèle. |
extension |
object | Définition d'un sous-modèle d'extension comportant uniquement les propriétés type et uri . Cette mécanique de surcouche permet d'ajouter de nouveaux champs ou de remplacer des champs existant dans le modèle de base. |
search |
string | Classe de contrôleur qui sera utilisée par le système pour les opérations de recherche. La classe de contrôleur doit implémenter l'interface bundle\recordsManagement\Controller\descriptionInterface . Si ignoré, le système utilisera le moteur par défaut gérant le stockage en base de données dans une colonne de type json du registre des archives. |
Exemple de déclaration du modèle SEDA 2 avec une extension de champs complémentaires dans un schéma JSON externe
descriptionSchemes = "{
'seda2' : {
'label' : 'SEDA 2',
'type' : 'php',
'uri' : 'seda2/Content',
'controller' : '',
'presenter' : '',
'extension' : {
'type' : 'json',
'uri' : '%laabsDirectory%/data/maarchRM/customFieldsSeda.json'
}
}
}"
La valeur spéciale extension pour l'identifiant de schéma permet d'étendre le dictionnaire de données interne du logiciel, au lieu d'ajouter un schéma complémentaire.
Les définitions ainsi intégrées viendront compléter ou modifier les champs décrits dans le dictionnaire de données interne accessibles dans l'écran de gestion des données descriptives.
descriptionSchemes = "{
'extension' : {
'label' : 'non utilisé',
'type' : 'php',
'uri' : 'contact/contact'
}
}"
Par défaut, l'application fournit un moteur de recherche simple avec 3 critères :
Le premier critère réalise une recherche approchante sur l'ensemble du texte collecté par l'application soit dans les métadonnées,
soit dans le texte extrait des documents numériques.
Le second critère utilise une égalité stricte entre la valeur recherchée et la métadonnée "Identifiant d'archive" (originatorArciveId
).
Le troisième utilise une plage de date comparée à la métadonnées "Date de production" (originatingDate
).
Le paramètre fuzzyIdSearchFields
permet de modifier le comportement de l'application pour le second critère, en fournissant une liste de champs de description dans lesquels le moteur de recherche standard doit rechercher l'identifiant fournie comme critère, en plus du champ de base.
Par exemple pour les archives publiques utilisant un dictionnaire SEDA 2, les identifiants des descriptions peuvent être ajoutés comme suit :
fuzzyIdSearchFields = "[
'archiverArchiveId',
'description.originatingSystemId',
'description.archivalAgencyArchiveUnitId'
]"
Avec cette configuration, le moteur de recherche utilisera aussi la cote fournie par le service d'archives ainsi que l'identifiant du système d'origine présent potentiellement dans la description des archives.
Le paramètre fuzzyDateSearchFields
permet de modifier le comportement de l'application pour ce troisième critère, en fournissant une liste de champs de description dans lesquels le moteur de recherche standard doit rechercher la date fournie comme critère, en plus du champ de base.
Par exemple pour les archives publiques utilisant un dictionnaire SEDA 2, les dates des descriptions peuvent être ajoutées comme suit :
fuzzyDateSearchFields = "[
'depositDate',
'description.startDate',
'description.endDate',
'description.createdDate',
'description.sentDate',
'description.receivedDate',
'description.acquiredDate',
'description.transactedDate',
'description.registeredDate'
]"
Avec cette configuration, le moteur de recherche utilisera aussi la date de dépôt ainsi que les 8 dates présente potentiellement dans la description des archives.
Attention ces mécanismes ajoutent autant de critères de recherche à la requête transmise par l'application à la base de données que d'entrées dans la liste et peut avoir un impact important sur les performances de recherche.