Oracle Fusion SQL RunnerEjecuta SQL contra Oracle Fusion y publica Data Models de BI Publisher, desde VS Code. Usa exclusivamente los web services estándar de Oracle — Requisitos
Puesta en marcha1. Crear la conexión
La contraseña va al llavero del sistema operativo vía SecretStorage. Nunca a 2. Preparar el catálogoClic derecho sobre la conexión → Crear objetos de trabajo en el catálogo. Crea la carpeta 3. Crear el reporte, una sola vezEste paso es manual y no se puede evitar: un En la UI de BI Publisher (
Se hace una vez y no se vuelve a tocar. El reporte solo apunta al data model, y como 4. EjecutarAbre un archivo Los resultados salen en el panel inferior, junto a Terminal y Problemas. Se puede maximizar con el gesto habitual del panel, o arrastrar a otra zona si prefieres tenerlo al lado. Si tu instalación de VS Code no registra el contenedor del panel, los resultados se abren automáticamente como pestaña del editor, debajo del SQL. Dos ajustes lo gobiernan:
Y el comando Mover resultados abajo la reubica a mano en cualquier momento. Parámetros de entradaLas consultas con bind variables funcionan tal cual:
Al ejecutar, la extensión detecta La detección ignora lo que solo lo parece: Para cambiar los valores sin tocar el SQL: Editar parámetros de la consulta,
o el icono correspondiente en la barra del panel de resultados. Con
Un parámetro vacío se envía como NULL. Al publicar como Data Model, los binds se declaran como parámetros reales del modelo con el último valor como valor por defecto, así que el reporte queda parametrizado y usable desde la propia UI de BI Publisher. Límite de filasHay tres formas de cambiarlo, y las tres escriben el mismo ajuste:
Equivale al Cuando una consulta devuelve exactamente el número de filas del límite, la barra del panel lo avisa en amarillo: puede haber más resultados esperando. Qué ocurre en cada ejecución
Por qué se envuelve el SQLEl Data Engine de BI Publisher solo emite los elementos declarados en el bloque Envolviendo la consulta para que devuelva una sola columna
Por qué
|
uploadObject |
updateObject |
|
|---|---|---|
| Ruta | carpeta padre + nombre + tipo | ruta completa con extensión |
| Si no existe | lo crea | falla |
| Permisos y GUID | los recrea | los preserva |
Al preservar el GUID, el reporte FSR_WORK.xdo nunca pierde la referencia al data model, por muchas veces que se reescriba el SQL.
Ojo: las dos operaciones no usan los mismos nombres de parámetro.
uploadObject : reportObjectAbsolutePathURL, objectName, objectType, objectZippedData, userID, password
updateObject : objectAbsolutePath, objectData, userID, password
Comandos
| Comando | Atajo |
|---|---|
| Ejecutar SQL | Ctrl+Enter |
| Mostrar panel de resultados | |
| Mover resultados abajo | |
| Editar parámetros de la consulta | |
| Publicar como Data Model | |
| Nueva hoja SQL | |
| Añadir / editar / eliminar conexión | |
| Probar conexión | |
| Crear objetos de trabajo en el catálogo | |
| Cambiar límite de filas | |
| Inspeccionar firmas del CatalogService (WSDL) |
Ajustes
| Ajuste | Defecto | Para qué |
|---|---|---|
OracleERPBIPublisherRunner.rowLimit |
100 |
Máximo de filas. 0 desactiva el límite |
OracleERPBIPublisherRunner.workFolder |
/Custom/OracleERPBIPublisherRunner |
Carpeta de los objetos de trabajo |
OracleERPBIPublisherRunner.dataSource |
ApplicationDB_FSCM |
FSCM, HCM o CRM |
OracleERPBIPublisherRunner.wrapMode |
json |
Cómo se envuelve el SQL |
OracleERPBIPublisherRunner.promptParameters |
always |
always u onlyNew |
OracleERPBIPublisherRunner.resultsLocation |
auto |
auto, panel o editor |
OracleERPBIPublisherRunner.editorFallbackPosition |
below |
below o beside |
OracleERPBIPublisherRunner.requestTimeout |
180 |
Timeout SOAP en segundos |
El límite por defecto de 100 filas es deliberado: un runner sin tope es un incidente esperando a ocurrir, y el primer SELECT * contra una tabla Fusion grande tumba la sesión de BI Publisher.
Resolución de problemas
RESULT no es JSON valido — tu base no soporta JSON_OBJECT(*). Cambia wrapMode a xml.
ORA-00942: table or view does not exist — el data source no cuadra con el esquema. PER_ALL_PEOPLE_F es HCM; las tablas AP_* y GL_* son FSCM. Cambia el data source de la conexión.
Unmarshalling Error — la firma SOAP de tu pod difiere de la esperada. El cliente reintenta automáticamente una vez, emparejando los parámetros por rol. Si persiste, ejecuta Inspeccionar firmas del CatalogService y ajusta src/bipClient.js.
El reporte no existe — falta el paso 3. runReport no puede ejecutar un .xdm directamente.
command 'OracleERPBIPublisherRunner.results.focus' not found — VS Code no ha registrado el contenedor del panel. Suele arreglarse con Developer: Reload Window; si persiste, desde 1.2.0 los resultados se muestran igualmente en una pestaña del editor. La consulta nunca se ve afectada.
Filas vacías — el <output> del data model no coincide con las columnas del SQL. Ocurre con wrapMode: none; usa json o xml.
Desarrollo
node test/integration.js # ciclo completo contra un pod simulado
node test/binds.js # detección y declaración de bind variables
node test/wiring.js # coherencia entre package.json y extension.js
node test/resultview.js # vista de resultados: cola, mensajes y CSP
npm run package # genera el .vsix
Sin dependencias de ejecución. vsce solo hace falta para empaquetar.
Estructura
extension.js comandos y orquestación
src/bipClient.js SOAP: CatalogService y ReportService
src/dataModel.js generación del .xdm, envoltura y límite de filas
src/zip.js escritor/lector ZIP sobre zlib
src/connections.js conexiones + SecretStorage
src/providers.js árboles de conexiones e historial
src/resultView.js rejilla de resultados (panel inferior)
Las plantillas de dataModel.js reproducen byte a byte lo que emite Oracle Analytics Publisher, incluidas sus rarezas: el namespace xsd con cuatro "w" (http://wwww.w3.org/2001/XMLSchema) y el orden exacto de los bloques vacíos. Está verificado contra paquetes descargados de un pod real con downloadObject. No "arregles" la errata del namespace: es lo que el motor emite y espera.
Licencia
MIT — ver el archivo LICENSE.md. Antes de distribuirla, sustituye
TITULAR_DE_LOS_DERECHOS por tu nombre o el de tu organización.
Implementación independiente sobre APIs públicas y documentadas de Oracle.