From 631dc624b90b41590822a215c2104df22ee35708 Mon Sep 17 00:00:00 2001 From: Michael Johansen Date: Fri, 23 Aug 2019 18:26:49 +0200 Subject: [PATCH] =?UTF-8?q?TFP-563=20FP-FELLES:=20Gj=C3=B8re=20repoet=20kl?= =?UTF-8?q?ar=20for=20bygging=20og=20distribusjon=20utenfor=20(#77)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .circleci/config.yml | 65 ++++ .circleci/maven-settings.xml | 33 ++ .gitignore | 1 + README.md | 9 + felles/pom.xml | 35 +- felles/sikkerhet/sikkerhet/pom.xml | 14 - .../no/nav/abac/xacml/ArkivAttributter.java | 12 + .../no/nav/abac/xacml/CommonAttributter.java | 72 ++++ .../abac/xacml/ForeldrepengerAttributter.java | 20 ++ .../sikkerhet/abac/AbacSporingslogg.java | 5 +- .../no/nav/vedtak/sikkerhet/abac/PepImpl.java | 4 +- .../sikkerhet/abac/Tilgangsbeslutning.java | 4 +- .../vedtak/sikkerhet/pdp/PdpKlientImpl.java | 2 +- .../sikkerhet/abac/AbacSporingsloggTest.java | 4 +- .../abac/BeskyttetRessursInterceptorTest.java | 2 +- .../vedtak/sikkerhet/abac/PdpRequestTest.java | 6 +- .../sikkerhet/pdp/PdpKlientImplTest.java | 4 +- .../pdp/XacmlRequestBuilderTjenesteImpl.java | 4 +- felles/testutilities/pom.xml | 8 +- integrasjon/dokumentproduksjon-klient/pom.xml | 5 +- integrasjon/jms/pom.xml | 1 + integrasjon/pom.xml | 16 +- integrasjon/sakogbehandling-klient/pom.xml | 5 +- .../SakOgBehandlingClient.java | 4 +- .../SakOgBehandlingClientImpl.java | 7 +- .../NoopSakOgBehandlingClient.java | 9 +- .../SakOgBehandlingClientImplTest.java | 38 +- pom.xml | 46 ++- .../impl/ProsessTaskRepositoryImpl.java | 53 +-- .../felles/prosesstask/impl/RunTask.java | 36 +- .../test/resources/META-INF/persistence.xml | 2 +- .../1.0.0/V1.0.0_01__Baseline_prosesstask.sql | 327 ++++++++++-------- .../1.0.0/V1.0.0_02__task-type-cron.sql | 9 +- .../1.0.0/V1.0.0_03__endringer-postgres.sql | 4 + prosesstask/src/test/resources/unit_test.json | 8 +- 35 files changed, 556 insertions(+), 318 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .circleci/maven-settings.xml create mode 100644 felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ArkivAttributter.java create mode 100644 felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/CommonAttributter.java create mode 100644 felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ForeldrepengerAttributter.java create mode 100644 prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_03__endringer-postgres.sql diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..15bfb6559 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,65 @@ +version: 2.1 +jobs: + build: + docker: + - image: circleci/openjdk:latest + - image: circleci/postgres:latest + environment: + POSTGRES_USER: fp_unit + POSTGRES_DB: fp_unit + POSTGRES_PASSWORD: fp_unit + steps: + - checkout + - restore_cache: + name: Restore cached dependencies + keys: + - maven3-{{ checksum "pom.xml" }} + - run: + name: Build (and run tests) + command: mvn clean install + - save_cache: + name: Cache Maven dependencies + key: maven3-{{ checksum "pom.xml" }} + paths: + - ~/.m2 + + deploy: + docker: + - image: circleci/openjdk:latest + steps: + - checkout + - restore_cache: + name: Restore cached dependencies + keys: + - maven3-{{ checksum "pom.xml" }} + #- run: + # name: Import gpg key + # command: echo $GPG_KEY_BASE64 | base64 --decode | gpg --yes --batch --import + - run: + name: "Setting version" + command: | + sudo apt-get install libxml2-utils + export GIT_COMMIT_HASH=$(git log -n 1 --pretty=format:'%h') + export GIT_COMMIT_DATE=$(git log -1 --pretty='%ad' --date=format:'%Y%m%d%H%M%S') + export REVISION=$(xmllint --xpath '/*[local-name()="project"]//*[local-name()="revision"]/text()' pom.xml) + export VERSION=${REVISION}_${GIT_COMMIT_DATE}_${GIT_COMMIT_HASH} + echo "Setting version $VERSION" + mvn versions:set -DnewVersion="$VERSION" + mvn versions:commit + - run: + name: Deploy to Github Package Registry + command: "mvn --settings .circleci/maven-settings.xml deploy -PpublishGithub -DskipTests=true" + + +workflows: + version: 2 + build-and-deploy: + jobs: + - build +# - deploy: +# context: familie-ci +# requires: +# - build +# filters: +# branches: +# only: feature/TFP-563 diff --git a/.circleci/maven-settings.xml b/.circleci/maven-settings.xml new file mode 100644 index 000000000..c7f83f36d --- /dev/null +++ b/.circleci/maven-settings.xml @@ -0,0 +1,33 @@ + + + github + + + + + github + + + central + https://repo1.maven.org/maven2 + true + true + + + github + GitHub navikt Apache Maven Packages + https://maven.pkg.github.com/navikt + + + + + + + github + ${env.GITHUB_USERNAME} + ${env.GITHUB_PASSWORD} + + + diff --git a/.gitignore b/.gitignore index 70b547522..a55edd362 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ keystore.jks truststore.jts truststore.jks .DS_Store +.env diff --git a/README.md b/README.md index 4ae015d21..5dc967400 100644 --- a/README.md +++ b/README.md @@ -1 +1,10 @@ # Felles kode / bibliotek for foredrepenger området + + + +## Postgres +I test og utvikling bruker vi postgres. For å enkelt sette opp dette slik at det fungerer med unit-tests: +``` +docker rm -f fp-postgres +docker run --rm --name fp-postgres -e POSTGRES_USER=fp_unit -e POSTGRES_PASSWORD=fp_unit -e POSTGRES_DB=fp_unit -d -p 5432:5432 postgres:alpine +``` diff --git a/felles/pom.xml b/felles/pom.xml index a26d64c57..9be41b6b6 100644 --- a/felles/pom.xml +++ b/felles/pom.xml @@ -29,7 +29,7 @@ 3.6.1.SP2 1.7.26 1.5.13 - 2.1.8 + 1.2019.08.12-12.12-4258f3dded02 @@ -144,22 +144,6 @@ - - no.nav.abac.policies - abac-foreldrepenger-policies-alfa - 4.5.0 - - - no.nav.abac.policies - abac-common-attributes-alfa - 4.0.8 - - - no.nav.abac.policies - abac-arkiv-policies-alfa - 4.6.2 - attributes - no.nav.tjenestespesifikasjoner nav-kodeverk-v3-tjenestespesifikasjon @@ -171,10 +155,9 @@ ${tjenestespesifikasjoner.version} - no.nav.tjenester.fim - nav-fim-dokumentproduksjon-v2-tjenestespesifikasjon + no.nav.tjenestespesifikasjoner + dokumentproduksjon-v2-tjenestespesifikasjon ${doksys.dokumentproduksjon.version} - jaxws no.nav.tjenestespesifikasjoner @@ -290,15 +273,11 @@ - com.oracle - ojdbc8 - 12.2.0.1 + org.postgresql + postgresql + 42.2.5 - + com.zaxxer HikariCP diff --git a/felles/sikkerhet/sikkerhet/pom.xml b/felles/sikkerhet/sikkerhet/pom.xml index 09e752745..1aeff1384 100644 --- a/felles/sikkerhet/sikkerhet/pom.xml +++ b/felles/sikkerhet/sikkerhet/pom.xml @@ -99,20 +99,6 @@ picketbox - - - no.nav.abac.policies - abac-foreldrepenger-policies-alfa - - - no.nav.abac.policies - abac-common-attributes-alfa - - - no.nav.abac.policies - abac-arkiv-policies-alfa - attributes - javax.activation javax.activation-api diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ArkivAttributter.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ArkivAttributter.java new file mode 100644 index 000000000..41fdb835f --- /dev/null +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ArkivAttributter.java @@ -0,0 +1,12 @@ +package no.nav.abac.xacml; + +public class ArkivAttributter { + + + public static final String RESOURCE_ARKIV_DOKUMENT = "no.nav.abac.attributter.resource.arkiv.dokument"; + public static final String RESOURCE_ARKIV_GSAK_SAKSID = "no.nav.abac.attributter.resource.arkiv.gsak_saksid"; + public static final String RESOURCE_ARKIV_JOURNALPOST = "no.nav.abac.attributter.resource.arkiv.journalpost"; + public static final String RESOURCE_ARKIV_PENSJON_SAKSID = "no.nav.abac.attributter.resource.arkiv.pensjon_saksid"; + public static final String RESOURCE_ARKIV_SAK = "no.nav.abac.attributter.resource.arkiv.sak"; + +} diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/CommonAttributter.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/CommonAttributter.java new file mode 100644 index 000000000..1071d74c4 --- /dev/null +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/CommonAttributter.java @@ -0,0 +1,72 @@ +package no.nav.abac.xacml; + +public class CommonAttributter { + public static final String ADVICES_ACTION_SPORBARHETSLOGG = "no.nav.abac.advices.action.sporbarhetslogg"; + public static final String ADVICES_PING_RESPONSE = "no.nav.abac.advices.ping.response"; + public static final String ADVICES_REASON_DENY_INFO = "no.nav.abac.advices.reason.deny_info"; + public static final String ADVICES_REASON_DENY_REASON = "no.nav.abac.advices.reason.deny_reason"; + public static final String ADVICEOROBLIGATION_CAUSE = "no.nav.abac.attributter.adviceorobligation.cause"; + public static final String ADVICEOROBLIGATION_DENY_POLICY = "no.nav.abac.attributter.adviceorobligation.deny_policy"; + public static final String ADVICEOROBLIGATION_DENY_RULE = "no.nav.abac.attributter.adviceorobligation.deny_rule"; + public static final String ADVICEOROBLIGATION_FRITEKST = "no.nav.abac.attributter.adviceorobligation.fritekst"; + public static final String ENVIRONMENT_FELLES_CONSUMER_OIDC_TOKEN_BODY = "no.nav.abac.attributter.environment.felles.consumer_oidc_token_body"; + public static final String ENVIRONMENT_FELLES_MILJOE = "no.nav.abac.attributter.environment.felles.miljoe"; + public static final String ENVIRONMENT_FELLES_OIDC_TOKEN_BODY = "no.nav.abac.attributter.environment.felles.oidc_token_body"; + public static final String ENVIRONMENT_FELLES_PEP_ID = "no.nav.abac.attributter.environment.felles.pep_id"; + public static final String ENVIRONMENT_FELLES_SAML_TOKEN = "no.nav.abac.attributter.environment.felles.saml_token"; + public static final String ENVIRONMENT_FELLES_TJENESTENAVN = "no.nav.abac.attributter.environment.felles.tjenestenavn"; + public static final String RESOURCE_FELLES_DOMENE = "no.nav.abac.attributter.resource.felles.domene"; + public static final String RESOURCE_FELLES_ENHET = "no.nav.abac.attributter.resource.felles.enhet"; + public static final String RESOURCE_FELLES_PERSON = "no.nav.abac.attributter.resource.felles.person"; + public static final String RESOURCE_FELLES_PERSON_AKTOERID_RESOURCE = "no.nav.abac.attributter.resource.felles.person.aktoerId_resource"; + public static final String RESOURCE_FELLES_PERSON_EGEN_ANSATT = "no.nav.abac.attributter.resource.felles.person.egen_ansatt"; + public static final String RESOURCE_FELLES_PERSON_FNR = "no.nav.abac.attributter.resource.felles.person.fnr"; + public static final String RESOURCE_FELLES_PERSON_GEOGRAFISK_TILKNYTNING = "no.nav.abac.attributter.resource.felles.person.geografisk_tilknytning"; + public static final String RESOURCE_FELLES_PERSON_KONTAKTINFORMASJON = "no.nav.abac.attributter.resource.felles.person.kontaktinformasjon"; + public static final String RESOURCE_FELLES_PERSON_NAV_ENHET_ID = "no.nav.abac.attributter.resource.felles.person.nav_enhet_id"; + public static final String RESOURCE_FELLES_PERSON_NAVN = "no.nav.abac.attributter.resource.felles.person.navn"; + public static final String RESOURCE_FELLES_PERSON_REGIONAL_ENHET = "no.nav.abac.attributter.resource.felles.person.regional_enhet"; + public static final String RESOURCE_FELLES_PERSON_RELASJON = "no.nav.abac.attributter.resource.felles.person.relasjon"; + public static final String RESOURCE_FELLES_PERSON_RELASJONER = "no.nav.abac.attributter.resource.felles.person.relasjoner"; + public static final String RESOURCE_FELLES_PERSON_SPESREG = "no.nav.abac.attributter.resource.felles.person.spesreg"; + public static final String RESOURCE_FELLES_PERSON_TILKNYTTET_EGEN_ANSATT = "no.nav.abac.attributter.resource.felles.person.tilknyttet_egen_ansatt"; + public static final String RESOURCE_FELLES_PERSON_TILKNYTTET_FNR = "no.nav.abac.attributter.resource.felles.person.tilknyttet_fnr"; + public static final String RESOURCE_FELLES_PERSON_TILKNYTTET_SPESREG = "no.nav.abac.attributter.resource.felles.person.tilknyttet_spesreg"; + public static final String RESOURCE_FELLES_RESOURCE_TYPE = "no.nav.abac.attributter.resource.felles.resource_type"; + public static final String RESOURCE_FELLES_TEMA = "no.nav.abac.attributter.resource.felles.tema"; + public static final String SUBJECT_FELLES_AKTOERID_SUBJECT = "no.nav.abac.attributter.subject.felles.aktoerId_subject"; + public static final String SUBJECT_FELLES_ALDER = "no.nav.abac.attributter.subject.felles.alder"; + public static final String SUBJECT_FELLES_ALLE_TEMA = "no.nav.abac.attributter.subject.felles.alle_tema"; + public static final String SUBJECT_FELLES_AUTHENTICATIONLEVEL = "no.nav.abac.attributter.subject.felles.authenticationLevel"; + public static final String SUBJECT_FELLES_CONSUMERID = "no.nav.abac.attributter.subject.felles.consumerId"; + public static final String SUBJECT_FELLES_CONSUMERID_ROLLE = "no.nav.abac.attributter.subject.felles.consumerId_rolle"; + public static final String SUBJECT_FELLES_ENHETIDLISTE = "no.nav.abac.attributter.subject.felles.enhetidliste"; + public static final String SUBJECT_FELLES_ER_LEVENDE = "no.nav.abac.attributter.subject.felles.er_levende"; + public static final String SUBJECT_FELLES_HAR_TILGANG_EGEN_ANSATT = "no.nav.abac.attributter.subject.felles.har_tilgang_egen_ansatt"; + public static final String SUBJECT_FELLES_HAR_TILGANG_KODE_6 = "no.nav.abac.attributter.subject.felles.har_tilgang_kode_6"; + public static final String SUBJECT_FELLES_HAR_TILGANG_KODE_7 = "no.nav.abac.attributter.subject.felles.har_tilgang_kode_7"; + public static final String SUBJECT_FELLES_INDIREKTE_GRUPPER = "no.nav.abac.attributter.subject.felles.indirekte_grupper"; + public static final String SUBJECT_FELLES_REGIONIDLISTE = "no.nav.abac.attributter.subject.felles.regionidliste"; + public static final String SUBJECT_FELLES_SUBJECTTYPE = "no.nav.abac.attributter.subject.felles.subjectType"; + public static final String SUBJECT_FELLES_TEMA_FOR_ENHET = "no.nav.abac.attributter.subject.felles.tema_for_enhet"; + public static final String XACML_1_0_ACTION_ACTION_ID = "urn:oasis:names:tc:xacml:1.0:action:action-id"; + public static final String XACML_1_0_ACTION_IMPLIED_ACTION = "urn:oasis:names:tc:xacml:1.0:action:implied-action"; + public static final String XACML_1_0_ENVIRONMENT_CURRENT_DATE = "urn:oasis:names:tc:xacml:1.0:environment:current-date"; + public static final String XACML_1_0_ENVIRONMENT_CURRENT_DATETIME = "urn:oasis:names:tc:xacml:1.0:environment:current-dateTime"; + public static final String XACML_1_0_ENVIRONMENT_CURRENT_TIME = "urn:oasis:names:tc:xacml:1.0:environment:current-time"; + public static final String XACML_1_0_RESOURCE_RESOURCE_ID = "urn:oasis:names:tc:xacml:1.0:resource:resource-id"; + public static final String XACML_1_0_SUBJECT_AUTHENTICATION_METHOD = "urn:oasis:names:tc:xacml:1.0:subject:authentication-method"; + public static final String XACML_1_0_SUBJECT_AUTHENTICATION_TIME = "urn:oasis:names:tc:xacml:1.0:subject:authentication-time"; + public static final String XACML_1_0_SUBJECT_KEY_INFO = "urn:oasis:names:tc:xacml:1.0:subject:key-info"; + public static final String XACML_1_0_SUBJECT_REQUEST_TIME = "urn:oasis:names:tc:xacml:1.0:subject:request-time"; + public static final String XACML_1_0_SUBJECT_SESSION_START_TIME = "urn:oasis:names:tc:xacml:1.0:subject:session-start-time"; + public static final String XACML_1_0_SUBJECT_SUBJECT_ID = "urn:oasis:names:tc:xacml:1.0:subject:subject-id"; + public static final String XACML_1_0_SUBJECT_SUBJECT_ID_QUALIFIER = "urn:oasis:names:tc:xacml:1.0:subject:subject-id-qualifier"; + public static final String XACML_2_0_RESOURCE_TARGET_NAMESPACE = "urn:oasis:names:tc:xacml:2.0:resource:target-namespace"; + public static final String XACML_2_0_SUBJECT_ROLE = "urn:oasis:names:tc:xacml:2.0:subject:role"; + public static final String XACML_3_0_SUBJECT_AUTHN_LOCALITY_DNS_NAME = "urn:oasis:names:tc:xacml:3.0:subject:authn-locality:dns-name"; + public static final String XACML_3_0_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS = "urn:oasis:names:tc:xacml:3.0:subject:authn-locality:ip-address"; + + public CommonAttributter() { + } +} diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ForeldrepengerAttributter.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ForeldrepengerAttributter.java new file mode 100644 index 000000000..083b0c634 --- /dev/null +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/abac/xacml/ForeldrepengerAttributter.java @@ -0,0 +1,20 @@ +package no.nav.abac.xacml; + +public class ForeldrepengerAttributter { + public static final String FORELDREPENGER_FP_SAKSID = "no.nav.abac.attributter.foreldrepenger.fp_saksid"; + public static final String FORELDREPENGER_OPPGAVEKO = "no.nav.abac.attributter.foreldrepenger.oppgaveko"; + public static final String FORELDREPENGER_OPPGAVESTYRING = "no.nav.abac.attributter.foreldrepenger.oppgavestyring"; + public static final String FORELDREPENGER_OPPGAVESTYRING_AVDELINGSENHET = "no.nav.abac.attributter.foreldrepenger.oppgavestyring.avdelingsenhet"; + public static final String FORELDREPENGER_RISIKOKLASSIFISERING = "no.nav.abac.attributter.foreldrepenger.risikoklassifisering"; + public static final String FORELDREPENGER_SAKLISTE = "no.nav.abac.attributter.foreldrepenger.sakliste"; + public static final String RESOURCE_FORELDREPENGER_ALENEOMSORG = "no.nav.abac.attributter.resource.foreldrepenger.aleneomsorg"; + public static final String RESOURCE_FORELDREPENGER_ANNEN_PART = "no.nav.abac.attributter.resource.foreldrepenger.annen_part"; + public static final String RESOURCE_FORELDREPENGER_SAK_AKSJONSPUNKT_TYPE = "no.nav.abac.attributter.resource.foreldrepenger.sak.aksjonspunkt_type"; + public static final String RESOURCE_FORELDREPENGER_SAK_ANSVARLIG_SAKSBEHANDLER = "no.nav.abac.attributter.resource.foreldrepenger.sak.ansvarlig_saksbehandler"; + public static final String RESOURCE_FORELDREPENGER_SAK_BEHANDLINGSSTATUS = "no.nav.abac.attributter.resource.foreldrepenger.sak.behandlingsstatus"; + public static final String RESOURCE_FORELDREPENGER_SAK_SAKSSTATUS = "no.nav.abac.attributter.resource.foreldrepenger.sak.saksstatus"; + public static final String RESOURCE_FORELDREPENGER_UTTAKSPLAN = "no.nav.abac.attributter.resource.foreldrepenger.uttaksplan"; + + public ForeldrepengerAttributter() { + } +} diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacSporingslogg.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacSporingslogg.java index 411d58541..5ed9c8313 100644 --- a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacSporingslogg.java +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacSporingslogg.java @@ -5,10 +5,11 @@ import java.util.List; import java.util.Optional; +import no.nav.abac.xacml.CommonAttributter; import org.slf4j.Logger; -import no.nav.abac.common.xacml.CommonAttributter; -import no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter; + +import no.nav.abac.xacml.ForeldrepengerAttributter; import no.nav.vedtak.log.sporingslogg.Sporingsdata; import no.nav.vedtak.log.sporingslogg.SporingsloggId; import no.nav.vedtak.log.sporingslogg.StandardSporingsloggId; diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java index e2b7d91b5..c1e7ae028 100644 --- a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java @@ -10,8 +10,8 @@ import javax.enterprise.context.RequestScoped; import javax.inject.Inject; -import no.nav.abac.common.xacml.CommonAttributter; -import no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter; +import no.nav.abac.xacml.CommonAttributter; +import no.nav.abac.xacml.ForeldrepengerAttributter; import no.nav.vedtak.konfig.KonfigVerdi; import no.nav.vedtak.sikkerhet.context.SubjectHandler; diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/Tilgangsbeslutning.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/Tilgangsbeslutning.java index 98bab7612..c356e4c3d 100644 --- a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/Tilgangsbeslutning.java +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/abac/Tilgangsbeslutning.java @@ -4,8 +4,8 @@ import java.util.List; -import no.nav.abac.common.xacml.CommonAttributter; -import no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter; +import no.nav.abac.xacml.CommonAttributter; +import no.nav.abac.xacml.ForeldrepengerAttributter; public final class Tilgangsbeslutning { private AbacResultat beslutningKode; diff --git a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImpl.java b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImpl.java index 827336151..78859a5d7 100644 --- a/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImpl.java +++ b/felles/sikkerhet/sikkerhet/src/main/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImpl.java @@ -11,7 +11,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import no.nav.abac.common.xacml.CommonAttributter; +import no.nav.abac.xacml.CommonAttributter; import no.nav.vedtak.konfig.KonfigVerdi; import no.nav.vedtak.log.util.LoggerUtils; import no.nav.vedtak.sikkerhet.abac.AbacIdToken; diff --git a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/AbacSporingsloggTest.java b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/AbacSporingsloggTest.java index 59a2eb897..344ff60ca 100644 --- a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/AbacSporingsloggTest.java +++ b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/AbacSporingsloggTest.java @@ -1,6 +1,6 @@ package no.nav.vedtak.sikkerhet.abac; -import static no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter.RESOURCE_FORELDREPENGER_SAK_AKSJONSPUNKT_TYPE; +import static no.nav.abac.xacml.ForeldrepengerAttributter.RESOURCE_FORELDREPENGER_SAK_AKSJONSPUNKT_TYPE; import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; @@ -10,7 +10,7 @@ import org.junit.Rule; import org.junit.Test; -import no.nav.abac.common.xacml.CommonAttributter; +import no.nav.abac.xacml.CommonAttributter; import no.nav.modig.core.test.LogSniffer; public class AbacSporingsloggTest { diff --git a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptorTest.java b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptorTest.java index 023a91169..0956bada0 100644 --- a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptorTest.java +++ b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptorTest.java @@ -14,7 +14,7 @@ import org.junit.Rule; import org.junit.Test; -import no.nav.abac.common.xacml.CommonAttributter; +import no.nav.abac.xacml.CommonAttributter; import no.nav.modig.core.test.LogSniffer; import no.nav.vedtak.exception.ManglerTilgangException; import no.nav.vedtak.sikkerhet.InnloggetSubject; diff --git a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/PdpRequestTest.java b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/PdpRequestTest.java index f186df650..f1caa6ca7 100644 --- a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/PdpRequestTest.java +++ b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/abac/PdpRequestTest.java @@ -1,8 +1,8 @@ package no.nav.vedtak.sikkerhet.abac; -import static no.nav.abac.common.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_AKTOERID_RESOURCE; -import static no.nav.abac.common.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_FNR; -import static no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter.RESOURCE_FORELDREPENGER_SAK_AKSJONSPUNKT_TYPE; +import static no.nav.abac.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_AKTOERID_RESOURCE; +import static no.nav.abac.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_FNR; +import static no.nav.abac.xacml.ForeldrepengerAttributter.RESOURCE_FORELDREPENGER_SAK_AKSJONSPUNKT_TYPE; import static org.assertj.core.api.Assertions.assertThat; import java.util.LinkedHashSet; diff --git a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImplTest.java b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImplTest.java index f50741960..3307e0d92 100644 --- a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImplTest.java +++ b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/PdpKlientImplTest.java @@ -1,6 +1,6 @@ package no.nav.vedtak.sikkerhet.pdp; -import static no.nav.abac.common.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_FNR; +import static no.nav.abac.xacml.CommonAttributter.RESOURCE_FELLES_PERSON_FNR; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; @@ -26,7 +26,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; -import no.nav.abac.common.xacml.CommonAttributter; +import no.nav.abac.xacml.CommonAttributter; import no.nav.vedtak.exception.VLException; import no.nav.vedtak.sikkerhet.abac.AbacIdToken; import no.nav.vedtak.sikkerhet.abac.AbacResultat; diff --git a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/XacmlRequestBuilderTjenesteImpl.java b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/XacmlRequestBuilderTjenesteImpl.java index 7f600d056..8b367121a 100644 --- a/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/XacmlRequestBuilderTjenesteImpl.java +++ b/felles/sikkerhet/sikkerhet/src/test/java/no/nav/vedtak/sikkerhet/pdp/XacmlRequestBuilderTjenesteImpl.java @@ -6,8 +6,8 @@ import javax.enterprise.context.Dependent; -import no.nav.abac.common.xacml.CommonAttributter; -import no.nav.abac.foreldrepenger.xacml.ForeldrepengerAttributter; +import no.nav.abac.xacml.CommonAttributter; +import no.nav.abac.xacml.ForeldrepengerAttributter; import no.nav.vedtak.sikkerhet.abac.PdpRequest; import no.nav.vedtak.sikkerhet.pdp.xacml.XacmlAttributeSet; import no.nav.vedtak.sikkerhet.pdp.xacml.XacmlRequestBuilder; diff --git a/felles/testutilities/pom.xml b/felles/testutilities/pom.xml index acdc60782..714aa74be 100644 --- a/felles/testutilities/pom.xml +++ b/felles/testutilities/pom.xml @@ -37,13 +37,9 @@ compile - com.oracle - ojdbc8 + org.postgresql + postgresql - com.zaxxer HikariCP diff --git a/integrasjon/dokumentproduksjon-klient/pom.xml b/integrasjon/dokumentproduksjon-klient/pom.xml index b1995bfcb..a96229d92 100644 --- a/integrasjon/dokumentproduksjon-klient/pom.xml +++ b/integrasjon/dokumentproduksjon-klient/pom.xml @@ -18,9 +18,8 @@ felles-integrasjon-webservice - no.nav.tjenester.fim - nav-fim-dokumentproduksjon-v2-tjenestespesifikasjon - jaxws + no.nav.tjenestespesifikasjoner + dokumentproduksjon-v2-tjenestespesifikasjon diff --git a/integrasjon/jms/pom.xml b/integrasjon/jms/pom.xml index d8c2dd208..cc9bbe8c8 100644 --- a/integrasjon/jms/pom.xml +++ b/integrasjon/jms/pom.xml @@ -24,6 +24,7 @@ javax.jms javax.jms-api + com.ibm.mq com.ibm.mq.allclient diff --git a/integrasjon/pom.xml b/integrasjon/pom.xml index ea04ea250..b020cd3c9 100644 --- a/integrasjon/pom.xml +++ b/integrasjon/pom.xml @@ -53,8 +53,7 @@ - - 8.0.0.6 + 9.1.3.0 2.0.1 @@ -334,18 +333,15 @@ - no.nav.meldinger.virksomhet - nav-virksomhet-hendelsehandterer-behandlingstatus-v1-meldingsdefinisjon - ${sob.melding.version} - jaxb + no.nav.tjenestespesifikasjoner + tmp-nav-fim-hendelse-v1 + 1.2019.08.12-12.12-4258f3dded02 - - no.nav.tjenester + no.nav.tjenestespesifikasjoner nav-tjenestespesifikasjoner-felles-adapter - ${felles.adapter.version} + ${tjenestespesifikasjoner.version} diff --git a/integrasjon/sakogbehandling-klient/pom.xml b/integrasjon/sakogbehandling-klient/pom.xml index 12a484543..279d57c4b 100644 --- a/integrasjon/sakogbehandling-klient/pom.xml +++ b/integrasjon/sakogbehandling-klient/pom.xml @@ -18,9 +18,8 @@ felles-integrasjon-webservice - no.nav.meldinger.virksomhet - nav-virksomhet-hendelsehandterer-behandlingstatus-v1-meldingsdefinisjon - jaxb + no.nav.tjenestespesifikasjoner + tmp-nav-fim-hendelse-v1 no.nav.foreldrepenger.felles.integrasjon diff --git a/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClient.java b/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClient.java index d5dd0fd27..be86c507d 100644 --- a/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClient.java +++ b/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClient.java @@ -1,7 +1,7 @@ package no.nav.vedtak.felles.integrasjon.sakogbehandling; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingAvsluttet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingOpprettet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingAvsluttet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingOpprettet; import no.nav.vedtak.felles.integrasjon.jms.QueueSelftest; public interface SakOgBehandlingClient extends QueueSelftest { diff --git a/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImpl.java b/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImpl.java index d6b0aa2fe..1ec8cf3b3 100644 --- a/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImpl.java +++ b/integrasjon/sakogbehandling-klient/src/main/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImpl.java @@ -8,9 +8,9 @@ import javax.jms.Queue; import javax.xml.bind.JAXBException; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingAvsluttet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingOpprettet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.ObjectFactory; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingAvsluttet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingOpprettet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.ObjectFactory; import no.nav.vedtak.felles.integrasjon.felles.ws.JaxbHelper; import no.nav.vedtak.felles.integrasjon.jms.ExternalQueueProducer; import no.nav.vedtak.felles.integrasjon.jms.JmsKonfig; @@ -22,6 +22,7 @@ class SakOgBehandlingClientImpl extends ExternalQueueProducer implements SakOgBe public SakOgBehandlingClientImpl() { // CDI + } @Inject diff --git a/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/NoopSakOgBehandlingClient.java b/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/NoopSakOgBehandlingClient.java index b600b1491..ed02ea028 100644 --- a/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/NoopSakOgBehandlingClient.java +++ b/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/NoopSakOgBehandlingClient.java @@ -5,19 +5,18 @@ import javax.enterprise.inject.Alternative; import javax.jms.JMSException; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingAvsluttet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingOpprettet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingAvsluttet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingOpprettet; - @ApplicationScoped @Alternative @Priority(1) public class NoopSakOgBehandlingClient implements SakOgBehandlingClient { protected final Logger log = LoggerFactory.getLogger(NoopSakOgBehandlingClient.class); - - + + @Override public void sendBehandlingOpprettet(BehandlingOpprettet behandlingOpprettet) { log.info("Invoked: sendBehandlingOpprettet"); diff --git a/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImplTest.java b/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImplTest.java index 94210e6ef..3e15b0f8d 100644 --- a/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImplTest.java +++ b/integrasjon/sakogbehandling-klient/src/test/java/no/nav/vedtak/felles/integrasjon/sakogbehandling/SakOgBehandlingClientImplTest.java @@ -16,17 +16,15 @@ import javax.jms.Queue; import javax.xml.datatype.DatatypeConfigurationException; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingAvsluttet; +import no.nav.melding.virksomhet.hendelse.behandling.status.v1.BehandlingOpprettet; +import no.nav.melding.virksomhet.hendelse.behandling.v1.Avslutningsstatuser; +import no.nav.melding.virksomhet.hendelse.behandling.v1.Behandlingstyper; +import no.nav.melding.virksomhet.hendelse.behandling.v1.Temaer; +import no.nav.melding.virksomhet.hendelse.v1.ApplikasjonIDer; import org.junit.Before; import org.junit.Test; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Aktoer; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Applikasjoner; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Avslutningsstatuser; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingAvsluttet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.BehandlingOpprettet; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Behandlingstemaer; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Behandlingstyper; -import no.nav.melding.virksomhet.behandlingsstatus.hendelsehandterer.v1.hendelseshandtererbehandlingsstatus.Sakstemaer; import no.nav.vedtak.felles.integrasjon.felles.ws.DateUtil; import no.nav.vedtak.felles.testutilities.Whitebox; import no.nav.vedtak.log.mdc.MDCOperations; @@ -125,7 +123,7 @@ private BehandlingAvsluttet lagBehandlingAvsluttet() { behandlingAvsluttet.setHendelsesId("callid_123456"); - Applikasjoner applikasjoner = new Applikasjoner(); + ApplikasjonIDer applikasjoner = new ApplikasjonIDer(); applikasjoner.setValue("APPLIKASJON_ID"); behandlingAvsluttet.setHendelsesprodusentREF(applikasjoner); @@ -133,19 +131,17 @@ private BehandlingAvsluttet lagBehandlingAvsluttet() { avslutningsstatuser.setValue("OK"); behandlingAvsluttet.setAvslutningsstatus(avslutningsstatuser); - behandlingAvsluttet.setAnsvarligEnhetREF("4833"); + behandlingAvsluttet.setApplikasjonSakREF("4833"); Behandlingstyper behandlingstype = new Behandlingstyper(); behandlingstype.setValue("behandlingstype"); behandlingAvsluttet.setBehandlingstype(behandlingstype); - Sakstemaer sakstema = new Sakstemaer(); + Temaer sakstema = new Temaer(); sakstema.setValue("sakstema"); - behandlingAvsluttet.setSakstema(sakstema); + behandlingAvsluttet.setTema(sakstema); - Aktoer aktoer = new Aktoer(); - aktoer.setAktoerId("123"); - behandlingAvsluttet.getAktoerREF().add(aktoer); + behandlingAvsluttet.getAktoerREF().add("123"); return behandlingAvsluttet; } @@ -153,13 +149,13 @@ private BehandlingAvsluttet lagBehandlingAvsluttet() { private BehandlingOpprettet lagBehandlingOpprettet() throws DatatypeConfigurationException { BehandlingOpprettet behandlingOpprettet = new BehandlingOpprettet(); - Behandlingstemaer behandlingstema = new Behandlingstemaer(); + Temaer behandlingstema = new Temaer(); behandlingstema.setValue("behandlingstema"); - behandlingOpprettet.setBehandlingstema(behandlingstema); + behandlingOpprettet.setTema(behandlingstema); behandlingOpprettet.setHendelsesId("hendelsesId"); - Applikasjoner applikasjoner = new Applikasjoner(); + ApplikasjonIDer applikasjoner = new ApplikasjonIDer(); applikasjoner.setValue("applikasjoner"); behandlingOpprettet.setHendelsesprodusentREF(applikasjoner); @@ -171,12 +167,10 @@ private BehandlingOpprettet lagBehandlingOpprettet() throws DatatypeConfiguratio behandlingstype.setValue("behandlingstype"); behandlingOpprettet.setBehandlingstype(behandlingstype); - Sakstemaer sakstema = new Sakstemaer(); + Temaer sakstema = new Temaer(); sakstema.setValue("sakstema"); - Aktoer aktoer = new Aktoer(); - aktoer.setAktoerId("123"); - behandlingOpprettet.getAktoerREF().add(aktoer); + behandlingOpprettet.getAktoerREF().add("123"); return behandlingOpprettet; } diff --git a/pom.xml b/pom.xml index 555607c2d..e0a5a6cf4 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,12 @@ -Xdoclint:none + + scm:git:https://github.com/navikt/fp-felles.git + scm:git:https://github.com/navikt/fp-felles.git + https://github.com/navikt/fp-felles.git + + @@ -319,17 +325,35 @@ + + + + publishAdeo + + true + + + + repo.adeo.no-releases + https://repo.adeo.no/repository/maven-releases + + + repo.adeo.no-snapshots + https://repo.adeo.no/repository/maven-snapshots + false + + + + + publishGithub + + + github + Github navikt Maven Packages + https://maven.pkg.github.com/navikt + + + - - - repo.adeo.no-releases - https://repo.adeo.no/repository/maven-releases - - - repo.adeo.no-snapshots - https://repo.adeo.no/repository/maven-snapshots - false - - diff --git a/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/ProsessTaskRepositoryImpl.java b/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/ProsessTaskRepositoryImpl.java index d3b587357..1fe466993 100644 --- a/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/ProsessTaskRepositoryImpl.java +++ b/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/ProsessTaskRepositoryImpl.java @@ -16,10 +16,7 @@ import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.Query; -import javax.persistence.TypedQuery; +import javax.persistence.*; import org.hibernate.jpa.QueryHints; import org.hibernate.query.NativeQuery; @@ -52,7 +49,7 @@ public ProsessTaskRepositoryImpl(EntityManager entityManager, ProsessTaskEventPubliserer eventPubliserer) { // for kompatibilitet og forenkling av tester this(entityManager, eventPubliserer, - eventPubliserer == null ? null : new HandleProsessTaskLifecycleObserver() /* init kun dersom eventer lyttes på. */ ); + eventPubliserer == null ? null : new HandleProsessTaskLifecycleObserver() /* init kun dersom eventer lyttes på. */); } @Inject @@ -113,14 +110,16 @@ public String lagre(ProsessTaskData task) { return lagre(gruppe); } - /** Lagre og returner id. */ + /** + * Lagre og returner id. + */ protected Long doLagreTask(ProsessTaskData task) { ProsessTaskEntitet pte; if (task.getId() != null) { ProsessTaskStatus nyStatus = task.getStatus(); pte = entityManager.find(ProsessTaskEntitet.class, task.getId()); ProsessTaskStatus status = pte.getStatus(); - + pte.kopierFraEksisterende(task); entityManager.persist(pte); entityManager.flush(); @@ -144,9 +143,9 @@ protected Long doLagreTask(ProsessTaskData task) { @Override public ProsessTaskData finn(Long id) { ProsessTaskEntitet prosessTaskEntitet = this.entityManager.createQuery("from ProsessTaskEntitet pt where pt.id=:id", ProsessTaskEntitet.class) - .setParameter("id", id) - .setHint(QueryHints.HINT_CACHE_MODE, "IGNORE") - .getSingleResult(); + .setParameter("id", id) + .setHint(QueryHints.HINT_CACHE_MODE, "IGNORE") + .getSingleResult(); return prosessTaskEntitet == null ? null : prosessTaskEntitet.tilProsessTask(); } @@ -236,8 +235,8 @@ public List finnUferdigeBatchTasks(String task) { @Override public Map finnStatusForBatchTasks() { TypedQuery query = entityManager - .createQuery("SELECT ptt from ProsessTaskType ptt " + - "where ptt.cronExpression is not null", ProsessTaskType.class); // NOSONAR $NON-NLS-1$ + .createQuery("SELECT ptt from ProsessTaskType ptt " + + "where ptt.cronExpression is not null", ProsessTaskType.class); // NOSONAR $NON-NLS-1$ List resultList = query.getResultList(); Map result = new HashMap<>(); @@ -249,13 +248,13 @@ public Map finnStatusForBatchTasks() { private ProsessTaskEntitet finnStatusForTaskType(ProsessTaskType taskType) { TypedQuery query = entityManager - .createQuery("SELECT pt from ProsessTaskEntitet pt " + - "where pt.taskType = :task ORDER BY pt.nesteKjøringEtter DESC", ProsessTaskEntitet.class) - .setParameter("task", taskType.getKode()) - .setMaxResults(1); // NOSONAR $NON-NLS-1$ + .createQuery("SELECT pt from ProsessTaskEntitet pt " + + "where pt.taskType = :task ORDER BY pt.nesteKjøringEtter DESC", ProsessTaskEntitet.class) + .setParameter("task", taskType.getKode()) + .setMaxResults(1); // NOSONAR $NON-NLS-1$ return query.getResultList().stream() - .findFirst() - .orElse(null); + .findFirst() + .orElse(null); } @Override @@ -332,11 +331,25 @@ private List tilProsessTask(List resultList * Lager enkelt unik gruppenavn basert på en sekvens. * Aller helst skulle vært UUID type 3? */ - String getUniktProsessTaskGruppeNavn(EntityManager entityManager) throws SQLException { - Query query = entityManager.createNativeQuery("SELECT seq_prosess_task_gruppe.nextval FROM dual"); //$NON-NLS-1$ + public static String getUniktProsessTaskGruppeNavn(EntityManager entityManager) throws SQLException { + String sqlString; + if (isPostgres(entityManager)) { + sqlString = "SELECT nextval('seq_prosess_task_gruppe')"; + } else { + sqlString = "SELECT seq_prosess_task_gruppe.nextval FROM dual"; + } + Query query = entityManager.createNativeQuery(sqlString); //$NON-NLS-1$ return String.valueOf(query.getSingleResult()); } + public static Boolean isPostgres(EntityManager entityManager) { + EntityManagerFactory emf = entityManager.getEntityManagerFactory(); + Map emfProperties = emf.getProperties(); + // System.out.println("properties" + emfProperties.toString()); + String driverClass = (String) emfProperties.get("hibernate.dialect"); + return driverClass.equals("org.hibernate.dialect.PostgreSQLDialect"); + } + void flushAndClear() { entityManager.flush(); entityManager.clear(); diff --git a/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/RunTask.java b/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/RunTask.java index 15d4aa7e0..dd8842ceb 100644 --- a/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/RunTask.java +++ b/prosesstask/src/main/java/no/nav/vedtak/felles/prosesstask/impl/RunTask.java @@ -48,7 +48,7 @@ @AktiverContextOgTransaksjon public class RunTask { private static final Logger log = LoggerFactory.getLogger(RunTask.class); - + private ProsessTaskEventPubliserer eventPubliserer; private TaskManagerRepositoryImpl taskManagerRepository; private Instance feilhåndteringalgoritmer; @@ -77,14 +77,14 @@ public void doRun(RunTaskInfo taskInfo) { * rollback av hele transaksjonen (eks {@link EntityNotFoundException} delegeres oppover). Gjelder også totalt transiente feil (eks. * JDBCConnectionException) * - * @throws SQLException - dersom ikke kan ta savepoint + * @throws SQLException - dersom ikke kan ta savepoint * @throws PersistenceException dersom transaksjoner er markert for total rollback (dvs. savepoint vil ikke virke) */ protected void runTaskAndUpdateStatus(Connection conn, ProsessTaskEntitet pte, PickAndRunTask pickAndRun) - throws SQLException { + throws SQLException { String name = pte.getTaskName(); pickAndRun.markerTaskUnderArbeid(pte); - + // set up a savepoint to rollback to in case of failure Savepoint savepoint = conn.setSavepoint(); @@ -106,9 +106,9 @@ protected void runTaskAndUpdateStatus(Connection conn, ProsessTaskEntitet pte, P } } catch (JDBCConnectionException - | SQLTransientException - | SQLNonTransientConnectionException - | SQLRecoverableException e) { + | SQLTransientException + | SQLNonTransientConnectionException + | SQLRecoverableException e) { // vil kun logges pickAndRun.getFeilOgStatushåndterer().handleTransientAndRecoverableException(e); @@ -213,17 +213,18 @@ void markerTaskUnderArbeid(ProsessTaskEntitet pte) { getEntityManager().persist(pte); getEntityManager().flush(); } - + // regner ut neste kjøretid for tasks som kan repeteres (har CronExpression) void planleggNesteKjøring(ProsessTaskEntitet pte) throws SQLException { ProsessTaskType taskType = taskManagerRepository.getTaskType(getTaskInfo().getTaskType()); + String gruppe = ProsessTaskRepositoryImpl.getUniktProsessTaskGruppeNavn(taskManagerRepository.getEntityManager()); if (taskType.getErGjentagende()) { ProsessTaskData data = new ProsessTaskData(pte.getTaskName()); data.setStatus(ProsessTaskStatus.KLAR); LocalDateTime now = FPDateUtil.nå(); LocalDateTime nesteKjøring = new CronExpression(taskType.getCronExpression()).neste(now); data.setNesteKjøringEtter(nesteKjøring); - data.setGruppe(getUniktProsessTaskGruppeNavn()); // <- ny gruppe + data.setGruppe(gruppe); // <- ny gruppe data.setSekvens(pte.getSekvens()); data.setProperties(pte.getProperties()); ProsessTaskEntitet nyPte = new ProsessTaskEntitet().kopierFraNy(data); @@ -239,15 +240,6 @@ void markerTaskUnderArbeid(ProsessTaskEntitet pte) { } } - /** - * Lager enkelt unik gruppenavn basert på en sekvens. - * Aller helst skulle vært UUID type 3? - */ - private String getUniktProsessTaskGruppeNavn() throws SQLException { - Query query = getEntityManager().createNativeQuery("SELECT seq_prosess_task_gruppe.nextval from dual"); //$NON-NLS-1$ - return String.valueOf(query.getSingleResult()); - } - void dispatchWork(ProsessTaskEntitet pte) throws Exception { // NOSONAR ProsessTaskData taskData = pte.tilProsessTask(); taskInfo.getTaskDispatcher().dispatch(taskData); @@ -271,9 +263,9 @@ public void execute(Connection conn) throws SQLException { runTaskAndUpdateStatus(conn, pte.get(), pickAndRun); } } catch (JDBCConnectionException - | SQLTransientException - | SQLNonTransientConnectionException - | SQLRecoverableException e) { + | SQLTransientException + | SQLNonTransientConnectionException + | SQLRecoverableException e) { // vil kun logges pickAndRun.getFeilOgStatushåndterer().handleTransientAndRecoverableException(e); @@ -290,7 +282,7 @@ public void execute(Connection conn) throws SQLException { } @SuppressWarnings("resource") // skal ikke lukke session her - Session session = em.unwrap(Session.class); + Session session = em.unwrap(Session.class); session.doWork(pullSingleTask); diff --git a/prosesstask/src/test/resources/META-INF/persistence.xml b/prosesstask/src/test/resources/META-INF/persistence.xml index 2eb13aece..069467750 100644 --- a/prosesstask/src/test/resources/META-INF/persistence.xml +++ b/prosesstask/src/test/resources/META-INF/persistence.xml @@ -9,7 +9,7 @@ jdbc/defaultDS - + diff --git a/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_01__Baseline_prosesstask.sql b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_01__Baseline_prosesstask.sql index af836c357..d40b9c86b 100644 --- a/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_01__Baseline_prosesstask.sql +++ b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_01__Baseline_prosesstask.sql @@ -2,189 +2,230 @@ -- DDL for Prosesstask spesifikt for VL-fordeling -- Viktig å merke seg her at alt av DDL relatert til prosesstask-biten er ikke eid av dette prosjektet, DDL eies -- av no.nav.vedtak.felles:felles-behandlingsprosess. Endringer i DDL skal gjøres i prosjektet som eier DDLen. +-- Kopiert fra: https://github.com/navikt/fp-abakus/blob/master/migreringer/src/main/resources/db/migration/defaultDS/1.0/V1.1_08__Baseline_prosesstask.sql -------------------------------------------------------- -CREATE TABLE "PROSESS_TASK" +CREATE TABLE PROSESS_TASK ( - "ID" NUMBER(19, 0), - "TASK_TYPE" VARCHAR2(200 CHAR), - "PRIORITET" NUMBER(3, 0) DEFAULT 0, - "STATUS" VARCHAR2(20 CHAR) DEFAULT 'KLAR', - "TASK_PARAMETERE" VARCHAR2(4000 CHAR), - "TASK_PAYLOAD" CLOB, - "TASK_GRUPPE" VARCHAR2(250 CHAR), - "TASK_SEKVENS" VARCHAR2(100 CHAR) DEFAULT '1', - "NESTE_KJOERING_ETTER" TIMESTAMP(0) DEFAULT current_timestamp, - "FEILEDE_FORSOEK" NUMBER(5, 0) DEFAULT 0, - "SISTE_KJOERING_PLUKK_TS" TIMESTAMP(6), - "SISTE_KJOERING_TS" TIMESTAMP(6), - "SISTE_KJOERING_SLUTT_TS" TIMESTAMP(6), - "SISTE_KJOERING_FEIL_KODE" VARCHAR2(50 CHAR), - "SISTE_KJOERING_FEIL_TEKST" CLOB, - "SISTE_KJOERING_SERVER" VARCHAR2(50 CHAR), - "OPPRETTET_AV" VARCHAR2(20 CHAR) DEFAULT 'VL', - "OPPRETTET_TID" TIMESTAMP(6) DEFAULT systimestamp NOT NULL, - "BLOKKERT_AV" NUMBER(19, 0) NULL, - "VERSJON" NUMBER(19, 0) DEFAULT 0 -) ENABLE ROW MOVEMENT; - -COMMENT ON COLUMN "PROSESS_TASK"."ID" IS 'Primary Key'; -COMMENT ON COLUMN "PROSESS_TASK"."TASK_TYPE" IS 'navn på task. Brukes til å matche riktig implementasjon'; -COMMENT ON COLUMN "PROSESS_TASK"."PRIORITET" IS 'prioritet på task. Høyere tall har høyere prioritet'; -COMMENT ON COLUMN "PROSESS_TASK"."STATUS" IS 'status på task: KLAR, NYTT_FORSOEK, FEILET, VENTER_SVAR, FERDIG'; -COMMENT ON COLUMN "PROSESS_TASK"."TASK_PARAMETERE" IS 'parametere angitt for en task'; -COMMENT ON COLUMN "PROSESS_TASK"."TASK_PAYLOAD" IS 'inputdata for en task'; -COMMENT ON COLUMN "PROSESS_TASK"."TASK_GRUPPE" IS 'angir en unik id som grupperer flere '; -COMMENT ON COLUMN "PROSESS_TASK"."TASK_SEKVENS" IS 'angir rekkefølge på task innenfor en gruppe '; -COMMENT ON COLUMN "PROSESS_TASK"."NESTE_KJOERING_ETTER" IS 'tasken skal ikke kjøeres før tidspunkt er passert'; -COMMENT ON COLUMN "PROSESS_TASK"."FEILEDE_FORSOEK" IS 'antall feilede forsøk'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_PLUKK_TS" IS 'siste gang tasken ble forsøkt plukket (klargjort til kjøring)'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_TS" IS 'siste gang tasken ble forsøkt kjørt (før kjøring)'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_SLUTT_TS" IS 'tidsstempel siste gang tasken ble kjørt (etter kjøring) og fikk ny status'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_FEIL_KODE" IS 'siste feilkode tasken fikk'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_FEIL_TEKST" IS 'siste feil tasken fikk'; -COMMENT ON COLUMN "PROSESS_TASK"."SISTE_KJOERING_SERVER" IS 'navn på node som sist kjørte en task (server@pid)'; -COMMENT ON COLUMN "PROSESS_TASK"."VERSJON" IS 'angir versjon for optimistisk låsing'; -COMMENT ON COLUMN "PROSESS_TASK"."BLOKKERT_AV" IS 'Id til ProsessTask som blokkerer kjøring av denne (når status=VETO)'; -COMMENT ON TABLE "PROSESS_TASK" IS 'Inneholder tasks som skal kjøres i bakgrunnen'; + ID NUMERIC, + TASK_TYPE VARCHAR(50), + PRIORITET NUMERIC(3, 0) DEFAULT 0, + STATUS VARCHAR(20) DEFAULT 'KLAR', + TASK_PARAMETERE VARCHAR(4000), + TASK_PAYLOAD TEXT, + TASK_GRUPPE VARCHAR(250), + TASK_SEKVENS VARCHAR(100) DEFAULT '1', + PARTITION_KEY VARCHAR(4) DEFAULT to_char(current_date, 'MM'), + NESTE_KJOERING_ETTER TIMESTAMP(0) DEFAULT current_timestamp, + FEILEDE_FORSOEK NUMERIC(5, 0) DEFAULT 0, + SISTE_KJOERING_TS TIMESTAMP(6), + SISTE_KJOERING_FEIL_KODE VARCHAR(50), + SISTE_KJOERING_FEIL_TEKST TEXT, + SISTE_KJOERING_SERVER VARCHAR(50), + OPPRETTET_AV VARCHAR(20) DEFAULT 'VL', + OPPRETTET_TID TIMESTAMP(6) DEFAULT current_timestamp NOT NULL, + BLOKKERT_AV NUMERIC NULL, + VERSJON NUMERIC DEFAULT 0 +) PARTITION BY LIST (STATUS); + +COMMENT ON COLUMN PROSESS_TASK.ID IS 'Primary Key'; +COMMENT ON COLUMN PROSESS_TASK.TASK_TYPE IS 'navn på task. Brukes til å matche riktig implementasjon'; +COMMENT ON COLUMN PROSESS_TASK.PRIORITET IS 'prioritet på task. Høyere tall har høyere prioritet'; +COMMENT ON COLUMN PROSESS_TASK.STATUS IS 'status på task: KLAR, NYTT_FORSOEK, FEILET, VENTER_SVAR, FERDIG'; +COMMENT ON COLUMN PROSESS_TASK.TASK_PARAMETERE IS 'parametere angitt for en task'; +COMMENT ON COLUMN PROSESS_TASK.TASK_PAYLOAD IS 'inputdata for en task'; +COMMENT ON COLUMN PROSESS_TASK.TASK_GRUPPE IS 'angir en unik id som grupperer flere '; +COMMENT ON COLUMN PROSESS_TASK.TASK_SEKVENS IS 'angir rekkefølge på task innenfor en gruppe '; +COMMENT ON COLUMN PROSESS_TASK.NESTE_KJOERING_ETTER IS 'tasken skal ikke kjøeres før tidspunkt er passert'; +COMMENT ON COLUMN PROSESS_TASK.FEILEDE_FORSOEK IS 'antall feilede forsøk'; +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_TS IS 'siste gang tasken ble forsøkt kjørt'; +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_FEIL_KODE IS 'siste feilkode tasken fikk'; +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_FEIL_TEKST IS 'siste feil tasken fikk'; +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_SERVER IS 'navn på node som sist kjørte en task (server@pid)'; +COMMENT ON COLUMN PROSESS_TASK.VERSJON IS 'angir versjon for optimistisk låsing'; +COMMENT ON COLUMN PROSESS_TASK.BLOKKERT_AV IS 'Id til ProsessTask som blokkerer kjøring av denne (når status=VETO)'; +COMMENT ON TABLE PROSESS_TASK IS 'Inneholder tasks som skal kjøres i bakgrunnen'; -------------------------------------------------------- -- DDL for Table PROSESS_TASK_FEILHAND -------------------------------------------------------- -CREATE TABLE "PROSESS_TASK_FEILHAND" +CREATE TABLE PROSESS_TASK_FEILHAND ( - "KODE" VARCHAR2(20 CHAR), - "NAVN" VARCHAR2(50 CHAR), - "BESKRIVELSE" VARCHAR2(2000 CHAR), - "OPPRETTET_AV" VARCHAR2(20 CHAR) DEFAULT 'VL', - "OPPRETTET_TID" TIMESTAMP(3) DEFAULT systimestamp, - "ENDRET_AV" VARCHAR2(20 CHAR), - "ENDRET_TID" TIMESTAMP(3), - "INPUT_VARIABEL1" NUMBER, - "INPUT_VARIABEL2" NUMBER + KODE VARCHAR(50), + NAVN VARCHAR(50), + BESKRIVELSE VARCHAR(2000), + OPPRETTET_AV VARCHAR(20) DEFAULT 'VL', + OPPRETTET_TID TIMESTAMP(3) DEFAULT current_timestamp, + ENDRET_AV VARCHAR(20), + ENDRET_TID TIMESTAMP(3), + INPUT_VARIABEL1 NUMERIC, + INPUT_VARIABEL2 NUMERIC ); -COMMENT ON COLUMN "PROSESS_TASK_FEILHAND"."KODE" IS 'Kodeverk Primary Key'; -COMMENT ON COLUMN "PROSESS_TASK_FEILHAND"."NAVN" IS 'Lesbart navn på type feilhåndtering brukt i prosesstask'; -COMMENT ON COLUMN "PROSESS_TASK_FEILHAND"."BESKRIVELSE" IS 'Utdypende beskrivelse av koden'; -COMMENT ON TABLE "PROSESS_TASK_FEILHAND" IS 'Kodetabell for feilhåndterings-metoder. For eksempel antall ganger å prøve på nytt og til hvilke tidspunkt'; +COMMENT ON COLUMN PROSESS_TASK_FEILHAND.KODE IS 'Kodeverk Primary Key'; +COMMENT ON COLUMN PROSESS_TASK_FEILHAND.NAVN IS 'Lesbart navn på type feilhåndtering brukt i prosesstask'; +COMMENT ON COLUMN PROSESS_TASK_FEILHAND.BESKRIVELSE IS 'Utdypende beskrivelse av koden'; +COMMENT ON COLUMN PROSESS_TASK_FEILHAND.INPUT_VARIABEL1 IS 'Variabel til algorithmen'; +COMMENT ON COLUMN PROSESS_TASK_FEILHAND.INPUT_VARIABEL2 IS 'Variabel til algorithmen'; +COMMENT ON TABLE PROSESS_TASK_FEILHAND IS 'Kodetabell for feilhåndterings-metoder. For eksempel antall ganger å prøve på nytt og til hvilke tidspunkt'; -------------------------------------------------------- -- DDL for Table PROSESS_TASK_TYPE -------------------------------------------------------- -CREATE TABLE "PROSESS_TASK_TYPE" +CREATE TABLE PROSESS_TASK_TYPE ( - "KODE" VARCHAR2(50 CHAR), - "NAVN" VARCHAR2(50 CHAR), - "FEIL_MAKS_FORSOEK" NUMBER(10, 0) DEFAULT 1, - "FEIL_SEK_MELLOM_FORSOEK" NUMBER(10, 0) DEFAULT 30, - "FEILHANDTERING_ALGORITME" VARCHAR2(200 CHAR) DEFAULT 'DEFAULT', - "BESKRIVELSE" VARCHAR2(2000 CHAR), - "OPPRETTET_AV" VARCHAR2(20 CHAR) DEFAULT 'VL', - "OPPRETTET_TID" TIMESTAMP(3) DEFAULT systimestamp, - "ENDRET_AV" VARCHAR2(20 CHAR), - "ENDRET_TID" TIMESTAMP(3) + KODE VARCHAR(50), + NAVN VARCHAR(50), + FEIL_MAKS_FORSOEK NUMERIC(10, 0) DEFAULT 1, + FEIL_SEK_MELLOM_FORSOEK NUMERIC(10, 0) DEFAULT 30, + FEILHANDTERING_ALGORITME VARCHAR(50) DEFAULT 'DEFAULT', + BESKRIVELSE VARCHAR(2000), + OPPRETTET_AV VARCHAR(20) DEFAULT 'VL', + OPPRETTET_TID TIMESTAMP(3) DEFAULT current_timestamp, + ENDRET_AV VARCHAR(20), + ENDRET_TID TIMESTAMP(3) ); -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."KODE" IS 'Kodeverk Primary Key'; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."NAVN" IS 'Lesbart navn på prosesstasktype'; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."FEIL_MAKS_FORSOEK" IS 'MISSING COLUMN COMMENT'; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."FEIL_SEK_MELLOM_FORSOEK" IS 'MISSING COLUMN COMMENT'; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."FEILHANDTERING_ALGORITME" IS 'FK: PROSESS_TASK_FEILHAND'; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."BESKRIVELSE" IS 'Utdypende beskrivelse av koden'; -COMMENT ON TABLE "PROSESS_TASK_TYPE" IS 'Kodetabell for typer prosesser med beskrivelse og informasjon om hvilken feilhåndteringen som skal benyttes'; - -CREATE INDEX "IDX_PROSESS_TASK_2" -ON "PROSESS_TASK" ("TASK_TYPE"); -CREATE INDEX "IDX_PROSESS_TASK_3" -ON "PROSESS_TASK" ("NESTE_KJOERING_ETTER"); -CREATE INDEX "IDX_PROSESS_TASK_5" -ON "PROSESS_TASK" ("TASK_GRUPPE"); -CREATE INDEX "IDX_PROSESS_TASK_1" -ON "PROSESS_TASK" ("STATUS"); -CREATE UNIQUE INDEX "PK_PROSESS_TASK" -ON "PROSESS_TASK" ("ID"); -CREATE UNIQUE INDEX "PK_PROSESS_TASK_FEILHAND" -ON "PROSESS_TASK_FEILHAND" ("KODE"); -CREATE UNIQUE INDEX "PK_PROSESS_TASK_TYPE" -ON "PROSESS_TASK_TYPE" ("KODE"); -CREATE INDEX "IDX_PROSESS_TASK_TYPE_1" -ON "PROSESS_TASK_TYPE" ("FEILHANDTERING_ALGORITME"); -CREATE INDEX "IDX_PROSESS_TASK_6" ON "PROSESS_TASK" ("BLOKKERT_AV") ; +COMMENT ON COLUMN PROSESS_TASK_TYPE.KODE IS 'Kodeverk Primary Key'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.NAVN IS 'Lesbart navn på prosesstasktype'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.FEIL_MAKS_FORSOEK IS 'MISSING COLUMN COMMENT'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.FEIL_SEK_MELLOM_FORSOEK IS 'MISSING COLUMN COMMENT'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.FEILHANDTERING_ALGORITME IS 'FK: PROSESS_TASK_FEILHAND'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.BESKRIVELSE IS 'Utdypende beskrivelse av koden'; +COMMENT ON TABLE PROSESS_TASK_TYPE IS 'Kodetabell for typer prosesser med beskrivelse og informasjon om hvilken feilhåndteringen som skal benyttes'; + +CREATE INDEX IDX_PROSESS_TASK_2 + ON PROSESS_TASK (TASK_TYPE); +CREATE INDEX IDX_PROSESS_TASK_3 + ON PROSESS_TASK (NESTE_KJOERING_ETTER); +CREATE INDEX IDX_PROSESS_TASK_5 + ON PROSESS_TASK (TASK_GRUPPE); +CREATE INDEX IDX_PROSESS_TASK_1 + ON PROSESS_TASK (STATUS); +CREATE INDEX IDX_PROSESS_TASK_4 + ON PROSESS_TASK (ID); +CREATE INDEX IDX_PROSESS_TASK_7 + ON PROSESS_TASK (PARTITION_KEY); +CREATE UNIQUE INDEX UIDX_PROSESS_TASK + ON PROSESS_TASK (ID, STATUS, PARTITION_KEY); +CREATE UNIQUE INDEX UIDX_PROSESS_TASK_FEILHAND + ON PROSESS_TASK_FEILHAND (KODE); +CREATE UNIQUE INDEX UIDX_PROSESS_TASK_TYPE + ON PROSESS_TASK_TYPE (KODE); +CREATE INDEX IDX_PROSESS_TASK_TYPE_1 + ON PROSESS_TASK_TYPE (FEILHANDTERING_ALGORITME); +CREATE INDEX IDX_PROSESS_TASK_6 ON PROSESS_TASK (BLOKKERT_AV); -------------------------------------------------------- -- Constraints for Table PROSESS_TASK -------------------------------------------------------- - -ALTER TABLE "PROSESS_TASK" - ADD CONSTRAINT "PK_PROSESS_TASK" PRIMARY KEY ("ID") ENABLE; -ALTER TABLE "PROSESS_TASK" - ADD CONSTRAINT "CHK_PROSESS_TASK_STATUS" CHECK (status IN - ('KLAR', 'FEILET', 'VENTER_SVAR', 'SUSPENDERT', 'FERDIG')) ENABLE; -ALTER TABLE "PROSESS_TASK" - MODIFY ("VERSJON" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK" - MODIFY ("TASK_SEKVENS" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK" - MODIFY ("STATUS" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK" - MODIFY ("PRIORITET" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK" - MODIFY ("TASK_TYPE" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK" - MODIFY ("ID" NOT NULL ENABLE); +ALTER TABLE PROSESS_TASK + ADD CONSTRAINT PK_PROSESS_TASK PRIMARY KEY (ID, STATUS, PARTITION_KEY); +ALTER TABLE PROSESS_TASK + ADD CONSTRAINT CHK_PROSESS_TASK_STATUS CHECK (STATUS IN + ('KLAR', 'FEILET', 'VENTER_SVAR', 'SUSPENDERT', 'FERDIG')); +ALTER TABLE PROSESS_TASK + ALTER COLUMN VERSJON SET NOT NULL; +ALTER TABLE PROSESS_TASK + ALTER COLUMN TASK_SEKVENS SET NOT NULL; +ALTER TABLE PROSESS_TASK + ALTER COLUMN STATUS SET NOT NULL; +ALTER TABLE PROSESS_TASK + ALTER COLUMN PRIORITET SET NOT NULL; +ALTER TABLE PROSESS_TASK + ALTER COLUMN TASK_TYPE SET NOT NULL; +ALTER TABLE PROSESS_TASK + ALTER COLUMN ID SET NOT NULL; -------------------------------------------------------- -- Constraints for Table PROSESS_TASK_FEILHAND -------------------------------------------------------- - -ALTER TABLE "PROSESS_TASK_FEILHAND" - ADD CONSTRAINT "PK_PROSESS_TASK_FEILHAND" PRIMARY KEY ("KODE") ENABLE; -ALTER TABLE "PROSESS_TASK_FEILHAND" - MODIFY ("OPPRETTET_TID" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_FEILHAND" - MODIFY ("OPPRETTET_AV" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_FEILHAND" - MODIFY ("NAVN" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_FEILHAND" - MODIFY ("KODE" NOT NULL ENABLE); +ALTER TABLE PROSESS_TASK_FEILHAND + ADD CONSTRAINT PK_PROSESS_TASK_FEILHAND PRIMARY KEY (KODE); +ALTER TABLE PROSESS_TASK_FEILHAND + ALTER COLUMN OPPRETTET_TID SET NOT NULL; +ALTER TABLE PROSESS_TASK_FEILHAND + ALTER COLUMN OPPRETTET_AV SET NOT NULL; +ALTER TABLE PROSESS_TASK_FEILHAND + ALTER COLUMN NAVN SET NOT NULL; +ALTER TABLE PROSESS_TASK_FEILHAND + ALTER COLUMN KODE SET NOT NULL; -------------------------------------------------------- -- Constraints for Table PROSESS_TASK_TYPE -------------------------------------------------------- -ALTER TABLE "PROSESS_TASK_TYPE" - ADD CONSTRAINT "PK_PROSESS_TASK_TYPE" PRIMARY KEY ("KODE") ENABLE; -ALTER TABLE "PROSESS_TASK_TYPE" - MODIFY ("OPPRETTET_TID" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_TYPE" - MODIFY ("OPPRETTET_AV" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_TYPE" - MODIFY ("FEIL_SEK_MELLOM_FORSOEK" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_TYPE" - MODIFY ("FEIL_MAKS_FORSOEK" NOT NULL ENABLE); -ALTER TABLE "PROSESS_TASK_TYPE" - MODIFY ("KODE" NOT NULL ENABLE); +ALTER TABLE PROSESS_TASK_TYPE + ADD CONSTRAINT PK_PROSESS_TASK_TYPE PRIMARY KEY (KODE); +ALTER TABLE PROSESS_TASK_TYPE + ALTER COLUMN OPPRETTET_TID SET NOT NULL; +ALTER TABLE PROSESS_TASK_TYPE + ALTER COLUMN OPPRETTET_AV SET NOT NULL; +ALTER TABLE PROSESS_TASK_TYPE + ALTER COLUMN FEIL_SEK_MELLOM_FORSOEK SET NOT NULL; +ALTER TABLE PROSESS_TASK_TYPE + ALTER COLUMN FEIL_MAKS_FORSOEK SET NOT NULL; +ALTER TABLE PROSESS_TASK_TYPE + ALTER COLUMN KODE SET NOT NULL; -------------------------------------------------------- -- Ref Constraints for Table PROSESS_TASK -------------------------------------------------------- -ALTER TABLE "PROSESS_TASK" - ADD CONSTRAINT "FK_PROSESS_TASK_1" FOREIGN KEY ("TASK_TYPE") - REFERENCES "PROSESS_TASK_TYPE" ("KODE") ENABLE; +ALTER TABLE PROSESS_TASK + ADD CONSTRAINT FK_PROSESS_TASK_1 FOREIGN KEY (TASK_TYPE) + REFERENCES PROSESS_TASK_TYPE (KODE); -------------------------------------------------------- -- Ref Constraints for Table PROSESS_TASK_TYPE -------------------------------------------------------- -ALTER TABLE "PROSESS_TASK_TYPE" - ADD CONSTRAINT "FK_PROSESS_TASK_TYPE_1" FOREIGN KEY ("FEILHANDTERING_ALGORITME") - REFERENCES "PROSESS_TASK_FEILHAND" ("KODE") ENABLE; - - -CREATE SEQUENCE SEQ_PROSESS_TASK MINVALUE 1000000 START WITH 1000000 INCREMENT BY 50 NOCACHE NOCYCLE; -CREATE SEQUENCE SEQ_PROSESS_TASK_GRUPPE MINVALUE 10000000 START WITH 10000000 INCREMENT BY 50 NOCACHE NOCYCLE; +ALTER TABLE PROSESS_TASK_TYPE + ADD CONSTRAINT FK_PROSESS_TASK_TYPE_1 FOREIGN KEY (FEILHANDTERING_ALGORITME) + REFERENCES PROSESS_TASK_FEILHAND (KODE); + + +CREATE SEQUENCE SEQ_PROSESS_TASK MINVALUE 1000000 START WITH 1000000 INCREMENT BY 50 NO CYCLE; +CREATE SEQUENCE SEQ_PROSESS_TASK_GRUPPE MINVALUE 10000000 START WITH 10000000 INCREMENT BY 1000000 NO CYCLE; + + +alter table prosess_task + add column SISTE_KJOERING_SLUTT_TS timestamp(6); + +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_TS IS 'siste gang tasken ble forsøkt kjørt (før kjøring)'; +COMMENT ON COLUMN PROSESS_TASK.SISTE_KJOERING_SLUTT_TS IS 'tidsstempel siste gang tasken ble kjørt (etter kjøring)'; + +-- Etablerer et sett med bøtter som ferdig tasks kan legge seg i avhengig av hvilken måned de er opprettet i. +-- Legger opp til at disse bøttene kan prunes etter kontinuerlig for å bevare ytelsen +CREATE TABLE PROSESS_TASK_PARTITION_DEFAULT PARTITION OF PROSESS_TASK + DEFAULT; + +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG PARTITION OF PROSESS_TASK + FOR VALUES IN ('FERDIG') PARTITION BY LIST (PARTITION_KEY); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_01 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('01'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_02 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('02'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_03 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('03'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_04 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('04'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_05 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('05'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_06 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('06'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_07 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('07'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_08 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('08'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_09 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('09'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_10 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('10'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_11 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('11'); +CREATE TABLE PROSESS_TASK_PARTITION_FERDIG_12 PARTITION OF PROSESS_TASK_PARTITION_FERDIG + FOR VALUES IN ('12'); diff --git a/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_02__task-type-cron.sql b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_02__task-type-cron.sql index c40e1a4d8..d9400886b 100644 --- a/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_02__task-type-cron.sql +++ b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_02__task-type-cron.sql @@ -1,6 +1,7 @@ -ALTER TABLE "PROSESS_TASK_TYPE" - ADD ("CRON_EXPRESSION" VARCHAR2(200 CHAR) NULL ); +-- Kopiert fra: https://github.com/navikt/fp-abakus/blob/master/migreringer/src/main/resources/db/migration/defaultDS/1.0/V1.1_09__task-type-cron.sql +ALTER TABLE PROSESS_TASK_TYPE + ADD COLUMN CRON_EXPRESSION VARCHAR(200) NULL; -COMMENT ON COLUMN "PROSESS_TASK_TYPE"."CRON_EXPRESSION" IS 'Cron-expression for når oppgaven skal kjøres på nytt'; +COMMENT ON COLUMN PROSESS_TASK_TYPE.CRON_EXPRESSION IS 'Cron-expression for når oppgaven skal kjøres på nytt'; -INSERT INTO "PROSESS_TASK_FEILHAND" (kode, navn, beskrivelse, opprettet_tid, endret_av, endret_tid, input_variabel1, input_variabel2) VALUES ('DEFAULT', 'Eksponentiell back-off med tak', null, sysdate, null, null, null, null); +INSERT INTO PROSESS_TASK_FEILHAND (kode, navn, beskrivelse, opprettet_tid, endret_av, endret_tid, input_variabel1, input_variabel2) VALUES ('DEFAULT', 'Eksponentiell back-off med tak', null, current_date, null, null, null, null); diff --git a/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_03__endringer-postgres.sql b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_03__endringer-postgres.sql new file mode 100644 index 000000000..84a9833ad --- /dev/null +++ b/prosesstask/src/test/resources/db/migration/defaultDS/1.0.0/V1.0.0_03__endringer-postgres.sql @@ -0,0 +1,4 @@ +-- Endringer etter at vi kopierte dette fra FP-ABAKUS +-- https://github.com/navikt/fp-felles/commit/aa13aa084e50fbfcdc99910bef0db66cf89203b5#diff-d86f672fadaf64d7ab6f428177a0fee7 +alter table prosess_task + add SISTE_KJOERING_PLUKK_TS TIMESTAMP(6); diff --git a/prosesstask/src/test/resources/unit_test.json b/prosesstask/src/test/resources/unit_test.json index bd92a7a9d..20f194a74 100644 --- a/prosesstask/src/test/resources/unit_test.json +++ b/prosesstask/src/test/resources/unit_test.json @@ -2,10 +2,10 @@ "schemas": [ { "datasource": "defaultDS", - "schema": "felles_behandlingsprosess_unit", - "user": "felles_behandlingsprosess_unit", - "password": "felles_behandlingsprosess_unit", - "url": "jdbc:oracle:thin:@localhost:1521:XE", + "schema": "fp_unit", + "user": "fp_unit", + "password": "fp_unit", + "url": "jdbc:postgresql://localhost:5432/fp_unit", "default": true, "migrationScriptsFilesystemRoot": "src/test/resources/db/migration/" }