PowerBuilder

PBL TimeLens: trazabilidad visual de cambios para PowerBuilder 2025

AutorLuis Avilan
Publicado
Construyendo un puente bidireccional entre WebBrowser y PowerBuilder, artículo de Luis Avilan
PB

0 visualizaciones

Demo técnico PowerBuilder 2025

PBL TimeLens es un demo portable para inspeccionar cambios reales dentro de proyectos PowerBuilder. Exporta objetos desde librerías PBL como archivos .sr*, compara una versión de respaldo contra la versión actual y muestra el resultado en un visor visual integrado con Monaco Diff.

Por qué existe este demo

En PowerBuilder, el estado real de una aplicación suele vivir dentro de sus librerías .pbl. Comparar carpetas de fuentes manuales puede ayudar, pero no siempre representa lo que está compilado en el target. Este demo usa LibraryDirectoryEx y LibraryExport para extraer directamente los objetos desde las PBL y convertirlos en archivos comparables.

Independencia y portabilidad

La versión actual del demo fue ajustada para no depender de rutas externas ni de archivos fuera del proyecto. El usuario puede seleccionar un .pbt de cualquier proyecto; la ventana conserva la carpeta base del demo para cargar el visor HTML y usa la ruta del target seleccionado solo para localizar backups, PBLs y fuentes exportadas.

1Directorio del demo
2├─ demo_powerbuilder_Diff.pbw
3├─ demo_powerbuilder_diff.pbt
4├─ demo_powerbuilder_diff.pbl
5├─ assets
6│ └─ monaco_diff.html
7└─ src
8 ├─ w_demo_diff.srw
9 ├─ w_diff_viewer.srw
10 └─ w_gestion_proyecto.srw

La ventana principal: w_gestion_proyecto

w_gestion_proyecto centraliza la selección de respaldos, la exportación de fuentes y la lista de diferencias detectadas. El botón Analizar Cambios prepara las carpetas de trabajo, exporta fuentes y ejecuta la comparación.

• Fuentes actuales: se exportan siempre desde las PBL declaradas en el LibList del .pbt seleccionado.

• Fuentes de respaldo: se exportan desde las PBL guardadas en el backup seleccionado y se reutilizan como cache cuando se analiza el mismo backup.

• Lista visual: muestra solo objetos con diferencias, no todos los objetos exportados.

• Doble clic: abre el objeto seleccionado en el visor de diferencias.

Exportación desde PBL

La función of_exportar_pbl consulta el inventario interno de una PBL con LibraryDirectoryEx, determina el tipo del objeto y usa LibraryExport para generar el código fuente.

1ls_dir_info = LibraryDirectoryEx(as_pbl_path, DirAll!)
2ls_source = LibraryExport(as_pbl_path, ls_obj_name, le_type)
3FileWriteEx(li_file, ls_source)

El resultado se guarda como .srw, .sru, .srd, .srm, .srf, .srs o .sra, según el tipo de objeto PowerBuilder.

Motor de comparación

of_preparar_comparacion crea una carpeta analices\yyyymmdd_hhmmss\src_actual por ejecución y una cache analices\backup_seleccionado\src_backup para el respaldo. Luego of_scan_changes compara ambos conjuntos. Cuando encuentra diferencias, agrega entradas como (Modificado), (Nuevo en actual) o (No encontrado en actual).

Visor integrado con Monaco

w_diff_viewer recibe la carpeta base del demo desde w_gestion_proyecto y carga assets\monaco_diff.html desde allí, aunque los archivos comparados pertenezcan a otro proyecto. PowerBuilder lee los archivos, genera un JSON con el contenido original y modificado, y lo envía a JavaScript para renderizar el diff.

Cómo probarlo

11. Abrir demo_powerbuilder_Diff.pbw
22. Compilar demo_powerbuilder_diff.pbt
33. Ejecutar el demo desde su propia carpeta
44. Seleccionar un respaldo
55. Presionar "Analizar Cambios"
66. Hacer doble clic sobre un objeto modificado

Conclusión

PBL TimeLens muestra cómo construir una herramienta portable de auditoría y mantenimiento para PowerBuilder usando APIs nativas de la plataforma y una visualización moderna en HTML. Su valor principal es comparar lo que realmente está dentro de las PBL, sin depender de fuentes exportadas manualmente ni de rutas fijas del equipo del desarrollador.