Automatisations
Les automatisations vous permettent d'importer ou d'exporter des données de Constellation de manière indépendante soit selon un horaire prédéterminé, soit chaque fois que Constellation détecte des changements aux données.
Fonctions
Vous pouvez automatiser l'importation ou l'exportation de tableaux. Les bases de données, les projets et les nuées ne peuvent être qu'exportées.
ASTUCE
Les importations peuvent provenir de fichiers locaux ou bien d'URLs et fonctionnent dans le navigateur aussi bien que dans le version installée de Constellation. Cependant, il n'est poas possible d'importer automatiquement d'un fichier local dans le navigateur (vous devrez l'importer manuellement, car les navigateurs ne peuvent pas accéder vos fichiers locaux).
Les URLs ne peuvent être importés qu'à des fréquences fixes, car il est impossible de savoir si les données disponibles sur un URL externe ont été modifiées sans aller les rechercher à nouveau.
Opération | Node.js/Électron | Navigateur | Fréquence temporelle | Selon modifications | Tableaux | Projets | Bds | Nuées |
---|---|---|---|---|---|---|---|---|
Importer d'URL | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
Importer de fichier local | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Exporter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
client.automatisations.ajouterAutomatisationExporter({ ... })
Cette fonction automatise une exportation.
Paramètres
Nom | Type | Description |
---|---|---|
id | string | L'identifiant de l'objet à exporter. |
typeObjet | `"nuée" | "projet" |
formatDoc | `xlsx.BookType | "xls"` |
inclureFichiersSFIP | boolean | Si nous voulons sauvegarder les fichiers (images, vidéos ou autres) incluses dans les données. |
dossier | `string | undefined` |
langues | `string[] | undefined` |
fréquence | fréquence ` | undefined` |
dispositifs | `string[] | undefined` |
nRésultatsDésirésNuée | `number | undefined` |
héritage | `("descendance" | "ascendance")[] |
copie | copiesExportation ` | undefined` |
Retour
Type | Description |
---|---|
Promise<string> | L'identifiant unique de l'automatisation. |
Exemple
import { créerConstellation } from "@constl/ipa";
import { ref } from "vue";
const client = créerConstellation();
const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idAuto = await client.automatisations.ajouterAutomatisationExporter({
id: idBd,
typeObjet: "bd",
formatDoc: "ods", // Ou bien xlsx, txt, csv...
langues: ["fr", "de"], // En français ou bien en alemand SVP
// Exporter une fois par semaine
fréquence: temps: {
unités: "semaines",
n: 1
},
// Garder les données exportées pour 2 mois
copie: {
type: "temps",
temps: {
unités: "mois",
n: 2
}
}
})
// ...ajouter données...
client.automatisations.ajouterAutomatisationImporter({ ... })
Cette fonction automatise l'importation de données.
Paramètres
Nom | Type | Description |
---|---|---|
idTableau | string | L'identifiant de l'objet à exporter. |
source | SourceDonnéesImportation | La source des données. |
fréquence | fréquence ` | undefined` |
dispositif | `string | undefined` |
Retour
Type | Description |
---|---|
Promise<string> | L'identifiant unique de l'automatisation. |
Exemple
import { créerConstellation, type automatisations as autos } from "@constl/ipa";
import { ref } from "vue";
const client = créerConstellation();
const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariablePluie = await client.variables.créerVariable({ catégorie: "numérique" });
const idVariableDate = await client.variables.créerVariable({ catégorie: "horodatage" });
const idColonnePluie = await client.tableaux.ajouterColonneTableau({
idTableau,
idVariable: idVariablePluie
});
const idColonneDate = await client.tableaux.ajouterColonneTableau({
idTableau,
idVariable: idVariableDate
});
const source: autos.SourceDonnéesImportationFichier<autos.infoImporterFeuilleCalcul> = {
typeSource: "fichier",
adresseFichier: "mon/fichier/local.xlsx",
info: {
nomTableau: "tableau", // Le nom de l'onglet avec les données dans le document Excel/LibreOffice
formatDonnées: "feuilleCalcul",
cols: {
[idColonnePluie]: "précipitation", // "précipitation" étant le nom de la colonne dans Excel/LibreOffice
[idColonneData]: "date",
},
},
};
const idAuto = await client.automatisations.ajouterAutomatisationImporter({
idTableau,
source,
fréquence: {
unités: "jours",
n: 2
} // Importer tous les 2 jours
});
client.automatisations.suivreAutomatisations({ f, idCompte })
Cette fonction vous permet de suivre les automatisations spécifiées sur votre compte.
Paramètres
Nom | Type | Description |
---|---|---|
f | (automatisations: SpécificationAutomatisation []) => void | Une fonction qui sera appelée avec la liste des automatisations associées à ce compte chaque fois que celle-ci change. |
idCompte | `string | undefined` |
Retour
Type | Description |
---|---|
Promise<() => Promise<void>> | Fonction à appeler pour arrêter le suivi. |
Exemple
import { ref } from "vue";
import { créerConstellation, type automatisations } from "@constl/ipa";
const client = créerConstellation();
const autos = ref<automatisations.SpécificationAutomatisation[]>();
const fOublier = await client.automatisations.suivreAutomatisations({
f: x => autos.value = x,
});
client.automatisations.suivreÉtatAutomatisations({ f })
Cette fonction vous permet de suivre l'état des automatisations (en attente, en cours, erronnées) sur votre dispositif.
Paramètres
Nom | Type | Description |
---|---|---|
f | (états: { [id: string]: ÉtatAutomatisation }) => void | Une fonction qui sera appelée avec le statut des automatisations associées à votre compte chaque fois que l'un de ces statuts change. |
Statuts possibles
Note: les heures ci-dessous sont exprimées en horodatages JavaScript (utiliser new Date(heure) pour obtenir un format plus lisible).Statut | Explication |
---|---|
erreur | L'automatisation a eu une erreur. Nous allons réessayer à l'heure prochaineProgramméeÀ . |
écoute | Tout est beau ; l'automatisation est active et attend des changements aux données. |
sync | L'automatisation est présentement en train de syncroniser les données (exporter ou importer, selon le cas), depuis l'heure depuis . |
programmée | L'automatisation est programmée à l'heure à . |
Retour
Type | Description |
---|---|
Promise<() => Promise<void>> | Fonction à appeler pour arrêter le suivi. |
Exemple
import { ref } from "vue";
import { créerConstellation, type automatisations } from "@constl/ipa";
const client = créerConstellation();
const états = ref<{ [id: string]: automatisations.ÉtatAutomatisation}>();
const fOublier = await client.automatisations.suivreÉtatAutomatisations({
f: x => états.value = x,
});
Types
Plusieurs types sont associés avec les automatisations Constellation.
Types spécification
type SpécificationAutomatisation =
| SpécificationExporter
| SpécificationImporter;
type BaseSpécificationAutomatisation = {
fréquence?: fréquence;
type: "importation" | "exportation";
id: string;
};
type SpécificationExporter = BaseSpécificationAutomatisation & {
type: "exportation";
idObjet: string;
typeObjet: "nuée" | "projet" | "bd" | "tableau";
formatDoc: XLSX.BookType | "xls";
dossier?: string;
langues?: string[];
dispositifs: string[];
inclureFichiersSFIP: boolean;
nRésultatsDésirésNuée?: number;
héritage?: ("descendance"|"ascendance")[];
copies?: copiesExportation;
};
type infoImporter = infoImporterJSON | infoImporterFeuilleCalcul;
type infoImporterJSON = {
formatDonnées: "json";
clefsRacine: clefsExtraction;
clefsÉléments: clefsExtraction;
cols: { [key: string]: clefsExtraction };
};
type infoImporterFeuilleCalcul = {
formatDonnées: "feuilleCalcul";
nomTableau: string;
cols: { [key: string]: string };
optionsXLSX?: xlsx.XLSXParsingOptions;
};
Types fréquence
type fréquence = {
unités:
| "années"
| "mois"
| "semaines"
| "jours"
| "heures"
| "minutes"
| "secondes"
| "millisecondes";
n: number;
};
Types sources
Ces types correspondent aux sources des données à importer.
type infoImporter = infoImporterJSON | infoImporterFeuilleCalcul;
type infoImporterFeuilleCalcul = {
formatDonnées: "feuilleCalcul";
nomTableau: string;
cols: { [key: string]: string };
optionsXLSX?: xlsx.XLSXParsingOptions;
};
type infoImporterJSON = {
formatDonnées: "json";
clefsRacine: clefsExtraction;
clefsÉléments: clefsExtraction;
cols: { [key: string]: clefsExtraction };
};
type clefsExtraction = (string | number | -1)[];
type SourceDonnéesImportation =
| SourceDonnéesImportationURL
| SourceDonnéesImportationFichier;
type SourceDonnéesImportationURL = {
typeSource: "url";
url: string;
info: infoImporter;
};
type SourceDonnéesImportationFichier = {
typeSource: "fichier";
adresseFichier: string;
info: infoImporter;
};
Types copies
type copiesExportation = copiesExportationN | copiesExportationTemps;
type copiesExportationN = {
type: "n",
n: number,
}
type copiesExportationTemps = {
type: "temps",
temps: fréquence,
}
Types statut
type ÉtatAutomatisation =
| ÉtatErreur
| ÉtatÉcoute
| ÉtatEnSync
| ÉtatProgrammée;
interface ÉtatErreur {
type: "erreur";
erreur: string;
prochaineProgramméeÀ?: number;
}
interface ÉtatÉcoute {
type: "écoute";
}
interface ÉtatEnSync {
type: "sync";
depuis: number;
}
interface ÉtatProgrammée {
type: "programmée";
à: number;
}