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,
mode : String,
};
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
| Nom | Type | Description |
|---|
| name | string | Un nom unique utilisé comme clé pour générer l'ID. |
| padding | number | (Optionnel) Le nombre de chiffres à ajouter au résultat (par ex., 6 → 000001). |
Retourne
| Type | Description |
|---|
| Promise | Une Promesse qui se résout en l'ID généré. |
Exemples
let id = await SF.utils.nextValue("leave_request");
let id = await SF.utils.nextValue("leave_request",5);
shellExecLocal
Est une fonction qui exécute une commande shell locale et retourne la sortie rognée.
Paramètres
| Nom | Type | Description |
|---|
cmd | string | La commande shell à exécuter. |
Retourne
| Type | Description |
|---|
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');
let result = await SF.utils.shellExecLocal('pwd');
shellExecRemote
Est une fonction qui exécute une commande shell sur un serveur distant.
Paramètres
| Nom | Type | Description |
|---|
cdm | string | La commande shell à exécuter à distance. |
options | object | Options de connexion SSH (host, port, username, password/privateKey, etc.). |
Retourne
| Type | Description |
|---|
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'
});
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) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
2 - Collection
insertMany
Permet d'insérer un tableau de JSON dans une collection
Paramètres
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
data | array | Tableau de données à insérer dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Une 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
data | object | Objet JSON représentant une valeur unique à insérer dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Une 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON de valeurs à correspondre dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON représentant les critères pour correspondre aux documents dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Une 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON représentant les critères pour correspondre aux documents dans la collection. |
body | object | Objet JSON représentant les champs et valeurs à mettre à jour. |
Retourne
| Type | Description |
|---|
Promise | Une 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON représentant la valeur à correspondre dans la collection. |
body | object | Objet JSON représentant la valeur à mettre à jour dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse. |
Exemples
await SF.collection.update("cost-centers",{value : "it"})
count
Retourne le nombre de documents dans la collection.
Paramètres
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse. |
Exemples
await SF.collection.count("cost-centers")
deleteOne
Permet de supprimer un document d'une collection.
Paramètres
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON représentant la valeur à correspondre dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse. |
Exemples
await SF.collection.deleteOne("cost-centers")
delete
Permet de supprimer plusieurs documents d'une collection.
Paramètres
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
query | object | Objet JSON représentant la valeur à correspondre dans la collection. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
aggregation | array | Tableau d'agrégation. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
collection | string | Nom de la collection dans Softyflow. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
col | string | Le nom de la collection (sans suffixe). |
bulkOps | Array | Un tableau d'opérations d'écriture en lot (insertOne, updateOne, deleteOne, etc.). |
Retourne
| Type | Description |
|---|
Promise | Retourne 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);
3 - Users
getUsersinGroup
Obtenir tous les utilisateurs dans un groupe donné
Paramètres
| Nom | Type | Description |
|---|
group | string | ID du groupe. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse. |
Exemples
await SF.user.getUsersinGroup("6042551d231e8c8ade19bc09")
getUsersInGroupList
Obtenir les utilisateurs qui existent dans certains groupes.
Paramètres
| Nom | Type | Description |
|---|
groups | string[] | Tableau d'ID de groupes. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
id | string | L'ID du groupe à récupérer. |
Retourne
| Type | Description |
|---|
| `Promise<object | null>` |
Exemples
let group = await SF.utils.getGroupById("60c72b2f9f1b2c3c8f3b8b0b");
let group = await SF.utils.getGroupById("60c72b2f9f1b2c3c8f3b8b0c");
getUserById
Obtenir les informations de l'utilisateur en utilisant son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de l'utilisateur. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.user.getUserById("6042551d231e8c8ade19bc09")
getUserByMail
Obtenir les informations de l'utilisateur en utilisant son email.
Paramètres
| Nom | Type | Description |
|---|
email | string | Email de l'utilisateur. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.user.getUserByMail("test@softydev.com")
updateUserById
Mettre à jour les informations de l'utilisateur en utilisant son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de l'utilisateur. |
data | object | Objet JSON des valeurs à mettre à jour. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
Array | Array | Tableau d'objets, chacun contenant un ID d'utilisateur et une charge utile. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.user.updateUsersEach([{ _id: "6042551d231e8c8ade19bc09", payload: { firstName: 'firstUser' } }, { _id: "6042551d231e8c8ade19bc10", payload: { firstName: 'secondUser' } }])
Mettre à jour les métadonnées de l'utilisateur en utilisant son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de l'utilisateur. |
field | object | Objet JSON des métadonnées à mettre à jour. |
value | object | Objet JSON des valeurs à mettre à jour. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.user.updateUserMetadataById("6042551d231e8c8ade19bc09", "Manager", "test")
getUsers
Obtenir les informations des utilisateurs.
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
Obtenir les métadonnées de l'utilisateur en utilisant son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de l'utilisateur. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
userId | string | ID de l'utilisateur. |
groupid | string | ID du groupe. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
userId | string | ID de l'utilisateur. |
groupid | string | ID du groupe. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.user.removeUserfromGroup("6042551d231e8c8ade19bc09", "62c2b6f74d16c2a2c19dcdb7")
createUser
Permet de créer un nouvel utilisateur.
Paramètres
| Nom | Type | Description |
|---|
data | object | Contenu JSON des données utilisateur |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Données
Voici les données utilisateur autorisées :
| champ | Description |
|---|
| email | Requis et Unique. L'email de l'utilisateur (string) |
| lastName | Requis. Le nom de famille de l'utilisateur (string) |
| firstName | Requis. Le prénom de l'utilisateur (string) |
| group | Requis. Les IDs des groupes de l'utilisateur (array) |
| metadata | optionnel. Les métadonnées de l'utilisateur (json) |
| ideAccess | Requis. Droit d'accès à l'IDE (boolean) |
| blocked | optionnel. Blocage de l'utilisateur (boolean) |
Exemples
let user = {
email: "email@softydev.com",
lastName : "last name",
firstName: "first name",
group: [],
metadata: {},
ideAccess: true,
blocked: false
}
await SF.users.createUser(user);
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
| Nom | Type | Description |
|---|
id | string | ObjectId du fichier |
encoding | string | Encodage à utiliser (par défaut : 'utf8') |
Retourne
| Type | Description |
|---|
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
| Nom | Type | Description |
|---|
id | string | ObjectId du fichier |
Retourne
| Type | Description |
|---|
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
| Nom | Type | Description |
|---|
dump_var | any | Non utilisé |
fid | string | ID du fichier modèle |
context | object | Contexte de génération PDF |
Retourne
| Type | Description |
|---|
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
| Nom | Type | Description |
|---|
fileMetadata | object | Métadonnées (filename, contentType, etc.) |
bufferContent | Buffer | Contenu binaire du fichier |
Retourne
| Type | Description |
|---|
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
| Nom | Type | Description |
|---|
id | string | ObjectId du fichier modèle |
data | object | Données JSON à injecter dans le modèle |
Retourne
| Type | Description |
|---|
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
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 }
]
};
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
| Nom | Type | Description |
|---|
id | string | L'ID du fichier à supprimer. |
Retourne
| Type | Description |
|---|
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");
let result = await SF.utils.deleteFileById("60c72b2f9f1b2c3c8f3b8b0c");
5 - Sql
insertOne
Insérer une ligne dans votre table SQL
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
data | object | Données à insérer dans la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
data | array | Données à insérer dans la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne un objet |
Exemples
await SF.sql.insertMany("610c0343f6ebc7ddcb49cc3b", "client", [{
code: 'MMA',
codepostal: 225
}])
findOne
Trouver des données dans votre table SQL.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
name | string | Nom de la table. |
data | string | Critères pour interroger la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
name | string | Nom de la table. |
data | string | Critères pour interroger la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
name | string | Nom de la table. |
data | string | Critères pour interroger la base de données. |
newData | object | Données mises à jour. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
name | string | Nom de la table. |
data | string | Critères pour interroger la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne un objet |
Exemples
await SF.sql.delete("610c0343f6ebc7ddcb49cc3b", "client", "code='CLEA'")
count
Compter les lignes dans votre base de données.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
name | string | Nom de la table. |
data | string | Critères pour interroger la base de données. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
id | string | ID de la base de données. |
query | string | Instruction SQL. |
Retourne
| Type | Description |
|---|
object | Retourne un objet |
Exemples
await SF.sql.execute('610c0343f6ebc7ddcb49cc3b', "DELETE FROM client WHERE code='KL'")
6 - Instance
launchProcess
Initier un processus existant.
Paramètres
| Nom | Type | Description |
|---|
processId | string | ID du processus. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre à l'instance. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre aux instances. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.instance.find({ status: 'running' })
pendingTask
Obtenir la dernière tâche en attente de l'instance
Paramètres
| Nom | Type | Description |
|---|
instanceId | string | ID de l'instance. |
Retourne
| Type | Description |
|---|
object | Retourne un objet |
Exemples
await SF.instance.pendingTask('610c0343f6ebc7ddcb49cc3b')
getMeasures
Obtenir les Mesures de l'instance
Paramètres
| Nom | Type | Description |
|---|
instanceId | string | ID de l'instance. |
Retourne
| Type | Description |
|---|
object | Retourne un objet |
Exemples
await SF.instance.getMeasures('610c0343f6ebc7ddcb49cc3b')
validateTask
Valider une tâche.
Paramètres
| Nom | Type | Description |
|---|
taskId | string | ID de la tâche. |
variables | object | JSON des variables. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
Id | string | ID de l'instance. |
data | object | JSON des données des variables. |
Retourne
| Type | Description |
|---|
object | Retourne 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
| Nom | Type | Description |
|---|
fatherId | string | L'ID de l'instance père. |
childId | string | L'ID de l'instance enfant à attacher. |
stepId | string | L'ID de l'étape représentant l'activité dans l'instance père. |
Retourne
| Type | Description |
|---|
Promise<object> | Se résout en { done: true } si l'attachement réussit. |
Exemples
let result = await SF.utils.attachChildInstance(
"661e9d8a1a2b2f7f8d3c4e1f",
"661e9d9b2b5e2f8f8d3c5f0a",
"step123"
);
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
| Nom | Type | Description |
|---|
instanceId | string | L'ID de l'instance à récupérer. |
projection | object | (Optionnel) Projection MongoDB pour spécifier quels champs retourner. |
Retourne
| Type | Description |
|---|
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");
let instance = await SF.utils.getVariablesById("661e9d8a1a2b2f7f8d3c4e1f", { variables: 1 });
deleteInstanceById
Supprime une instance par son ID, et supprime également tous les historiques, tâches et instancelights associés à cette instance.
Paramètres
| Nom | Type | Description |
|---|
id | string | L'ID de l'instance à supprimer. |
Retourne
| Type | Description |
|---|
Promise<object> | Se résout en { done: true } si la suppression réussit. |
Exemples
let result = await SF.instance.deleteInstanceById("661e9d8a1a2b2f7f8d3c4e1f");
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
| Nom | Type | Description |
|---|
processId | string | L'ID du processus dont les instances doivent être supprimées. |
query | object | Paramètres de requête supplémentaires pour filtrer les instances à supprimer. |
Retourne
| Type | Description |
|---|
Promise<object> | Se résout en { done: true } si réussi. |
Exemples
let result = await SF.instance.deleteManyInstances("661e9d8a1a2b2f7f8d3c4e1f", { status: "completed" });
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
| Nom | Type | Description |
|---|
processId | string | L'ID du processus dont les instances doivent être supprimées. |
query | object | Paramètres de requête supplémentaires pour filtrer les instances à supprimer. |
Retourne
| Type | Description |
|---|
Promise<object> | Se résout en { done: true } si réussi. |
Exemples
let result = await SF.instance.deleteManyInstancesWithTasksAndHistories(
"661e9d8a1a2b2f7f8d3c4e1f",
{ status: "completed" }
);
let result = await SF.instance.deleteManyInstancesWithTasksAndHistories(
"661e9d8a1a2b2f7f8d3c4e1f",
{ createdAt: { $lt: new Date('2024-01-01') } }
);
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
| Nom | Type | Description |
|---|
id | string | L'ID de l'instance à mettre à jour. |
data | object | Paires clé-valeur de variables à mettre à jour dans l'instance. |
Retourne
| Type | Description |
|---|
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"
});
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 :
await SF.softyTable.list('tableId123', criteria);
list
Récupérer les lignes d'une SoftyTable avec filtrage, tri et pagination optionnels.
Paramètres
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
criteria | object | Critères de requête avec where, attributes, include, group, etc. optionnels (par défaut : {}) |
limit | number | Nombre maximum de lignes à retourner (par défaut : 100) |
page | number | Numéro de page pour la pagination (par défaut : 0) |
sortby | string | Nom du champ pour trier (par défaut : 'createdAt') |
direction | number | Direction du tri : 1 pour ASC, -1 pour DESC (par défaut : 1) |
order | array | Tableau d'ordre personnalisé, par ex. [['field', 'ASC']] (par défaut : null) |
Retourne
| Type | Description |
|---|
Promise | Se résout en un tableau de lignes de table |
Exemples
let rows = await SF.softyTable.list('610c0343f6ebc7ddcb49cc3b');
let activeRows = await SF.softyTable.list(
'610c0343f6ebc7ddcb49cc3b',
{ where: { status: 'active' } },
50,
0,
'createdAt',
-1
);
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
criteria | object | Critères de requête avec clause where optionnelle (par défaut : {}) |
Retourne
| Type | Description |
|---|
Promise | Se résout en un objet avec propriété count |
Exemples
let result = await SF.softyTable.count('610c0343f6ebc7ddcb49cc3b');
let result = await SF.softyTable.count(
'610c0343f6ebc7ddcb49cc3b',
{ where: { status: 'active' } }
);
create
Créer une seule ligne dans une SoftyTable.
Paramètres
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
data | object | L'objet de données à insérer comme ligne |
Retourne
| Type | Description |
|---|
Promise | Se résout en données de la ligne créée |
Exemples
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
data | array | Tableau d'objets de données à insérer |
Retourne
| Type | Description |
|---|
Promise | Se résout en un tableau de lignes créées |
Exemples
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
rowId | string | L'ID de la ligne |
Retourne
| Type | Description |
|---|
Promise | Se 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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
rowId | string | L'ID de la ligne à mettre à jour |
data | object | Les champs et valeurs à mettre à jour |
Retourne
| Type | Description |
|---|
Promise | Se 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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
criteria | object | Critères de requête avec clause where |
data | object | Les champs et valeurs à mettre à jour |
Retourne
| Type | Description |
|---|
Promise | Se résout en résultat de l'opération de mise à jour |
Exemples
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
rowId | string | L'ID de la ligne |
Retourne
| Type | Description |
|---|
Promise | Se 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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
criteria | object | Critères de requête avec clause where |
Retourne
| Type | Description |
|---|
Promise | Se résout en résultat de suppression |
Exemples
await SF.softyTable.deleteMany(
'610c0343f6ebc7ddcb49cc3b',
{ status: 'inactive' }
);
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
Retourne
| Type | Description |
|---|
Promise | Se résout en résultat de suppression |
Exemples
await SF.softyTable.clear('610c0343f6ebc7ddcb49cc3b');
getOptions
Récupérer les options pour les champs de sélection dans une SoftyTable.
Paramètres
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
optionsId | string | L'ID du champ d'options |
Retourne
| Type | Description |
|---|
Promise | Se résout en tableau d'options |
Exemples
let options = await SF.softyTable.getOptions(
'610c0343f6ebc7ddcb49cc3b',
'status_field'
);
joinTableList
Lister les lignes d'une table jointe (relation plusieurs-à-plusieurs).
Paramètres
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
joinTableId | string | L'ID du champ de table de jointure |
criteria | object | Critères de requête avec clause where optionnelle (par défaut : {}) |
limit | number | Nombre maximum de lignes à retourner (par défaut : 100) |
page | number | Numéro de page pour la pagination (par défaut : 0) |
sortby | string | Nom du champ pour trier (par défaut : 'createdAt') |
direction | number | Direction du tri : 1 pour ASC, -1 pour DESC (par défaut : 1) |
order | array | Tableau d'ordre personnalisé (par défaut : null) |
Retourne
| Type | Description |
|---|
Promise | Se résout en un tableau de lignes jointes |
Exemples
let relatedItems = await SF.softyTable.joinTableList(
'610c0343f6ebc7ddcb49cc3b',
'related_products'
);
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
joinTableId | string | L'ID du champ de table de jointure |
criteria | object | Critères de requête avec clause where optionnelle (par défaut : {}) |
Retourne
| Type | Description |
|---|
Promise | Se résout en un objet avec count |
Exemples
let result = await SF.softyTable.joinTableCount(
'610c0343f6ebc7ddcb49cc3b',
'related_products'
);
let result = await SF.softyTable.joinTableCount(
'610c0343f6ebc7ddcb49cc3b',
'related_products',
{ where: { category: 'electronics' } }
);
execute
Exécuter une requête SQL personnalisée sur la SoftyTable.
Paramètres
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
query | string | La requête SQL à exécuter |
options | object | Options de requête avec replacements et type (par défaut : {}) |
Objet Options
| Champ | Type | Description |
|---|
replacements | object | Valeurs à remplacer dans les requêtes paramétrées |
type | string | Type de requête : 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'RAW', 'SHOWTABLES' |
Retourne
| Type | Description |
|---|
Promise | Se résout en résultats de la requête |
Exemples
let results = await SF.softyTable.execute(
'610c0343f6ebc7ddcb49cc3b',
'SELECT * FROM my_table WHERE status = :status',
{
replacements: { status: 'active' },
type: 'SELECT'
}
);
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
| Nom | Type | Description |
|---|
tableId | string | L'ID de la SoftyTable |
migrationData | object | Données de configuration de migration |
Retourne
| Type | Description |
|---|
Promise | Se résout en résultat de migration |
Exemples
let result = await SF.softyTable.migrate(
'610c0343f6ebc7ddcb49cc3b',
{
}
);
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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre à la tâche. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre aux tâches. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.find({ status: 'pending' })
deleteTaskById
Supprimer une tâche par son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de la tâche. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre aux tâches. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.deleteMany({ status: 'completed' })
await SF.task.deleteMany({ instanceId: ObjectId('610c0343f6ebc7ddcb49cc3b') })
deleteHistoryByTaskId
Supprimer tous les enregistrements d'historique associés à une tâche spécifique.
Paramètres
| Nom | Type | Description |
|---|
taskId | string | ID de la tâche. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.deleteHistoryByTaskId('610c0343f6ebc7ddcb49cc3b')
deleteHistoryByInstanceId
Supprimer tous les enregistrements d'historique associés à une instance spécifique.
Paramètres
| Nom | Type | Description |
|---|
instanceId | string | ID de l'instance. |
Retourne
| Type | Description |
|---|
Promise | Retourne 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
| Nom | Type | Description |
|---|
query | object | Objet JSON de critères pour correspondre aux historiques. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.deleteHistory({ action: 'task_completed' })
await SF.task.deleteHistory({ createdAt: { $lt: new Date('2024-01-01') } })
saveTask
Sauvegarder une tâche avec des données mises à jour.
Paramètres
| Nom | Type | Description |
|---|
taskId | string | ID de la tâche. |
body | object | Objet JSON avec données de tâche. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.saveTask('610c0343f6ebc7ddcb49cc3b', {
status: 'in-progress',
assignee: 'user123'
})
updateTask
Mettre à jour une tâche par son ID.
Paramètres
| Nom | Type | Description |
|---|
id | string | ID de la tâche. |
data | object | Objet JSON des valeurs à mettre à jour. |
Retourne
| Type | Description |
|---|
Promise | Retourne une Promesse |
Exemples
await SF.task.updateTask('610c0343f6ebc7ddcb49cc3b', {
status: 'completed',
completedAt: new Date()
})