Le SDK du web modeler est disponible dans le web modeler. Il permet aux utilisateurs d'accéder aux ressources depuis l'interface utilisateur et d'exécuter des calculs complexes lors de l'exécution de l'interface utilisateur.
Le SDK possède les classes suivantes
class Softyflow {}
class Collection {}
class SQLDatabase {}
class SoftyTables {}
class CustomList {}
class Report {}
class Instance {}
class Task {}
class Api {}
class Email {}
class File {}
Dans les sections suivantes, nous allons détailler chaque classe et les méthodes autorisées.
1 - Softyflow
La classe Softyflow contient les méthodes système de Softyflow
Utilisation
Cette classe est instanciée par défaut comme un objet nommé SF lorsque l'interface utilisateur est chargée, vous pouvez donc utiliser les méthodes directement en les appelant via l'objet "SF"
let currentMode = this.SF.getSF_mode();
getSF_mode
Est une fonction qui retourne le mode de l'interface utilisateur en cours d'exécution
Retourne
| Type | Description |
|---|
string | Retourne une chaîne de caractères ('test', 'uat', 'prod') |
Exemples
let currentMode = this.SF.getSF_mode();
getSF_Version
Est une fonction qui retourne la version de l'interface utilisateur en cours d'exécution
Retourne
| Type | Description |
|---|
string | Retourne une chaîne de caractères ('test', 'uat', 'prod') |
Exemples
let currentVersion = this.SF.getSF_Version();
queryParams
Est une fonction qui retourne les paramètres de requête
| params | Description |
|---|
| select | optionnel. Les champs à sélectionner (champs: SF_mode, SF_version, SF_screen) |
Paramètres
| Nom | Type | Description |
|---|
select | string | Les champs sélectionnés |
Retourne
| Type | Description |
|---|
string | Retourne une chaîne de caractères |
Exemples
let currentMode = this.SF.getSF_mode('SF_mode SF_version');
console.log(currentMode)
startProcess
Est une fonction qui démarre un processus spécifique
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du processus |
body | object | JSON des variables du processus |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.startProcess('processId', variables);
validateCaptcha
Est une fonction qui valide une action Google reCAPTCHA v3 et retourne le jeton généré.
Paramètres
| Nom | Type | Description |
|---|
action | string | Le nom de l'action utilisé pour la vérification reCAPTCHA v3. |
Retourne
| Type | Description |
|---|
Promise<string> | Retourne une Promise qui se résout en une chaîne de jeton reCAPTCHA. |
Exemples
let token = await SF.utils.validateCaptcha("login_form");
saveNew
Est une fonction qui vous permet de sauvegarder l'état de l'interface utilisateur
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'interface |
body | object | JSON des variables de l'interface |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.saveNew('interfaceId', variables);
saveTask
Est une fonction qui vous permet de sauvegarder l'état de l'interface de tâche
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche |
body | object | JSON des variables de la tâche |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.saveTask('taskId', variables);
validateTask
Permet de valider une tâche
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche |
body | object | JSON des variables de la tâche |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.validateTask('taskId', variables);
getUserPendingTask
Permet d'obtenir les tâches en attente assignées à l'utilisateur connecté.
Paramètres
| Nom | Type | Description |
|---|
limit | string | Limite de résultats par page. |
page | string | Numéro de page |
dueDate | string | Date associée. |
fields | string | Champs. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await this.SF.getUserPendingTask('limit', 'page', 'dueDate', 'fields');
uploadImage
Est une fonction qui télécharge une image sur le serveur en utilisant une requête POST multipart/form-data.
Paramètres
| Nom | Type | Description |
|---|
data | FormData | Un objet FormData contenant le fichier image et toutes métadonnées supplémentaires. |
Retourne
| Type | Description |
|---|
Promise<object> | Retourne une Promise qui se résout en données de réponse du serveur. |
Exemples
const formData = new FormData();
formData.append("profileImage", file);
let response = await SF.utils.uploadImage(formData);
setListFromCollection
Permet de définir une liste de données à partir d'une collection spécifique.
Paramètres
| Nom | Type | Description |
|---|
collection | string | Identifiant de la collection. |
criteria | object | JSON de requête. |
limit | string | Limite de résultats. |
sort | string | Option de tri. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let criteria = {
firstName: new RegExp("p", "i")
}
await this.SF.setListFromCollection('collectionId', criteria, 10, 'sort');
setListFromCollectionAggregation
Est une fonction qui effectue une opération d'agrégation sur une collection spécifiée en utilisant le pipeline d'agrégation fourni.
Paramètres
| Nom | Type | Description |
|---|
collection | string | Le nom ou l'identifiant de la collection cible à agréger. |
aggreg | Array<object> | Un tableau d'étapes de pipeline d'agrégation (framework d'agrégation MongoDB). |
Retourne
| Type | Description |
|---|
Promise<Array> | Retourne une Promise qui se résout en résultat de la requête d'agrégation. |
Exemples
let results = await SF.utils.setListFromCollectionAggregation("users", [
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: "$country", count: { $sum: 1 } } }
]);
setListFromReport
Est une fonction qui effectue une requête d'agrégation dynamique sur une collection de rapport, en utilisant des filtres, un tri et des options de limite.
Paramètres
| Nom | Type | Description |
|---|
report | string | L'identifiant ou le nom de la collection de rapport. |
query | object | Un objet représentant les conditions de filtre utilisant des opérateurs personnalisés ou MongoDB. |
[limit] | number | (Optionnel) Limite le nombre de documents retournés. |
[sort] | object | (Optionnel) Options de tri avec le champ by et la direction (-1 ou 1). |
Retourne
| Type | Description |
|---|
Promise<Array> | Retourne une Promise qui se résout en résultat de l'agrégation. |
Exemples
let result = await SF.utils.setListFromReport("monthly_sales", {
SF_createdBy: "admin@example.com",
region: "NA"
}, 10, { by: "createdAt", direction: -1 });
setListFromReportAggregation
Est une fonction qui effectue une agrégation personnalisée sur une instance de rapport en utilisant un pipeline d'agrégation fourni.
Paramètres
| Nom | Type | Description |
|---|
report | string | L'identifiant ou le nom de la collection de rapport. |
aggreg | Array<object> | Le pipeline d'agrégation à exécuter. |
Retourne
| Type | Description |
|---|
Promise<Array> | Retourne une Promise qui se résout en résultat de l'agrégation. |
Exemples
let data = await SF.utils.setListFromReportAggregation("monthly_reports", [
{ $match: { status: "completed" } },
{ $group: { _id: "$region", total: { $sum: "$amount" } } }
]);
setListFromSQL
Permet de définir une liste de données à partir de la base de données cliente.
Paramètres
| Nom | Type | Description |
|---|
clientDatabase | string | Identifiant de la base de données cliente. |
query | string | Requête de tableau. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await this.SF.setListFromSQL('clientDatabaseID', "code='MMA'");
setListFromCustomList
Permet de définir une liste de données à partir de CustomList.
Paramètres
| Nom | Type | Description |
|---|
CustomList | string | Identifiant de CustomList. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await this.SF.setListFromCustomList('CustomListID');
aggregateQuery
Permet de définir une liste de données à partir de CustomList.
Paramètres
| Nom | Type | Description |
|---|
type | string | Type de la ressource (collection, report, users, projects, external databases). |
id | string | Identifiant de la ressource. |
query | object | JSON d'une valeur à faire correspondre dans la ressource. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await this.SF.aggregateQuery('collection', '610c0343f6ebc7ddcb49cc3b', {value : "it"});
deleteFile
Permet de supprimer un fichier en utilisant son identifiant.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la ressource. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await this.SF.deleteFile('610c0343f6ebc7ddcb49cc3b');
2 - Projects
La classe Projects contient les méthodes qui vous permettront de gérer les projets.
Utilisation
const projects = new Projects({ mode: 'test' });
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "status": "active" }
},
{
"$group": {
"_id": "$category",
"total": { "$sum": 1 }
}
}
]
let results = await projects.aggregate(aggregation);
3 - Users
La classe Users contient les méthodes qui vous permettront de gérer les utilisateurs.
Utilisation
const users = new Users();
create
Permet de créer un nouvel utilisateur.
Paramètres
| Nom | Type | Description |
|---|
data | object | Contenu JSON des données utilisateur |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Data
Voici les données utilisateur autorisées :
| champ | Description |
|---|
| email | Requis et unique. L'email de l'utilisateur (string) |
| lastName | Requis. Le nom de famille de l'utilisateur (string) |
| firstName | Requis. Le prénom de l'utilisateur (string) |
| group | Requis. Les identifiants des groupes d'utilisateur (array) |
| metadata | optionnel. Les métadonnées de l'utilisateur (json) |
| ideAccess | Requis. Droit d'accès à l'IDE (boolean) |
| blocked | optionnel. Blocage de l'utilisateur (boolean) |
Exemples
let user = {
email: "email@softydev.com",
lastName : "last name",
firstName: "first name",
group: [],
metadata: {},
ideAccess: true,
blocked: false
}
await users.create(user);
update
Permet de mettre à jour un utilisateur
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'utilisateur. |
data | object | Données utilisateur. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Data
Les mêmes données autorisées lors de la création d'un utilisateur. Les champs sont optionnels.
Exemples
let newData = {
ideAccess: false
}
await users.update("userId", newData);
delete
Permet de supprimer un utilisateur.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'utilisateur. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await users.delete("userId");
findById
Permet d'obtenir un utilisateur par identifiant.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'utilisateur. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let user = await users.findById("userId");
find
Permet de lister les utilisateurs.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let criteria = {
firstName: new RegExp("p", "i")
}
let usersList = await users.find(criteria);
count
Permet d'obtenir le nombre d'utilisateurs.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let criteria = {
blocked: false
}
let count = await users.count(criteria);
findAndCount
Obtenir une liste et le nombre d'utilisateurs
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Options
Ces options sont optionnelles
| Option | Description |
|---|
| criteria | Spécifie le filtre de sélection (par défaut : {}) |
| fields | Sélectionne des champs spécifiques (exemple: "createdAt email") |
| limit | Nombre d'instances retournées (par défaut : 100/ sans limite : 0) |
| page | Numéro de page dépend de la limite (par défaut : 0) |
| sortby | Trie les résultats par clé (par défaut : createdAt) |
| direction | Ordre croissant (1) ou décroissant (-1) (par défaut : -1) |
Exemples
let body = {
criteria: {
firstName: new RegExp("p", "i")
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await users.findAndCount(body);
let usersList = res.data;
let count = res.count;
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "firstName": new RegExp("z", "i") }
},
{
"$project" : {
"_id": 1,
"firstName": 1,
"lastName": 1,
"email": 1
}
}
]
let usersList = await users.aggregate([aggregation]);
addRole
Ajoute un rôle à l'utilisateur en utilisant l'identifiant utilisateur et l'identifiant du groupe.
Paramètres
| Nom | Type | Description |
|---|
userId | string | Identifiant utilisateur. |
groupid | string | Identifiant du groupe. |
mode | string | Mode de l'interface utilisateur en cours d'exécution |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await users.addRole("userId","groupId","SF_mode");
removeRole
Retire un rôle de l'utilisateur en utilisant l'identifiant utilisateur et l'identifiant du groupe.
Paramètres
| Nom | Type | Description |
|---|
userId | string | Identifiant utilisateur. |
groupid | string | Identifiant du groupe. |
mode | string | Mode de l'interface utilisateur en cours d'exécution |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await users.removeRole("userId","groupId","SF_mode");
4 - Groups
La classe Groups contient les méthodes qui vous permettront de gérer les groupes d'utilisateurs.
Utilisation
const groups = new Groups();
findById
Trouve un groupe par son identifiant unique.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du groupe |
Retourne
| Type | Description |
|---|
promise | Retourne les données du groupe |
Exemples
let group = await groups.findById("groupId123");
find
Trouve les groupes en fonction d'un critère de filtre.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | Objet de critères de recherche |
Retourne
| Type | Description |
|---|
promise | Retourne un tableau de groupes |
Exemples
let list = await groups.find({ name: /admin/i });
count
Compte le nombre de groupes correspondant aux critères.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | Critères de filtre |
Retourne
| Type | Description |
|---|
promise | Retourne le nombre |
Exemples
let total = await groups.count({ type: "system" });
findAndCount
Trouve les groupes et retourne à la fois les résultats et le nombre total.
Paramètres
| Nom | Type | Description |
|---|
body | object | Corps de requête avec filtres et pagination |
Retourne
| Type | Description |
|---|
promise | Retourne un objet { data, count } |
Exemples
let result = await groups.findAndCount({ limit: 10, offset: 0 });
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés.
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau du pipeline d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat de l'agrégation |
Exemples
let aggregation = [
{ $match: { type: "system" } },
{ $group: { _id: "$status", total: { $sum: 1 } } }
];
let stats = await groups.aggregate(aggregation);
create
Crée un nouveau groupe avec les données fournies.
Paramètres
| Nom | Type | Description |
|---|
body | object | Données du groupe |
Retourne
| Type | Description |
|---|
promise | Retourne le groupe créé |
Exemples
let newGroup = await groups.create({ name: "Developers", type: "custom" });
update
Met à jour un groupe existant par identifiant.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du groupe |
body | object | Charge utile de mise à jour |
Retourne
| Type | Description |
|---|
promise | Retourne le groupe mis à jour |
Exemples
let updated = await groups.update("groupId123", { name: "Admins Updated" });
delete
Supprime un groupe par identifiant.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du groupe |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat de suppression |
Exemples
await groups.delete("groupId123");
groupUsers
Récupère les utilisateurs appartenant à un groupe spécifique.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du groupe |
Retourne
| Type | Description |
|---|
promise | Retourne un tableau d'utilisateurs dans le groupe |
Exemples
let users = await groups.groupUsers("groupId123");
5 - Collection
La classe Collection contient les méthodes qui vous permettront de gérer votre collection
Utilisation
Vous pouvez instancier une classe Collection avec l'identifiant ou le nom de la collection. Vous pouvez ajouter l'option mode
| Option | Description |
|---|
| id | Requis. Identifiant ou nom de la collection |
| mode | optionnel. Spécifie le mode de la collection (par défaut : "test") |
const collection = new Collection({ id: 'collectionId', mode: 'test' });
insert
Permet d'insérer un json dans une collection
Paramètres
| Nom | Type | Description |
|---|
data | object | JSON d'une valeur à insérer dans la collection. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await collection.insert({ name: "name1", type : "type1" });
insertMany
Permet d'insérer un tableau de json dans une collection.
Paramètres
| Nom | Type | Description |
|---|
data | object | JSON d'une valeur à insérer dans la collection. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await collection.insertMany([{label : "IT", value : "it"}]);
updateMany
Met à jour tous les documents qui satisfont les critères de requête spécifiés.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête. |
data | object | JSON de nouvelles données. |
options | object | JSON d'options |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let criteria = {
firstName: new RegExp("p", "i")
}
await collection.updateMany(criteria, [{ type : "type2" }], { upsert: true });
update
Permet de mettre à jour un document dans la collection
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du document. |
data | object | JSON de nouvelles données. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await collection.update("documentId", { type : "type2" });
delete
Permet de supprimer un document de la collection
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du document. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await collection.delete("documentId");
findById
Permet d'obtenir un objet par identifiant depuis la collection
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant du document. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let document = await collection.findById(id);
find
Permet de sélectionner les documents dans une collection
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Options
Ces options sont optionnelles
| Option | Description |
|---|
| criteria | Spécifie le filtre de sélection (par défaut : {}) |
| limit | Nombre de documents retournés (par défaut : 100/ sans limite : 0) |
| page | Numéro de page dépend de la limite (par défaut : 0) |
| sortby | Trie les résultats par clé (par défaut : createdAt) |
| direction | Ordre croissant (1) ou décroissant (-1) (par défaut : -1) |
Exemples
let body = {
criteria: {
name: new RegExp("p", "i"),
type: "type1"
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let documents = await collection.find(body);
count
Permet d'obtenir le nombre de documents qui correspondraient à une requête pour la collection
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let count = await collection.count({ type: "type1" });
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "type": "type1" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let documents = await collection.aggregate([aggregation]);
6 - SQLDatabase
Gérez vos bases de données SQL externes via la classe SQLDatabase.
Utilisation
Vous pouvez instancier une classe SQL avec l'identifiant et le mode (optionnel).
| Option | Description |
|---|
| id | Requis. Identifiant ou nom de la base de données |
| mode | optionnel. Spécifie le mode de la base de données (par défaut : "test") |
const sql = new SQLDatabase({ id: '610c0343f6ebc7ddcb49cc3b', mode: 'test' });
findOne
Obtient les données d'une ligne de tableau
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
Criteria | string | Requête de tableau. |
Retourne
Exemples
let res = await sql.findOne("client", "code='MMA'"))
find
Liste plusieurs lignes d'un tableau SQL
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
options | string | Requête de tableau. |
Retourne
Exemples
let res = sql.find("client", "code='MMA'")
count
Obtient le nombre de lignes pour un tableau avec un critère
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
options | string | Requête de tableau. |
Retourne
| Type | Description |
|---|
array | Tableau avec un élément contenant le nombre |
Exemples
let count = await sql.count("client", "code='MMA'");
execute
Exécute une requête personnalisée sur la base de données.
Paramètres
| Nom | Type | Description |
|---|
query | string | Chaîne de requête. |
Retourne
| Type | Description |
|---|
array | Retourne un tableau. |
Exemples
sql.execute("INSERT INTO client(code, intitule, representant, codepostal) VALUES('MDSX', 'holder', 'holder', 14000)")
insert
Insère une ligne dans un tableau.
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
data | object | Corps JSON. |
Retourne
Exemples
sql.insert("client", {
code: 'HelloWord',
codepostal: 14000
}
insertMany
Insère plusieurs lignes dans un tableau
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
data | array | Corps JSON. |
Retourne
Exemples
sql.insertMany("client", [
{ code: '#1' },
{ code: '#2' }
])
update
Met à jour les lignes.
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
query | string | Requête de tableau. |
data | object | Corps JSON mis à jour. |
Retourne
Exemples
sql.update('client', "code='MMA'",
{
code: "MQS"
})
delete
Supprime une/des ligne(s) dans votre tableau.
Paramètres
| Nom | Type | Description |
|---|
tableName | string | Nom du tableau. |
query | string | Requête de tableau. |
Retourne
Exemples
sql.delete("client", "id=223")
7 - SoftyTables
La classe SoftyTables fournit des méthodes pour interagir avec les ressources SoftyTable, vous permettant d'effectuer des opérations CRUD, d'exécuter des requêtes et de gérer les données de tableau depuis l'interface web.
Utilisation
Vous pouvez instancier une classe SoftyTables avec les options id et mode.
| Option | Description |
|---|
| id | Requis. Identifiant de la SoftyTable |
| mode | optionnel. Spécifie le mode de SoftyTable (par défaut : "test") |
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
findById
Récupère une seule ligne d'une SoftyTable par son identifiant.
Paramètres
| Nom | Type | Description |
|---|
rowId | string | L'identifiant de la ligne |
Retourne
| Type | Description |
|---|
promise | Se résout en données de la ligne |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let row = await softyTable.findById('12345');
find
Liste les lignes d'une SoftyTable avec filtrage, tri et pagination optionnels.
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options (criteria, limit, page, sortby, direction) |
Retourne
| Type | Description |
|---|
promise | Se résout en un tableau de lignes de tableau |
Options
Ces options sont optionnelles
| Option | Description |
|---|
| criteria | Spécifie le filtre de sélection avec clause where (par défaut : {}) |
| limit | Nombre de lignes retournées (par défaut : 100/ sans limite : 0) |
| page | Numéro de page dépend de la limite (par défaut : 0) |
| sortby | Trie les résultats par nom de champ (par défaut : createdAt) |
| direction | Ordre croissant (1) ou décroissant (-1) (par défaut : -1) |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let rows = await softyTable.find({});
let body = {
criteria: {
where: { status: 'active' }
},
limit: 50,
page: 0,
sortby: 'createdAt',
direction: -1
}
let activeRows = await softyTable.find(body);
count
Compte le nombre de lignes dans une SoftyTable avec filtrage optionnel.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | Critères de requête avec clause where optionnelle |
Retourne
| Type | Description |
|---|
promise | Se résout en un objet avec propriété count |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let result = await softyTable.count({});
let result = await softyTable.count({
criteria: { where: { status: 'active' } }
});
findAndCount
Obtient à la fois une liste de lignes et le nombre total correspondant aux critères.
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options (criteria, limit, page, sortby, direction) |
Retourne
| Type | Description |
|---|
promise | Se résout en objet { data, count } |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let body = {
criteria: {
where: { status: 'active' }
},
limit: 10,
page: 0,
sortby: 'createdAt',
direction: -1
}
let result = await softyTable.findAndCount(body);
let rows = result.data;
let count = result.count;
insert
Crée une seule ligne dans une SoftyTable.
Paramètres
| Nom | Type | Description |
|---|
body | object | L'objet de données à insérer comme ligne |
Retourne
| Type | Description |
|---|
promise | Se résout en données de la ligne créée |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let newRow = await softyTable.insert({
name: 'John Doe',
email: 'john@example.com',
age: 30,
status: 'active'
});
insertMany
Crée plusieurs lignes dans une SoftyTable en une seule fois.
Paramètres
| Nom | Type | Description |
|---|
data | array | Tableau d'objets de données à insérer |
Retourne
| Type | Description |
|---|
promise | Se résout en un tableau de lignes créées |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let newRows = await softyTable.insertMany([
{ name: 'John Doe', email: 'john@example.com', age: 30 },
{ name: 'Jane Smith', email: 'jane@example.com', age: 25 },
{ name: 'Bob Johnson', email: 'bob@example.com', age: 35 }
]);
update
Met à jour une seule ligne dans une SoftyTable par son identifiant.
Paramètres
| Nom | Type | Description |
|---|
rowId | string | L'identifiant de la ligne à mettre à jour |
body | object | Les champs et valeurs à mettre à jour |
Retourne
| Type | Description |
|---|
promise | Se résout en ligne mise à jour |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let updated = await softyTable.update('12345', {
status: 'inactive',
updatedAt: new Date()
});
updateMany
Met à jour plusieurs lignes dans une SoftyTable qui correspondent à des critères spécifiques.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | Critères de requête avec clause where |
value | object | Les champs et valeurs à mettre à jour |
options | object | Options supplémentaires (optionnel) |
Retourne
| Type | Description |
|---|
promise | Se résout en résultat de l'opération de mise à jour |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let result = await softyTable.updateMany(
{ status: 'pending' },
{ status: 'active', processedAt: new Date() }
);
delete
Supprime une seule ligne d'une SoftyTable par son identifiant.
Paramètres
| Nom | Type | Description |
|---|
rowId | string | L'identifiant de la ligne |
Retourne
| Type | Description |
|---|
promise | Se résout en résultat de suppression |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
await softyTable.delete('12345');
deleteMany
Supprime plusieurs lignes d'une SoftyTable qui correspondent à des critères spécifiques.
Paramètres
| Nom | Type | Description |
|---|
criteria | object | Critères de requête avec clause where |
Retourne
| Type | Description |
|---|
promise | Se résout en résultat de suppression |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
await softyTable.deleteMany({ status: 'inactive' });
await softyTable.deleteMany({
createdAt: { $lt: new Date('2024-01-01') }
});
clear
Efface toutes les lignes d'une SoftyTable (supprime toutes les données).
Retourne
| Type | Description |
|---|
promise | Se résout en résultat de suppression |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
await softyTable.clear();
getOptions
Récupère les options pour les champs de sélection dans une SoftyTable.
Retourne
| Type | Description |
|---|
promise | Se résout en tableau d'options |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let options = await softyTable.getOptions();
execute
Exécute une requête SQL personnalisée sur la SoftyTable.
Paramètres
| Nom | Type | Description |
|---|
query | string | La requête SQL à exécuter |
options | object | Options de requête avec replacements et type |
Objet Options
| Champ | Type | Description |
|---|
replacements | object | Valeurs à remplacer dans les requêtes paramétrées |
type | string | Type de requête: 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RAW', 'SHOWTABLES' |
Retourne
| Type | Description |
|---|
promise | Se résout en résultats de la requête |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let results = await softyTable.execute(
'SELECT * FROM my_table WHERE status = :status',
{
replacements: { status: 'active' },
type: 'SELECT'
}
);
let results = await softyTable.execute(
'UPDATE my_table SET status = "processed" WHERE created_at < NOW() - INTERVAL 30 DAY',
{ type: 'UPDATE' }
);
migrate
Migre les lignes dans une SoftyTable (pour les opérations de migration de données).
Retourne
| Type | Description |
|---|
promise | Se résout en résultat de migration |
Exemples
const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});
let result = await softyTable.migrate();
8 - CustomList
La classe CustomList contient les méthodes qui vous permettront de gérer votre liste personnalisée
Utilisation
Vous pouvez instancier une classe CustomList avec l'identifiant de la liste personnalisée. Vous pouvez ajouter d'autres options (mode, versionId)
| Option | Description |
|---|
| id | Requis. Identifiant de la liste personnalisée |
| mode | optionnel. Spécifie le mode de la liste personnalisée (par défaut : "test") |
| versionId | optionnel. Identifiant de la version depuis laquelle obtenir la liste personnalisée |
const customList = new CustomList({id: 'id', mode: 'test', versionId: "vId"});
get
Obtient les données d'une liste personnalisée
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let customListData = await customList.get();
9 - Report
La classe Report vous permettra de manipuler un rapport spécifique
Utilisation
Vous pouvez instancier une classe Report avec l'identifiant du rapport. Vous pouvez ajouter l'option mode
| Option | Description |
|---|
| id | Requis. Spécifie le mode de la liste personnalisée (par défaut : "test") |
| mode | optionnel. Spécifie le mode de la liste personnalisée (par défaut : "test") |
const report = new Report({id: 'id', mode: 'test'});
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "SF_status": "Running" }
},
{
"$sort": { "SF_createdAt": -1 }
}
]
let instances = await report.aggregate(aggregation);
10 - Instance
La classe Instance contient les méthodes qui vous permettront de gérer les instances
Utilisation
const inctance = new Instance();
findById
Obtient une instance par identifiant
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'instance. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let oneInctance = await inctance.findById(id);
find
Liste les instances
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let instances = await inctance.find({ status: "Running" });
count
Permet d'obtenir le nombre d'instances qui correspondraient à une requête
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let count = await inctance.count({ status: "Running" });
findAndCount
Obtient une liste et le nombre d'instances
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Options
Ces options sont optionnelles
| Option | Description |
|---|
| criteria | Spécifie le filtre de sélection (par défaut : {}) |
| fields | Sélectionne des champs spécifiques (exemple: "createdAt name status") |
| limit | Nombre d'instances retournées (par défaut : 100/ sans limite : 0) |
| page | Numéro de page dépend de la limite (par défaut : 0) |
| sortby | Trie les résultats par clé (par défaut : createdAt) |
| direction | Ordre croissant (1) ou décroissant (-1) (par défaut : -1) |
Exemples
let body = {
criteria: {
status: "Running"
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await inctance.findAndCount(body);
let instances = res.data;
let count = res.count;
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "status": "End" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let inctances = await inctance.aggregate([aggregation]);
update
Met à jour une instance
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'instance. |
data | object | JSON de nouvelles données. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await inctance.update(id, { status : "End" });
delete
Supprime une instance
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'instance. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await inctance.delete(id);
history
Obtient l'historique de l'instance.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de l'instance. |
data | object | JSON de données. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await inctance.history(id, { status : "End" });
11 - Task
La classe Task contient les méthodes qui vous permettront de gérer les tâches
Utilisation
findById
Obtient une tâche par identifiant
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let oneTask = await task.findById(id);
find
Liste les tâches
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let tasks = await task.find({ instanceId: "instanceId" });
count
Permet d'obtenir le nombre de tâches qui correspondraient à une requête
Paramètres
| Nom | Type | Description |
|---|
criteria | object | JSON de requête |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let count = await task.count({ instanceId: "instanceId" });
findAndCount
Obtient une liste et le nombre de tâches
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Options
Ces options sont optionnelles
| Option | Description |
|---|
| criteria | Spécifie le filtre de sélection (par défaut : {}) |
| assignedToConnected | Pour obtenir les tâches de l'utilisateur connecté (par défaut : false) |
| fields | Sélectionne des champs spécifiques (exemple: "createdAt name status") |
| limit | Nombre d'instances retournées (par défaut : 100/ sans limite : 0) |
| page | Numéro de page dépend de la limite (par défaut : 0) |
| sortby | Trie les résultats par clé (par défaut : createdAt) |
| direction | Ordre croissant (1) ou décroissant (-1) (par défaut : -1) |
Exemples
let body = {
criteria: {
status: "Running"
},
assignedToConnected: true,
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await task.findAndCount(body);
let tasks = res.data;
let count = res.count;
aggregate
Les opérations d'agrégation traitent les enregistrements de données et retournent des résultats calculés
Paramètres
| Nom | Type | Description |
|---|
aggregation | array | Tableau d'agrégation |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let aggregation = [
{
"$match": { "status": "End" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let tasks = await task.aggregate([aggregation]);
update
Met à jour une tâche
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche. |
data | object | JSON de nouvelles données. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await task.update(id, { status : "End" });
delete
Supprime une tâche
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
getNextValue
Obtient la valeur suivante d'une tâche.
Paramètres
| Nom | Type | Description |
|---|
name | string | Nom de la variable. |
[padding] | number | Remplissage du résultat avec 000000. |
mode | string | Mode de l'utilisateur en cours d'exécution. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await task.getNextValue("name",5,"SF_mode");
history
Obtient l'historique d'une tâche par son identifiant.
Paramètres
| Nom | Type | Description |
|---|
id | string | Identifiant de la tâche |
body | object | Paramètres de requête (optionnel) |
Retourne
| Type | Description |
|---|
promise | Retourne un objet { data, count } |
Exemples
let log = await task.history("taskId123", {});
12 - Api
La classe Api contient les méthodes qui vous permettront de gérer vos Apis.
Utilisation
invoke
Invoque une API.
Paramètres
| Nom | Type | Description |
|---|
body | object | JSON d'options. |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
let body = {
const myElement = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
myElement.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
myElement.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
}
await api.invoke(body);
13 - Email
La classe Email contient les méthodes qui vous permettront de gérer vos emails.
Utilisation
const email = new Email();
send
Envoie un email.
Paramètres
| Nom | Type | Description |
|---|
assignee | string | Email de l'utilisateur destinataire. |
subject | string | Sujet de l'email. |
variables | object | JSON d'options. |
mailTemplate | object | Modèle d'email. |
mailProvider | object | Fournisseur par défaut Softyflow. |
cc | string | JSON d'options. |
from | string | Email de l'utilisateur expéditeur. |
replyTo | string | * |
Retourne
| Type | Description |
|---|
promise | Retourne une promesse |
Exemples
await email.send("assignee","subject",{"var1", "var2"},{"mailTemplate"},{"mailProvider"},"mail of user in cc", "senderMail","replyTo");
14 - DataSource
La classe DataSource fournit des méthodes génériques de manipulation de données pour diverses sources telles que les collections, les tableaux ou les rapports.
Utilisation
const ds = new DataSource();
findOne
Récupère un seul document d'une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Options de requête |
Retourne
| Type | Description |
|---|
promise | Retourne un seul document |
Exemples
let doc = await ds.findOne("users", { filter: { email: "user@example.com" } });
list
Liste plusieurs documents d'une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Options de requête |
Retourne
| Type | Description |
|---|
promise | Retourne un tableau de documents |
Exemples
let docs = await ds.list("users", { filter: { active: true } });
count
Compte le nombre de documents dans une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Options de requête |
Retourne
| Type | Description |
|---|
promise | Retourne le nombre de documents |
Exemples
let total = await ds.count("orders", { filter: { status: "delivered" } });
update
Met à jour des documents dans une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Conditions de requête |
data | object | Données à mettre à jour |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat de mise à jour |
Exemples
await ds.update("products", { filter: { stock: 0 } }, { restock: true });
insert
Insère un seul document dans une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
data | object | Document à insérer |
options | object | Options supplémentaires |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat d'insertion |
Exemples
await ds.insert("logs", { action: "login", userId: "abc123" });
insertMany
Insère plusieurs documents dans une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
data | array | Tableau de documents |
options | object | Options supplémentaires |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat d'insertion |
Exemples
await ds.insertMany("logs", [{ action: "view" }, { action: "edit" }]);
delete
Supprime des documents d'une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Critères de suppression |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat de suppression |
Exemples
await ds.delete("sessions", { filter: { expired: true } });
execute
Exécute une action ou commande personnalisée sur une source de données.
Paramètres
| Nom | Type | Description |
|---|
source | string | Nom de la source |
options | object | Paramètres d'exécution |
Retourne
| Type | Description |
|---|
promise | Retourne le résultat d'exécution |
Exemples
await ds.execute("jobs", { action: "resetAll" });
15 - File
La classe File fournit des méthodes pour générer des fichiers PDF à partir de modèles HTML stockés et de contextes de variables en utilisant des endpoints API.
generatePDF
Génère un fichier PDF en récupérant le contenu HTML d'un fichier et en le publiant avec des données contextuelles.
Paramètres
| Nom | Type | Description |
|---|
filename | string | - Nom souhaité pour le PDF généré |
fid | string | - Identifiant du fichier depuis lequel récupérer le contenu |
context | object | - Données contextuelles pour le rendu PDF (par exemple, variables) |
Retourne
| Type | Description |
|---|
Promise | - Se résout avec la réponse de génération du PDF |
Example
const file = new File();
file.generatePDF("output.pdf", "605c72...", { variables: { user: "Alice" } });
genratePDFWithVar
Génère du contenu PDF en utilisant des variables directement en publiant vers un endpoint de génération de contenu spécifique.
Paramètres
| Nom | Type | Description |
|---|
name | string | - Nom pour la sortie (non utilisé directement dans l'appel) |
fid | string | - Identifiant du fichier du modèle |
context | object | - Données de variables utilisées pour le rendu du modèle |
Retourne
| Type | Description |
|---|
Promise | - Se résout avec la réponse du serveur |
Example
const file = new File();
file.genratePDFWithVar("Invoice", "605c72...", { variables: { amount: 100, user: "Alice" } });