Saltar al contenido principal

ShoriClient

Punto de entrada principal del SDK de Shori.

Proporciona acceso a todos los módulos de la plataforma Shori a través de una API fluida, tipada y thread-safe. La instancia debe ser creada usando el builder estático y puede ser reutilizada de forma segura entre múltiples hilos.

Inicialización​

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

Uso de Módulos​

// Módulo de Casos
CasoResponse caso = client.caso().findById("documentId-del-caso");
CasoCreateResponse creado = client.caso().create(request);
List casos = client.caso().search(
CaseFilter.builder()
.casoTypeId(FilterOperator.EQ, "tipo-documentId")
.pageSize(20)
);

// Sub-módulos de Casos
client.caso().files().search("casoId");
client.caso().state().next(request);
client.caso().comment().add(request);
client.caso().casoType().findById("tipo-documentId");

// Módulo de Repositorio
File documento = client.repo().getDocumentById(request);
UploadResponse subida = client.repo().upload(request);

// Módulo de Identificación
UserSearchResponse usuario = client.identify().getUserById("user-documentId");

Thread Safety​

Esta clase es completamente thread-safe. La misma instancia puede ser compartida entre múltiples hilos sin necesidad de sincronización externa. El token de autenticación se renueva automáticamente cuando expira.

Manejo de Errores​

try {
CasoResponse caso = client.caso().findById("documentId");
} catch (ResourceNotFoundException e) {
// 404 - El caso no existe
} catch (ApiException e) {
// 400, 500, etc - Error del API
int statusCode = e.getStatusCode();
} catch (AuthenticationException e) {
// Error de autenticación
}

Ciclo de vida — try-with-resources (scripts y tests)​

// El cliente se cierra automáticamente al salir del bloque,
// incluso si ocurre una excepción.
try (ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.UAT)
.portalId("portal-id")
.tenantId("tenant-id")
.apiKey("api-key")
.build()) {

List casos = client.caso().searchAll(filter);
}
// close() se llama aquí automáticamente

Ciclo de vida — Spring Boot (servidores)​

@Bean(destroyMethod = "close")
public ShoriClient shoriClient() {
return ShoriClient.builder()...build();
}
// Spring llama close() al apagar el servidor

Campos​

CampoTipoRestriccionesDescripción
configShoriConfigOpcionalConfiguración activa del cliente.

Metodos​

builder()​

Crea un nuevo builder para configurar e instanciar el ShoriClient.

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

Retorna: Nueva instancia de ShoriClientBuilder


caso()​

Accede al módulo principal de Casos.

Permite realizar operaciones CRUD sobre casos y acceder a sub-módulos especializados para archivos, estados, comentarios y tipos de caso.

// Operaciones básicas
client.caso().findById("documentId");
client.caso().create(request);
client.caso().update(request);
client.caso().search(CaseFilter.builder()...);
client.caso().searchAll(CaseFilter.builder()...);

// Sub-módulos
client.caso().files() → Gestión de archivos adjuntos
client.caso().state() → Cambio de estados
client.caso().comment() → Comentarios
client.caso().casoType() → Tipos de caso

Retorna: CaseModule con todos los métodos de gestión de casos


form()​

Accede al módulo de Formularios.

Permite realizar operaciones CRUD sobre formularios y búsquedas paginadas.

Retorna: FormModule con métodos de gestión de formularios


repo()​

Accede al módulo de Repositorio de Documentos.

Permite subir y descargar documentos del repositorio de Shori.

// Descargar documento
File doc = client.repo().getById(
GetDocumentByIdRequest.builder()
.documentId("doc-documentId")
.fileName("mi-documento.pdf")
.build()
);

// Subir documento
UploadResponse resultado = client.repo().upload(
UploadDocumentRequest.builder()
.file(miArchivo)
.casoId("caso-documentId")
.build()
);

Retorna: RepoModule con métodos para gestión de documentos


identify()​

Accede al módulo de Identificación de Usuarios.

Permite buscar usuarios registrados en la plataforma Shori por su identificador interno. Los usuarios encontrados pueden ser asignados a casos o usados para validar participantes dentro de los procesos.

// Buscar usuario por su ID interno en Shori
UserSearchResponse usuario = client.identify().getUserById("user-documentId");

System.out.println("Nombre: " + usuario.getName());
System.out.println("Email: " + usuario.getEmail());

Retorna: IdentifyService con métodos de búsqueda de usuarios


close()​

Libera los recursos HTTP asociados al cliente.

Recomendado para scripts, pruebas o aplicaciones que crean instancias temporales de ShoriClient.

En aplicaciones de larga duración (Spring Boot, JavaFX, servidores de aplicaciones, etc.), normalmente se crea una única instancia del cliente y se reutiliza durante toda la vida del proceso. En esos escenarios, el cierre puede delegarse al contenedor o realizarse durante el apagado de la aplicación.

// Scripts y pruebas
try (ShoriClient client = ShoriClient.builder()...build()) {
client.caso().searchAll(filter);
}

// Spring Boot
@Bean(destroyMethod = "close")
public ShoriClient shoriClient() {
return ShoriClient.builder()...build();
}

// JavaFX
@Override
public void stop() {
client.close();
}