Saltar al contenido principal

Shori SDK — Multi-plataforma

SDK multi-plataforma desarrollado por el equipo AITO PERÚ de NTT DATA para integrar aplicaciones con la plataforma Syntpony Process Management (Shori). Compatible con Java, TypeScript, JavaScript, NestJS, Express, React, Next.js, Node-RED y Axetflow.


¿Qué es Shori?

Shori es la plataforma Syntpony Process Management de NTT DATA — una solución empresarial completa para la gestión integral de procesos de negocio. Está diseñada para organizaciones BPO (Business Process Outsourcing) y para cualquier empresa que necesite orquestar, automatizar y dar trazabilidad a sus flujos operativos de extremo a extremo.

Con Shori puedes hacer prácticamente todo lo que ofrece una plataforma SPM completa:

  • 📋 Gestionar casos — Crear, actualizar y hacer seguimiento de tickets, solicitudes, incidencias o cualquier unidad de trabajo dentro de un proceso.
  • 🔄 Automatizar flujos — Definir estados, transiciones y reglas para guiar el ciclo de vida de cada caso según las reglas de negocio de tu organización.
  • 📁 Centralizar documentos — Adjuntar, versionar y recuperar archivos y contratos asociados a cada caso desde un repositorio centralizado.
  • 👥 Identificar usuarios — Consultar y validar los operadores, supervisores y agentes que participan en los procesos.
  • 📊 Trazabilidad end-to-end — Registrar comentarios, auditar cambios de estado y obtener el historial completo de cada caso.
  • 🔔 Orquestación de procesos — Conectar múltiples sistemas y equipos a través de un flujo de trabajo unificado.
  • 📈 Visibilidad operativa — Conocer en tiempo real el estado de todos los procesos activos de la organización.

Casos de uso típicos

IndustriaCaso de uso
BPO / Contact CenterGestión de tickets de soporte, incidencias y reclamaciones
Banca y SegurosTramitación de solicitudes de crédito, siniestros y onboarding
TelecomunicacionesFlujos de activación, portabilidad y atención al cliente
Retail y LogísticaSeguimiento de pedidos, devoluciones y reclamaciones
Sector PúblicoGestión de expedientes, trámites y servicios ciudadanos

¿Qué es este SDK?

El Shori SDK es un ecosistema de librerías desarrollado por el equipo AITO PERÚ de NTT DATA para integrar cualquier plataforma con la API REST de Shori. Abstrae toda la complejidad del protocolo HTTP, la autenticación OAuth, la paginación automática y el manejo de errores.

SDKs disponibles

PlataformaPaqueteVersiónDescripción
Javashori-api-client1.0.0Librería Java para Spring Boot, standalone y batch jobs
🔷 TypeScript / JavaScriptshori-sdk-ts1.2.3SDK para NestJS, Express, React, Next.js y Node.js
🌊 Axetflow / Node-REDaxetflow-shori-nodes1.3.1Nodos visuales — sin código, arrastra y conecta

Nota: Estos SDKs no son el cliente oficial de la plataforma Shori. Son una iniciativa del equipo AITO PERÚ de NTT DATA para estandarizar y simplificar la integración con Shori en los proyectos de automatización.

Características principales

  • API fluida — Builder pattern para configuración y llamadas encadenadas
  • Thread-safe — Una sola instancia puede ser compartida entre múltiples hilos
  • Auto-renovación de tokens — El token Bearer se renueva automáticamente al expirar
  • Auto-paginaciónsearchAll() pagina automáticamente hasta obtener todos los resultados
  • Tipado completo — Todas las respuestas son POJOs Java con getters Lombok
  • Manejo de errores estructurado — Excepciones específicas por tipo de error
  • Multi-ambiente — Soporte para DEV, UAT y PROD con URLs pre-configuradas
  • Compatible con cualquier proyecto Java — Spring Boot, standalone, batch jobs, etc.

Arquitectura del SDK

Propósito: Una librería de Java que unifica y encapsula todos los endpoints de Shori en un solo componente reutilizable. Su objetivo es evitar que cada proyecto configure peticiones HTTP de forma manual, aislando los cambios de la API externa en un único lugar.

Beneficios del SDK (Por qué usamos esta solución)

  • Cero código duplicado: Evita que cada microservicio o proyecto reescriba los mismos clientes HTTP, mapeos de JSON y configuraciones de red para Shori.
  • Mantenimiento en un solo punto: Si la API de Shori cambia un endpoint, una URL o un parámetro, solo se actualiza este SDK. Tus proyectos no se enteran ni se rompen.
  • Tipado estricto y autocompletado: Transforma respuestas JSON crudas en objetos y clases nativas de Java, permitiendo usar el autocompletado del IDE en lugar de adivinar las keys de la API.
  • Integración en minutos: Para usar Shori en un nuevo proyecto, basta con importar este SDK como dependencia y llamar a ShoriClient.
  • Abstracción de errores: Centraliza el manejo de códigos de estado HTTP (400, 401, 500), devolviendo excepciones personalizadas de Java que son más fáciles de capturar y entender.

Inicio rápido

1. Agregar la dependencia Maven

<!-- 1. Repositorio del SDK (GitLab Package Registry — público) -->
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/84253138/packages/maven</url>
</repository>
</repositories>

<!-- 2. Dependencia -->
<dependency>
<groupId>com.nttdata.shori</groupId>
<artifactId>shori-api-client</artifactId>
<version>1.0.0</version>
</dependency>

2. Inicializar el cliente

ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.PROD)
.portalId("tu-portal-id")
.tenantId("tu-tenant-id")
.apiKey("tu-api-key")
.build();

3. Crear y buscar casos

// Crear un caso
CasoCreateResponse nuevo = client.caso().create(
CasoCreateRequest.builder()
.casoTypeId("tipo-solicitud-uuid")
.formId("formulario-uuid")
.priority("prioridad-uuid")
.submittedData(Map.of(
"nombreCliente", "Ana García",
"tipoServicio", "PORTABILIDAD"
))
.build()
);
System.out.println("Caso creado: " + nuevo.getCaso());

// Buscar todos los casos abiertos de un tipo
ProductResponse tipo = client.caso().casoType().findById("tipo-solicitud-uuid");
List<String> estadosAbiertos = ShoriUtils.openStatesIds(tipo);

List<CasoSearchResponse> casos = client.caso().searchAll(
CaseFilter.builder()
.casoTypeId(FilterOperator.EQ, "tipo-solicitud-uuid")
.workingSubStateId(FilterOperator.IN, estadosAbiertos.toArray(new String[0]))
.build()
);
System.out.println("Casos abiertos: " + casos.size());

// Cerrar el cliente al finalizar
// - Script/test: usar try-with-resources → close() automático
// - Spring Boot: @Bean(destroyMethod = "close") → Spring lo gestiona
// - Manual: client.close()
client.close();

Compatibilidad

RequisitoVersión mínima
Java17+
Maven3.6+
Spring Boot (opcional)2.7+ / 3.x

Reportar un Bug

¿Encontraste un error o tienes una sugerencia de mejora? Contacta directamente al equipo:

📧 Jerson Ramírez Ortizjramiror@emeal.nttdata.com

Al reportar un bug, incluye:

  • Descripción del problema
  • Versión del SDK (shori-sdk-ts, axetflow-shori-nodes o shori-api-client)
  • Pasos para reproducir el error
  • Stack trace o mensaje de error completo
  • Ambiente (DEV, UAT, PROD)

Equipo

Este SDK es desarrollado y mantenido por el equipo AITO PERÚ de NTT DATA, como parte de las iniciativas de automatización e integración de la plataforma Syntpony Process Management (Shori).

Cargando equipo...

Changelog

v1.2.2 — Axetflow Nodes — Cobertura completa de módulos

Lanzamiento del paquete axetflow-shori-nodes v1.2.2 — equipo AITO PERÚ, NTT DATA.

30 nodos disponibles — cobertura total de todos los módulos del SDK:

GrupoNodos nuevos
Casos CRUDshori-create-case ✦, shori-update-case ✦, shori-count-cases ✦, shori-change-priority
Estadosshori-next-state-massive ✦ (filas dinámicas), shori-next-state-by-int ✦, shori-search-states ✦, shori-search-working-substates
Operaciones masivasshori-create-case-massive ✦ (filas dinámicas)
Comentariosshori-search-comments
Usuariosshori-assign-user ✦, shori-unassign-user
Tipo de casoshori-get-case-type-lite
Primary Levelshori-search-primary-levels ✦ (operadores), shori-get-primary-level ✦, shori-create-primary-level ✦, shori-toggle-primary-level ✦, shori-get-working-substates
Secondary Levelshori-search-secondary-levels ✦ (operadores), shori-get-secondary-level ✦, shori-create-secondary-level ✦, shori-toggle-secondary-level
Archivos y Reposhori-search-case-files ✦, shori-upload-document

Mejoras UX:

  • Todos los campos soportan modo formulario (estático) + fallback dinámico desde msg.payload
  • Esquema de colores por módulo para identificación visual rápida en la paleta
  • Nodos de búsqueda con selectores de operador (EQ, IN, LIKE, LIKE_AFTER, NOT IN, etc.)
  • Nodos masivos con tablas de filas dinámicas (agregar/eliminar filas en el formulario)

v1.0.0 — Primera versión estable

Lanzamiento inicial del SDK para Java — equipo AITO PERÚ, NTT DATA.

Módulo de Casos (client.caso())

  • CRUD: findById, create, update
  • Búsqueda: search(CaseFilter), searchAll(CaseFilter) con auto-paginación
  • Búsqueda con adjuntos: searchWithAttachments, searchAllWithAttachments
  • Sub-módulos:
    • files()search, getAttachments, update, delete
    • state()next, nextMassive, nextByCasoIdInt, nextMassiveByCasoIdInt, search (con StateFilter), searchWorkingSubState (con WorkingSubStateFilter)
    • comment()add, search, searchAll (con CommentFilter)
    • casoType()findById, findByIdLite
    • primaryLevel()findById, search, create, update, getWorkingSubstates, updateWorkingSubstates, updateCasoDataField, activate, deactivate, activateWorkingSubstates, deactivateWorkingSubstates
    • secondaryLevel()findById, search, create, update, activate, deactivate
    • fileTypology()getByCasoType, getCategoriesByTypology, getCategoryById, addCategory
    • user()assign, assignResponsible, unassign, unassignResponsible, unassignOfProduct
  • Operaciones adicionales en CaseModule: count, createMassive, changePriority, deleteFiles

Módulo de Repositorio (client.repo())

  • Sub-módulos:
    • document()upload, delete
    • download()byDocument, byDocumentAndVersion, exportDocument

Módulo de Identificación (client.identify())

  • Búsqueda de usuario por ID interno: getUserById

Módulo de Formulario (client.form())

  • Creación de formularios

  • Actualización de formularios

  • Búsqueda de formularios por ID : formId

  • Búsqueda de usuario por request: FormFilter

Sistema base

  • Builder fluido con validación: ShoriClient.builder()
  • Soporte multi-ambiente: DEV, UAT, PROD
  • Autenticación Bearer con lazy-loading y renovación automática
  • Filtros avanzados: CaseFilter con operadores EQ, IN, LIKE, GE, LE, NE, BETWEEN, IS_NULL
  • Jerarquía de excepciones: ShoriException, ApiException, AuthenticationException, ResourceNotFoundException, ValidationException
  • Pool de conexiones HTTP con configuración SSL y timeouts configurables