processmaker/docker-executor-node

Javascript script executor for processmaker 4

1.1.0 2023-02-01 01:24 UTC

README

A docker image that allows executing native ES6 in ProcessMaker 4

Building

To build from the master branch of the SDK at https://github.com/ProcessMaker/sdk-node. This will build the image as processmaker4/executor-node:latest

docker build -t processmaker4/executor-node:latest .

If you want to use a different branch or local build of the sdk, you can copy it to ./src/sdk-node and it will be used instead of cloning from github.

Scripts

The javascript must return either an object, a promise that resolves to an object, or nothing.

Your script has access to the global variables data, config, and api

Return an object:

return { "foo" : "bar" }

Return a promise:

return new Promise((resolve, reject) => {
    resolve({ "foo" : "bar" })
})

Return nothing:

// just run some javascript here without calling return

Using the ProcessMaker API

Using the global api variable, you can run commands like this to return all users' eamils. See the processmaker api documentation for more information. https://<process_maker_address>/api/documentation

return new Promise((resolve, reject) => {
    let apiInstance = new api.UsersApi()
    apiInstance.getUsers({}, (error, data, response) => {
        if (error) { reject(error); return }
        let emails = data.data.map(user => {
            return user.email
        });
        resolve({"emails" : emails })
    })
})

Running

This image is meant to be run by the script executor in ProcessMaker 4 but can also be run from the command line:

docker run -v <path to local data.json>:/opt/executor/data.json \
  -v <path to local config.json>:/opt/executor/config.json \
  -v <path to local script.js>:/opt/executor/script.js \
  -v <path to local output.json>:/opt/executor/output.json \
  processmaker4/executor-node \
  ./run.sh

License

Distributed under the AGPL Version 3

ProcessMaker (C) 2002 - 2020 ProcessMaker Inc.

For further information visit: http://www.processmaker.com/