Saltar al contenido principal

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