Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>ProcessMaker Companion - BeeSmart.ecNew to Visual Studio Code? Get it now.
ProcessMaker Companion - BeeSmart.ec

ProcessMaker Companion - BeeSmart.ec

UsagiNoTsuki

|
27 installs
| (0) | Free
Tool for faster development with ProcessMaker 4.x
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

ProcessMaker Companion

Extension de VS Code para trabajar ProcessMaker 4.x con flujo local:

  • Extraer recursos desde ProcessMaker (PULL)
  • Editar localmente en archivos
  • Detectar cambios automaticamente
  • Sincronizar de vuelta al servidor (PUSH)
  • Visualizar BPMN y analizar uso de scripts/screens

Version actual del proyecto: 5.2.0

Funcionalidades principales

  • Autenticacion OAuth usando processmaker.key
  • Extraccion de:
    • scripts
    • screens
    • collections + records (SQLite local)
    • procesos (data + BPMN)
  • Sincronizacion al servidor de:
    • scripts editados
    • screens editadas (incluye style.css y computed/*.js)
    • records de collections (create/update/delete) desde editor tabular
  • Deteccion de cambios al guardar archivos (tracking en SQLite local)
  • Boton en status bar con contador de cambios pendientes
  • Preview de screens:
    • editor server por screen_id
    • preview server por screen_id
    • preview server por task_id
    • preview local (webview, con entrada de datos)
  • Test de script actual contra ProcessMaker (endpoint execute)
  • Visor BPMN con resaltado y exportacion SVG/PNG
  • Analisis de uso:
    • mapa de proceso
    • uso de script en procesos
    • uso de screen (directo e indirecto por anidacion)
  • Autocompletado del SDK/API de ProcessMaker en scripts php, javascript y python
  • Snippets de andamiaje de script: 10 por lenguaje (15 en Python)
  • Generacion de pm4-context/: contexto destilado de ProcessMaker para asistentes de IA
  • Integracion opcional con git (github_url en processmaker.key)

Requisitos

  • VS Code ^1.97.0
  • Node.js 20.x (recomendado para desarrollo local)
  • Instancia ProcessMaker 4.x accesible por red
  • Credenciales OAuth tipo password grant en ProcessMaker

Instalacion y ejecucion local (desarrollo)

npm install
npm run compile

Luego abre el proyecto en VS Code y ejecuta la extension con F5 (Extension Development Host).

Configuracion inicial

  1. Ejecuta el comando PM4: Generar key de example.
  2. Completa el archivo processmaker.key en la raiz del workspace.
  3. Ejecuta PM: PULL - Extraer todo.

Ejemplo de processmaker.key:

{
  "client_id": "your-client-id",
  "client_secret": "your-client-secret",
  "base_url": "https://your-processmaker-url",
  "username": "your-username",
  "password": "your-password",
  "github_url": "https://github.com/your-org/your-repo"
}

Notas:

  • github_url es opcional.
  • Si existe github_url, la extension puede crear/actualizar .gitignore y .gitattributes, e inicializar git si no existe .git/.

Estructura de carpetas generada

Despues de una extraccion, el workspace queda similar a:

processmaker-companion/
  processmaker.key
  pm4-context/
  data/
    companion.db
  scripts/
    javascript/
    php/
    python/
    csharp/
  screens/
    <ScreenTitle>/
      data.json
      style.css
      vars.json
      computed/
        <id> - <property>.js
  processes/
    <ProcessName> - <id>/
      data.json
      bpmn.xml

Flujo recomendado de trabajo

  1. PM: PULL - Extraer todo
  2. Editar scripts/screens en archivos y collections desde PM4: COLLECTION - Abrir editor tabular
  3. Guardar archivos para marcar cambios pendientes
  4. Revisar contador en status bar (Sync PM)
  5. PM: PUSH - Sincronizar todo
  6. Validar con:
    • PM: TEST - Probar script actual
    • PM: USO - Mostrar uso de script/screen
    • PM: PROCESS - Ver mapa BPMN

Comandos disponibles

Titulo en VS Code Command ID Descripcion
PM4: Generar key de example processmaker-companion.generateExampleKey Crea processmaker.key de ejemplo y lo abre.
PM4: IA - Generar contexto processmaker-companion.generateAiContext Regenera pm4-context/ con el contexto de ProcessMaker para asistentes de IA.
PM: PULL - Extraer scripts processmaker-companion.extractScripts Descarga scripts y actualiza DB local.
PM: PULL - Extraer pantallas processmaker-companion.extractScreens Descarga screens y genera data.json, style.css, computed, vars.json.
PM: PULL - Extraer colecciones processmaker-companion.extractCollections Descarga collections a SQLite (sin generar archivos records.json).
PM: PULL - Extraer procesos processmaker-companion.extractProcesses Descarga procesos y BPMN a /processes.
PM: PULL - Extraer todo processmaker-companion.extractAllTogether Reextrae todo (limpia data/, screens/, scripts/, processes/ y luego descarga).
PM: PUSH - Sincronizar scripts processmaker-companion.syncScripts Sube scripts marcados como editados.
PM: PUSH - Sincronizar pantallas processmaker-companion.syncScreens Sube screens editadas con CSS y computed.
PM: PUSH - Sincronizar colecciones processmaker-companion.syncCollections Sincroniza altas/cambios/bajas pendientes en SQLite para collections.
PM4: COLLECTION - Abrir editor tabular processmaker-companion.openCollectionsEditor Abre grid tipo tabla para editar filas de collections.
PM: PUSH - Sincronizar todo processmaker-companion.syncAll Ejecuta scripts + screens + collections.
PM: KEY - Leer clave processmaker-companion.readKey Lee key y prueba autenticacion.
PM: TEST - Probar script actual processmaker-companion.testScript Ejecuta el script seleccionado contra API execute.
PM: SCREEN - Anadir computed processmaker-companion.createComputed Crea computed en screens/*/computed y actualiza data.json.
PM: SCREEN - Abrir editor (server) processmaker-companion.previewScreen Abre editor/preview de screen en server (con fallback local).
PM: SCREEN - Abrir preview processmaker-companion.openScreenPreview Abre preview de screen por screen_id, task_id o local.
PM: SCREEN - Sincronizar desde servidor processmaker-companion.syncScreenFromServer Refresca una screen puntual desde API (data/style/computed).
PM: PROCESS - Editar en servidor processmaker-companion.openProcessEditor Abre modeler del proceso en server.
PM: PROCESS - Ver mapa BPMN processmaker-companion.showProcessMap Muestra BPMN del proceso en visor con controles.
PM: USO - Mostrar uso de script processmaker-companion.showScriptUsage Resalta donde se usa un script en procesos.
PM: USO - Mostrar uso de screen processmaker-companion.showScreenUsage Resalta uso directo e indirecto de una screen.

Comandos por menu contextual

  • En archivos de scripts/*: test script y ver uso de script.
  • En screens/*/data.json: abrir editor, preview, sync desde server y ver uso de screen.
  • En carpeta screens/*/computed: crear computed.
  • En carpeta processes/<Proceso - id> o bpmn.xml: abrir editor de proceso y ver mapa BPMN.

Tracking de cambios (como funciona)

  • Se activa al guardar (onDidSaveTextDocument).
  • Marca flags en SQLite data/companion.db:
    • scripts.is_edited
    • screens.is_edited
    • collection_records.pending_op (none|create|update|delete) desde el editor tabular
  • El status bar muestra cantidad de pendientes y permite lanzar syncAll.

Analisis BPMN y visor de uso

El analizador revisa procesos locales (/processes) y cruza referencias BPMN como:

  • pm:scriptRef
  • pm:screenRef
  • pm:interstitialScreenRef
  • pm:config (por ejemplo screenRef, screen_id, completed_screen_id)

Para visualizacion, intenta cargar BPMN actualizado desde API por process_id, con cache en memoria y fallback.

El visor permite:

  • Cambiar proceso impactado
  • Ver tablas de referencias
  • Ver resumen de impacto
  • Exportar SVG y PNG
  • Render con pm-modeler o bpmn-js (fallback automatico)

Preview y edicion de screens

screenPreview soporta:

  • Editor server (/designer/screen-builder/{screen_id}/edit)
  • Preview server por screen_id (/designer/screens/preview)
  • Preview server por task_id (/tasks/{task}/edit/preview)
  • Preview local en webview con:
    • datos de entrada editables
    • datos de vista previa editables
    • guardado directo en data.json
    • recarga de cambios

syncScreenFromServer actualiza en local:

  • data.json
  • style.css
  • computed/*.js
  • vars.json
  • registro en tabla screens de SQLite

Autocompletado del SDK

La extension registra providers de autocompletado para php, javascript y python alimentados por un catalogo generado desde el OpenAPI de ProcessMaker (assets/pm4-api-catalog.json: 33 grupos, 16 de ellos cubiertos por el SDK, 206 operaciones con sus parametros).

La idea es que no haya que recordar nombres: se escribe el acceso y salen las opciones reales, con sus parametros y su documentacion.

PHP

Escribes Obtienes
$api-> Los 16 accessors del SDK: users(), tasks(), processes(), …
$api->users()-> Las operaciones de ese grupo
$apiInstance-> Igual, resolviendo la variable a su grupo ($apiInstance = $api->tasks();)
getenv(' API_HOST, API_TOKEN, HOST_URL, …
$data[' _request, _user
$data['_request'][' id, status, user_id, process_id, …
new \ProcessMaker\Client\Model\ Los 16 modelos (UsersEditable, ProcessRequestTokenEditable, …)

Incluye ademas signature help: al abrir el parentesis de un metodo se muestra la firma posicional completa con el parametro activo resaltado. En PHP los parametros opcionales del SDK son posicionales, asi que esto evita el fallo clasico de desplazarlos y acabar filtrando por el campo equivocado.

JavaScript

Escribes Obtienes
api. / new api. Las 16 clases XxxApi y los 16 modelos
usersApi. Las operaciones, resolviendo const usersApi = new api.UsersApi();
process.env. Las variables de entorno del executor
data['_request'][' Las magic variables

La llamada se inserta ya con la firma callback correcta y el manejo de error:

getUserById(userId, (error, result) => {
    if (error) { reject(error); return; }

});

Python

Escribes Obtienes
os.environ[' / os.getenv(' Las variables de entorno del executor
data['_request'][' Las magic variables
session.get(API_HOST + ' Las 206 rutas de la API, con metodo y operationId
session. get/post/put/patch/delete con timeout=30 y raise_for_status()

En Python el autocompletado ofrece rutas REST, no metodos de SDK, porque el SDK de Python de ProcessMaker no esta publicado (ver pm4-context/04-python.md). Al insertar una ruta con parametros, el literal se convierte en f-string automaticamente.

Regenerar el catalogo

npm run generate:api-catalog

Lee el OpenAPI (docs (3).json por defecto, o la ruta que se le pase como argumento) y reescribe assets/pm4-api-catalog.json. Util al actualizar de version de ProcessMaker.

Snippets incluidos

Los snippets cubren solo el andamiaje del script, que es lo que el autocompletado no puede dar. Las operaciones concretas se resuelven con el autocompletado de arriba.

Lenguaje Fichero Prefijo Snippets
JavaScript snippets_javascript.json pm4.script. 10
PHP snippets_php.json pm4php.script. 10
Python snippets_python.json pm4py.script. + pm4py.sdk. 15

Los 10 comunes: boilerplate, data, config, env, magicRequest, magicUser, tryCatch, rest, collectionRecords, updateRequestData.

Python anade 5 pm4py.sdk.*, entre ellos pm4py.sdk.probe: una sonda que se ejecuta una vez contra la instancia para descubrir que expone realmente su Python Executor.

Detalles que los snippets resuelven bien y que es facil equivocar a mano:

  • JavaScript: todo lo que use el SDK va dentro de return new Promise((resolve, reject) => {...}). El Node Executor no expone resolve como global. Ademas la imagen es Node 14: sin ?., sin ??, sin fetch.
  • PHP: return con array asociativo (['x' => $y], no ['x', $y]).
  • Python: patron session con timeout=30 y raise_for_status(), resultado en output.

Contexto para IA (pm4-context/)

La extension genera una carpeta pm4-context/ en la raiz del workspace con el contrato verificado de ProcessMaker 4 destilado en Markdown, pensado para que un asistente de IA (Claude Code, Copilot, Cursor) escriba codigo correcto en lugar de inventarse nombres de metodos y rutas.

Se genera en dos momentos:

  • Al activarse la extension sobre un workspace que ya tiene processmaker.key, y al crear la key con PM4: Generar key de example. En este caso solo crea los ficheros que falten: nunca pisa ediciones propias.
  • Con el comando PM4: IA - Generar contexto, que regenera todos los documentos y abre el indice.

Contenido:

Fichero Contenido
README.md Indice y como enlazarlo desde CLAUDE.md / .cursorrules
01-runtime-scripts.md Contrato de ejecucion, globales, entrada/salida, variables de entorno, magic variables, timeouts, executors
02-javascript.md Contrato y SDK del Node Executor
03-php.md Contrato y SDK del PHP Executor
04-python.md Contrato del Python Executor y via REST recomendada
05-api-rest.md Autenticacion, metodos del SDK por clase Api y catalogo completo de las 213 operaciones de la API
06-workspace.md Estructura de carpetas y flujo de trabajo de la extension

Cada afirmacion esta marcada como [verificado], [inferido] o [sin verificar], con la fuente citada, para que el modelo sepa de que se puede fiar.

Los documentos de origen viven en assets/pm4-context/ dentro de la extension; para ampliar el contexto basta con anadir o editar ficheros .md en esa carpeta.

Configuracion de la extension

Propiedades disponibles en settings.json:

Setting Default Descripcion
processmaker-companion.diagramRenderer pm-modeler Motor BPMN en el visor (pm-modeler o bpmn-js).
processmaker-companion.usageDebug.enabled false Activa trazas de debug para analisis/visor.
processmaker-companion.usageDebug.level normal Nivel normal o full.
processmaker-companion.usageDebug.logFullBpmnBody false Permite log del BPMN completo en modo full.
processmaker-companion.usageDebug.persistWebviewTimeline false Guarda timeline de trazas en window.__pm4Trace dentro del webview.

Scripts npm del proyecto

Script Comando
vscode:prepublish npm run compile
compile tsc -p ./
watch tsc -watch -p ./
pretest npm run compile && npm run lint
lint eslint src
test vscode-test

Endpoints usados por la extension

  • POST /oauth/token
  • GET /api/1.0/scripts?per_page=500
  • GET /api/1.0/screens?per_page=500
  • GET /api/1.0/collections?per_page=500
  • GET /api/1.0/collections/{id}/records?per_page=500
  • PUT /api/1.0/scripts/{id}
  • PUT /api/1.0/screens/{id}
  • POST|PUT|DELETE /api/1.0/collections/{collectionId}/records
  • POST /api/1.0/scripts/execute/{scriptId}
  • GET /api/1.0/processes?per_page=500
  • GET /api/1.0/processes/{id}
  • GET /api/1.0/processes/{id}/bpmn

Y vistas server:

  • /designer/screen-builder/{screen_id}/edit
  • /designer/screens/preview?node=...
  • /tasks/{task_id}/edit/preview
  • /modeler/{process_id}

Consideraciones importantes

  • El workspace usado es la primera carpeta abierta en VS Code.
  • El test de script ejecuta la version guardada en ProcessMaker, no cambios locales sin sync.
  • Para uso/mapa BPMN se recomienda mantener /processes actualizado con extractProcesses.
  • Collections ya no se persisten como archivos en /collections; el almacenamiento oficial es SQLite (data/companion.db).
  • La suite de tests incluida actualmente es basica (sample test).
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft