npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

axetflow-shori-nodes

v1.3.1

Published

Nodos Axetflow/Node-RED para integrar flujos visuales con el SDK Shori de NTT DATA

Readme

axetflow-shori-nodes

Nodos Axetflow/Node-RED para integrar flujos visuales con la plataforma Syntpony Process Management (Shori) de NTT DATA. Sin código. Arrastra, conecta y automatiza.

npm version Node-RED License: MIT


Instalación

Desde la UI de Axetflow/Node-RED

  1. Menú → Manage paletteInstall
  2. Buscar: axetflow-shori-nodes
  3. Clic en Install — los nodos aparecen en la paleta bajo "Shori SDK"

Por línea de comandos

cd ~/.node-red
npm install axetflow-shori-nodes
# Reiniciar Node-RED / Axetflow

Nodos disponibles (v1.3.1 — 33 nodos)

🔑 Configuración

| Nodo | Descripción | |---|---| | shori-config | Configura credenciales e inyecta msg.shoriClient en el flujo |

📋 Gestión de Casos

| Nodo | Descripción | |---|---| | shori-create-case | Crea un nuevo caso con datos del formulario | | shori-get-case | Obtiene un caso por su UUID | | shori-update-case | Actualiza los datos del formulario de un caso | | shori-search-cases | Busca casos con filtros avanzados (CaseFilter) | | shori-count-cases | Cuenta casos según un filtro | | shori-change-priority | Cambia la prioridad de un caso |

🔄 Estados

| Nodo | Descripción | |---|---| | shori-next-state | Cambia el estado de un caso | | shori-next-state-massive | Cambia el estado de múltiples casos (filas dinámicas) | | shori-next-state-by-int | Cambia el estado usando el número interno del caso | | shori-create-case-massive | Crea múltiples casos en lote (filas dinámicas) | | shori-search-states | Busca estados con StateFilter | | shori-search-working-substates | Busca working substates con WorkingSubStateFilter |

💬 Comentarios

| Nodo | Descripción | |---|---| | shori-add-comment | Agrega un comentario a un caso | | shori-search-comments | Busca comentarios de un caso con paginación |

👤 Usuarios

| Nodo | Descripción | |---|---| | shori-assign-user | Asigna un usuario (participante o responsable) a uno o varios casos | | shori-unassign-user | Desasigna usuarios de casos (3 modos) |

🏷️ Tipo de Caso

| Nodo | Descripción | |---|---| | shori-get-case-type | Obtiene la definición completa de un tipo de caso | | shori-get-case-type-lite | Obtiene la definición básica (sin estados, más rápido) |

🏢 Servicios (Primary Level)

| Nodo | Descripción | |---|---| | shori-search-primary-levels | Busca servicios con filtros y selectores de operador | | shori-get-primary-level | Obtiene un servicio por UUID | | shori-create-primary-level | Crea un nuevo servicio | | shori-toggle-primary-level | Activa/desactiva servicio o working substates | | shori-get-working-substates | Obtiene los working substates de un servicio |

⚙️ Procesos (Secondary Level)

| Nodo | Descripción | |---|---| | shori-search-secondary-levels | Busca procesos con filtros y selectores de operador | | shori-get-secondary-level | Obtiene un proceso por UUID | | shori-create-secondary-level | Crea un nuevo proceso | | shori-toggle-secondary-level | Activa/desactiva un proceso |

📁 Archivos y Repositorio

| Nodo | Descripción | |---|---| | shori-search-case-files | Busca archivos adjuntos de un caso | | shori-upload-document | Sube un documento al repositorio de Shori |


Flujo básico

Todo flujo Shori comienza con el nodo shori-config que autentica y pone el cliente en msg.shoriClient. Los nodos siguientes lo leen automáticamente.

[inject] → [shori-config] → [shori-create-case] → [shori-next-state] → [debug]

Paso de valores dinámicos

Todos los campos soportan 3 modos:

| Modo | Ejemplo | Descripción | |---|---|---| | Valor fijo | 550e8400-uuid | UUID hardcodeado en el formulario | | Referencia msg | msg.payload.casoId | Lee del mensaje entrante | | Fallback automático | (campo vacío) | Usa msg.payload.{campo} si el campo está vacío |

Ejemplo con nodo function

// Pasar datos dinámicamente antes de shori-create-case
msg.payload = {
  casoTypeId: "tipo-uuid",
  formId: "form-uuid",
  priority: "prior-uuid",
  submittedData: {
    nombreCliente: msg.payload.nombre,
    telefono: msg.payload.tel,
  },
};
return msg;

Ejemplos de uso

Crear y procesar un caso

[inject] → [function: armar datos]
         → [shori-config]
         → [shori-create-case]    → (casoId en msg.payload.casoId)
         → [shori-add-comment]    → comentario registrado
         → [shori-next-state]     → estado actualizado
         → [debug]

Búsqueda y asignación masiva

[cron] → [shori-config]
       → [shori-search-cases]     → msg.payload.casoResponse (lista)
       → [function: mapear ids]
       → [shori-assign-user]      → usuario asignado

Cambio masivo de estado

[webhook] → [function: construir lista]
          → [shori-config]
          → [shori-next-state-massive]  → N casos actualizados

Manejo de errores

Todos los nodos tienen 2 salidas:

  • Salida 1 ✅ — éxito: msg.payload con el resultado
  • Salida 2 ❌ — error: msg.error = { message, name, stack }
[shori-nodo] →|"✅"| [procesar resultado]
             →|"❌"| [catch error node / debug]

Referencia de nodos

shori-config

Configura las credenciales de Shori una sola vez. Inyecta el cliente en msg.shoriClient.

| Campo | Descripción | |---|---| | Ambiente | DEV / UAT / PROD | | Portal ID | UUID del portal | | Tenant ID | UUID del tenant | | API Key | Clave de autenticación (almacenada cifrada) |

shori-create-case

Crea un nuevo caso. Campos requeridos: casoTypeId, formId, priority.

msg.payload = {
  casoTypeId: "tipo-uuid",      // requerido
  formId: "form-uuid",          // requerido
  priority: "prior-uuid",       // requerido
  isUrgent: false,              // opcional
  groupLevel: 1,                // opcional
  externalId: "EXT-001",        // opcional
  submittedData: {              // opcional
    campo1: "valor1",
  },
};

Salida 1: { casoId: "uuid", casoNumber: "NUM-001" }

shori-update-case

Actualiza los datos del formulario de un caso.

msg.payload = {
  casoId: "caso-uuid",
  submittedData: { estado: "PROCESADO" },
};

shori-next-state

Cambia el estado de un único caso.

msg.payload = {
  casoId: "caso-uuid",
  workingSubStatePrimaryLevelId: "estado-uuid",
};

shori-next-state-massive

Cambia el estado de múltiples casos. Acepta 3 formas:

// Opción 1: array completo
msg.payload = { casos: [{ casoId, workingSubStatePrimaryLevelId }] };

// Opción 2: mismo estado para todos
msg.payload = { casoIds: ["uuid1", "uuid2"], workingSubStatePrimaryLevelId: "estado" };

// Opción 3: JSON en el formulario del nodo

Salida 1: { success: true, count: N, casos: [...] }

shori-search-cases

Busca casos con CaseFilter. Filtros opcionales en msg.payload:

msg.payload = {
  casoTypeId: { op: "eq", value: "tipo-uuid" },
  workingSubStateId: { op: "in", value: "uuid1,uuid2" },
  createdAtFrom: "2025-01-01",
  createdAtTo: "2025-01-31",
  timeZone: "America/Lima",
  pageSize: 20,
  fetchAll: false,
};

shori-add-comment

Agrega un comentario a un caso.

msg.payload = {
  casoId: "caso-uuid",
  comment: "Comentario del agente",
  origin: "CASO",   // CASO | TAREA
};

shori-search-comments

Busca comentarios de un caso con paginación.

msg.payload = {
  casoId: "caso-uuid",
  createdAtFrom: "2025-01-01",
  timeZone: "America/Lima",
  pageSize: 20,
  fetchAll: true,  // trae todos
};

shori-assign-user

Asigna un usuario a uno o varios casos.

msg.payload = {
  action: "assignResponsible",  // assign | assignResponsible
  userId: "user-uuid",
  casoIds: ["caso-1", "caso-2"], // array o "uuid1,uuid2"
};

shori-unassign-user

Desasigna usuarios de casos.

// unassign / unassignResponsible:
msg.payload = { action: "unassignResponsible", casoIds: ["caso-1"] };

// unassignOfProduct:
msg.payload = { action: "unassignOfProduct", userId: "user-uuid", casoTypeId: "producto-uuid" };

shori-search-primary-levels

Busca servicios (Primary Level).

msg.payload = { name: "Soporte", isActive: "true", pageSize: 20 };

shori-search-secondary-levels

Busca procesos (Secondary Level).

msg.payload = { name: "Atención", primaryLevelName: "Soporte", pageSize: 20 };

shori-create-case-massive

Crea múltiples casos en lote. Los casos van en msg.payload.casos:

msg.payload = {
  casoTypeId: "product-uuid",
  updateDuplicates: false,
  casos: [
    { casoTypeId, formId, priority, submittedData: { nombre: "Ana" } },
    { casoTypeId, formId, priority, submittedData: { nombre: "Luis" } },
  ],
};

Salida 1: { importId: "uuid" }


Prerrequisitos

  • Node-RED 3.x o Axetflow (basado en Node-RED)
  • Node.js 18+
  • Credenciales de Shori: portalId, tenantId, apiKey

Documentación completa

📖 Documentación Axetflow Nodes


Soporte

Para reportar errores comunicarse con Jerson Ramírez Ortiz

Plataforma Shori

Syntpony Process Management (Shori) es la plataforma BPM de NTT DATA para la gestión de casos, flujos de trabajo y procesos empresariales.


Licencia

MIT — NTT DATA · Equipo AITO PERÚ