Aleph skaitytojų duomenų bazė XML formato duomenų failas Failo formavimo taisyklės I dalis. Bendroji skaitytojo informacija...

Similar documents
El. pašto konfigūravimas

Identity Management with x-services in Aleph. Gerard Bennett, University of Westminster IGeLU Budapest - Session Thursday 3 rd Sept 2015

Come to the TypeScript

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

Elektroninis.lt šakninių sertifikatų diegimas

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

I. FFDATA STRUKTŪROS APRAŠYMAS

I. FFDATA STRUKTŪROS APRAŠYMAS

HTML dokumentai. Praktinės užduotys

JAVA pagrindai Lek. Liudas Drejeris

Step-by step guide for MRU students to uploading Master s Thesis to elaba repository

Parengė ITMM Artūras Šakalys 1

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

STUDIJŲ PROGRAMOS PAVADINIMAS

I.SAF DUOMENŲ RINKMENOS XML STRUKTŪROS APRAŠO SPECIFIKACIJA

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

Asta Čitavičienė LIBRARY

UNOFFICIAL TRANSLATION

Redis Ma as, greitas, galingas. Specialiai VilniusPHP

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

VERSLO KLIENTŲ APTARNAVIMAS TEL

Tautvydas Dagys Microsoft Lietuva

C programavimo kalba. 5 paskaita (Funkcijos, masyvai)

WWW aplikacijų saugumas 2

Informacijos apsaugos standartai serija

C++ programavimo kalba

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

Paprastų lentelių kūrimas

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV

Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę:

Trumpai-ilga istorija

I.SAF DUOMENŲ RINKMENOS XML STRUKTŪROS APRAŠO SPECIFIKACIJA

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI

USER DOCUMENTATION. Shared Users File (SUF)

2-3 PASKAITOS. Paprasčiausia programa:

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas

2006 m. valstybinio brandos egzamino užduotis

Interneto technologijų taikymai

C++ programavimo kalba

LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC

ISO XML standarto pranešimų naudojimo taisyklės v.2.3

Sequential Nonlinear Mapping versus Simultaneous One

PHP Lietuviškai. Turinys

Debian GNU/Linux 5.0 (lenny) laidos informacija architektūrai S/390. Debian o dokumentacijos projektas (

KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA

C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ

SQL FUNCTIONS. Prepared By:Dr. Vipul Vekariya.

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V ) 1

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai

ISO XML standarto pranešimų naudojimo taisyklės v.2.4

Web servisai WSDL. Osvaldas Grigas

Buferio perpildymo klaida Įvadas, techniniai klausimai

STANDARTINĖS APSKAITOS DUOMENŲ RINKMENOS TECHNINĖ SPECIFIKACIJA

Didelės apimties svetainės optimizavimas taikant SEO principus

Topics Fundamentals of PL/SQL, Integration with PROIV SuperLayer and use within Glovia

IŠMANIOJI MOKESČIŲ ADMINISTRAVIMO SISTEMA

Tipas SEPA International. [1..1] SEPA International

INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO SISTEMA

STANDARTINĖS APSKAITOS DUOMENŲ RINKMENOS TECHNINĖ SPECIFIKACIJA

Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas

HTML dokumentai aprašo tinklalapius. HTML dokumentus sudaro HTML gairės ir grynas tekstas. HTML dokumentai vadinami tinklalapiais.

A Lithuanian Verbalization Template for ORM conceptual models and rules

PROGRAMAVIMAS IR PROGRAMINĖ ĮRANGA

II SEKCIJA. Duomenų bazės ir modeliai

Web technologijos. Hostingas JavaScript PHP

1. Pakuotės turinys ADSL įranga Techniniai reikalavimai ADSL įrangos diegimas PPPoE programinės įrangos diegimas 6

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere

Duomenų vietisumo užtikrinimas

Naujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams

K R I S T I N A L A P I N. I dalis. Matematikos ir statistikos studijų krypčių pirmo kurso studentams

Oracle Database 12c SQL Fundamentals

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo)

Paveikslėlių sąrašas

Žiniatinklio turinio valdymo sistemų saugumo tyrimas

Amadeus On-Line Helpdesk

Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas

TIES VMI duomenų mainų posistemis. Duomenų teikimo sąsajos aprašas

C++ programavimo kalba

OBJEKTŲ SAVYBIŲ MODELIO GRAFINIS REDAKTORIUS

Register your product and get support at SHB9100. LT Vartotojo vadovas

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas)

Windows saugumo požiūriu

Kompiuterių tinklai. IPv6 ir tuneliai

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS

Masyvai Javoje. Masyvai. Objektų talpyklos. Masyvo tipas. Deklaravimo pavyzdžiai. Deklaracija ir sukūrimas. Masyvo superklas - Object

Plantronics Explorer 50. Naudojimo instrukcija

Programavimas C kalba

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1.

DAUGIABUČIO NAMO SAVININKŲ BENDRIJOS INFORMACINĖ SISTEMA

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai

Rekomendacijos asmens duomenų apsaugai internete

WiFi komplekto. Vartotojo vadovas

Microsoft Office PowerPoint 2010 gidas

C++ programavimo kalba

Samsung Portable SSD T3

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ

Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas

Transcription:

0

Aleph skaitytojų duomenų bazė... 2 XML formato duomenų failas... 3 Failo formavimo taisyklės... 3 I dalis. Bendroji skaitytojo informacija... 3 II dalis. Adresai ir studijos / pareigos... 4 III dalis. Lokali informacija (teisės)... 6 IV dalis. Identifikatoriai... 7 Duomenų failo įkėlimas į tarnybinę stotį... 10 Duomenų įkėlimas į duomenų bazę... 10 Priedai... 12 XML formato duomenų failo pavyzdys... 12 XML formato duomenų failo suformavimo pavyzdinė programa Nr. 1... 14 XML formato duomenų failo suformavimo pavyzdinė programa Nr. 2... 24

Aleph skaitytojų duomenų bazę sudaro kelios duomenų bazės lentelės: 1) Z303 (bendroji skaitytojų informacija) bendra duomenų bazės lentelė visoms institucijoms, kiekvienas skaitytojas joje turi po vieną įrašą; 2) Z304 (adresai ir studijos / pareigos) bendra duomenų bazės lentelė visoms institucijoms, kiekvienas skaitytojas joje gali turėti po kelis įrašus (dažniausiai po du); 3) Z305 (lokali informacija (teisės) kiekviena institucija turi atskirą duomenų bazės lentelę, kiekvienas skaitytojas joje turi po kelis (bibliotekos filialų kiekis + 1) įrašus; 4) Z308 (identifikatoriai) bendra duomenų bazės lentelė visoms institucijoms, kiekvienas skaitytojas joje turi turėti ne mažiau kaip po keturis įrašus. Bendrosios skaitytojų informacijos (Z303) duomenų bazės lentelėje automatiškai įrašomas skaitytojo Aleph administracinės bibliotekėlės kodas ir pagal jį atliekamas skaitytojų duomenų filtravimas, kad institucijos matytų tik savo institucijos skaitytojų duomenis.

Šiame skyrelyje aprašytos bibliotekos skaitytojų (institucijos studentų, darbuotojų ir kitų jos narių) duomenų įrašymo į XML formato failą taisyklės. Reikalavimai failo vardui: 1) failo vardo plėtinys xml ; 2) failo varde galimi simboliai: lotyniškosios abėcėlės mažosios raidės, arabiški skaitmenys, brūkšnelis, pabraukimo simbolis. Suformuojamas XML failas. Jei norima, kad tam tikro lauko informacija būtų palikta tokia, kokia jau yra įrašyta skaitytojo įraše (kad įkeliant ji nebūtų sunaikinta), į pirmą lauko poziciją įrašomas + simbolis. Datos rašomos YYYYMMDD formatu. Simboliai rašomi UTF-8 koduotėje. Vieno skaitytojo duomenų įrašą sudaro keturios dalys. Pirmoje dalyje pateikiama bendroji informacija, antroje adresai ir studijos / pareigos, trečioje lokali informacija (teisės), o ketvirtoje identifikatoriai. Pirmoji dalis gali būti tik viena, likusios po kelias. Failas turi prasidėti žyme <?xml version="1.0"?>. Toliau visas failo turinys turi būti tarp žymių <p-file-20>...</p-file-20>. Kiekvieno skaitytojo duomenys turi būti tarp žymių <patron-record>...</patron-record>. XML formato duomenų failą validuoti naudojamo XSD failo turinys prieinamas adresu http://users.library.lt/validation/xmlvalidation.xsd. Bendrosios skaitytojo informacijos duomenų dalis rašoma tarp žymių <z303>...</z303>. Jei planuojate naudoti siunčiamų pranešimų kalbos kodą ENG, prieš tai turi būti parengtos el. pranešimų skaitytojams formos anglų kalba. RECORD-ACTION A MATCH-ID-TYPE 01 MATCH-ID 0 + asmens kodas Z303-ID 0 + asmens kodas Z303-USER-TYPE REG Z303-CON-LNG Siunčiamų pranešimų kalbos kodas: LIT (bendru atveju) arba ENG (užsieniečiams) Z303-ALPHA L Z303-FIRST-NAME Vardas Z303-LAST-NAME Pavardė

Z303-TITLE Darb., Stud. arba kitokia reikšmė, aprašyta konfigūracinio failo pc_tab_exp_field.lit parametru USER-TITLE Z303-DELINQ-1 00 Z303-DELINQ-N-1 Tuščias Z303-DELINQ-3 00 Z303-DELINQ-N-3 + Z303-BUDGET Tuščias Z303-PROFILE-ID Profilio kodas: ALEPH (bendru atveju) arba ALEPH-ENG (užsieniečiams) Z303-ILL-LIBRARY Tuščias Z303-HOME-LIBRARY Skaitytojo priskirto bibliotekos filialo kodas (pvz., KTUCB ) Z303-NOTE-1 + Z303-ILL-TOTAL-LIMIT 0000 Z303-ILL-ACTIVE-LIMIT 0000 Z303-BIRTH-DATE Gimimo data Z303-EXPORT-CONSENT Y Z303-PROXY-ID-TYPE 00 Z303-SEND-ALL-LETTERS Y Z303-PLAIN-HTML L Z303-WANT-SMS N Z303-TITLE-REQ-LIMIT 0099 Z303-GENDER M (vyrams) arba F (moterims) Z303-BIRTHPLACE Tuščias arba iš kurios šalies atvyko (užsieniečiams) Šios dalies pavyzdys pateiktas priede XML formato duomenų failo pavyzdys. Adresų ir studijų / pareigų duomenų dalys rašomos tarp žymių <z304>...</z304>. Vienam skaitytojui gali būti kelios adresų ir studijų / pareigų duomenų dalys. Jei namų adresas nežinomas, rekomenduojama jį vis tiek pildyti, paliekant laukus Z304-ADDRESS-1 Z304-ADDRESS-4 tuščius. 02 tipo adresui pildoma 02a arba 02b (jei tai nėra toje pačioje institucijoje dirbantis studentas). 03 tipo adresas pildomas tik toje pačioje institucijoje dirbančiam studentui. Galimas supaprastintas pildymas dirbantiems studentams užpildyti tik 02a arba 02b, nepildant 03 (taip, daroma, pavyzdžiui: KTU, VDU). RECORD-ACTION A Z304-ID 0 + asmens kodas Z304-SEQUENCE 01 Z304-ADDRESS-0 Vardas + + pavardė Z304-ADDRESS-1 Namų adreso I eilutė Z304-ADDRESS-2 Namų adreso II eilutė Z304-ADDRESS-3 Namų adreso III eilutė Z304-ADDRESS-4 Namų adreso IV eilutė Z304-ZIP Tuščias Z304-EMAIL-ADDRESS El. pašto adresas

Z304-TELEPHONE Mobilaus / namų telefono numeris Z304-DATE-FROM Diena, kada adresas buvo įrašytas į institucijos studentų / personalo duomenų bazę arba einamoji diena Z304-DATE-TO Rekomenduojama: einamoji diena + 1 metai Z304-ADDRESS-TYPE 01 Z304-TELEPHONE-2 Namų telefono numeris (jei lauke Z304-TELEPHONE įrašytas mobilaus telefono numeris) arba tuščias Z304-TELEPHONE-3 Tuščias Z304-TELEPHONE-4 Tuščias Darbuotojo pareigas apibūdina padaliniai (nurodant nuo aukščiausio lygio), pareigos ir kiti reikalingi duomenys. RECORD-ACTION A Z304-ID 0 + asmens kodas Z304-SEQUENCE 02 Z304-ADDRESS-0 Vardas + + pavardė Z304-ADDRESS-1 Pareigų duomenų I eilutė Z304-ADDRESS-2 Pareigų duomenų II eilutė Z304-ADDRESS-3 Pareigų duomenų III eilutė Z304-ADDRESS-4 Pareigų duomenų IV eilutė Z304-ZIP Tuščias Z304-EMAIL-ADDRESS El. pašto adresas Z304-TELEPHONE Mobilaus / darbo telefono numeris Z304-DATE-FROM Pareigų pradžios data arba einamoji diena Z304-DATE-TO Rekomenduojama: einamoji diena + 1 metai Z304-ADDRESS-TYPE 02 Z304-TELEPHONE-2 Darbo telefono numeris (jei lauke Z304-TELEPHONE įrašytas mobilaus telefono numeris) arba tuščias Z304-TELEPHONE-3 Tuščias Z304-TELEPHONE-4 Tuščias Studijas apibūdina padaliniai (nurodant nuo aukščiausio lygio), studijos, studijų forma, kursas, grupė ir kiti reikalingi duomenys. RECORD-ACTION A Z304-ID 0 + asmens kodas Z304-SEQUENCE 02 Z304-ADDRESS-0 Vardas + + pavardė Z304-ADDRESS-1 Studijų duomenų I eilutė Z304-ADDRESS-2 Studijų duomenų II eilutė Z304-ADDRESS-3 Studijų duomenų III eilutė Z304-ADDRESS-4 Studijų duomenų IV eilutė

Z304-ZIP Tuščias Z304-EMAIL-ADDRESS El. pašto adresas Z304-TELEPHONE Mobilaus telefono numeris Z304-DATE-FROM Studijų pradžios data arba einamoji diena Z304-DATE-TO Rekomenduojama: einamoji diena + 1 metai Z304-ADDRESS-TYPE 02 Z304-TELEPHONE-2 Tuščias Z304-TELEPHONE-3 Tuščias Z304-TELEPHONE-4 Tuščias Studijas apibūdina padaliniai (nurodant nuo aukščiausio lygio), studijos, studijų forma, kursas, grupė ir kiti reikalingi duomenys. RECORD-ACTION A Z304-ID 0 + asmens kodas Z304-SEQUENCE 03 Z304-ADDRESS-0 Vardas + + pavardė Z304-ADDRESS-1 Studijų duomenų I eilutė Z304-ADDRESS-2 Studijų duomenų II eilutė Z304-ADDRESS-3 Studijų duomenų III eilutė Z304-ADDRESS-4 Studijų duomenų IV eilutė Z304-ZIP Tuščias Z304-EMAIL-ADDRESS El. pašto adresas Z304-TELEPHONE Mobilaus telefono numeris Z304-DATE-FROM Studijų pradžios data arba einamoji diena Z304-DATE-TO Rekomenduojama: einamoji diena + 1 metai Z304-ADDRESS-TYPE 02 Z304-TELEPHONE-2 Tuščias Z304-TELEPHONE-3 Tuščias Z304-TELEPHONE-4 Tuščias Šių dalių pavyzdžiai pateikti priede XML formato duomenų failo pavyzdys. Lokalios informacijos (teisių) dalys rašomos tarp žymių <z305>...</z305>. Vienam skaitytojui suformuojamos kelios (mažiausiai dvi) lokalios informacijos (teisių) dalys. Suformuojamos dviejų tipų lokalios informacijos (teisių) dalys, besiskiriančios viena nuo kitos lauko Z305- SUB-LIBRARY reikšme: a) administracinė bibliotekėlė (vienas įrašas), b) kiekvienas bibliotekos filialas (įrašų tiek, kiek yra filialų). RECORD-ACTION Z305-ID A 0 + asmens kodas

Z305-SUB-LIBRARY Z305-BOR-TYPE Z305-BOR-STATUS Z305-REGISTRATION-DATE Z305-EXPIRY-DATE Administracinė bibliotekėlė (pvz., KTU50) arba bibliotekos filialas (pvz., KTUCB ) Skaitytojo tipas, aprašytas konfigūracinio failo pc_tab_exp_field_extended.lit parametru BOR-TYPE Skaitytojo statusas, aprašytas konfigūracinio failo pc_tab_exp_field_extended.lit parametru BOR-STATUS Diena, nuo kurios skaitytojas studijuoja / dirba institucijoje arba 00000000 Teisių galiojimo pabaiga arba 00000000 (reikšmė bus paimta iš konfigūracinio failo tab31 14 ( Expiration date parameter ) stulpelio pagal atitinkamą laukų Z305-SUB-LIBRARY ir Z305-BOR-STATUS reikšmių kombinaciją) Identifikatorių dalys rašomos tarp žymių <z308>...</z308>. Vienam skaitytojui suformuojamos kelios (mažiausiai dvi) identifikatorių dalys. Privalomi identifikatoriai 01 ir 02, kiti neprivalomi. Jei į Z308-KEY-DATA lauką rašomos raidės, jos turi būti didžiosios (skaitytojai galės prisijungti įvesdami ir mažąsias, ir didžiąsias raides). RECORD-ACTION A Z308-KEY-TYPE 01 Z308-KEY-DATA 0 + asmens kodas (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Z308-VERIFICATION Atsitiktinė simbolių seka Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 02 Z308-KEY-DATA asmens kodas (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Z308-VERIFICATION Atsitiktinė simbolių seka Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H

RECORD-ACTION A Z308-KEY-TYPE 03 Institucijos vidinis studento identifikatorius arba seno tipo studento pažymėjimo numeris (jei naudojamos raidės, jos turi būti konvertuotos į didžią- Z308-KEY-DATA sias) Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei skaitytojams neleidžiama autentifikuotis šiuo identifikatoriumi) Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 04 Z308-KEY-DATA Tabelio numeris (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei skaitytojams neleidžiama autentifikuotis tabelio numeriu) Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 05 Z308-KEY-DATA Skaitytojo pažymėjimo numeris (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei skaitytojams neleidžiama autentifikuotis skaitytojo pažymėjimo numeriu) Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 06

Klubo, pavyzdžiui, Emeritus, pažymėjimo numeris (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Z308-KEY-DATA Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei skaitytojams neleidžiama autentifikuotis klubo pažymėjimo numeriu) Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 07 Z308-KEY-DATA Institucijos naudotojo prisijungimo (pvz., naudojant LDAP / SSO) vardas (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei slaptažodžiai saugomi išorinėje autentifikavimo sistemoje) Z308-VERIFICATION-TYPE 00 (jei slaptažodis saugomas Aleph'e) arba 02 (jei slaptažodis saugomas išorinėje autentifikavimo sistemoje) Z308-STATUS AC Z308-ENCRYPTION H RECORD-ACTION A Z308-KEY-TYPE 08 Z308-KEY-DATA LSP numeris arba viešojo transporto el. bilieto numeris (jei naudojamos raidės, jos turi būti konvertuotos į didžiąsias) Slaptažodis (pvz., paskutiniai 4 asmens kodo skaitmenys) arba atsitiktinė Z308-VERIFICATION simbolių seka (jei skaitytojams neleidžiama autentifikuotis šiuo identifikatoriumi) Z308-VERIFICATION-TYPE 00 Z308-STATUS AC Z308-ENCRYPTION H

Parengtas skaitytojų duomenų failas per saityno (angl. web) sąsają įkeliamas į LABT Aleph tarnybinę stotį. Saityno sąsajos adresas http://users.library.lt. Jei neturite ar neprisimenate prisijungimo duomenų, kreipkitės į sistemos administratorių (el. p. linas.salelionis@library.lt, tel. 8 686 50 236). Failo įkėlimo metu patikrinamas failo turinys atliekamas validavimas, naudojant XSD failą. XSD failo turinys prieinamas adresu http://users.library.lt/validation/xmlvalidation.xsd. Jei randama klaidų, jos pateikiamos tiesiai įkėlimo sąsajos lange. Jei klaidų nerasta, duomenis iš failo galima įkelti į Aleph skaitytojų duomenų bazę. Kelti duomenų failus į serverį galima kiek norima kartų. Tai atliekant, duomenys į skaitytojų duomenų bazę dar nepatenka. Rekomenduojama kelti failus tuo pačiu vardu, kad Aleph tarnybinėje stotyje nesikauptų nereikalingi failai, nebent planuojate kelti skaitytojų duomenis per kelis failus, o po to visuose juose esančius duomenis įkelti į skaitytojų duomenų bazę. Keliant failą tuo pačiu vardu, anksčiau įkeltas failas ištrinamas. Skaitytojų duomenis iš į LABT Aleph tarnybinės stotį įkelto failo galima įkelti į Aleph skaitytojų duomenų bazę: 1) patiems per Aleph cirkuliacijos modulį; 2) paprašyti tą padaryti sistemos administratorių, parašant el. laišką adresu linas.salelionis@library.lt ir nurodant jame įkelto failo pavadinimą. Keliant duomenis patiems per Aleph cirkuliacijos modulį, duomenų įkėlimo funkcija iškviečiama per meniu punktą Paslaugos Skaitytojų įrašai Įkelti įrašus (file-20). Skaitytojų duomenų įkėlimo lange nurodomi parametrai: 1) duomenų failas per saityno sąsają (http://users.library.lt) įkeltas failas, iš kurio bus keliami duomenys į skaitytojų duomenų bazę; 2) ataskaitos failas nurodyti nebūtina, bus įrašytas automatiškai; 3) duomenų bazės atnaujinimas palikite reikšmę Taip, jei norite, kad pakeitimai būtų išsaugoti; pakeiskite į reikšmę Ne, jei norite tik patikrinti failą, neišsaugant pakeitimų duomenų bazėje; 4) tarpo simbolis palikite reikšmę % (be kabučių); 5) Null simbolis palikite reikšmę + (be kabučių); 6) simbolių konvertavimas palikite reikšmę None. Jei norite, kad parametrai būtų išsaugoti ir vėliau būtų galima atsidaryti jau užpildytą formą, pažymėkite varnelę Įtraukti į istoriją. Išsaugotų formų sąrašą rasite per meniu punktą Paslaugos Istorija.

Kadangi yra bibliotekų, kurios skaitytojų duomenis veda rankiniu būdu, duomenų įkėlimo į skaitytojų duomenų bazę prašome nevykdyti bibliotekų darbo laiku, nes tuo pačiu metu įrašant duomenis rankiniu ir programiniu būdais, galimas skaitytojų paieškos indeksų nesusikūrimas. Skaitytojų duomenų įkėlimą galima paleisti su atidėjimu iki tam tikros valandos tą pačią ar kitą dieną. Tai skaitytojų duomenų įkėlimo lange nurodoma parametrais Vykdymo diena ir Laikas. Rekomenduojame duomenų įkėlimą vykdyti po 22 valandos. Skaitytojų teisių nustatymai jų duomenų atnaujinimo metu paimami iš konfigūracinio failo tab31, todėl, prieš vykdydami duomenų įkėlimą iš duomenų failo, įsitikinkite, kad šiame faile padaryti teisingi skaitytojų teisių ir teisių galiojimo datų nustatymai.

Prieduose pateikiamas XML formato duomenų failo pavyzdys su jį suformavusia ir antra papildoma programomis. Šiame priede pateiktas XML formato duomenų failo su vieno skaitytojo duomenimis turinys. <?xml version="1.0"?> <p-file-20> <patron-record> <z303> <record-action>a</record-action> <match-id-type>01</match-id-type> <match-id>039912311234</match-id> <z303-id>039912311234</z303-id> <z303-user-type>reg</z303-user-type> <z303-con-lng>lit</z303-con-lng> <z303-alpha>l</z303-alpha> <z303-first-name>vardenis</z303-first-name> <z303-last-name>pavardenis</z303-last-name> <z303-title>darb.</z303-title> <z303-delinq-1>00</z303-delinq-1> <z303-delinq-n-1></z303-delinq-n-1> <z303-delinq-3>00</z303-delinq-3> <z303-delinq-n-3>+</z303-delinq-n-3> <z303-budget></z303-budget> <z303-profile-id>aleph</z303-profile-id> <z303-ill-library></z303-ill-library> <z303-home-library>ktucb</z303-home-library> <z303-note-1>+</z303-note-1> <z303-ill-total-limit>0000</z303-ill-total-limit> <z303-ill-active-limit>0000</z303-ill-active-limit> <z303-birth-date>19991231</z303-birth-date> <z303-export-consent>y</z303-export-consent> <z303-proxy-id-type>00</z303-proxy-id-type> <z303-send-all-letters>y</z303-send-all-letters> <z303-plain-html>h</z303-plain-html> <z303-want-sms>n</z303-want-sms> <z303-title-req-limit>0099</z303-title-req-limit> <z303-gender>m</z303-gender> <z303-birthplace></z303-birthplace> </z303> <z304> <record-action>a</record-action> <z304-id>039912311234</z304-id> <z304-sequence>01</z304-sequence> <z304-address-0> Vardenis Pavardenis</z304-address-0> <z304-address-1>gatvės g. 1-2</z304-address-1> <z304-address-2>51234 Kaunas</z304-address-2> <z304-address-3></z304-address-3> <z304-address-4></z304-address-4> <z304-zip></z304-zip> <z304-email-address>vardenis.pavardenis@ktu.lt</z304-email-address> <z304-telephone>8 686 12 345</z304-telephone> <z304-date-from>20150421</z304-date-from>

<z304-date-to>20160914</z304-date-to> <z304-address-type>01</z304-address-type> <z304-telephone-2>(8 37) 123 456</z304-telephone-2> <z304-telephone-3></z304-telephone-3> <z304-telephone-4></z304-telephone-4> </z304> <z304> <record-action>a</record-action> <z304-id>039912311234</z304-id> <z304-sequence>02</z304-sequence> <z304-address-0>vardenis Pavardenis</z304-address-0> <z304-address-1>informatikos fakultetas</z304-address-1> <z304-address-2>informacijos sistemų katedra</z304-address-2> <z304-address-3>dėstytojas</z304-address-3> <z304-address-4></z304-address-4> <z304-zip></z304-zip> <z304-email-address>vardenis.pavardenis@ktu.lt</z304-email-address> <z304-telephone>8 686 12 345</z304-telephone> <z304-date-from>20100420</z304-date-from> <z304-date-to>20160914</z304-date-to> <z304-address-type>02</z304-address-type> <z304-telephone-2>8 610 12 345</z304-telephone-2> <z304-telephone-3></z304-telephone-3> <z304-telephone-4></z304-telephone-4> </z304> <z305> <record-action>a</record-action> <z305-id>039912311234</z305-id> <z305-sub-library>ktu50</z305-sub-library> <z305-bor-type>da</z305-bor-type> <z305-bor-status>01</z305-bor-status> <z305-registration-date>20100420</z305-registration-date> <z305-expiry-date>20160314</z305-expiry-date> </z305> <z305> <record-action>a</record-action> <z305-id>039912311234</z305-id> <z305-sub-library>ktucb</z305-sub-library> <z305-bor-type>da</z305-bor-type> <z305-bor-status>01</z305-bor-status> <z305-registration-date>20100420</z305-registration-date> <z305-expiry-date>20160314</z305-expiry-date> </z305> <z305> <record-action>a</record-action> <z305-id>039912311234</z305-id> <z305-sub-library>ktuif</z305-sub-library> <z305-bor-type>da</z305-bor-type> <z305-bor-status>01</z305-bor-status> <z305-registration-date>20100420</z305-registration-date> <z305-expiry-date>20160314</z305-expiry-date> </z305> <z305> <record-action>a</record-action> <z305-id>039912311234</z305-id> <z305-sub-library>ktumd</z305-sub-library> <z305-bor-type>da</z305-bor-type> <z305-bor-status>01</z305-bor-status> <z305-registration-date>20100420</z305-registration-date> <z305-expiry-date>20160314</z305-expiry-date> </z305> <z308> <record-action>a</record-action> <z308-key-type>01</z308-key-type>

<z308-key-data>039912311234</z308-key-data> <z308-verification>08f345f2606f7919ec1f</z308-verification> <z308-verification-type>00</z308-verification-type> <z308-status>ac</z308-status> <z308-encryption>h</z308-encryption> </z308> <z308> <record-action>a</record-action> <z308-key-type>02</z308-key-type> <z308-key-data>39912311234</z308-key-data> <z308-verification>08f345f2606f7919ec1f</z308-verification> <z308-verification-type>00</z308-verification-type> <z308-status>ac</z308-status> <z308-encryption>h</z308-encryption> </z308> <z308> <record-action>a</record-action> <z308-key-type>04</z308-key-type> <z308-key-data>6523</z308-key-data> <z308-verification>08f345f2606f7919ec1f</z308-verification> <z308-verification-type>00</z308-verification-type> <z308-status>ac</z308-status> <z308-encryption>h</z308-encryption> </z308> <z308> <record-action>a</record-action> <z308-key-type>07</z308-key-type> <z308-key-data>vardpav</z308-key-data> <z308-verification>08f345f2606f7919ec1f</z308-verification> <z308-verification-type>02</z308-verification-type> <z308-status>ac</z308-status> <z308-encryption>h</z308-encryption> </z308> </patron-record> </p-file-20> Šiame priede pateikta institucijos darbuotojų XML formato duomenų failo suformavimo iš Lietuvos mokslo, studijų, veiklos ir procesų valdymo informacinės sistemos EDINA (buv. LieMSIS) personalo duomenų bazės pavyzdinė programa (KTU atvejis), parašyta Oracle PL/SQL programavimo kalba. procedure ktu_create_aleph_darbuotojai is ankstesnisasmenskodas varchar2 (20); field1lygiopadalinys varchar2 (200); field2lygiopadalinys varchar2 (200); field3lygiopadalinys varchar2 (200); field4lygiopadalinys varchar2 (200); fielddatatoz304 date; fielddatatoz305 date; fieldelpastoadresas varchar2 (200); fieldldapid varchar2 (10); fieldphone1 varchar2 (30); fieldphone2 varchar2 (30); fieldsha1hash varchar2 (50); fieldsublibrary varchar2 (5); irasonr number (4); looppadaliniaifinished boolean; outputfile utl_file.file_type; padaliniulygiukiekis number (1);

sequenceoperationlogid2 number (8); sublibrarieslist varchar2 (100); sublibrarieslist2 varchar2 (100); cursor cursorasmenys is select distinct ktu_per072_asm_info_v.asg_job_name, ktu_per072_asm_info_v.asg_start_date, ktu_per072_asm_info_v.asg_end_date, ktu_per072_asm_info_v.contract_from, ktu_per072_asm_info_v.contract_to, ktu_per072_asm_info_v.asg_org_id, ktu_per072_asm_info_v.first_name, ktu_per072_asm_info_v.middle_name, ktu_per072_asm_info_v.last_name, ktu_per072_asm_info_v.identification, ktu_per072_asm_info_v.asg_primary, ktu_per072_asm_info_v.birth_date, ktu_per072_asm_info_v.person_external_id, ktu_per072_darb_kontaktai_v.home_phone, ktu_per072_darb_kontaktai_v.home_mob_phone, ktu_per072_darb_kontaktai_v.office_phone, ktu_per072_darb_kontaktai_v.office_mob_phone, ktu_per072_darb_kontaktai_v.address, ktu_per072_darb_kontaktai_v.city, ktu_per072_darb_kontaktai_v.postal_code, ktu_per072_darb_kontaktai_v.last_update_date from ktu_per072_asm_info_v left outer join ktu_per072_darb_kontaktai_v on ktu_per072_asm_info_v.identification = ktu_per072_darb_kontaktai_v.identification where ktu_per072_asm_info_v.bg_short_name = 'KTU' and ktu_per072_asm_info_v.person_type_code = 'EMPLOYEE' and ktu_per072_asm_info_v.asg_status = 'Aktyvus paskyrimas' and (not ktu_per072_asm_info_v.person_external_id is null) and (not ktu_per072_asm_info_v.asg_org_id is null) order by ktu_per072_asm_info_v.identification, ktu_per072_asm_info_v.asg_primary, ktu_per072_darb_kontaktai_v.last_update_date desc; cursor cursorpadaliniai (padalinioid number) is select * from (select dpad.eilnr, dpad.child_org_name, vpad.org_type from ( select level eilnr, ph.* from ktu_per072_padal_hierach_v ph start with child_org_id = padalinioid connect by prior parent_org_id = child_org_id) dpad inner join ktu_per072_padaliniai_v tpad on tpad.organization_id = dpad.parent_org_id inner join ktu_per072_padaliniai_v vpad on vpad.organization_id = dpad.child_org_id) order by eilnr; recordasmuo cursorasmenys%rowtype; recordpadalinys cursorpadaliniai%rowtype; begin select ktu_operation_log_id2.nextval into sequenceoperationlogid2 from dual; insert into ktu_operation_log (id, id2, "procedure", notes) values (ktu_operation_log_id.nextval, sequenceoperationlogid2,

'CREATE_ALEPH_DARBUOTOJAI', 'PRADŽIA'); commit; outputfile := utl_file.fopen ('/exlibris/bpiac/failai/ktu', 'aleph_darbuotojai.xml', 'w'); '<?xml version="1.0"?>'); '<p-file-20>'); irasonr := 0; ankstesnisasmenskodas := ' '; open cursorasmenys; <<loopasmenys>> loop fetch cursorasmenys into recordasmuo; exit LoopAsmenys when cursorasmenys%notfound; if not (ankstesnisasmenskodas = recordasmuo.identification) irasonr := irasonr + 1; ankstesnisasmenskodas := recordasmuo.identification; ' <!-- Record No. ' irasonr ' -->'); ' <patron-record>'); ' <z303>'); ' <record-action>a</record-action>'); ' <match-id-type>01</match-id-type>'); ' <match-id>0' recordasmuo.identification '</match-id>'); ' <z303-id>0' recordasmuo.identification '</z303-id>'); ' <z303-user-type>reg</z303-user-type>'); if (substr (recordasmuo.identification, 8, 3) = '999') or (substr (recordasmuo.identification, 8, 4) = 'XXXX') or ( (not substr (recordasmuo.identification, 1, 1) = '3') and (not substr (recordasmuo.identification, 1, 1) = '4') and (not substr (recordasmuo.identification, 1, 3) = 'KTU')) ' <z303-con-lng>eng</z303-con-lng>'); ' <z303-con-lng>lit</z303-con-lng>'); ' <z303-alpha>l</z303-alpha>'); ' <z303-first-name>' recordasmuo.first_name rtrim (' ' recordasmuo.middle_name) '</z303-first-name>'); ' <z303-last-name>' recordasmuo.last_name '</z303-last-name>'); ' <z303-title>darb.</z303-title>'); ' <z303-delinq-1>00</z303-delinq-1>'); ' <z303-delinq-n-1></z303-delinq-n-1>'); ' <z303-delinq-3>00</z303-delinq-3>'); ' <z303-delinq-n-3>+</z303-delinq-n-3>');

' <z303-budget></z303-budget>'); if (substr (recordasmuo.identification, 8, 3) = '999') or (substr (recordasmuo.identification, 8, 4) = 'XXXX') or ( (not substr (recordasmuo.identification, 1, 1) = '3') and (not substr (recordasmuo.identification, 1, 1) = '4') and (not substr (recordasmuo.identification, 1, 3) = 'KTU')) ' <z303-profile-id>aleph-eng</z303-profile-id>'); ' <z303-profile-id>aleph</z303-profile-id>'); ' <z303-ill-library></z303-ill-library>'); ' <z303-home-library>ktucb</z303-home-library>'); ' <z303-note-1>+</z303-note-1>'); ' <z303-ill-total-limit>0000</z303-ill-total-limit>'); ' <z303-ill-active-limit>0000</z303-ill-active-limit>'); ' <z303-birth-date>' to_char (recordasmuo.birth_date, 'YYYYMMDD') '</z303-birth-date>'); ' <z303-export-consent>y</z303-export-consent>'); ' <z303-proxy-id-type>00</z303-proxy-id-type>'); ' <z303-send-all-letters>y</z303-send-all-letters>'); ' <z303-plain-html>h</z303-plain-html>'); ' <z303-want-sms>n</z303-want-sms>'); ' <z303-title-req-limit>0099</z303-title-req-limit>'); if substr (recordasmuo.identification, 1, 1) = '3' ' <z303-gender>m</z303-gender>'); elsif substr (recordasmuo.identification, 1, 1) = '4' ' <z303-gender>f</z303-gender>'); ' <z303-gender></z303-gender>'); ' <z303-birthplace></z303-birthplace>'); ' </z303>'); if recordasmuo.asg_end_date is null fielddatatoz304 := add_months (sysdate, 12); fielddatatoz304 := add_months (recordasmuo.asg_end_date, 3); if recordasmuo.contract_to is null fielddatatoz305 := add_months (sysdate, 6);

fielddatatoz305 := recordasmuo.asg_end_date; if fielddatatoz305 < sysdate fielddatatoz305 := sysdate; fieldsha1hash := sys.dbms_crypto.hash (utl_i18n.string_to_raw (recordasmuo.identification, 'AL32UTF8'), 3); begin select ldap_id into fieldldapid from ktu_ldap where sha1_hash = fieldsha1hash; exception when no_data_found fieldldapid := null; end; begin select el_pasto_adresas into fieldelpastoadresas from ktu_ldap where sha1_hash = fieldsha1hash; exception when no_data_found fieldelpastoadresas := 'skaitytojas@ktu.lt'; end; ' <z304>'); ' <record-action>a</record-action>'); ' <z304-id>0' recordasmuo.identification '</z304-id>'); ' <z304-sequence>01</z304-sequence>'); ' <z304-address-0>' recordasmuo.first_name rtrim (' ' recordasmuo.middle_name) ' ' recordasmuo.last_name '</z304-address-0>'); ' <z304-address-1>' recordasmuo.address '</z304-address-1>'); ' <z304-address-2>' trim (recordasmuo.postal_code ' ' recordasmuo.city) '</z304-address-2>'); ' <z304-address-3></z304-address-3>'); ' <z304-address-4></z304-address-4>'); ' <z304-zip></z304-zip>'); ' <z304-email-address>' fieldelpastoadresas '</z304-email-address>'); fieldphone1 := null; fieldphone2 := null; if not recordasmuo.home_mob_phone is null

fieldphone1 := replace (replace (recordasmuo.home_mob_phone, ' ', ' '), '+370', '8'); if not recordasmuo.home_phone is null fieldphone2 := replace (replace (recordasmuo.home_phone, ' ', ' '), '+370', '8'); if not recordasmuo.home_phone is null fieldphone1 := replace (replace (recordasmuo.home_phone, ' ', ' '), '+370', '8'); ' <z304-telephone>' fieldphone1 '</z304-telephone>'); ' <z304-date-from>' to_char (recordasmuo.last_update_date, 'YYYYMMDD') '</z304-date-from>'); ' <z304-date-to>' to_char (fielddatatoz304, 'YYYYMMDD') '</z304-date-to>'); ' <z304-address-type>01</z304-address-type>'); ' <z304-telephone-2>' fieldphone2 '</z304-telephone-2>'); ' <z304-telephone-3></z304-telephone-3>'); ' <z304-telephone-4></z304-telephone-4>'); ' </z304>'); ' <z304>'); ' <record-action>a</record-action>'); ' <z304-id>0' recordasmuo.identification '</z304-id>'); ' <z304-sequence>02</z304-sequence>'); ' <z304-address-0>' recordasmuo.first_name rtrim (' ' recordasmuo.middle_name) ' ' recordasmuo.last_name '</z304-address-0>'); open cursorpadaliniai (recordasmuo.asg_org_id); looppadaliniaifinished := false; field1lygiopadalinys := null; field2lygiopadalinys := null; field3lygiopadalinys := null; field4lygiopadalinys := null; <<looppadaliniai>> loop fetch cursorpadaliniai into recordpadalinys;

exit looppadaliniai when cursorpadaliniai%notfound or looppadaliniaifinished; if field4lygiopadalinys is null field4lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 1; if field3lygiopadalinys is null field3lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 2; if field2lygiopadalinys is null field2lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 3; if field1lygiopadalinys is null field1lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 4; if instr (recordpadalinys.org_type, ' I lygmuo') > 0 looppadaliniaifinished := true; end loop looppadaliniai; close cursorpadaliniai; case padaliniulygiukiekis when 1 ' <z304-address-1>' field4lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' recordasmuo.asg_job_name '</z304-address-2>'); ' <z304-address-3></z304-address-3>'); ' <z304-address-4></z304-address-4>'); when 2 ' <z304-address-1>' field3lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field4lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' recordasmuo.asg_job_name '</z304-address-3>');

' <z304-address-4></z304-address-4>'); when 3 ' <z304-address-1>' field2lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field3lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' field4lygiopadalinys '</z304-address-3>'); ' <z304-address-4>' recordasmuo.asg_job_name '</z304-address-4>'); when 4 ' <z304-address-1>' field1lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field2lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' field3lygiopadalinys '</z304-address-3>'); ' <z304-address-4>' recordasmuo.asg_job_name '</z304-address-4>'); end case; ' ' <z304-email-address>' fieldelpastoadresas '</z304-email-address>'); fieldphone1 := null; fieldphone2 := null; <z304-zip></z304-zip>'); if not recordasmuo.office_mob_phone is null fieldphone1 := replace (replace (recordasmuo.office_mob_phone, ' ', ' '), '+370', '8'); if not recordasmuo.office_phone is null fieldphone2 := replace (replace (recordasmuo.office_phone, ' ', ' '), '+370', '8'); if not recordasmuo.office_phone is null fieldphone1 :=

replace (replace (recordasmuo.office_phone, ' ', ' '), '+370', '8'); ' <z304-telephone>' fieldphone1 '</z304-telephone>'); ' <z304-date-from>' to_char (recordasmuo.asg_start_date, 'YYYYMMDD') '</z304-date-from>'); ' <z304-date-to>' to_char (fielddatatoz304, 'YYYYMMDD') '</z304-date-to>'); ' <z304-address-type>02</z304-address-type>'); ' <z304-telephone-2>' fieldphone2 '</z304-telephone-2>'); ' <z304-telephone-3></z304-telephone-3>'); ' <z304-telephone-4></z304-telephone-4>'); ' </z304>'); select data into sublibrarieslist2 from ktu_parameters where id = 'Z305_SUBLIBRARIES'; sublibrarieslist := sublibrarieslist2; <<LoopSubLibraries>> while length (sublibrarieslist) > 0 loop begin fieldsublibrary := rtrim (substr (sublibrarieslist, 1, 5)); ' <z305>'); ' <record-action>a</record-action>'); ' <z305-id>0' recordasmuo.identification '</z305-id>'); ' <z305-sub-library>' fieldsublibrary '</z305-sub-library>'); ' <z305-bor-type>da</z305-bor-type>'); ' <z305-bor-status>01</z305-bor-status>'); ' <z305-registration-date>' to_char (recordasmuo.contract_from, 'YYYYMMDD') '</z305-registration-date>'); ' <z305-expiry-date>' to_char (fielddatatoz305, 'YYYYMMDD') '</z305-expiry-date>'); ' </z305>'); if length (sublibrarieslist) > 6 sublibrarieslist := substr (sublibrarieslist, 7);

sublibrarieslist := null; exception when others null; end; end loop LoopSubLibraries; ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>01</z308-key-type>'); ' <z308-key-data>0' recordasmuo.identification '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.identification), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>02</z308-key-type>'); ' <z308-key-data>' recordasmuo.identification '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.identification), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>04</z308-key-type>'); ' <z308-key-data>' recordasmuo.person_external_id '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.identification), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); if not fieldldapid is null ' <z308>');

' <record-action>a</record-action>'); ' <z308-key-type>07</z308-key-type>'); ' <z308-key-data>' upper (fieldldapid) '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.identification), 1, 40) '</z308-verification>'); ' <z308-verification-type>02</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); ' </patron-record>'); end loop loopasmenys; close cursorasmenys; '</p-file-20>'); utl_file.fclose (outputfile); insert into ktu_operation_log (id, id2, "procedure", notes) values (ktu_operation_log_id.nextval, sequenceoperationlogid2, 'CREATE_ALEPH_DARBUOTOJAI', 'PABAIGA'); commit; end ktu_create_aleph_darbuotojai; function md5hash (P_STRING in varchar2) return varchar2 is lv_hash_value varchar2 (32); lv_varchar_key varchar2 (32); begin lv_hash_value := dbms_obfuscation_toolkit.md5 (input_string => P_STRING); select upper (to_char (rawtohex (lv_hash_value))) into lv_varchar_key from dual; return lv_varchar_key; exception when others return null; end md5hash; Šiame priede pateikta institucijos studentų XML formato duomenų failo suformavimo iš institucijos akademinės informacijos sistemos (KTU AIS atvejis), dalį duomenų imant iš Lietuvos mokslo, studijų, veiklos ir procesų valdymo informacinės sistemos EDINA (buv. LieMSIS) personalo duomenų bazės (tik jos padalinių klasifikatoriaus posistemės), pavyzdinė programa (KTU atvejis), parašyta Oracle PL/SQL programavimo kalba.

procedure ktu_create_aleph_studentai is ankstesnisasmenskodas varchar2 (20); fieldadresas1 varchar2 (200); fieldadresas2 varchar2 (200); fieldadresas3 varchar2 (200); field1lygiopadalinys varchar2 (200); field2lygiopadalinys varchar2 (200); field3lygiopadalinys varchar2 (200); field4lygiopadalinys varchar2 (200); fieldborstatus char (2); fielddatatoz304 date; fielddatatoz305 date; fieldelpastoadresas varchar2 (200); fieldgimimodata number (8); fieldhomelibrary varchar2 (5); fieldldapid varchar2 (10); fieldsha1hash varchar2 (50); fieldstudijos varchar2 (50); fieldstudijuforma varchar2 (50); fieldsublibrary varchar2 (5); irasonr number (5); looppadaliniaifinished boolean; outputfile utl_file.file_type; padaliniulygiukiekis number (1); sequenceoperationlogid2 number (8); sublibrarieslist varchar2 (100); sublibrarieslist2 varchar2 (100); tempgimimodata date; cursor cursorasmenys is select distinct ktu_dbstu.status, ktu_dbstu.skyrp, ktu_dbstu.kursas, ktu_dbstu.grupe, ktu_dbstu.isak_tip, ktu_dbstu.isak_dt1, ktu_dbstu.ist_met, ktu_dbstu.fakul, ktu_dbstu.pavar, ktu_dbstu.asm_kod, ktu_dbstu.vidko, ktu_dbstu.iskkg, ktu_dbstu.numeris_uid, ktu_dbstu.pilietybe, ktu_dbstu.busena, ktu_dbadre.stelef, ktu_dbadre.sgatve, ktu_dbadre.snamonr, ktu_dbadre.sbutonr, ktu_dbadre.sindeks, ktu_dbadre.smiestas, ktu_dbadre.sgyvenv, ktu_dbadre.bendrab from ktu_dbstu left outer join ktu_dbadre on ktu_dbstu.asm_kod = ktu_dbadre.asm_kod where ktu_dbstu.busena in ('1', '2', '3', '4', '6', '7', 'A', 'C', 'D', 'J', 'K', 'L', 'M', 'P', 'R', 'S', 'T', 'U') and (not ktu_dbstu.fakul is null) and (not ktu_dbstu.fakul like 'X%') and (not ktu_dbstu.grupe is null) order by ktu_dbstu.asm_kod, ktu_dbstu.isak_dt1 desc; cursor cursorpadaliniai (padalinioid varchar2) is select * from (select dpad.eilnr, dpad.child_org_name, vpad.org_type from ( select level eilnr, ph.* from ktu_per072_padal_hierach_v ph start with child_org_id = (select distinct organization_id from ktu_per072_padaliniai_v where padalinio_kodas = padalinioid) connect by prior parent_org_id = child_org_id) dpad

inner join ktu_per072_padaliniai_v tpad on tpad.organization_id = dpad.parent_org_id inner join ktu_per072_padaliniai_v vpad on vpad.organization_id = dpad.child_org_id) order by eilnr; recordasmuo cursorasmenys%rowtype; recordpadalinys cursorpadaliniai%rowtype; begin select ktu_operation_log_id2.nextval into sequenceoperationlogid2 from dual; insert into ktu_operation_log (id, id2, "PROCEDURE", notes) values (ktu_operation_log_id.nextval, sequenceoperationlogid2, 'CREATE_ALEPH_STUDENTAI', 'PRADŽIA'); commit; outputfile := utl_file.fopen ('/exlibris/bpiac/failai/ktu', 'aleph_studentai.xml', 'w'); '<?xml version="1.0"?>'); '<p-file-20>'); irasonr := 0; ankstesnisasmenskodas := ' '; open cursorasmenys; <<loopasmenys>> loop fetch cursorasmenys into recordasmuo; exit LoopAsmenys when cursorasmenys%notfound; if not (ankstesnisasmenskodas = recordasmuo.asm_kod) irasonr := irasonr + 1; ankstesnisasmenskodas := recordasmuo.asm_kod; ' <!-- Record No. ' irasonr ' -->'); ' <patron-record>'); ' <z303>'); ' <record-action>a</record-action>'); ' <match-id-type>01</match-id-type>'); ' <match-id>0' recordasmuo.asm_kod '</match-id>'); ' <z303-id>0' recordasmuo.asm_kod '</z303-id>'); ' <z303-user-type>reg</z303-user-type>'); if recordasmuo.pilietybe = 'LT' ' <z303-con-lng>lit</z303-con-lng>'); ' <z303-con-lng>eng</z303-con-lng>'); ' <z303-alpha>l</z303-alpha>'); ' <z303-first-name>' substr (recordasmuo.pavar, instr (recordasmuo.pavar, ' ') + 1) '</z303-first-name>');

' <z303-last-name>' substr (recordasmuo.pavar, 1, instr (recordasmuo.pavar, ' ') - 1) '</z303-last-name>'); ' <z303-title>stud.</z303-title>'); ' <z303-delinq-1>00</z303-delinq-1>'); ' <z303-delinq-n-1></z303-delinq-n-1>'); ' <z303-delinq-3>00</z303-delinq-3>'); ' <z303-delinq-n-3>+</z303-delinq-n-3>'); ' <z303-budget></z303-budget>'); if recordasmuo.pilietybe = 'LT' ' <z303-profile-id>aleph</z303-profile-id>'); ' <z303-profile-id>aleph-eng</z303-profile-id>'); ' <z303-ill-library></z303-ill-library>'); begin select /*+ FIRST_ROWS */ home_library into fieldhomelibrary from ktu_home_library where padalinio_kodas = substr (recordasmuo.fakul, 1, 2); exception when others fieldhomelibrary := 'KTUCB'; end; ' <z303-home-library>ktucb</z303-home-library>'); ' <z303-note-1>+</z303-note-1>'); ' <z303-ill-total-limit>0000</z303-ill-total-limit>'); ' <z303-ill-active-limit>0000</z303-ill-active-limit>'); begin fieldgimimodata := to_number ('19' substr (recordasmuo.asm_kod, 2, 6)); tempgimimodata := to_date (fieldgimimodata, 'YYYYMMDD'); exception when invalid_number fieldgimimodata := 0; insert into ktu_operation_log (id, id2, "PROCEDURE", notes) values (ktu_operation_log_id.nextval, sequenceoperationlogid2, 'CREATE_ALEPH_STUDENTAI', 'Perspėjimas - nepavyko sukurti gimimo datos - a. k. ' recordasmuo.asm_kod ' (' rtrim (recordasmuo.pavar) ')'); commit;

when others fieldgimimodata := 0; insert into ktu_operation_log (id, id2, "PROCEDURE", notes) values (ktu_operation_log_id.nextval, sequenceoperationlogid2, 'CREATE_ALEPH_STUDENTAI', 'Perspėjimas - nepavyko sukurti gimimo datos - a. k. ' recordasmuo.asm_kod ' (' rtrim (recordasmuo.pavar) ')'); commit; end; if fieldgimimodata > 0 ' <z303-birth-date>' to_char (fieldgimimodata) '</z303-birth-date>'); ' <z303-birth-date></z303-birth-date>'); ' <z303-export-consent>y</z303-export-consent>'); ' <z303-proxy-id-type>00</z303-proxy-id-type>'); ' <z303-send-all-letters>y</z303-send-all-letters>'); ' <z303-plain-html>h</z303-plain-html>'); ' <z303-want-sms>n</z303-want-sms>'); ' <z303-title-req-limit>0099</z303-title-req-limit>'); if substr (recordasmuo.asm_kod, 1, 1) = '3' ' <z303-gender>m</z303-gender>'); elsif substr (recordasmuo.asm_kod, 1, 1) = '4' ' <z303-gender>f</z303-gender>'); ' <z303-gender></z303-gender>'); ' <z303-birthplace></z303-birthplace>'); ' </z303>'); if recordasmuo.busena = '0' and substr (recordasmuo.isak_tip, 1, 1) = '2' fielddatatoz304 := add_months (recordasmuo.isak_dt1, 3); fielddatatoz305 := recordasmuo.isak_dt1; fielddatatoz304 := add_months (sysdate, 12); fielddatatoz305 := add_months (sysdate, 6); if fielddatatoz305 < sysdate

fielddatatoz305 := sysdate; fieldsha1hash := sys.dbms_crypto.hash (utl_i18n.string_to_raw (recordasmuo.asm_kod, 'AL32UTF8'), 3); begin select ldap_id into fieldldapid from ktu_ldap where sha1_hash = fieldsha1hash; exception when no_data_found fieldldapid := null; end; begin select el_pasto_adresas into fieldelpastoadresas from ktu_ldap where sha1_hash = fieldsha1hash; exception when no_data_found fieldelpastoadresas := 'skaitytojas@ktu.lt'; end; if (instr (fieldelpastoadresas, ';') > 0 and length (fieldelpastoadresas) > 60) fieldelpastoadresas := substr (fieldelpastoadresas, 1, instr (fieldelpastoadresas, ';') - 1); ' <z304>'); ' <record-action>a</record-action>'); ' <z304-id>0' recordasmuo.asm_kod '</z304-id>'); ' <z304-sequence>01</z304-sequence>'); ' <z304-address-0>' substr (recordasmuo.pavar, instr (recordasmuo.pavar, ' ') + 1) ' ' substr (recordasmuo.pavar, 1, instr (recordasmuo.pavar, ' ') - 1) '</z304-address-0>'); fieldadresas1 := null; fieldadresas2 := null; fieldadresas3 := null; if not recordasmuo.bendrab is null fieldadresas1 := recordasmuo.bendrab ' KTU bendrabutis'; if not recordasmuo.sgatve is null fieldadresas2 := substr ( rtrim (remove_bad_characters (recordasmuo.sgatve)) ' ' rtrim (recordasmuo.snamonr), 1, 200); fieldadresas3 :=

ltrim (remove_bad_characters (recordasmuo.sindeks) ' ') remove_bad_characters (recordasmuo.smiestas); if not recordasmuo.sbutonr is null fieldadresas2 := fieldadresas2 '-' recordasmuo.sbutonr; if not recordasmuo.sgatve is null fieldadresas1 := substr ( rtrim (remove_bad_characters (recordasmuo.sgatve)) ' ' rtrim (recordasmuo.snamonr), 1, 200); if not recordasmuo.sbutonr is null fieldadresas1 := fieldadresas1 '-' recordasmuo.sbutonr; fieldadresas2 := ltrim (remove_bad_characters (recordasmuo.sindeks) ' '); if recordasmuo.sgyvenv is null fieldadresas2 := fieldadresas2 remove_bad_characters (recordasmuo.smiestas); fieldadresas2 := substr (fieldadresas2 remove_bad_characters (recordasmuo.sgyvenv) ', ' remove_bad_characters (recordasmuo.smiestas), 1, 200); ' <z304-address-1>' fieldadresas1 '</z304-address-1>'); ' <z304-address-2>' fieldadresas2 '</z304-address-2>'); ' <z304-address-3>' fieldadresas3 '</z304-address-3>'); ' <z304-address-4></z304-address-4>'); ' <z304-zip></z304-zip>'); ' <z304-email-address>' fieldelpastoadresas '</z304-email-address>'); ' <z304-telephone>' replace (replace (recordasmuo.stelef, ' ', ' '), '+370', '8') '</z304-telephone>'); ' <z304-date-from>' to_char (sysdate, 'YYYYMMDD') '</z304-date-from>'); ' <z304-date-to>' to_char (fielddatatoz304, 'YYYYMMDD') '</z304-date-to>'); ' <z304-address-type>01</z304-address-type>'); ' <z304-telephone-2></z304-telephone-2>');

' <z304-telephone-3></z304-telephone-3>'); ' <z304-telephone-4></z304-telephone-4>'); ' </z304>'); ' <z304>'); ' <record-action>a</record-action>'); ' <z304-id>0' recordasmuo.asm_kod '</z304-id>'); ' <z304-sequence>02</z304-sequence>'); ' <z304-address-0>' substr (recordasmuo.pavar, instr (recordasmuo.pavar, ' ') + 1) ' ' substr (recordasmuo.pavar, 1, instr (recordasmuo.pavar, ' ') - 1) '</z304-address-0>'); open cursorpadaliniai (recordasmuo.fakul); looppadaliniaifinished := false; field1lygiopadalinys := null; field2lygiopadalinys := null; field3lygiopadalinys := null; field4lygiopadalinys := null; <<looppadaliniai>> loop fetch cursorpadaliniai into recordpadalinys; exit looppadaliniai when cursorpadaliniai%notfound or looppadaliniaifinished; if field4lygiopadalinys is null field4lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 1; if field3lygiopadalinys is null field3lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 2; if field2lygiopadalinys is null field2lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 3; if field1lygiopadalinys is null field1lygiopadalinys := recordpadalinys.child_org_name; padaliniulygiukiekis := 4; if instr (recordpadalinys.org_type, ' I lygmuo') > 0 looppadaliniaifinished := true; end loop looppadaliniai; close cursorpadaliniai;

select pavadinim into fieldstudijos from ktu_dbklas_2 where klas_nr = '57' and kodas = recordasmuo.status and data_iki is null; select pavadinim_klmnk into fieldstudijuforma from ktu_dbklas_2 where klas_nr = '66' and kodas = recordasmuo.skyrp and data_iki is null; case padaliniulygiukiekis when 1 ' <z304-address-1>' field4lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' rtrim (fieldstudijos) ' ' rtrim (lower (fieldstudijuforma)) ' studijos' '</z304-address-2>'); ' <z304-address-3>' rtrim (recordasmuo.kursas) ' kursas, ' rtrim (recordasmuo.grupe) ' grupė' '</z304-address-3>'); ' <z304-address-4></z304-address-4>'); when 2 ' <z304-address-1>' field3lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field4lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' rtrim (fieldstudijos) ' ' rtrim (lower (fieldstudijuforma)) ' studijos' '</z304-address-3>'); ' <z304-address-4>' rtrim (recordasmuo.kursas) ' kursas, ' rtrim (recordasmuo.grupe) ' grupė' '</z304-address-4>'); when 3

' <z304-address-1>' field2lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field3lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' rtrim (fieldstudijos) ' ' rtrim (lower (fieldstudijuforma)) ' studijos' '</z304-address-3>'); ' <z304-address-4>' rtrim (recordasmuo.kursas) ' kursas, ' rtrim (recordasmuo.grupe) ' grupė' '</z304-address-4>'); when 4 ' <z304-address-1>' field1lygiopadalinys '</z304-address-1>'); ' <z304-address-2>' field2lygiopadalinys '</z304-address-2>'); ' <z304-address-3>' rtrim (fieldstudijos) ' ' rtrim (lower (fieldstudijuforma)) ' studijos' '</z304-address-3>'); ' <z304-address-4>' rtrim (recordasmuo.kursas) ' kursas, ' rtrim (recordasmuo.grupe) ' grupė' '</z304-address-4>'); end case; ' <z304-zip></z304-zip>'); ' <z304-email-address>' fieldelpastoadresas '</z304-email-address>'); ' <z304-telephone>' replace (replace (recordasmuo.stelef, ' ', ' '), '+370', '8') '</z304-telephone>'); ' <z304-date-from>' to_char (sysdate, 'YYYYMMDD') '</z304-date-from>'); ' <z304-date-to>' to_char (fielddatatoz304, 'YYYYMMDD') '</z304-date-to>');

' <z304-address-type>02</z304-address-type>'); ' <z304-telephone-2></z304-telephone-2>'); ' <z304-telephone-3></z304-telephone-3>'); ' <z304-telephone-4></z304-telephone-4>'); ' </z304>'); select data into sublibrarieslist2 from ktu_parameters where id = 'Z305_SUBLIBRARIES'; sublibrarieslist := sublibrarieslist2; case recordasmuo.busena when 'D' fieldborstatus := '70'; when 'M' fieldborstatus := '48'; when 'S' fieldborstatus := '49'; fieldborstatus := '40'; end case; <<loopsublibraries>> while length (sublibrarieslist) > 0 loop begin fieldsublibrary := rtrim (substr (sublibrarieslist, 1, 5)); ' <z305>'); ' <record-action>a</record-action>'); ' <z305-id>0' recordasmuo.asm_kod '</z305-id>'); ' <z305-sub-library>' fieldsublibrary '</z305-sub-library>'); ' <z305-bor-type>st</z305-bor-type>'); ' <z305-bor-status>' fieldborstatus '</z305-bor-status>'); ' <z305-registration-date>' to_char (sysdate, 'YYYYMMDD') '</z305-registration-date>'); ' <z305-expiry-date>' to_char (fielddatatoz305, 'YYYYMMDD') '</z305-expiry-date>'); ' </z305>'); if length (sublibrarieslist) > 6 sublibrarieslist := substr (sublibrarieslist, 7); sublibrarieslist := null;

exception when others null; end; end loop loopsublibraries; ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>01</z308-key-type>'); ' <z308-key-data>0' recordasmuo.asm_kod '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.asm_kod), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>02</z308-key-type>'); ' <z308-key-data>' recordasmuo.asm_kod '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.asm_kod), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>03</z308-key-type>'); ' <z308-key-data>' recordasmuo.vidko '</z308-key-data>'); ' <z308-verification>' substr (md5hash (recordasmuo.asm_kod), 1, 40) '</z308-verification>'); ' <z308-verification-type>00</z308-verification-type>'); ' <z308-status>ac</z308-status>'); ' <z308-encryption>h</z308-encryption>'); ' </z308>'); if not recordasmuo.iskkg is null ' <z308>'); ' <record-action>a</record-action>'); ' <z308-key-type>03</z308-key-type>'); ' <z308-key-data>' recordasmuo.iskkg '</z308-key-data>');