--- description: "Use quando editar JavaScript Rhino no DavinTI/Vitruvio (.js) e scripts nos formularios/processos .xml Vitruvio: compatibilidade ES5, padroes de db/query, interop Java, concatenacao SQL/HTML e alteracoes seguras para producao." name: "Rhino ES5 Vitruvio" applyTo: "**/*.js, **/*.xml" --- # Rhino ES5 (Vitruvio) - O runtime e Rhino ES5. Use sempre `var`. - Nao use `let`, `const`, template strings, arrow functions, optional chaining ou outros recursos modernos de JS. - Em comparacoes com objetos Java (interop), prefira `==` e `!=`. - Monte SQL/HTML com concatenacao incremental: - `var sql = ""; sql += " SELECT ...";` - Prefira APIs/libs padrao da plataforma: - `libService.loadScript('db'|'javadateutils'|'util'|...)` - `new db("CONEXAO")`, `db.queryRow(sql, params)`, `db.query(sql, params).each(function (row) { ... })`, `db.transaction(function () { ... })`, `db.executeProcedure(nome, parametros)`, `db.update(sql, params)` - `engine.getField('campo').setValue`, `engine.getLabel('id').setValue`, `engine.getWidget('id')`, `engine.setGlobalVariable('nome', funcao);` - `execution.getVariable/ setVariable`, `taskService`, `vFormService`, `sendMessageToVitruvio({ ... })` - `db.query` retorna `null` quando nao ha linhas; se o objeto existir, ja ha ao menos um registro e deve ser percorrido com `lista.each(...)` (nao usar `size`). - Organize helpers internos (formatação de data, filtros, builders de HTML) antes das funcoes expostas (`this.metodo = function () { ... }`). - Mantenha nomenclatura e convencoes existentes em portugues. - Priorize alteracoes minimas e compativeis com producao, evitando refactors amplos.