67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
# Scripts
|
|
|
|
Reusable JS logic loaded via `libService.loadScript('script-key')`. All scripts run on **Mozilla Rhino (ES5)** — the same engine and constraints as endpoints and panel inline scripts. See root CLAUDE.md for the full ES5 rules.
|
|
|
|
## What's NOT available in scripts
|
|
|
|
- No `engine` object (that's panel/process-only).
|
|
- No `params` request object (that's endpoint-only).
|
|
- No browser or Node globals (`window`, `require`, `process`, etc.).
|
|
|
|
Services like `vProcessInstanceService`, `vConfigService`, and libs like `db`, `http` are available and injected the same way as everywhere else.
|
|
|
|
## Two patterns
|
|
|
|
### Process / task scripts — top-level execution
|
|
|
|
Scripts triggered directly by a process task or scheduler. Code runs at the top level, no export needed.
|
|
|
|
```javascript
|
|
var db = libService.loadScript('db');
|
|
var banco = new db(db.VITRUVIO_DATASOURCE);
|
|
|
|
var result = banco.queryForList("SELECT ...", {});
|
|
// do work...
|
|
```
|
|
|
|
### Library scripts — object literal export
|
|
|
|
Reusable libs meant to be loaded by other scripts, endpoints, or panels. Wrap everything in a `({...})` object literal — this is the value returned by `libService.loadScript()`.
|
|
|
|
```javascript
|
|
({
|
|
versao: 1.0,
|
|
nome: 'My Library',
|
|
|
|
myFunction: function(params) {
|
|
var db = libService.loadScript('db');
|
|
var banco = new db(db.VITRUVIO_DATASOURCE);
|
|
// ...
|
|
return result;
|
|
}
|
|
})
|
|
```
|
|
|
|
The caller then uses it as:
|
|
|
|
```javascript
|
|
var myLib = libService.loadScript('my-lib');
|
|
myLib.myFunction({ foo: 'bar' });
|
|
```
|
|
|
|
## vitruvio.json registration
|
|
|
|
```json
|
|
"scripts": [
|
|
{
|
|
"key": "my-lib",
|
|
"name": "My Library",
|
|
"path": "scripts/my-lib.js",
|
|
"domain": "USUARIO"
|
|
}
|
|
]
|
|
```
|
|
|
|
`domain` is either `"SISTEMA"` (system-level) or `"USUARIO"` (user-level). Default to `"USUARIO"`.
|
|
|