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
| Campo | Tipo | Restricciones | Descripción |
|---|---|---|---|
config | ShoriConfig | Opcional | Configuració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();
}