Skip to main content

SDK du Modélisateur de Processus

Description du SDK du modélisateur de processus​

Le SDK du modélisateur de processus est disponible dans toute variable d'entrée ou de sortie du modélisateur de processus. Il permet aux utilisateurs d'accéder aux ressources du processus et d'exécuter des calculs complexes lors de l'exécution de l'instance.

Le SDK est accessible via la variable SF.

Le SDK a les attributs suivants

var SF = {
collection : Object,
user : Object,
file : Object,
utils : Object,
sql : Object,
instance : Object,
task : Object,
process : Object,
softyTable : Object, // SoftyTable instance with methods to interact with tables
mode : String, // The current Mode this is setted automatically
};

Dans les sections suivantes, nous expliquerons chaque attribut et les méthodes autorisées.

1 - Utils​


L'objet utils contient les méthodes qui vous permettront de

nextValue​

Génère un numéro incrémenternel basé sur un nom de chaîne unique. L'ID résultant peut être complété par des zéros à une longueur spécifiée si souhaité.

Paramètres​

NomTypeDescription
namestringUn nom unique utilisé comme clé pour générer l'ID.
paddingnumber(Optionnel) Le nombre de chiffres à ajouter au résultat (par ex., 6 → 000001).

Retourne​

TypeDescription
PromiseUne Promesse qui se résout en l'ID généré.

Exemples​

let id = await SF.utils.nextValue("leave_request");
// retourne le nombre 1
let id = await SF.utils.nextValue("leave_request",5);
// retourne la chaîne 00001

shellExecLocal​

Est une fonction qui exécute une commande shell locale et retourne la sortie rognée.

Paramètres​

NomTypeDescription
cmdstringLa commande shell à exécuter.

Retourne​

TypeDescription
Promise<{data: string}>Une Promesse qui se résout en un objet contenant la sortie standard rognée.

Exemples​

let result = await SF.utils.shellExecLocal('echo Hello World');
// retourne: { data: 'Hello World' }

let result = await SF.utils.shellExecLocal('pwd');
// retourne: { data: '/home/user/project' }

shellExecRemote​

Est une fonction qui exécute une commande shell sur un serveur distant.

Paramètres​

NomTypeDescription
cdmstringLa commande shell à exécuter à distance.
optionsobjectOptions de connexion SSH (host, port, username, password/privateKey, etc.).

Retourne​

TypeDescription
Promise<{data: string, code: number}>Une Promesse qui se résout en un objet contenant :
– data : Le résultat de la sortie standard sous forme de chaîne.
– code : Le code de sortie de la commande distante.

Exemples​

let result = await SF.utils.shellExecRemote('ls -l', {
host: '192.168.1.10',
port: 22,
username: 'user',
password: 'password'
});
// retourne: { data: 'list of files and folders...', code: 0 }

axios​

Axios est un client HTTP basé sur des Promesses pour le navigateur et node.js En savoir plus Voir la documentation officielle

Exemples​

let id = SF.utils.axios.get('/data/json/123')
.then(function (response) {
// traiter le succès
console.log(response);
}).catch(function (error) {
// traiter l'erreur
console.log(error);
});

2 - Collection​


insertMany​

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

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
dataarrayTableau de données à insérer dans la collection.

Retourne​

TypeDescription
PromiseUne Promesse indiquant le résultat de l'opération d'insertion.

Exemples​

await SF.collection.insertMany("cost-centers",[{label : "IT", value : "it"}])

insertOne​

Permet d'insérer un JSON dans une collection

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
dataobjectObjet JSON représentant une valeur unique à insérer dans la collection.

Retourne​

TypeDescription
PromiseUne Promesse indiquant le résultat de l'opération d'insertion.

Exemples​

await SF.collection.insertOne("cost-centers",{label : "IT", value : "it"})

findOne​

Retourne un document qui satisfait les critères de requête spécifiés. Si plusieurs documents satisfont la requête, cette méthode retourne le premier document.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON de valeurs à correspondre dans la collection.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.collection.findOne("cost-centers",{value : "it"})

find​

Retourne tous les documents qui satisfont les critères de requête spécifiés.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON représentant les critères pour correspondre aux documents dans la collection.

Retourne​

TypeDescription
PromiseUne Promesse indiquant le résultat de l'opération de recherche.

Exemples​

await SF.collection.find("cost-centers",{value : "it"})

updateOne​

Met à jour le premier document qui satisfait les critères de requête spécifiés.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON représentant les critères pour correspondre aux documents dans la collection.
bodyobjectObjet JSON représentant les champs et valeurs à mettre à jour.

Retourne​

TypeDescription
PromiseUne Promesse indiquant le résultat de l'opération de mise à jour.

Exemples​

await SF.collection.updateOne("cost-centers",{value : "it"})

update​

Met à jour tous les documents qui satisfont les critères de requête spécifiés.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON représentant la valeur à correspondre dans la collection.
bodyobjectObjet JSON représentant la valeur à mettre à jour dans la collection.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.collection.update("cost-centers",{value : "it"})

count​

Retourne le nombre de documents dans la collection.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.collection.count("cost-centers")

deleteOne​

Permet de supprimer un document d'une collection.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON représentant la valeur à correspondre dans la collection.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.collection.deleteOne("cost-centers")

delete​

Permet de supprimer plusieurs documents d'une collection.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
queryobjectObjet JSON représentant la valeur à correspondre dans la collection.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.collection.delete("cost-centers")

aggregate​

Les opérations d'agrégation traitent les enregistrements de données et retournent les résultats calculés

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.
aggregationarrayTableau d'agrégation.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

let aggregation = [
{
"$match": { "type": "type1" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
await SF.collection.aggregate("cost-centers",[aggregation]);

cleanCollection​

Supprime tous les documents d'une collection.

Paramètres​

NomTypeDescription
collectionstringNom de la collection dans Softyflow.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.collection.cleanCollection("cost-centers")

bulkWrite​

Est une fonction qui effectue plusieurs opérations d'écriture (insertion, mise à jour, suppression) en un seul lot sur une collection MongoDB spécifiée.

Paramètres​

NomTypeDescription
colstringLe nom de la collection (sans suffixe).
bulkOpsArrayUn tableau d'opérations d'écriture en lot (insertOne, updateOne, deleteOne, etc.).

Retourne​

TypeDescription
PromiseRetourne une Promesse qui se résout une fois que toutes les opérations en lot sont terminées.

Exemples​

let bulkOps = [
{ insertOne: { document: { name: 'John', age: 30 } } },
{ updateOne: { filter: { name: 'John' }, update: { $set: { age: 31 } } } },
{ deleteOne: { filter: { name: 'John' } } }
];

await SF.utils.bulkWrite('users', bulkOps);
// retourne: Promesse résolue lorsque toutes les opérations sont terminées

3 - Users​


getUsersinGroup​

Obtenir tous les utilisateurs dans un groupe donné

Paramètres​

NomTypeDescription
groupstringID du groupe.

Retourne​

TypeDescription
PromiseRetourne une Promesse.

Exemples​

await SF.user.getUsersinGroup("6042551d231e8c8ade19bc09")

getUsersInGroupList​

Obtenir les utilisateurs qui existent dans certains groupes.

Paramètres​

NomTypeDescription
groupsstring[]Tableau d'ID de groupes.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.getUsersInGroupList(["6042551d231e8c8ade19bc09","6040e3679c81cf1b60b698f4"])

getGroupById​

Est une fonction qui récupère un document de groupe de la collection "groups" par son ID unique.

Paramètres​

NomTypeDescription
idstringL'ID du groupe à récupérer.

Retourne​

TypeDescription
`Promise<objectnull>`

Exemples​

let group = await SF.utils.getGroupById("60c72b2f9f1b2c3c8f3b8b0b");
// retourne: { _id: ObjectId("60c72b2f9f1b2c3c8f3b8b0b"), name: 'Admin', members: [...] }

let group = await SF.utils.getGroupById("60c72b2f9f1b2c3c8f3b8b0c");
// retourne: null (si le groupe avec cet ID n'existe pas)

getUserById​

Obtenir les informations de l'utilisateur en utilisant son ID.

Paramètres​

NomTypeDescription
idstringID de l'utilisateur.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.getUserById("6042551d231e8c8ade19bc09")

getUserByMail​

Obtenir les informations de l'utilisateur en utilisant son email.

Paramètres​

NomTypeDescription
emailstringEmail de l'utilisateur.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.getUserByMail("test@softydev.com")

updateUserById​

Mettre à jour les informations de l'utilisateur en utilisant son ID.

Paramètres​

NomTypeDescription
idstringID de l'utilisateur.
dataobjectObjet JSON des valeurs à mettre à jour.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.updateUserById("6042551d231e8c8ade19bc09",{firstName : "test"})

updateUsersEach​

Mettre à jour une liste d'utilisateurs individuellement : à chaque utilisateur sa propre charge utile.

Paramètres​

NomTypeDescription
ArrayArrayTableau d'objets, chacun contenant un ID d'utilisateur et une charge utile.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.updateUsersEach([{ _id: "6042551d231e8c8ade19bc09", payload: { firstName: 'firstUser' } }, { _id: "6042551d231e8c8ade19bc10", payload: { firstName: 'secondUser' } }])

updateUserMetadataById​

Mettre à jour les métadonnées de l'utilisateur en utilisant son ID.

Paramètres​

NomTypeDescription
idstringID de l'utilisateur.
fieldobjectObjet JSON des métadonnées à mettre à jour.
valueobjectObjet JSON des valeurs à mettre à jour.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.updateUserMetadataById("6042551d231e8c8ade19bc09", "Manager",  "test")

getUsers​

Obtenir les informations des utilisateurs.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.getUsers()

getUserMetadata​

Obtenir les métadonnées de l'utilisateur en utilisant son ID.

Paramètres​

NomTypeDescription
idstringID de l'utilisateur.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.getUserMetadata("6042551d231e8c8ade19bc09")

addUserToGroup​

Ajouter un utilisateur à un groupe en utilisant l'ID utilisateur et l'ID groupe.

Paramètres​

NomTypeDescription
userIdstringID de l'utilisateur.
groupidstringID du groupe.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.addUserToGroup("6042551d231e8c8ade19bc09", "62c2b6f74d16c2a2c19dcdb7")

removeUserfromGroup​

Retirer un utilisateur d'un groupe en utilisant l'ID utilisateur et l'ID groupe.

Paramètres​

NomTypeDescription
userIdstringID de l'utilisateur.
groupidstringID du groupe.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.user.removeUserfromGroup("6042551d231e8c8ade19bc09", "62c2b6f74d16c2a2c19dcdb7")

createUser​

Permet de créer un nouvel utilisateur.

Paramètres​

NomTypeDescription
dataobjectContenu JSON des données utilisateur

Retourne​

TypeDescription
PromiseRetourne une Promesse

Données​

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 IDs des groupes de production de l'utilisateur (array)
group_testOptionnel. Les IDs des groupes de test de l'utilisateur (array)
group_uatOptionnel. Les IDs des groupes UAT de l'utilisateur (array)
metadata_testOptionnel. Les métadonnées de test de l'utilisateur (json)
metadata_uatOptionnel. Les métadonnées UAT de l'utilisateur (json)
metadata_prodOptionnel. Les métadonnées de production de l'utilisateur (json)
ideAccessRequis. Droit d'accès à l'IDE (boolean)
blockedOptionnel. Blocage de l'utilisateur (boolean)
sendMailOptionnel. Envoyer une notification par email à l'utilisateur (boolean)
getPasswordOptionnel. Récupérer le mot de passe généré dans la réponse (boolean)

Exemples​

 var newUser = {
firstName: "Jean",
lastName: "Martin",
email: "jean.martin@softy.io",
group_test: [],
group_uat: [],
group: [],
metadata_test: {},
metadata_uat: {},
metadata_prod: {},
ideAccess: false,
blocked: false,
sendMail: false,
getPassword: false
};

var user = await SF.user.createUser(newUser);

4 - Fichiers​


La classe File gère les fichiers stockés dans le système GridFS de MongoDB, fournissant des méthodes pour télécharger, récupérer, supprimer et générer des PDF à partir de modèles EJS.

Utilisation​

const file = new File(gridfsBucket);

getFileContentById​

Récupérer le contenu textuel d'un fichier par son ID.

Paramètres​

NomTypeDescription
idstringObjectId du fichier
encodingstringEncodage à utiliser (par défaut : 'utf8')

Retourne​

TypeDescription
Promise<object>Métadonnées du fichier avec champ content

Exemples​

let result = await file.getFileContentById("64bfa28cfabc123...", "utf8");
console.log(result.content);

getFileBufferById​

Récupérer le contenu binaire d'un fichier sous forme de Buffer.

Paramètres​

NomTypeDescription
idstringObjectId du fichier

Retourne​

TypeDescription
Promise<Buffer>Données du fichier sous forme de Buffer

Exemples​

let buffer = await file.getFileBufferById("64bfa28cfabc123...");

generatePDFFromTemplate​

Générer un PDF à partir d'un fichier modèle EJS stocké et le sauvegarder dans GridFS.

Paramètres​

NomTypeDescription
dump_varanyNon utilisé
fidstringID du fichier modèle
contextobjectContexte de génération PDF

Retourne​

TypeDescription
Promise<object>Métadonnées du fichier PDF sauvegardé
  • context.variables : Variables injectées dans le modèle.
  • context.SF_pdfName : Nom optionnel pour le PDF généré.

Exemples​

await file.generatePDFFromTemplate(null, 'templateId', {
variables: { name: "John" },
SF_pdfName: "user-report.pdf"
});

createFileFromBuffer​

Créer et télécharger un fichier à partir d'un Buffer.

Paramètres​

NomTypeDescription
fileMetadataobjectMétadonnées (filename, contentType, etc.)
bufferContentBufferContenu binaire du fichier

Retourne​

TypeDescription
Promise<object>Métadonnées du fichier sauvegardé

Exemples​

await file.createFileFromBuffer({ filename: "doc.txt", contentType: "text/plain" }, Buffer.from("Hello"));

fillTemplate​

Remplir un modèle de document (Word, Excel, LibreOffice, etc.) avec des données en utilisant le moteur de rendu Carbone. Cette méthode prend un fichier modèle stocké dans la base de données, le fusionne avec les données fournies et crée un nouveau document rempli.

Paramètres​

NomTypeDescription
idstringObjectId du fichier modèle
dataobjectDonnées JSON à injecter dans le modèle

Retourne​

TypeDescription
Promise<string>ID du fichier du document rempli nouvellement créé

Création de modèles​

Pour créer des modèles compatibles avec cette méthode :

  • Utilisez des logiciels bureautiques standard (Microsoft Office, LibreOffice, OpenOffice)
  • Insérez des espaces réservés en utilisant la syntaxe Carbone : {d.fieldName}
  • Formats supportés : DOCX, XLSX, PPTX, ODT, ODS, ODP, et plus

Pour des informations détaillées sur la création de modèles et les fonctionnalités avancées (boucles, conditions, formateurs), consultez la documentation officielle de Carbone.

Exemples​

// En supposant que vous avez un fichier modèle avec des espaces réservés comme :
// Facture pour : {d.customerName}
// Montant : {d.amount}
// Date : {d.date}

let data = {
customerName: "John Doe",
amount: 1500,
date: "2025-01-15",
items: [
{ product: "Widget A", quantity: 5, price: 100 },
{ product: "Widget B", quantity: 10, price: 50 }
]
};

// Remplir le modèle
let filledDocumentId = await SF.file.fillTemplate("64bfa28cfabc123...", data);
console.log("ID du document rempli:", filledDocumentId);

Fonctionnalités avancées des modèles​

Le moteur Carbone prend en charge des fonctionnalités avancées :

  • Boucles : Répéter des sections pour des tableaux de données
  • Conditions : Afficher/masquer du contenu en fonction des données
  • Formateurs : Formater les dates, nombres, texte
  • Objets imbriqués : Accéder aux structures de données imbriquées
  • Calculs : Effectuer des calculs dans les modèles

Exemple de modèle avec boucles :

Articles de la facture :
{d.items[i].product} - Qté : {d.items[i].quantity} - Prix : {d.items[i].price}

Pour plus d'informations, visitez Documentation Carbone.io.

deleteFileById​

Est une fonction qui supprime un fichier de la base de données par son ID unique.

Paramètres​

NomTypeDescription
idstringL'ID du fichier à supprimer.

Retourne​

TypeDescription
Promise<object>Se résout en un objet indiquant le statut de suppression : { deleted: 1 } en cas de succès, { deleted: 0 } en cas d'échec.

Exemples​

let result = await SF.utils.deleteFileById("60c72b2f9f1b2c3c8f3b8b0b");
// retourne: { deleted: 1 } (si le fichier a été supprimé)

let result = await SF.utils.deleteFileById("60c72b2f9f1b2c3c8f3b8b0c");
// retourne: { deleted: 0 } (s'il y a eu une erreur ou que le fichier n'a pas été trouvé)

5 - Sql​


insertOne​

Insérer une ligne dans votre table SQL

Paramètres​

NomTypeDescription
idstringID de la base de données.
dataobjectDonnées à insérer dans la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.insertOne("610c0343f6ebc7ddcb49cc3b", "client", {
code: 'MMA',
codepostal: 225
})

insertMany​

Insérer un tableau de lignes dans votre table SQL

Paramètres​

NomTypeDescription
idstringID de la base de données.
dataarrayDonnées à insérer dans la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.insertMany("610c0343f6ebc7ddcb49cc3b", "client", [{
code: 'MMA',
codepostal: 225
}])

findOne​

Trouver des données dans votre table SQL.

Paramètres​

NomTypeDescription
idstringID de la base de données.
namestringNom de la table.
datastringCritères pour interroger la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.findOne("610c0343f6ebc7ddcb49cc3b", "client", "code='MGMT'")

find​

Trouver toutes les lignes dans votre table SQL qui correspondent à un certain critère.

Paramètres​

NomTypeDescription
idstringID de la base de données.
namestringNom de la table.
datastringCritères pour interroger la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.find("610c0343f6ebc7ddcb49cc3b", "client", "code='MGMT'")

update​

Mettre à jour les données dans votre base de données.

Paramètres​

NomTypeDescription
idstringID de la base de données.
namestringNom de la table.
datastringCritères pour interroger la base de données.
newDataobjectDonnées mises à jour.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.update("610c0343f6ebc7ddcb49cc3b", "client", "code='MDMS'", {
code: 'CLEA'
})

delete​

Supprimer des lignes de votre base de données.

Paramètres​

NomTypeDescription
idstringID de la base de données.
namestringNom de la table.
datastringCritères pour interroger la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

 await SF.sql.delete("610c0343f6ebc7ddcb49cc3b", "client", "code='CLEA'")

count​

Compter les lignes dans votre base de données.

Paramètres​

NomTypeDescription
idstringID de la base de données.
namestringNom de la table.
datastringCritères pour interroger la base de données.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

 await SF.sql.count("610c0343f6ebc7ddcb49cc3b", "client", "code='CLEA'")

execute​

Exécuter des instructions personnalisées/complexes sur votre base de données.

Paramètres​

NomTypeDescription
idstringID de la base de données.
querystringInstruction SQL.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.sql.execute('610c0343f6ebc7ddcb49cc3b', "DELETE FROM client WHERE code='KL'")

6 - Instance​


launchProcess​

Initier un processus existant.

Paramètres​

NomTypeDescription
processIdstringID du processus.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.instance.launchProcess('610c0343f6ebc7ddcb49cc3b')

findOne​

Trouver une instance qui satisfait les critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre à l'instance.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.instance.findOne({ _id: ObjectId('610c0343f6ebc7ddcb49cc3b') })

find​

Trouver toutes les instances qui satisfont les critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre aux instances.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.instance.find({ status: 'running' })

pendingTask​

Obtenir la dernière tâche en attente de l'instance

Paramètres​

NomTypeDescription
instanceIdstringID de l'instance.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.instance.pendingTask('610c0343f6ebc7ddcb49cc3b')

getMeasures​

Obtenir les Mesures de l'instance

Paramètres​

NomTypeDescription
instanceIdstringID de l'instance.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

await SF.instance.getMeasures('610c0343f6ebc7ddcb49cc3b')

validateTask​

Valider une tâche.

Paramètres​

NomTypeDescription
taskIdstringID de la tâche.
variablesobjectJSON des variables.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await SF.instance.validateTask('610c0343f6ebc7ddcb49cc3b',variables)

updateVariablesById​

Mettre à jour les variables en utilisant l'ID de l'instance.

Paramètres​

NomTypeDescription
IdstringID de l'instance.
dataobjectJSON des données des variables.

Retourne​

TypeDescription
objectRetourne un objet

Exemples​

let data = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await SF.instance.updateVariablesById('610c0343f6ebc7ddcb49cc3b',data)

attachChildInstance​

Est une fonction qui lie une instance enfant à une instance père dans la collection "instances", basée sur une étape d'activité spécifique.

Paramètres​

NomTypeDescription
fatherIdstringL'ID de l'instance père.
childIdstringL'ID de l'instance enfant à attacher.
stepIdstringL'ID de l'étape représentant l'activité dans l'instance père.

Retourne​

TypeDescription
Promise<object>Se résout en { done: true } si l'attachement réussit.

Exemples​

let result = await SF.utils.attachChildInstance(
"661e9d8a1a2b2f7f8d3c4e1f",
"661e9d9b2b5e2f8f8d3c5f0a",
"step123"
);
// retourne: { done: true }

getVariablesById​

Est une fonction qui récupère un document d'instance par son ID, avec une projection optionnelle pour sélectionner des champs spécifiques.

Paramètres​

NomTypeDescription
instanceIdstringL'ID de l'instance à récupérer.
projectionobject(Optionnel) Projection MongoDB pour spécifier quels champs retourner.

Retourne​

TypeDescription
Promise<object \| null>Se résout en document d'instance s'il est trouvé, ou null sinon.

Exemples​

let instance = await SF.utils.getVariablesById("661e9d8a1a2b2f7f8d3c4e1f");
// retourne: Document d'instance complet

let instance = await SF.utils.getVariablesById("661e9d8a1a2b2f7f8d3c4e1f", { variables: 1 });
// retourne: { variables: {...} }

deleteInstanceById​

Supprime une instance par son ID, et supprime également tous les historiques, tâches et instancelights associés à cette instance.

Paramètres​

NomTypeDescription
idstringL'ID de l'instance à supprimer.

Retourne​

TypeDescription
Promise<object>Se résout en { done: true } si la suppression réussit.

Exemples​

let result = await SF.instance.deleteInstanceById("661e9d8a1a2b2f7f8d3c4e1f");
// retourne: { done: true }

deleteManyInstances​

Supprime plusieurs instances et instancelights associés à un ID de processus donné et une requête supplémentaire. Cette méthode ne supprime PAS les tâches et historiques associés pour des raisons de performance.

Paramètres​

NomTypeDescription
processIdstringL'ID du processus dont les instances doivent être supprimées.
queryobjectParamètres de requête supplémentaires pour filtrer les instances à supprimer.

Retourne​

TypeDescription
Promise<object>Se résout en { done: true } si réussi.

Exemples​

let result = await SF.instance.deleteManyInstances("661e9d8a1a2b2f7f8d3c4e1f", { status: "completed" });
// retourne: { done: true }

deleteManyInstancesWithTasksAndHistories​

Supprime plusieurs instances avec toutes leurs données associées (tâches, historiques et instancelights) associées à un ID de processus donné et une requête. Il s'agit d'une opération de nettoyage complète.

Paramètres​

NomTypeDescription
processIdstringL'ID du processus dont les instances doivent être supprimées.
queryobjectParamètres de requête supplémentaires pour filtrer les instances à supprimer.

Retourne​

TypeDescription
Promise<object>Se résout en { done: true } si réussi.

Exemples​

// Supprimer toutes les instances terminées avec nettoyage complet
let result = await SF.instance.deleteManyInstancesWithTasksAndHistories(
"661e9d8a1a2b2f7f8d3c4e1f",
{ status: "completed" }
);
// retourne: { done: true }

// Supprimer toutes les instances antérieures à une certaine date
let result = await SF.instance.deleteManyInstancesWithTasksAndHistories(
"661e9d8a1a2b2f7f8d3c4e1f",
{ createdAt: { $lt: new Date('2024-01-01') } }
);
// retourne: { done: true }

updateInstanceVariables​

Est une fonction qui met à jour les variables d'une instance, recalcule les mesures associées basées sur la définition du processus, et les met à jour à la fois dans l'instance et la dernière tâche associée.

Paramètres​

NomTypeDescription
idstringL'ID de l'instance à mettre à jour.
dataobjectPaires clé-valeur de variables à mettre à jour dans l'instance.

Retourne​

TypeDescription
Promise<object>Se résout en { done: true } si la mise à jour réussit.

Exemples​

let result = await SF.utils.updateInstanceVariables("661e9d8a1a2b2f7f8d3c4e1f", {
amount: 1500,
dueDate: "2025-05-30"
});
// retourne: { done: true }

7 - SoftyTable​


Le SDK SoftyTable 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 table.

Utilisation​

Le SoftyTable est disponible en tant qu'instance directe sur l'objet SF. Toutes les méthodes prennent l'ID de la table comme premier paramètre :

// Accéder aux méthodes directement depuis SF.softyTable
await SF.softyTable.list('tableId123', criteria);

list​

Récupérer les lignes d'une SoftyTable avec filtrage, tri et pagination optionnels.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
criteriaobjectCritères de requête avec where, attributes, include, group, etc. optionnels (par défaut : {})
limitnumberNombre maximum de lignes à retourner (par défaut : 100)
pagenumberNuméro de page pour la pagination (par défaut : 0)
sortbystringNom du champ pour trier (par défaut : 'createdAt')
directionnumberDirection du tri : 1 pour ASC, -1 pour DESC (par défaut : 1)
orderarrayTableau d'ordre personnalisé, par ex. [['field', 'ASC']] (par défaut : null)

Retourne​

TypeDescription
PromiseSe résout en un tableau de lignes de table

Exemples​

// Lister toutes les lignes
let rows = await SF.softyTable.list('610c0343f6ebc7ddcb49cc3b');

// Lister avec filtres
let activeRows = await SF.softyTable.list(
'610c0343f6ebc7ddcb49cc3b',
{ where: { status: 'active' } },
50,
0,
'createdAt',
-1
);

// Lister avec critères complexes
let rows = await SF.softyTable.list(
'610c0343f6ebc7ddcb49cc3b',
{
where: { age: { $gte: 18 } },
attributes: ['name', 'email', 'age']
},
20,
0
);

count​

Compter le nombre de lignes dans une SoftyTable avec filtrage optionnel.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
criteriaobjectCritères de requête avec clause where optionnelle (par défaut : {})

Retourne​

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

Exemples​

// Compter toutes les lignes
let result = await SF.softyTable.count('610c0343f6ebc7ddcb49cc3b');
// retourne: { count: 150 }

// Compter avec filtre
let result = await SF.softyTable.count(
'610c0343f6ebc7ddcb49cc3b',
{ where: { status: 'active' } }
);
// retourne: { count: 75 }

create​

Créer une seule ligne dans une SoftyTable.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
dataobjectL'objet de données à insérer comme ligne

Retourne​

TypeDescription
PromiseSe résout en données de la ligne créée

Exemples​

let newRow = await SF.softyTable.create(
'610c0343f6ebc7ddcb49cc3b',
{
name: 'John Doe',
email: 'john@example.com',
age: 30,
status: 'active'
}
);

createMany​

Créer plusieurs lignes dans une SoftyTable en une seule fois.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
dataarrayTableau d'objets de données à insérer

Retourne​

TypeDescription
PromiseSe résout en un tableau de lignes créées

Exemples​

let newRows = await SF.softyTable.createMany(
'610c0343f6ebc7ddcb49cc3b',
[
{ 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 }
]
);

retrieve​

Récupérer une seule ligne d'une SoftyTable par son ID.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
rowIdstringL'ID de la ligne

Retourne​

TypeDescription
PromiseSe résout en données de la ligne

Exemples​

let row = await SF.softyTable.retrieve('610c0343f6ebc7ddcb49cc3b', '12345');

update​

Mettre à jour une seule ligne dans une SoftyTable par son ID.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
rowIdstringL'ID de la ligne à mettre à jour
dataobjectLes champs et valeurs à mettre à jour

Retourne​

TypeDescription
PromiseSe résout en ligne mise à jour

Exemples​

let updated = await SF.softyTable.update(
'610c0343f6ebc7ddcb49cc3b',
'12345',
{
status: 'inactive',
updatedAt: new Date()
}
);

updateMany​

Mettre à jour plusieurs lignes dans une SoftyTable qui correspondent à des critères spécifiques.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
criteriaobjectCritères de requête avec clause where
dataobjectLes champs et valeurs à mettre à jour

Retourne​

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

Exemples​

// Mettre à jour toutes les lignes où le statut est 'pending'
let result = await SF.softyTable.updateMany(
'610c0343f6ebc7ddcb49cc3b',
{ status: 'pending' },
{ status: 'active', processedAt: new Date() }
);

delete​

Supprimer une seule ligne d'une SoftyTable par son ID.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
rowIdstringL'ID de la ligne

Retourne​

TypeDescription
PromiseSe résout en résultat de suppression

Exemples​

await SF.softyTable.delete('610c0343f6ebc7ddcb49cc3b', '12345');

deleteMany​

Supprimer plusieurs lignes d'une SoftyTable qui correspondent à des critères spécifiques.

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
criteriaobjectCritères de requête avec clause where

Retourne​

TypeDescription
PromiseSe résout en résultat de suppression

Exemples​

// Supprimer toutes les lignes inactives
await SF.softyTable.deleteMany(
'610c0343f6ebc7ddcb49cc3b',
{ status: 'inactive' }
);

// Supprimer les lignes antérieures à une certaine date
await SF.softyTable.deleteMany(
'610c0343f6ebc7ddcb49cc3b',
{ createdAt: { $lt: new Date('2024-01-01') } }
);

clear​

Effacer toutes les lignes d'une SoftyTable (supprimer toutes les données).

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable

Retourne​

TypeDescription
PromiseSe résout en résultat de suppression

Exemples​

// Supprimer toutes les lignes de la table
await SF.softyTable.clear('610c0343f6ebc7ddcb49cc3b');

getOptions​

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

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
optionsIdstringL'ID du champ d'options

Retourne​

TypeDescription
PromiseSe résout en tableau d'options

Exemples​

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

joinTableList​

Lister les lignes d'une table jointe (relation plusieurs-à-plusieurs).

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
joinTableIdstringL'ID du champ de table de jointure
criteriaobjectCritères de requête avec clause where optionnelle (par défaut : {})
limitnumberNombre maximum de lignes à retourner (par défaut : 100)
pagenumberNuméro de page pour la pagination (par défaut : 0)
sortbystringNom du champ pour trier (par défaut : 'createdAt')
directionnumberDirection du tri : 1 pour ASC, -1 pour DESC (par défaut : 1)
orderarrayTableau d'ordre personnalisé (par défaut : null)

Retourne​

TypeDescription
PromiseSe résout en un tableau de lignes jointes

Exemples​

// Lister tous les éléments liés
let relatedItems = await SF.softyTable.joinTableList(
'610c0343f6ebc7ddcb49cc3b',
'related_products'
);

// Lister avec filtres et pagination
let items = await SF.softyTable.joinTableList(
'610c0343f6ebc7ddcb49cc3b',
'related_products',
{ where: { category: 'electronics' } },
20,
0,
'price',
-1
);

joinTableCount​

Compter les lignes d'une table jointe (relation plusieurs-à-plusieurs).

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
joinTableIdstringL'ID du champ de table de jointure
criteriaobjectCritères de requête avec clause where optionnelle (par défaut : {})

Retourne​

TypeDescription
PromiseSe résout en un objet avec count

Exemples​

let result = await SF.softyTable.joinTableCount(
'610c0343f6ebc7ddcb49cc3b',
'related_products'
);
// retourne: { count: 45 }

let result = await SF.softyTable.joinTableCount(
'610c0343f6ebc7ddcb49cc3b',
'related_products',
{ where: { category: 'electronics' } }
);
// retourne: { count: 12 }

execute​

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

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
querystringLa requête SQL à exécuter
optionsobjectOptions de requête avec replacements et type (par défaut : {})

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​

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

// Exécuter une requête personnalisée
let results = await SF.softyTable.execute(
'610c0343f6ebc7ddcb49cc3b',
'UPDATE my_table SET status = "processed" WHERE created_at < NOW() - INTERVAL 30 DAY',
{ type: 'UPDATE' }
);

migrate​

Migrer les lignes dans une SoftyTable (pour les opérations de migration de données).

Paramètres​

NomTypeDescription
tableIdstringL'ID de la SoftyTable
migrationDataobjectDonnées de configuration de migration

Retourne​

TypeDescription
PromiseSe résout en résultat de migration

Exemples​

let result = await SF.softyTable.migrate(
'610c0343f6ebc7ddcb49cc3b',
{
// Configuration de migration
}
);

8 - Task​


Le SDK Task fournit des méthodes pour interagir avec les ressources de tâche, vous permettant d'interroger, mettre à jour, sauvegarder et supprimer des tâches.

findOne​

Trouver une tâche qui satisfait les critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre à la tâche.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.findOne({ _id: ObjectId('610c0343f6ebc7ddcb49cc3b') })

find​

Trouver toutes les tâches qui satisfont les critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre aux tâches.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.find({ status: 'pending' })

deleteTaskById​

Supprimer une tâche par son ID.

Paramètres​

NomTypeDescription
idstringID de la tâche.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.deleteTaskById('610c0343f6ebc7ddcb49cc3b')

deleteMany​

Supprimer plusieurs tâches qui correspondent aux critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre aux tâches.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

// Supprimer toutes les tâches avec le statut 'completed'
await SF.task.deleteMany({ status: 'completed' })

// Supprimer toutes les tâches pour une instance spécifique
await SF.task.deleteMany({ instanceId: ObjectId('610c0343f6ebc7ddcb49cc3b') })

deleteHistoryByTaskId​

Supprimer tous les enregistrements d'historique associés à une tâche spécifique.

Paramètres​

NomTypeDescription
taskIdstringID de la tâche.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.deleteHistoryByTaskId('610c0343f6ebc7ddcb49cc3b')

deleteHistoryByInstanceId​

Supprimer tous les enregistrements d'historique associés à une instance spécifique.

Paramètres​

NomTypeDescription
instanceIdstringID de l'instance.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.deleteHistoryByInstanceId('610c0343f6ebc7ddcb49cc3b')

deleteHistory​

Supprimer les enregistrements d'historique qui correspondent aux critères de requête spécifiés.

Paramètres​

NomTypeDescription
queryobjectObjet JSON de critères pour correspondre aux historiques.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

// Supprimer tous les enregistrements d'historique pour une action spécifique
await SF.task.deleteHistory({ action: 'task_completed' })

// Supprimer les enregistrements d'historique antérieurs à une certaine date
await SF.task.deleteHistory({ createdAt: { $lt: new Date('2024-01-01') } })

saveTask​

Sauvegarder une tâche avec des données mises à jour.

Paramètres​

NomTypeDescription
taskIdstringID de la tâche.
bodyobjectObjet JSON avec données de tâche.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.saveTask('610c0343f6ebc7ddcb49cc3b', {
status: 'in-progress',
assignee: 'user123'
})

updateTask​

Mettre à jour une tâche par son ID.

Paramètres​

NomTypeDescription
idstringID de la tâche.
dataobjectObjet JSON des valeurs à mettre à jour.

Retourne​

TypeDescription
PromiseRetourne une Promesse

Exemples​

await SF.task.updateTask('610c0343f6ebc7ddcb49cc3b', {
status: 'completed',
completedAt: new Date()
})