Skip to content

Commit

Permalink
Forenklet api for sak/behandling (#740)
Browse files Browse the repository at this point in the history
* Forenklet api for sak/behandling

* Litt mer convenience-metoder

* Setter callId fra MDC pr default
  • Loading branch information
jolarsen authored Dec 2, 2024
1 parent 59bbb1d commit 5b3416d
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public void dispatch(ProsessTaskData task) {
} else if (task.getFagsakId() != null) { // NOSONAR
LOG_CONTEXT.add("fagsak", task.getFagsakId()); // NOSONAR
}
if (task.getBehandlingId() != null) {
LOG_CONTEXT.add("behandling", task.getBehandlingId());
} else if (task.getBehandlingUuid() != null) {
if (task.getBehandlingUuid() != null) {
LOG_CONTEXT.add("behandling", task.getBehandlingUuid());
} else if (task.getBehandlingId() != null) {
LOG_CONTEXT.add("behandling", task.getBehandlingId());
}

taskHandler.doTask(task);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,5 @@ private CommonTaskProperties() {
public static final String BEHANDLING_ID ="behandlingId";
public static final String BEHANDLING_UUID = "behandlingUuid";
public static final String SAKSNUMMER = "saksnummer";
/**
* Erstatt med saksnummer
* @deprecated use saksnummer
*/
@Deprecated(forRemoval = true)
public static final String FAGSAK_ID = "fagsakId";

/*
* Reservert for tasks med status VENTER_SVAR
*/
static final String HENDELSE_PROPERTY = "hendelse";

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ public class ProsessTaskData implements ProsessTaskInfo {
public static final String MANGLER_PROPS = "PT-492717";
public static final Pattern VALID_KEY_PATTERN = Pattern.compile("[a-zA-Z0-9_\\.]+$");

/**
* Erstatt med saksnummer
* @deprecated use saksnummer
*/
// @Deprecated(forRemoval = true) - venter til FagsakProsesstask fikset
private static final String FAGSAK_ID = "fagsakId";

/*
* Reservert for tasks med status VENTER_SVAR
*/
private static final String HENDELSE_PROPERTY = "hendelse";

private final Properties props = new Properties();
private final TaskType taskType;
private int antallFeiledeForsøk;
Expand All @@ -41,6 +53,7 @@ public class ProsessTaskData implements ProsessTaskInfo {

ProsessTaskData(TaskType taskType) {
this.taskType = taskType;
Optional.ofNullable(MDC.get(CallId.CALL_ID)).filter(c -> !c.isEmpty()).ifPresent(this::setCallId);
}

public static ProsessTaskData forProsessTask(Class<? extends ProsessTaskHandler> clazz) {
Expand Down Expand Up @@ -109,11 +122,11 @@ public void setGruppe(String gruppe) {

@Override
public Optional<String> getVentetHendelse() {
return Optional.ofNullable(getPropertyValue(CommonTaskProperties.HENDELSE_PROPERTY));
return Optional.ofNullable(getPropertyValue(HENDELSE_PROPERTY));
}

void setVentetHendelse(String hendelse) {
setProperty(CommonTaskProperties.HENDELSE_PROPERTY, hendelse);
setProperty(HENDELSE_PROPERTY, hendelse);
}

@Override
Expand Down Expand Up @@ -281,11 +294,10 @@ protected void setBehandlingId(String id) {

@Override
public UUID getBehandlingUuid() {
var uuidString = getPropertyValue(CommonTaskProperties.BEHANDLING_UUID);
return uuidString != null ? UUID.fromString(uuidString) : null;
return Optional.ofNullable(getPropertyValue(CommonTaskProperties.BEHANDLING_UUID)).map(UUID::fromString).orElse(null);
}

protected void setBehandlingUUid(UUID uuid) {
public void setBehandlingUUid(UUID uuid) {
setProperty(CommonTaskProperties.BEHANDLING_UUID, uuid.toString());
}

Expand All @@ -295,15 +307,15 @@ protected void setBehandlingUUid(UUID uuid) {
@Deprecated(forRemoval = true)
@Override
public Long getFagsakId() {
return getPropertyValue(CommonTaskProperties.FAGSAK_ID) != null ? Long.valueOf(getPropertyValue(CommonTaskProperties.FAGSAK_ID)) : null;
return Optional.ofNullable(getPropertyValue(FAGSAK_ID)).map(Long::valueOf).orElse(null);
}

/**
* @deprecated Bruk heller saksnummer
*/
@Deprecated(forRemoval = true)
public void setFagsakId(Long id) {
setProperty(CommonTaskProperties.FAGSAK_ID, id.toString());
setProperty(FAGSAK_ID, id.toString());
}

@Override
Expand All @@ -323,77 +335,33 @@ public void setSaksnummer(String saksnummer) {
* behandlingId angitt behandlingId definert av fagsystem (kan være Long, UUID, etc)
*/

@Deprecated(forRemoval = true) // Fagsakprosesstask må fikses - PTv2
public void setBehandling(Long fagsakId, Long behandlingId) {
Objects.requireNonNull(fagsakId, CommonTaskProperties.FAGSAK_ID);
Objects.requireNonNull(behandlingId, CommonTaskProperties.BEHANDLING_ID);

setFagsakId(fagsakId);
setBehandlingId(behandlingId.toString());
}

@Deprecated(forRemoval = true) // Fagsakprosesstask må fikses - PTv2
// @Deprecated(forRemoval = true) // Fagsakprosesstask må fikses før fjerning
public void setBehandling(String saksnummer, Long fagsakId, Long behandlingId) {
Objects.requireNonNull(saksnummer, CommonTaskProperties.SAKSNUMMER);
Objects.requireNonNull(fagsakId, CommonTaskProperties.FAGSAK_ID);
Objects.requireNonNull(fagsakId, FAGSAK_ID);
Objects.requireNonNull(behandlingId, CommonTaskProperties.BEHANDLING_ID);

setSaksnummer(saksnummer);
setFagsakId(fagsakId);
setBehandlingId(behandlingId.toString());
}

@Deprecated(forRemoval = true) // Impending removal next release
public void setBehandling(Long fagsakId, Long behandlingId, String aktørId) {
Objects.requireNonNull(fagsakId, CommonTaskProperties.FAGSAK_ID);
Objects.requireNonNull(behandlingId, CommonTaskProperties.BEHANDLING_ID);
Objects.requireNonNull(aktørId, CommonTaskProperties.AKTØR_ID);

setFagsakId(fagsakId);
setBehandlingId(behandlingId.toString());
setAktørId(aktørId);
}

@Deprecated(forRemoval = true) // Impending removal next release
public void setBehandling(String saksnummer, String behandlingId) {
Objects.requireNonNull(saksnummer, CommonTaskProperties.SAKSNUMMER);
Objects.requireNonNull(behandlingId, CommonTaskProperties.BEHANDLING_ID);

setSaksnummer(saksnummer);
setBehandlingId(behandlingId);
}

/**
* Convenience API - Angi (optional) hvilken behandling/sak denne prosesstasken kjøres for.
*
* @param saksnummer offisielt saksnummer
* @param behandlingId angitt behandlingId definert av fagsystem (kan være Long, UUID, etc)
* @param aktørId angitt AktørId gyldig i AktørRegisteret.
*/
@Deprecated(forRemoval = true) // Impending removal next release
public void setBehandling(String saksnummer, String behandlingId, String aktørId) {
public void setBehandling(String saksnummer, Long fagsakId, UUID behandlingUuid, Long behandlingId) {
Objects.requireNonNull(saksnummer, CommonTaskProperties.SAKSNUMMER);
Objects.requireNonNull(fagsakId, FAGSAK_ID);
Objects.requireNonNull(behandlingId, CommonTaskProperties.BEHANDLING_ID);
Objects.requireNonNull(aktørId, CommonTaskProperties.AKTØR_ID);
Objects.requireNonNull(behandlingUuid, CommonTaskProperties.BEHANDLING_UUID);

setSaksnummer(saksnummer);
setBehandlingId(behandlingId);
setAktørId(aktørId);
}

@Deprecated(forRemoval = true) // Impending removal next release
public void setFagsak(Long fagsakId, String aktørId) {
Objects.requireNonNull(fagsakId, CommonTaskProperties.FAGSAK_ID);
Objects.requireNonNull(aktørId, CommonTaskProperties.AKTØR_ID);

setFagsakId(fagsakId);
setAktørId(aktørId);
setBehandlingUUid(behandlingUuid);
setBehandlingId(behandlingId.toString());
}

@Deprecated(forRemoval = true) // Fagsakprosesstask må fikses - PTv2
// @Deprecated(forRemoval = true) // Fagsakprosesstask må fikses før fjerning
public void setFagsak(String saksnummer, Long fagsakId) {
Objects.requireNonNull(saksnummer, CommonTaskProperties.SAKSNUMMER);
Objects.requireNonNull(fagsakId, CommonTaskProperties.FAGSAK_ID);
Objects.requireNonNull(fagsakId, FAGSAK_ID);

setSaksnummer(saksnummer);
setFagsakId(fagsakId);
Expand Down Expand Up @@ -433,10 +401,16 @@ public String toString() {
setStatus(ProsessTaskStatus.VENTER_SVAR);
}

// Sett til null for å fjerne.
public void setCallId(String callId) {
setProperty(CallId.CALL_ID, callId);
}

public boolean harCallId() {
return Optional.ofNullable(getPropertyValue(CallId.CALL_ID)).filter(c -> !c.isEmpty()).isPresent();
}

@Deprecated(forRemoval = true) // Default oppførsel
public void setCallIdFraEksisterende() {
setCallId(MDC.get(CallId.CALL_ID));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.slf4j.MDC;

Expand Down Expand Up @@ -69,28 +70,36 @@ public ProsessTaskGruppe addNesteParallell(Collection<ProsessTaskData> prosessTa

public static record Entry(String sekvens, ProsessTaskData task) {}

@Deprecated(forRemoval = true) // Immediate next patch
public void setBehandling(Long fagsakId, Long behandlingId, String aktørId) {
this.getTasks().forEach(e -> e.task().setBehandling(fagsakId, behandlingId, aktørId));
}

@Deprecated(forRemoval = true) // Immediate next patch
public void setBehandling(Long fagsakId, Long behandlingId) {
this.getTasks().forEach(e -> e.task().setBehandling(fagsakId, behandlingId));
}

// FagsakId med inntil videre pga FagsakProsessTask i enkelte apps
public void setBehandling(String saksnummer, Long fagsakId, Long behandlingId) {
this.getTasks().forEach(e -> e.task().setBehandling(saksnummer, fagsakId, behandlingId));
}

public void setBehandling(String saksnummer, Long fagsakId, UUID behandlingUuid, Long behandlingId) {
this.getTasks().forEach(e -> e.task().setBehandling(saksnummer, fagsakId, behandlingUuid, behandlingId));
}

public void setFagsak(String saksnummer, Long fagsakId) {
this.getTasks().forEach(e -> e.task().setFagsak(saksnummer, fagsakId));
}

// For bruk der FagsakProsessTask ikke er aktuell
public void setBehandlingUuid(UUID behandlingUuid) {
this.getTasks().forEach(e -> e.task().setBehandlingUUid(behandlingUuid));
}

public void setSaksnummer(String saksnummer) {
this.getTasks().forEach(e -> e.task().setSaksnummer(saksnummer));
}

public void setCallId(String callId) {
setProperty(CallId.CALL_ID, callId);
}

public boolean harCallId() {
return tasks.isEmpty() || tasks.stream().map(Entry::task).allMatch(ProsessTaskData::harCallId);
}

public void setProperty(String key, String value) {
props.put(key, value);
for (Entry pt : tasks) {
Expand All @@ -99,6 +108,7 @@ public void setProperty(String key, String value) {
}
}

@Deprecated(forRemoval = true) // Default oppførsel
public void setCallIdFraEksisterende() {
setCallId(MDC.get(CallId.CALL_ID));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,12 @@ public interface ProsessTaskInfo {
Long getFagsakId();

String getSaksnummer();

String getBehandlingId();

UUID getBehandlingUuid();
}

default Long getBehandlingIdAsLong() {
return Optional.ofNullable(getBehandlingId()).map(Long::valueOf).orElse(null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;

import org.hibernate.jpa.HibernateHints;
import org.hibernate.query.NativeQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

import jakarta.enterprise.context.ApplicationScoped;
Expand All @@ -18,6 +21,7 @@
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import no.nav.vedtak.exception.TekniskException;
import no.nav.vedtak.felles.prosesstask.api.CallId;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskGruppe;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskStatus;
Expand All @@ -29,6 +33,8 @@
@ApplicationScoped
public class ProsessTaskRepository {

static final Logger LOG = LoggerFactory.getLogger(ProsessTaskRepository.class);

private EntityManager entityManager;
private ProsessTaskEventPubliserer eventPubliserer;
private HandleProsessTaskLifecycleObserver handleLifecycleObserver;
Expand Down Expand Up @@ -136,6 +142,10 @@ public String lagre(ProsessTaskData task) {
* Lagre og returner id.
*/
protected Long doLagreTask(ProsessTaskData task) {
var callId = Optional.ofNullable(task.getPropertyValue(CallId.CALL_ID)).filter(c -> !c.isEmpty());
if (callId.isEmpty()) {
LOG.info("Lagrer prosesstask uten callId - taskType {}", task.taskType().value());
}
ProsessTaskEntitet pte;
if (task.getId() != null) {
trackTaskLineage("latest", task);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@
import java.util.function.BiFunction;
import java.util.function.Consumer;

import jakarta.enterprise.inject.spi.CDI;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import jakarta.enterprise.inject.spi.CDI;
import no.nav.vedtak.felles.prosesstask.api.CallId;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskDispatcher;
import no.nav.vedtak.felles.prosesstask.api.TaskType;
import no.nav.vedtak.felles.prosesstask.impl.TaskManager.ReadTaskFunksjon;

/** Poller for tilgjengelige tasks og omsetter disse til Runnable som kan kjøres på andre tråder. */
public class TaskManagerGenerateRunnableTasks {
static final Logger log = LoggerFactory.getLogger(TaskManagerGenerateRunnableTasks.class);
static final Logger LOG = LoggerFactory.getLogger(TaskManagerGenerateRunnableTasks.class);
static final CDI<Object> CURRENT = CDI.current();

private final BiFunction<Integer, ReadTaskFunksjon, List<IdentRunnable>> availableTasksFunc;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import java.time.LocalDateTime;
import java.util.function.Consumer;

import jakarta.persistence.PersistenceException;

import org.slf4j.MDC;

import jakarta.persistence.PersistenceException;
import no.nav.vedtak.felles.prosesstask.api.CallId;
import no.nav.vedtak.felles.prosesstask.api.TaskType;

Expand Down Expand Up @@ -62,7 +61,7 @@ IdentRunnable lagErrorCallback(final RunTaskInfo taskInfo, final String callId,
errorTask.doRun(taskInfo, fatal);
} catch (Throwable t) {
// logg at vi ikke klarte å registrer feilen i db
TaskManagerGenerateRunnableTasks.log.error(
TaskManagerGenerateRunnableTasks.LOG.error(
"PT-415565 Kunne ikke registrere feil på task pga uventet feil ved oppdatering av status/feil, id={}, taskName={}.", taskInfo.getId(), taskInfo.getTaskType(), t);
} finally {
clearLogContext();
Expand All @@ -71,7 +70,7 @@ IdentRunnable lagErrorCallback(final RunTaskInfo taskInfo, final String callId,
};

// logg at vi kommer til å skrive dette i ny transaksjon pga fatal feil.
TaskManagerGenerateRunnableTasks.log.warn("PT-876628 Kritisk database feil som gir rollback. Kan ikke prosessere task, vil logge til db i ny transaksjon, id={}, taskName={} pga uventet feil.",
TaskManagerGenerateRunnableTasks.LOG.warn("PT-876628 Kritisk database feil som gir rollback. Kan ikke prosessere task, vil logge til db i ny transaksjon, id={}, taskName={} pga uventet feil.",
taskInfo.getId(), taskInfo.getTaskType(), fatal);


Expand Down

0 comments on commit 5b3416d

Please sign in to comment.