+++ /dev/null
-
-# Introduction
-
-L'extension pastell-seda-ng (new generation) propose un connecteur SEDA
-générique basé sur les fichiers produits par le logiciel de génération
-de profil SEDA [Agape](https://agape.adullact.net/) (version 1).
-
-# Génération des profils d'archivage
-
-Les profils d'archivage doivent être générés avec l'outils Agape en
-ajoutant des **annotations Pastell**.
-
-Le connecteur peut traiter les profils SEDA en v0.2 et en v1.0.
-
-## Annotations Pastell
-
-Le connecteur utilise les annotations afin de remplir les méta-données
-du bordereau ainsi que les unités documentaires.
-
-Le principe est le suivant : pour chaque annotation Pastell trouvée, le
-connecteur cherche s'il trouve des annotations spécifiques pour Pastell,
-si c'est le cas, il modifie le bordereau en fonction de l'annotation
-trouvée.
-
-Les annotations Pastell traitées par le connecteur ont la forme suivante
-: **{{pastell:commande:données}}**
-
-Les règles suivantes s'appliquent :
-
-- une annotation ne contenant pas de commande Pastell est ignorée et
- n'apparait pas dans le bordereau
-- tout ce qu'il y a autour des commandes Pastell est ignoré
-
-- si une annotation contient plusieurs commandes Pastell, on exécute les
-commandes les unes après les autres. Le résultat est la concaténation de
-toutes les commandes.
-
-![Annotation Pastell dans Agape](./img/annotation_agape.png)
-
-## Commandes des annotations Pastell
-
-Le connecteur met à disposition plusieurs commandes. Si le connecteur
-rencontre une commande inconnue, alors il génère une erreur et se termine.
-
-### Commande string
-
-La commande *string* remplace le contenu de la balise sur laquelle porte l'annotation par la donnée.
-
-> *Exemple:*
->
-> *{{pastell:string:Mairie de Bourg-en-Bresse}}* est remplacé par *Mairie de Bourg-en-Bresse*.
-
-### Commande timestamp
-
-La commande *timestamp* remplace le contenu de la balise sur laquelle porte l'annotation par le timestamp Unix (le nombre de seconde
-écoulé entre le 01/01/1970 et l'instant de la génération du la balise).
-
-> *Exemple:*
->
-> *{{pastell:timestamp}}* est remplacé par *1472023668*
-
-
-### Commande now
-
-La commande *now* remplace le contenu de la balise sur laquelle porte l'annotation par la date et l'heure de génération du bordereau au format
-[ISO-88601](https://fr.wikipedia.org/wiki/ISO_8601)
-
-> *Exemple:*
->
-> *{{pastell:now}}* est remplacé par *1977-02-18T08:45:00Z*
-
-### Commande connecteur
-
-La commande *connecteur* interroge récupère une propriété texte du connecteur.
-Le contenu de la balise sur laquelle porte l'annotation est remplacer par la valeur de cette propriété.
-
-Les propriétés sont automatiquement générées dans la rubrique *Propriétés « pastell:connecteur » du profil**
-
-> *Exemple:*
->
-> *{{pastell:connecteur:service\_producteur\_nom}}* est remplacé par *Médiathèque Bourg-en-Bresse*.
-
-### Commande flux
-
-La commande *flux**interroge :
-
-- soit le flux qui est en train d'utiliser le connecteur
-
-- soit le connecteur lui-même dans le cadre de la génération et validation d'un bordereau de test.
-Les propriétes du flux sont alors automatiquement généré dans la rubrique *Propriétés « pastell:flux » du profil (test)*.
-
-> *Exemple:*
->
-> *{{pastell:flux:identifiant\_bordereau}}* est remplacé par *889090*
-
-### Commande file
-
-La commande *file* permet de remplacer les attributs *filename* et *mimeCode* de la balise sur laquelle porte l'annotation
-après avoir interroger le flux (ou le connecteur pour le test).
-
-> *Exemple:*
->
-> *{{pastell::file:pes_aller}} dans l'annotation de l'attachement d'un fichier produira :
-> `<Attachment format="fmt/101" mimeCode="text/plain" filename="fichier_aller.xml">`
-
-### Commande integrity
-
-La commande *integrity* remplace la balise sur laquelle elle porte par
-un ensemble de balise *<Integrity>* contenant les calcul de hash conformément au SEDA.
-
-Attention, cette commande doit uniquement être utilisé en SEDA v0.2. Son utilisation en SEDA V1.0 produira une erreur lors de la validation du bordereau.
-
-> *Exemple:*
->
-> **{{pastell:integrity}}** est remplacé par le code XML suivant :
-
-``` {.sourceCode .xml}
-<Integrity>
- <Contains algorithme="http://www.w3.org/2001/04/xmlenc#sha256">MTYzMjEzNTEyOA==</Contains>
- <UnitIdentifier>PESALR2_20899099.xml</UnitIdentifier>
-</Integrity>
-<Integrity>
- <Contains algorithme="http://www.w3.org/2001/04/xmlenc#sha256">MTk2MDg3Nzk2NA==</Contains>
- <UnitIdentifier>045038_160517160712-ACK-E1721300_A007EZQF_OK.xml</UnitIdentifier>
-</Integrity>
-```
-
-### Commande sha256
-
-La commande *sha256* remplace le contenu de la balise sur laquelle est porte par l'empreinte du fichier passé en attribut.
-
-Par exemple : *{{pastell:sha256:pes_aller}}* est remplacé par l'empreinte [Sha 256](https://fr.wikipedia.org/wiki/SHA-2) du fichier *pes_aller*.
-
-Si on met un attribut *algorithme* à la balise *Intgrity* (empreinte) dans Agape, il faut alors préciser dans le profil la chaîne suivante :
-`http://www.w3.org/2001/04/xmlenc#sha256`
-
-Cette commande est destiné prioritairement au profil en version 1.0 du SEDA.
-
-### Commande if
-
-La commande if permet de de mettre ou non la balise sur laquelle est porte si l'attribut de flux existe
-et n'est pas vide.
-
-Par exemple : *{{pastell:if:fichier_signature}}* sur une balise *Document* permettra de mettre dans le bordereau
-cette balise Document uniquement si le fichier_signature du flux Pastell existe.
-
-### Commande repeat
-
-La commande *repeat* répète la balise sur laquelle elle porte autant de fois qu'il y a de valeur de l'attribut de flux.
-
-Par exemple : *{{pastell:repeat:id_bord}}* sur une balise Keyword va permettre de répeter la balise Keyword autant de fois qu'on trouvera
-d'id_bord dans le flux.
-
-### Commande array
-
-La commande *array* est utilisé conjointement à la commande *repeat* : elle remplace le contenu de la balise sur laquelle elle porte par un
-des élements de l'attribut du flux.
-
-Par exemple : *{{pastell:array:id_bord}}* va remplacer le contenu de la balise *KeywordContent* par un des élements id_bord du flux.
-
-```xml
-<Keyword>
- <Annotation {{pastell:repeat:IdBord_IdPce}}>
- <KeywordContent languageID="fr">
- <Annotation {{pastell:array:IdBord_IdPce}}>
- </KeywordContent>
-<Keyword>
-```
-
-est remplacé par :
-
-```xml
-<Keyword>
- <KeywordContent languageID="fr">
- IdBord 280
- </KeywordContent>
-</Keyword>
-<Keyword>
- <KeywordContent languageID="fr">
- IdPce 1878
- </KeywordContent>
-</Keyword>
-<Keyword>
- <KeywordContent languageID="fr">
- IdPce 1879
- </KeywordContent>
-</Keyword>
-```
-
-
-### Commande compteurJour
-
-La commande **compteurJour** remplace la balise sur laquelle est porte par un compteur journalisé.
-
-> *Exemple:*
->
-> *{{pastell:compteurJour}}* est remplacé par *2016-05-18-187* (187ème bordereau de la journée du 18/05/2016)
-
-# Connecteur SEDA NG
-
-## Configuration du connecteur
-
-![Configuration du connecteur SedaNG](./img/connecteur-seda-ng.png)
-
-### Profil SEDA (RelaxNG)
-
-Il s'agit de l'export du profil au format Relax NG produit par Agape.
-Celui-ci est obtenu dans Agape via le menu *outils* → *Générer le schéma du profil*
-
-### Profil SEDA (Fichier Agape)
-
-C'est le fichier de base d'Agape
-
-### Propriétés « pastell:connecteur » du profil
-
-Le connecteur analyse toute les annotations Pastell de type
-*{{pastell:connecteur:xxx}}*.
-
-Pour chaque annotation de ce type, il est alors possible de renseigner
-la propriété directement dans le connecteur : *Modifier* → *Remplir
-les propriétés « pastell:connecteur » du profil*
-
-![Définition des propriétés d'un connecteur SedaNG](./img/connecteur-seda-properties.png)
-
-### Date de la dernière génération d'un bordereau
-
-Cette propriété n'est pas modifiable.
-
-### Nombre de bordereaux générés à la date du dernier transfert
-
-Cette propriété n'est pas modifiable.
-
-### Propriétés « pastell:flux » du profil (test)
-
-Afin de générer un bordereau de test, il est possible de renseigner des
-valeurs *bouchons* afin de remplir le bordereau et ainsi pouvoir le
-valider.
-
-Ces valeurs bouchons peuvent être modifiées via *modifié* → *Remplir
-les propriétés « pastell:flux » du profil pour le bordereau de test*
-
-Les valeurs bouchons comprennent à la fois les noms des champs *texte*,
-ainsi que le nom des fichiers.
-
-![Définition des propriétés bouchons dans un connecteur SedaNG](./img/connecteur-seda-flux.png)
-
-## Action du connecteur
-
-### Générer un bordereau de test
-
-A partir des élements suivants :
-
-- le fichier RNG
-- le fichier Agape contenant les annotations Pastell
-- les propriétés du connecteur
-- les propriétés du flux, prises dans le connecteur,
-
-le connecteur va générer et afficher un bordereau SEDA respectant toutes
-les propriétés et contraintes lié au SEDA.
-
-![Bordereau exemple](./img/bordereau.png)
-
-### Valider le bordereau de test
-
-Cette action génère un bordereau comme la précédente, mais elle valide à
-deux niveau le bordereau test :
-
-- on vérifie que le bordereau valide le schéma RNG fourni par Agape
-- on vérifie que le borderau valide le schéma SEDA
-
-Si ce n'est pas le cas, on affiche alors les erreurs rencontrées lors de
-la validation.
-
-# Intégration dans un flux
-
-## Famille du connecteur
-
-La famille du connecteur est **seda\_ng** qui doit être utilisé sur la
-clé **connecteur** du flux qui souhaite utiliser ce connecteur.