axetflow-shori-nodes 1.3.2

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

npm install axetflow-shori-nodes

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 — +35 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Ú

Node Info

Version: 1.3.2
Updated 2 weeks, 3 days ago
License: MIT
Rating: 5.0 1

Categories

Actions

Rate:

Downloads

111 in the last week

Nodes

  • shori-config
  • shori-add-comment
  • shori-get-case
  • shori-create-case
  • shori-update-case
  • shori-search-cases
  • shori-next-state
  • shori-next-state-massive
  • shori-next-state-by-int
  • shori-create-case-massive
  • shori-count-cases
  • shori-change-priority
  • shori-search-comments
  • shori-assign-user
  • shori-unassign-user
  • shori-get-case-type
  • shori-get-case-type-lite
  • shori-search-primary-levels
  • shori-get-primary-level
  • shori-create-primary-level
  • shori-toggle-primary-level
  • shori-get-working-substates
  • shori-search-secondary-levels
  • shori-get-secondary-level
  • shori-create-secondary-level
  • shori-toggle-secondary-level
  • shori-search-states
  • shori-search-working-substates
  • shori-search-case-files
  • shori-upload-document
  • shori-update-primary-level
  • shori-update-working-substates
  • shori-update-caso-data-field

Keywords

  • node-red
  • axetflow
  • shori
  • nttdata
  • bpm

Maintainers