Skip to main content

Web modeler SDK

Description du SDK du web modeler

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"

//utilisation de 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

TypeDescription
stringRetourne 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

TypeDescription
stringRetourne 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

paramsDescription
selectoptionnel. Les champs à sélectionner (champs: SF_mode, SF_version, SF_screen)

Paramètres

NomTypeDescription
selectstringLes champs sélectionnés

Retourne

TypeDescription
stringRetourne une chaîne de caractères

Exemples

let currentMode = this.SF.getSF_mode('SF_mode SF_version');
console.log(currentMode)
// ?SF_mode=test&SF_version=versionId

startProcess

Est une fonction qui démarre un processus spécifique

Paramètres

NomTypeDescription
idstringIdentifiant du processus
bodyobjectJSON des variables du processus

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
actionstringLe nom de l'action utilisé pour la vérification reCAPTCHA v3.

Retourne

TypeDescription
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");
// retourne: '03AFcWeA... (une longue chaîne de jeton de Google)'

saveNew

Est une fonction qui vous permet de sauvegarder l'état de l'interface utilisateur

Paramètres

NomTypeDescription
idstringIdentifiant de l'interface
bodyobjectJSON des variables de l'interface

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant de la tâche
bodyobjectJSON des variables de la tâche

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant de la tâche
bodyobjectJSON des variables de la tâche

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
limitstringLimite de résultats par page.
pagestringNuméro de page
dueDatestringDate associée.
fieldsstringChamps.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
dataFormDataUn objet FormData contenant le fichier image et toutes métadonnées supplémentaires.

Retourne

TypeDescription
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);
// retourne: { success: true, imageUrl: "/uploads/user123.png" }

setListFromCollection

Permet de définir une liste de données à partir d'une collection spécifique.

Paramètres

NomTypeDescription
collectionstringIdentifiant de la collection.
criteriaobjectJSON de requête.
limitstringLimite de résultats.
sortstringOption de tri.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
collectionstringLe nom ou l'identifiant de la collection cible à agréger.
aggregArray<object>Un tableau d'étapes de pipeline d'agrégation (framework d'agrégation MongoDB).

Retourne

TypeDescription
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 } } }
]);
// retourne: [ { _id: "USA", count: 42 }, { _id: "FR", count: 18 } ]

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

NomTypeDescription
reportstringL'identifiant ou le nom de la collection de rapport.
queryobjectUn 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

TypeDescription
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 });
// retourne: [ { ... }, { ... } ]

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

NomTypeDescription
reportstringL'identifiant ou le nom de la collection de rapport.
aggregArray<object>Le pipeline d'agrégation à exécuter.

Retourne

TypeDescription
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" } } }
]);
// retourne: [ { _id: "Europe", total: 24000 }, { _id: "Asia", total: 18000 } ]

setListFromSQL

Permet de définir une liste de données à partir de la base de données cliente.

Paramètres

NomTypeDescription
clientDatabasestringIdentifiant de la base de données cliente.
querystringRequête de tableau.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
CustomListstringIdentifiant de CustomList.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await this.SF.setListFromCustomList('CustomListID');

aggregateQuery

Permet de définir une liste de données à partir de CustomList.

Paramètres

NomTypeDescription
typestringType de la ressource (collection, report, users, projects, external databases).
idstringIdentifiant de la ressource.
queryobjectJSON d'une valeur à faire correspondre dans la ressource.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await this.SF.aggregateQuery('collection', '610c0343f6ebc7ddcb49cc3b', {value : "it"});

deleteFile

Permet de supprimer un fichier en utilisant son identifiant.

Paramètres

NomTypeDescription
idstringIdentifiant de la ressource.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
dataobjectContenu JSON des données utilisateur

Retourne

TypeDescription
promiseRetourne une promesse

Data

Voici les données utilisateur autorisées :

champDescription
emailRequis et unique. L'email de l'utilisateur (string)
lastNameRequis. Le nom de famille de l'utilisateur (string)
firstNameRequis. Le prénom de l'utilisateur (string)
groupRequis. Les identifiants des groupes d'utilisateur (array)
metadataoptionnel. Les métadonnées de l'utilisateur (json)
ideAccessRequis. Droit d'accès à l'IDE (boolean)
blockedoptionnel. 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

NomTypeDescription
idstringIdentifiant de l'utilisateur.
dataobjectDonnées utilisateur.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant de l'utilisateur.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await users.delete("userId");

findById

Permet d'obtenir un utilisateur par identifiant.

Paramètres

NomTypeDescription
idstringIdentifiant de l'utilisateur.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let user = await users.findById("userId");

find

Permet de lister les utilisateurs.

Paramètres

NomTypeDescription
criteriaobjectJSON de requête.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectJSON de requête

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let criteria = {
blocked: false
}
let count = await users.count(criteria);

findAndCount

Obtenir une liste et le nombre d'utilisateurs

Paramètres

NomTypeDescription
bodyobjectJSON d'options.

Retourne

TypeDescription
promiseRetourne une promesse

Options

Ces options sont optionnelles

OptionDescription
criteriaSpécifie le filtre de sélection (par défaut : {})
fieldsSélectionne des champs spécifiques (exemple: "createdAt email")
limitNombre d'instances retournées (par défaut : 100/ sans limite : 0)
pageNuméro de page dépend de la limite (par défaut : 0)
sortbyTrie les résultats par clé (par défaut : createdAt)
directionOrdre 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
userIdstringIdentifiant utilisateur.
groupidstringIdentifiant du groupe.
modestringMode de l'interface utilisateur en cours d'exécution

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
userIdstringIdentifiant utilisateur.
groupidstringIdentifiant du groupe.
modestringMode de l'interface utilisateur en cours d'exécution

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant du groupe

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectObjet de critères de recherche

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectCritères de filtre

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
bodyobjectCorps de requête avec filtres et pagination

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
aggregationarrayTableau du pipeline d'agrégation

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
bodyobjectDonnées du groupe

Retourne

TypeDescription
promiseRetourne le groupe créé

Exemples

let newGroup = await groups.create({ name: "Developers", type: "custom" });

update

Met à jour un groupe existant par identifiant.

Paramètres

NomTypeDescription
idstringIdentifiant du groupe
bodyobjectCharge utile de mise à jour

Retourne

TypeDescription
promiseRetourne le groupe mis à jour

Exemples

let updated = await groups.update("groupId123", { name: "Admins Updated" });

delete

Supprime un groupe par identifiant.

Paramètres

NomTypeDescription
idstringIdentifiant du groupe

Retourne

TypeDescription
promiseRetourne le résultat de suppression

Exemples

await groups.delete("groupId123");

groupUsers

Récupère les utilisateurs appartenant à un groupe spécifique.

Paramètres

NomTypeDescription
idstringIdentifiant du groupe

Retourne

TypeDescription
promiseRetourne 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

OptionDescription
idRequis. Identifiant ou nom de la collection
modeoptionnel. 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

NomTypeDescription
dataobjectJSON d'une valeur à insérer dans la collection.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await collection.insert({ name: "name1", type : "type1" });

insertMany

Permet d'insérer un tableau de json dans une collection.

Paramètres

NomTypeDescription
dataobjectJSON d'une valeur à insérer dans la collection.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectJSON de requête.
dataobjectJSON de nouvelles données.
optionsobjectJSON d'options

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant du document.
dataobjectJSON de nouvelles données.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await collection.update("documentId", { type : "type2" });

delete

Permet de supprimer un document de la collection

Paramètres

NomTypeDescription
idstringIdentifiant du document.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await collection.delete("documentId");

findById

Permet d'obtenir un objet par identifiant depuis la collection

Paramètres

NomTypeDescription
idstringIdentifiant du document.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let document = await collection.findById(id);

find

Permet de sélectionner les documents dans une collection

Paramètres

NomTypeDescription
bodyobjectJSON d'options.

Retourne

TypeDescription
promiseRetourne une promesse

Options

Ces options sont optionnelles

OptionDescription
criteriaSpécifie le filtre de sélection (par défaut : {})
limitNombre de documents retournés (par défaut : 100/ sans limite : 0)
pageNuméro de page dépend de la limite (par défaut : 0)
sortbyTrie les résultats par clé (par défaut : createdAt)
directionOrdre 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

NomTypeDescription
criteriaobjectJSON de requête

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne 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).

OptionDescription
idRequis. Identifiant ou nom de la base de données
modeoptionnel. 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

NomTypeDescription
tableNamestringNom du tableau.
CriteriastringRequête de tableau.

Retourne

TypeDescription
object

Exemples

let res = await sql.findOne("client", "code='MMA'"))

find

Liste plusieurs lignes d'un tableau SQL

Paramètres

NomTypeDescription
tableNamestringNom du tableau.
optionsstringRequête de tableau.

Retourne

TypeDescription
array

Exemples

let res = sql.find("client", "code='MMA'")

count

Obtient le nombre de lignes pour un tableau avec un critère

Paramètres

NomTypeDescription
tableNamestringNom du tableau.
optionsstringRequête de tableau.

Retourne

TypeDescription
arrayTableau 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

NomTypeDescription
querystringChaîne de requête.

Retourne

TypeDescription
arrayRetourne 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

NomTypeDescription
tableNamestringNom du tableau.
dataobjectCorps JSON.

Retourne

TypeDescription
array

Exemples

sql.insert("client", {
code: 'HelloWord',
codepostal: 14000
}

insertMany

Insère plusieurs lignes dans un tableau

Paramètres

NomTypeDescription
tableNamestringNom du tableau.
dataarrayCorps JSON.

Retourne

TypeDescription
array

Exemples

sql.insertMany("client", [
{ code: '#1' },
{ code: '#2' }
])

update

Met à jour les lignes.

Paramètres

NomTypeDescription
tableNamestringNom du tableau.
querystringRequête de tableau.
dataobjectCorps JSON mis à jour.

Retourne

TypeDescription
object

Exemples

 sql.update('client',   "code='MMA'",
{
code: "MQS"
})

delete

Supprime une/des ligne(s) dans votre tableau.

Paramètres

NomTypeDescription
tableNamestringNom du tableau.
querystringRequête de tableau.

Retourne

TypeDescription
object

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.

OptionDescription
idRequis. Identifiant de la SoftyTable
modeoptionnel. 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

NomTypeDescription
rowIdstringL'identifiant de la ligne

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
bodyobjectJSON d'options (criteria, limit, page, sortby, direction)

Retourne

TypeDescription
promiseSe résout en un tableau de lignes de tableau

Options

Ces options sont optionnelles

OptionDescription
criteriaSpécifie le filtre de sélection avec clause where (par défaut : {})
limitNombre de lignes retournées (par défaut : 100/ sans limite : 0)
pageNuméro de page dépend de la limite (par défaut : 0)
sortbyTrie les résultats par nom de champ (par défaut : createdAt)
directionOrdre croissant (1) ou décroissant (-1) (par défaut : -1)

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Liste toutes les lignes
let rows = await softyTable.find({});

// Liste avec filtres et pagination
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

NomTypeDescription
criteriaobjectCritères de requête avec clause where optionnelle

Retourne

TypeDescription
promiseSe résout en un objet avec propriété count

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Compte toutes les lignes
let result = await softyTable.count({});
// retourne: { count: 150 }

// Compte avec filtre
let result = await softyTable.count({
criteria: { where: { status: 'active' } }
});
// retourne: { count: 75 }

findAndCount

Obtient à la fois une liste de lignes et le nombre total correspondant aux critères.

Paramètres

NomTypeDescription
bodyobjectJSON d'options (criteria, limit, page, sortby, direction)

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
bodyobjectL'objet de données à insérer comme ligne

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
dataarrayTableau d'objets de données à insérer

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
rowIdstringL'identifiant de la ligne à mettre à jour
bodyobjectLes champs et valeurs à mettre à jour

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
criteriaobjectCritères de requête avec clause where
valueobjectLes champs et valeurs à mettre à jour
optionsobjectOptions supplémentaires (optionnel)

Retourne

TypeDescription
promiseSe résout en résultat de l'opération de mise à jour

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Met à jour toutes les lignes où le statut est 'pending'
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

NomTypeDescription
rowIdstringL'identifiant de la ligne

Retourne

TypeDescription
promiseSe 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

NomTypeDescription
criteriaobjectCritères de requête avec clause where

Retourne

TypeDescription
promiseSe résout en résultat de suppression

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Supprime toutes les lignes inactives
await softyTable.deleteMany({ status: 'inactive' });

// Supprime les lignes plus anciennes qu'une certaine date
await softyTable.deleteMany({
createdAt: { $lt: new Date('2024-01-01') }
});

clear

Efface toutes les lignes d'une SoftyTable (supprime toutes les données).

Retourne

TypeDescription
promiseSe résout en résultat de suppression

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Supprime toutes les lignes du tableau
await softyTable.clear();

getOptions

Récupère les options pour les champs de sélection dans une SoftyTable.

Retourne

TypeDescription
promiseSe résout en tableau d'options

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

let options = await softyTable.getOptions();
// retourne: [{ label: 'Active', value: 'active' }, { label: 'Inactive', value: 'inactive' }]

execute

Exécute une requête SQL personnalisée sur la SoftyTable.

Paramètres

NomTypeDescription
querystringLa requête SQL à exécuter
optionsobjectOptions de requête avec replacements et type

Objet Options

ChampTypeDescription
replacementsobjectValeurs à remplacer dans les requêtes paramétrées
typestringType de requête: 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RAW', 'SHOWTABLES'

Retourne

TypeDescription
promiseSe résout en résultats de la requête

Exemples

const softyTable = new SoftyTables({id: 'tableId', mode: 'test'});

// Exécute une requête SELECT
let results = await softyTable.execute(
'SELECT * FROM my_table WHERE status = :status',
{
replacements: { status: 'active' },
type: 'SELECT'
}
);

// Exécute une requête personnalisée
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

TypeDescription
promiseSe 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)

OptionDescription
idRequis. Identifiant de la liste personnalisée
modeoptionnel. Spécifie le mode de la liste personnalisée (par défaut : "test")
versionIdoptionnel. 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

TypeDescription
promiseRetourne 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

OptionDescription
idRequis. Spécifie le mode de la liste personnalisée (par défaut : "test")
modeoptionnel. 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let aggregation = [
{
"$match": { "SF_status": "Running" }
},
{
"$sort": { "SF_createdAt": -1 }
}
]
let instances = await report.aggregate(aggregation); //rapport des instances

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

NomTypeDescription
idstringIdentifiant de l'instance.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let oneInctance = await inctance.findById(id);

find

Liste les instances

Paramètres

NomTypeDescription
criteriaobjectJSON de requête.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectJSON de requête

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let count = await inctance.count({ status: "Running" });

findAndCount

Obtient une liste et le nombre d'instances

Paramètres

NomTypeDescription
bodyobjectJSON d'options.

Retourne

TypeDescription
promiseRetourne une promesse

Options

Ces options sont optionnelles

OptionDescription
criteriaSpécifie le filtre de sélection (par défaut : {})
fieldsSélectionne des champs spécifiques (exemple: "createdAt name status")
limitNombre d'instances retournées (par défaut : 100/ sans limite : 0)
pageNuméro de page dépend de la limite (par défaut : 0)
sortbyTrie les résultats par clé (par défaut : createdAt)
directionOrdre 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant de l'instance.
dataobjectJSON de nouvelles données.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await inctance.update(id, { status : "End" });

delete

Supprime une instance

Paramètres

NomTypeDescription
idstringIdentifiant de l'instance.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await inctance.delete(id);

history

Obtient l'historique de l'instance.

Paramètres

NomTypeDescription
idstringIdentifiant de l'instance.
dataobjectJSON de données.

Retourne

TypeDescription
promiseRetourne 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

const task = new Task();

findById

Obtient une tâche par identifiant

Paramètres

NomTypeDescription
idstringIdentifiant de la tâche.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let oneTask = await task.findById(id);

find

Liste les tâches

Paramètres

NomTypeDescription
criteriaobjectJSON de requête.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
criteriaobjectJSON de requête

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

let count = await task.count({ instanceId: "instanceId" });

findAndCount

Obtient une liste et le nombre de tâches

Paramètres

NomTypeDescription
bodyobjectJSON d'options.

Retourne

TypeDescription
promiseRetourne une promesse

Options

Ces options sont optionnelles

OptionDescription
criteriaSpécifie le filtre de sélection (par défaut : {})
assignedToConnectedPour obtenir les tâches de l'utilisateur connecté (par défaut : false)
fieldsSélectionne des champs spécifiques (exemple: "createdAt name status")
limitNombre d'instances retournées (par défaut : 100/ sans limite : 0)
pageNuméro de page dépend de la limite (par défaut : 0)
sortbyTrie les résultats par clé (par défaut : createdAt)
directionOrdre 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

NomTypeDescription
aggregationarrayTableau d'agrégation

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
idstringIdentifiant de la tâche.
dataobjectJSON de nouvelles données.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await task.update(id, { status : "End" });

delete

Supprime une tâche

Paramètres

NomTypeDescription
idstringIdentifiant de la tâche.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await task.delete(id);

getNextValue

Obtient la valeur suivante d'une tâche.

Paramètres

NomTypeDescription
namestringNom de la variable.
[padding]numberRemplissage du résultat avec 000000.
modestringMode de l'utilisateur en cours d'exécution.

Retourne

TypeDescription
promiseRetourne une promesse

Exemples

await task.getNextValue("name",5,"SF_mode");

history

Obtient l'historique d'une tâche par son identifiant.

Paramètres

NomTypeDescription
idstringIdentifiant de la tâche
bodyobjectParamètres de requête (optionnel)

Retourne

TypeDescription
promiseRetourne 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

const api = new Api();

invoke

Invoque une API.

Paramètres

NomTypeDescription
bodyobjectJSON d'options.

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
assigneestringEmail de l'utilisateur destinataire.
subjectstringSujet de l'email.
variablesobjectJSON d'options.
mailTemplateobjectModèle d'email.
mailProviderobjectFournisseur par défaut Softyflow.
ccstringJSON d'options.
fromstringEmail de l'utilisateur expéditeur.
replyTostring*

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectOptions de requête

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectOptions de requête

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectOptions de requête

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectConditions de requête
dataobjectDonnées à mettre à jour

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
dataobjectDocument à insérer
optionsobjectOptions supplémentaires

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
dataarrayTableau de documents
optionsobjectOptions supplémentaires

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectCritères de suppression

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
sourcestringNom de la source
optionsobjectParamètres d'exécution

Retourne

TypeDescription
promiseRetourne 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

NomTypeDescription
filenamestring- Nom souhaité pour le PDF généré
fidstring- Identifiant du fichier depuis lequel récupérer le contenu
contextobject- Données contextuelles pour le rendu PDF (par exemple, variables)

Retourne

TypeDescription
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

NomTypeDescription
namestring- Nom pour la sortie (non utilisé directement dans l'appel)
fidstring- Identifiant du fichier du modèle
contextobject- Données de variables utilisées pour le rendu du modèle

Retourne

TypeDescription
Promise- Se résout avec la réponse du serveur

Example

const file = new File();
file.genratePDFWithVar("Invoice", "605c72...", { variables: { amount: 100, user: "Alice" } });