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 l'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 SF.users.createUser(user);

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()
})