1 Prosess
Cerebrum sin HR-import består av flere, separate moduler i Cerebrum:
- Cerebrum.modules.amqp
- Meldingskonsumering: oppkobling, oppsett, og lytting til køer ved bruk av protokollen AMQP 0.9.1. Modulen brukes for å lytte etter meldinger for å sette i gang utførelse av forhåndsdefinerte oppgaver (Cerebrum.modules.tasks)
- Cerebrum.modules.tasks
- Midlertidig lagring av oppgaver i Cerebrum. HR-importen har egne oppgavekøer og logikk for å behandle køer. Den typiske oppgaven er « oppdater ansattnummer N på tidspunkt T ».
- Cerebrum.modules.hr_import
Implementasjonen av HR-import.
- datasource: kommunikasjon med kildesystem
- mapper: oversetting fra datasource til Cerebrum-data
- import: oppdatering av ansatt-data i Cerebrum
Den ordinære flyten fra HR-systemet til Cerebrum er:
- Melding sendes til meldingsbroker, og havner i Cerebrum sin meldingskø
- Meldingskonsument i Cerebrum lytter til meldingskø, og oversetter melding til en eller flere oppgaver i Cerebrum sin task-kø
- HR-import prosesserer relevante tasks i Cerebrum sin task-kø.
2 Konfigurasjon
- Klient-config
- Url og auth-tokens til hvert enkelt DFØ-API.
- Mapper-config
Forretningslogikk og oversetting av data fra DFØ til Cerebrum. F.eks. hvilke stillingskategorier som gir tilknytning.
TODO: Dette burde muligens inn i selve mapper-implementasjonen.
- Import-config
Skrur sammen implementasjon av import:
- Valg av klient + konfigurasjon
- Valg av oversetter + konfigurasjon
- Valg av kø, regler for prosessering av kø (kø-navn, max antall retries, ...)
- Valg av import-implementasjon.
Vi har typisk to import-configer - en for prosessering av oppgaver knyttet til endringer på ansatte, og en for endringer på stillinger.
- Consumer-config
Cerebrum bruker en consumer som står for oversetting av meldinger til oppgaver. Denne prosesserer alle køer som er relevante for Cerebrum, inkl. f.eks. køer fra Greg.
Denne configen inneholder også config for oversetting av meldinger fra DFØ.
3 Meldingskø
TODO:
- Om lytting i kø, oversetting til tasks (consumers/consume-tasks.py med en consumer-config)
4 Task-kø
TODO:
- Om subklasser av Cerebrum.modules.tasks.process.QueueHandler (...no.dfo.tasks, ...no.uio.sap.tasks)
- Om scripts for å lage manuelle tasks, liste aktuelle tasks (contrib/hr-import/create-task.py, contrib/hr-import/list-tasks.py)
- Om retries; attempts, backoff, etc...
5 HR-import
TODO:
- Om prosessering av task-kø (contrib/hr-import/process-tasks.py med en process-config)
- Om script for å omgå kø og prosessere tasks direkte (TODO: refaktorert contrib/hr_import.py med en process-config)
- Om selve import-logikken; datasource, mapper, import, etc...