CaseStateModule
Sub-módulo para gestión del flujo de estados de un caso en Shori.
Permite avanzar un caso al siguiente estado, realizar cambios masivos,
buscar estados y working sub states. Se accede a través de client.caso().state().
Uso
// Avanzar un caso al siguiente estado
client.caso().state().next(NextStateRequest.builder()
.casoId("caso-uuid")
.workingSubStatePrimaryLevelId("estado-destino-uuid")
.build());
// Cambio masivo de estado
client.caso().state().nextMassive(List.of(
NextStateRequest.builder().casoId("caso-uuid-1").workingSubStatePrimaryLevelId("estado-uuid").build(),
NextStateRequest.builder().casoId("caso-uuid-2").workingSubStatePrimaryLevelId("estado-uuid").build()
));
// Buscar estados
client.caso().state().search(StateFilter.builder().code(FilterOperator.EQ, "ABIERTO").build());
// Buscar working sub states
client.caso().state().searchWorkingSubState(
WorkingSubStateFilter.builder().primaryLevelId(FilterOperator.IN, "servicio-uuid").build()
);
Metodos
next(NextStateRequest request)
Avanza el caso al siguiente estado en el flujo de trabajo.
El estado destino debe ser un estado válido en el flujo configurado para
el tipo de caso. Puedes obtener los estados disponibles con
client.caso().casoType().findById(casoTypeId).getStates().
// Obtener estados disponibles del tipo de caso
ProductResponse tipo = client.caso().casoType().findById("tipo-documentId");
List estados = tipo.getStates();
// Avanzar al siguiente estado
NextStateRequest request = NextStateRequest.builder()
.casoId("caso-documentId")
.workingSubStatePrimaryLevelId(estados.get(0).getId())
.build();
boolean exito = client.caso().state().next(request);
System.out.println("Estado actualizado: " + exito);
Parametros:
request— Datos del cambio de estado con el ID del caso y el estado destino
Lanza:
ApiException— si el estado es inválido, el caso no existe o hay error del servidor
nextMassive(List<NextStateRequest> requests)
Avanza una lista de casos al siguiente estado de forma masiva.
client.caso().state().nextMassive(List.of(
NextStateRequest.builder()
.casoId("caso-uuid-1")
.workingSubStatePrimaryLevelId("estado-destino-uuid")
.build()
));
Parametros:
requests— Lista con el UUID de cada caso y el UUID del estado destino
nextByCasoIdInt(NextStateByCasoIdIntRequest request)
Avanza un caso al siguiente estado usando el número interno del caso (casoIdInt).
client.caso().state().nextByCasoIdInt(NextStateByCasoIdIntRequest.builder()
.casoIdInt("15624")
.workingSubStatePrimaryLevelId("estado-destino-uuid")
.build());
Parametros:
request— Número interno del caso y UUID del estado destino
nextMassiveByCasoIdInt(List<NextStateByCasoIdIntRequest> requests)
Avanza una lista de casos al siguiente estado de forma masiva usando el número interno.
client.caso().state().nextMassiveByCasoIdInt(List.of(
NextStateByCasoIdIntRequest.builder()
.casoIdInt("15624")
.workingSubStatePrimaryLevelId("estado-destino-uuid")
.build()
));
Parametros:
requests— Lista con el número interno de cada caso y el UUID del estado destino
search(StateFilter filter)
Busca los estados de los casos aplicando filtros.
StateSearchResult result = client.caso().state().search(
StateFilter.builder()
.code(FilterOperator.EQ, "ABIERTO")
.pageSize(20)
.build()
);
Parametros:
filter— Filtros y paginación para la búsqueda
Retorna: Resultado paginado de estados
Lanza:
ApiException— si hay error en el servidor
searchWorkingSubState(WorkingSubStateFilter filter)
Busca los working sub states de los casos aplicando filtros.
WorkingSubStateSearchResult result = client.caso().state().searchWorkingSubState(
WorkingSubStateFilter.builder()
.primaryLevelId(FilterOperator.IN, "servicio-uuid")
.casoTypeId(FilterOperator.EQ, "producto-uuid")
.active(FilterOperator.EQ, "true")
.pageSize(20)
.build()
);
Parametros:
filter— Filtros y paginación para la búsqueda
Retorna: Resultado paginado de working sub states
Lanza:
ApiException— si hay error en el servidor
findByCaseId(String caseId)
Obtiene el detalle del estado del caso buscado *
GET /v3/caso/lite?casoId=123
*USO *
StateSearchResponse state = client.caso().findByCaseId("caso-id");
System.out.println("state "+ state.getWorkingSubStateCode());
Parametros:
caseId— Identificador del caso a buscar
Retorna: StateSearchResponse retorna el detalle del estado inicial del caso