axetflow-shori-nodes 1.3.0

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.2.2 — 30 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


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.0
Updated 1 week, 2 days ago
License: MIT
Rating: 5.0 1

Categories

Actions

Rate:

Downloads

271 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

Keywords

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

Maintainers