Process modeler SDK

The process modeler SDK is available in any input or output variables in the process modeler, It allows users access resources from process and execute complexe computational in the instance run time.

The SDK can be accessed trought the SF variable.

The SDK has the following attributs

var SF = {
collection : Object,
user : Object,
file : Object,
utils : Object,
sql : Object,
instance : Object,
task : Object,
process : Object,
mode : String, // The current Mode this is setted automatically
};

In the following sections we will explicit each attribute and the allowed methods.

1 - Utils#


The utils object has the methods that will allow you to

nextValue#

Description#

Is a function that generate an incremental number based on given string

/**
* @param {string} name Unique name that will be used to generate the ID.
* @param {number} [padding] Padding of result with 000000.
*
* @return {promise} Return the id
*/

Examples#

let id = await SF.utils.nextValue("leave_request");
// return number 1
let id = await SF.utils.nextValue("leave_request",5);
// return string 00001

axios#

Description#

Axios is a Promise based HTTP client for the browser and node.js Lean more See the official documentation

Examples#

let id = SF.utils.axios.get('/data/json/123')
.then(function (response) {
// handle success
console.log(response);
}).catch(function (error) {
// handle error
console.log(error);
});

2 - Collection#


insertMany#

Description#

Allow to insert an array of json in to a collection

/**
* @param {string} collection Collection name in softyflow.
* @param {array} data Array of data to be inserted in to the collection.
*
* @return {promise} Return promise
*/

Examples#

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

insertOne#

Description#

Allow to insert a json in to a collection

/**
* @param {string} collection Collection name in softyflow.
* @param {object} data Json of a value to be inserted in to the collection.
*
* @return {promise} Return promise
*/

Examples#

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

findOne#

Description#

Returns one document that satisfies the specified query criteria . If multiple documents satisfy the query, this method returns the first document.

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in to the collection.
*
* @return {promise} Return promise
*/

Examples#

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

find#

Description#

Returns all the documents that satisfies the specified query criteria .

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in to the collection.
*
* @return {promise} Return promise
*/

Examples#

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

updateOne#

Description#

update the first document that satisfies the specified query criteria .

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in the collection.
* @param {object} body Json of a value to be updated in the collection.
*
* @return {promise} Return promise
*/

Examples#

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

update#

Description#

update all the documents that satisfies the specified query criteria .

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in the collection.
* @param {object} body Json of a value to be updated in the collection.
*
* @return {promise} Return promise
*/

Examples#

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

count#

Description#

Returns the count of documents in the collection.

/**
* @param {string} collection Collection name in softyflow.
* @return {promise} Return promise
*/

Examples#

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

deleteOne#

Description#

Allow to delete a document from collection.

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in the collection.
*
* @return {promise} Return promise
*/

Examples#

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

delete#

Description#

Allow to delete multiple documents from collection.

/**
* @param {string} collection Collection name in softyflow.
* @param {object} query Json of a value to be matched in the collection.
*
* @return {promise} Return promise
*/

Examples#

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

aggregate#

Description#

Aggregation operations process data records and return computed results

/**
* @param {string} collection Collection name in softyflow.
* @param {array} aggregation aggregation array
*
* @return {promise} Return promise
*/

Examples#

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

cleanCollection#

Description#

Remove All Documents from a Collection.

/**
* @param {string} collection Collection name in softyflow.
* @return {promise} Return promise
*/

Examples#

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

3 - Users#


getUsersinGroup#

Description#

Get all users in a given group

/**
* @param {string} group Group ID.
*
* @return {promise} Return promise
*/

Examples#

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

getUsersInGroupList#

Description#

get the users who exist in certain groups.

/**
* @param {string} groups Array of groupID.
*
* @return {promise} Return promise
*/

Examples#

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

getUserById#

Description#

Get user information using his id.

/**
* @param {string} id user ID.
*
* @return {promise} Return promise
*/

Examples#

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

getUserByMail#

Description#

Get user information using his email.

/**
* @param {string} email user EMAIL.
*
* @return {promise} Return promise
*/

Examples#

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

updateUserById#

Description#

Update user information using his ID.

/**
* @param {string} id user ID.
*
* @param {object} data Json of a value to be updated.
*
* @return {promise} Return promise
*/

Examples#

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

updateUsersEach#

Description#

Update a list of users individualy : to each user their own payload.

/**
* @param {Array} Array of objects each containing a user id and a payload.
*
* @return {promise} Return promise
*/

Examples#

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

updateUserMetadataById#

Description#

Update user metadata using his ID.

/**
* @param {string} id user ID.
*
* @param {object} field Json of a metadata to be updated.
*
* @param {object} value Json of a value to be updated.
* @return {promise} Return promise
*/

Examples#

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

getUsers#

Description#

Get users informations.

/**
* @return {promise} Return promise
*/

Examples#

await SF.user.getUsers()

getUserMetadata#

Description#

Get user metadata using his ID.

/**
* @param {string} id user ID.
*
* @return {promise} Return promise
*/

Examples#

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

addUserToGroup#

Description#

Add user to a groupe using user ID & group ID.

/**
* @param {string} userId user ID.
*
* @param {string} groupid group ID.
*
* @return {promise} Return promise
*/

Examples#

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

removeUserfromGroup#

Description#

Remove user from group using user ID & group ID.

/**
* @param {string} userId user ID.
*
* @param {string} groupid group ID.
*
* @return {promise} Return promise
*/

Examples#

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

createUser#

Description#

Allow to create new user.

/**
* @param {object} data Json content user data
*
* @return {promise} Return promise
*/

Data#

This is the allowed user data:

fieldDescription
emailRequired and Unique. The user email (string)
lastNameRequired. The user last name (string)
firstNameRequired. The user first name (string)
groupRequired. The user groups ids (array)
metadataoptional. The user metadata (json)
ideAccessRequired. IDE access right (boolean)
blockedoptional. User blocking (boolean)

Examples#

let user = {
email: "email@softydev.com",
lastName : "last name",
firstName: "first name",
group: [],
metadata: {},
ideAccess: true,
blocked: false
}
await SF.users.createUser(user);

4 - Files#


getFileContentById#

Description#

Get the content of a file using his ID

/**
* @param {string} id File ID.
*
* @return {promise} Return promise
*/

Examples#

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

getFileBufferById#

Description#

Get the buffer of a file using his ID

/**
* @param {string} id File ID.
*
* @return {promise} Return promise
*/

Examples#

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

generatePDFFromTemplate#

Description#

Get the buffer of a file using his ID

/**
* @param {string} id File ID.
*
* @param {object} context Json content pdf variables
*
* @return {promise} Return promise
*/

Examples#

await SF.user.generatePDFFromTemplate("6042551d231e8c8ade19bc09",
{
"Request NO":"000018",
"tele":"XXXXXX",
"mail":"abderrafie.niya@softydev.com",
"date2":"mardi 17 mai 2022",
"service":"achat",
"direc":"casa",
"date1":"mardi 16 mai 2022"
}
)

5 - Sql#


insertOne#

Description#

Insert a row into your SQL Table

/**
* @param {string} id Database id.
* @param {object} data data to insert into database.
*
* @return {object} Return object
*/

Examples#

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

insertMany#

Description#

Insert an array of rows into your SQL Table

/**
* @param {string} id Database id.
* @param {array} data data to insert into database.
*
* @return {object} Return object
*/

Examples#

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

findOne#

Description#

Find data in your SQL table.

/**
* @param {string} id Database id.
*
* @param {string} name Table name.
*
* @param {string} data Criteria to query database.
*
* @return {object} Return object
*/

Examples#

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

find#

Description#

Find all rows in your SQL table that match a certain criteria.

/**
* @param {string} id Database id.
*
* @param {string} name Table name.
*
* @param {string} data Criteria to query database.
*
* @return {object} Return object
*/

Examples#

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

update#

Description#

Update data in your database.

/**
* @param {string} id Database id.
*
* @param {string} name Table name.
*
* @param {string} data Criteria to query database.
*
* @param {object} newData Updated data.
*
* @return {object} Return object
*/

Examples#

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

delete#

Description#

Delete rows from your database.

/**
* @param {string} id Database id.
*
* @param {string} name Table name.
*
* @param {string} data Criteria to query database.
*
* @return {object} Return object
*/

Examples#

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

count#

Description#

count rows in your database.

/**
* @param {string} id Database id.
*
* @param {string} name Table name.
*
* @param {string} data Criteria to query database.
*
* @return {object} Return object
*/

Examples#

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

execute#

Description#

Execute custom/complex statements on your database.

/**
* @param {string} id Database id.
*
* @param {string} query SQL Statement.
*
* @return {object} Return object
*/

Examples#

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

6 - Instance#


launchProcess#

Description#

Initiate an existing process.

/**
* @param {string} processId Process id.
*
* @return {object} Return object
*/

Examples#

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

pendingTask#

Description#

Get Instance latest Pending Task

/**
* @param {string} instanceId instance Id.
*
* @return {object} Return object
*/

Examples#

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

getMeasures#

Description#

Get Instance Measures

/**
* @param {string} instanceId instance Id.
*
* @return {object} Return object
*/

Examples#

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

validateTask#

Description#

Validate Task.

/**
* @param {string} taskId task Id.
* @param {object} variables Json of variables
*
* @return {object} Return object
*/

Examples#

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

updateVariablesById#

Description#

Update variables using instance ID.

/**
* @param {string} Id instance Id.
* @param {object} data Json of variables data
*
* @return {object} Return object
*/

Examples#

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