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>');