Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forenklet api for sak/behandling #740

Merged
merged 3 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@
* 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());
Dismissed Show dismissed Hide dismissed
}
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
Loading