Aleph link export poznámky¶
Žádost k exportu¶
Z hlediska Alephu funguje vše tak, že se přes SCP připojí na edeposit-aplikace, kde si vyzvedne soubor edep2aleph.xml. Ten je vytvořený podle následujícího XSD:
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://edeposit-aplikace.nkp.cz/link_export_notification" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://edeposit-aplikace.nkp.cz/link_export_notification">
<complexType name="Record">
<sequence>
<element name="uuid" type="string" minOccurs="1" maxOccurs="1" />
<element name="doc_number" type="string" minOccurs="1" maxOccurs="1" />
<element name="document_url" minOccurs="1" maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension base="anyURI">
<attribute type="string" name="format" use="optional"/>
</extension>
</simpleContent>
</complexType>
</element>
<element name="urn_nbn" type="string" minOccurs="0" maxOccurs="1" />
<element name="kramerius_url" type="anyURI" minOccurs="0" maxOccurs="1" />
</sequence>
<attribute type="string" name="session_id" />
</complexType>
<complexType name="RecordsType">
<sequence>
<element name="record" type="tns:Record" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<element name="records">
<complexType>
<complexContent>
<extension base="tns:RecordsType" />
</complexContent>
</complexType>
</element>
</schema>
Ukázka¶
<?xml version="1.0" encoding="UTF-8"?>
<records xsi:schemaLocation="http://edeposit-aplikace.nkp.cz/link_export_notification.xsd" xmlns="http://edeposit-aplikace.nkp.cz/link_export_notification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record session_id="asd133">
<uuid>a0f177b4-d083-4175-8f5b-c2748367a4f6</uuid>
<doc_number>000054231</doc_number>
<document_url format="mobi">http://edeposit-storage/UUID/a0f177b4-d083-4175-8f5b-c2748367a4f6</document_url>
</record>
<record session_id="asd2222">
<uuid>dd831a9d-a0d8-4537-b518-52b85e5c03a3</uuid>
<doc_number>000014375</doc_number>
<document_url format="epub">http://edeposit-storage/UUID/dd831a9d-a0d8-4537-b518-52b85e5c03a3</document_url>
<urn_nbn>urn:nbn:cz:edep-000014375</urn_nbn>
</record>
</records>
Odpověď¶
Script na straně Alephu XML zpracuje a výsledky zapíše do souboru aleph2edep.xml, který poté nahraje zpět na SCP. Odpověď se skládá z jednotlivých <result> záznamů, které obsahují stejný parametr session_id, jako záznam, na který je to odpověď a položku <status>, nabírající hodnot buďto OK, nebo ERROR.
Soubor je vytvořen podle schématu definovaného následujícím XSD:
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://edeposit-aplikace.nkp.cz/link_export_result" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://edeposit-aplikace.nkp.cz/link_export_result">
<simpleType name="Status">
<restriction base="string">
<enumeration value="OK"></enumeration>
<enumeration value="ERROR"></enumeration>
</restriction>
</simpleType>
<complexType name="Result">
<sequence>
<element name="status" type="tns:Status" minOccurs="1" maxOccurs="1" />
<element name="reason" type="string" minOccurs="0" maxOccurs="1" />
</sequence>
<attribute type="string" name="session_id" />
</complexType>
<complexType name="ResultsType">
<sequence>
<element name="result" type="tns:Result" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<element name="results">
<complexType>
<complexContent>
<extension base="tns:ResultsType" />
</complexContent>
</complexType>
</element>
</schema>
Ukázka¶
<?xml version="1.0" encoding="UTF-8"?>
<results xsi:schemaLocation="http://edeposit-aplikace.nkp.cz/link_export_result.xsd" xmlns="http://edeposit-aplikace.nkp.cz/link_export_result" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<result session_id="asd133">
<status>OK</status>
</result>
<result session_id="asd2222">
<status>ERROR</status>
<reason>Some reason.</reason>
</result>
</results>
Pozor, zde se nepoužívá record, ale result.
Poznámky¶
Programové vybavení modulu aleph_link_export automaticky odstraní všechny záznamy <record> ze souboru edep2aleph.xml, které již mají odpověď v aleph2edep.xml.
Workflow na straně Alephu by tedy mělo vypadat následovně:
Jednou za čas jsem spuštěn (čas je nutné domluvit).
- Stáhnu edep2aleph.xml
Procházím všechny <record> záznamy v něm, něco s nimi dělám.
- Výsledky zapisuji do druhého souboru aleph2edep.xml jako <result> tagy.
- Do <result> kopíruji session_id.
Nově vzniklý aleph2edep.xml nahraji zpět na SCP.
Díky tomu, že všechny <record> tagy jsou po přijetí odpovědi E-depositem z vstupního XML automaticky odstraněny, není nutné používat vícero souborů. Výstupní XMl může být pokaždé přepsáno.