DES offline/Technik: Unterschied zwischen den Versionen

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 190: Zeile 190:
</projects></xml>
</projects></xml>


== Datenerfassungsprogramm ==
----
----
<references/>
<references/>

Version vom 5. Februar 2009, 08:18 Uhr

Redhat-accessories.svg Dieser Artikel bezieht sich auf ein Projekt, das sich in der Planungsphase/einem frühen Entwicklungsstadium befindet.



aktueller Entwicklungsstand

Die aktuelle Version in Entwicklung kann hier heruntergeladen werden: http://www.fischer-hessberg.com/software/gedbas4all/DES.rar

Hinweise

Abspeichern von Daten ist derzeit noch nicht möglich.

Ideen für ein Datenerfassungsprogramm

  • Das Programm kann (mindestens) folgende Bildtypen anzeigen: JPEG, PNG, TIFF, DjVu
  • Oben wird die Grafik angezeigt, unten tippt man in eine Tabelle ein
  • Es möglich sein, das reine Grafikfenster komplett separat zu händeln. Also nicht nur an den Single-Monitor User denken, sondern 2 Monitor-Anwender werden sich z.b. die Urkunde auf einen, das Eingabeprogramm auf einen anderen Monitor legen müssen. Trotzdem muss das Program in der Standardeinstellung "wie aus einem Guss" wirken und beides untereinander angeordnet zeigen.
  • Bearbeiter laden vom Server nur eine Seite runter. Dort wird vermerkt, wer gerade welche Seite hat
  • Man bekommt die Tabellendefinition passend zum Bild (bzw. Projekt, zu dem es gehört) vom Server geschickt.
  • Seiten haben nur eine begrenzte Bearbeitungsdauer (z.B. eine Woche) danach werden sie wieder freigegeben.
  • Möglichkeit, Zeilen in der Grafik hervorzuheben, die automatisch zum nächsten Eintrag springen. Dazu markiert man zunächst zwei Einträge und das Programm kann so den Abstand zwischen Zeilen bestimmen (funktioniert natürlich nur, wenn der immer gleich ist)
  • Grafikprogramm muss mindestens Zoom-Funktionen und Helligkeits- u. Kontrastregelung bieten
  • Zunächst wird double-keying eingebaut, also 2x Abtippen und ein Schiedsrichter, der auf ungleiche Einträge schaut. Es sind aber auch weitere Arbeitsweisen denkbar:
    • einmal Tippen, 2x Korrekturlesen
    • inkrementelles Erfassen: Zunächst wird nur ein Teil der Spalten erfaßt, die anderen sind noch gesperrt. Wenn diese Spalte fertig ist, bekommt man mit einem Bild diese fertige Spalte und kann weitere Daten hinzufügen[1].


Weiteres siehe Datenerfassungsprogramm#Beispiele

Typen für Tabellenfelder

  • freier Text
  • nur Zahlen
  • feste Auswahlbox
  • Vorschläge aus einer Liste aber Möglichkeit, eigenen Text zu schreiben
  • Manche Tabellenfelder müssen für die gesamte Seite identisch bleiben (Seitenzahl)

Hinweise für Implementierung

Eine freie DjVu-Anzeige für Java gibt es: http://sourceforge.net/project/showfiles.php?group_id=126194

Server

Zustandsübergänge auf der Serverseite:

DataEntry States.svg

Client fordert neues Bild vom Server an (Projekt mit double-keying)

  • abgelaufene Bilder freigeben
    • suche Bilder im Projekt mit erreichtem Ablaufdatum und Zustand WORK1, setze auf NEW
    • suche Bilder im Projekt mit erreichtem Ablaufdatum und Zustand WORK2, setze auf BACK_FROM_WORK1
  • Gibt es im Projekt ein Bild mit BACK_FROM_WORK1, das nicht vom Bearbeiter getippt wurde?
    • ja: Status = WORK2, Bearbeiter und Ablaufdatum setzen, Bild senden, ENDE
  • Gibt es im Projekt ein Bild mit NEW?
    • ja: Status = WORK1, Bearbeiter und Ablaufdatum setzen, Bild senden, ENDE
  • Rückmeldung: kein Bild mehr da

Client sendet Daten zurück

  • Daten in Datentabelle speichern
  • wenn Zustand WORK1, dann Datum eintragen, Zustand BACK_FROM_WORK1, ENDE
  • wenn Zustand WORK2, dann Datum eintragen, prüfen ob alle Daten identisch sind
    • ja: Zustand DONE, ENDE
    • nein: Zustand BACK_FROM_WORK2, ENDE

Tabelle für Seiten

  • id
  • project_id INT (Referenz auf Projekt-Tabelle)
  • sequence_number INT
  • status STRING oder INT (wie werden Enums übersetzt?)
  • editor1 INT
  • edit1_date DATE
  • editor2 INT
  • edit2_date DATE
  • arbiter INT
  • arbitration_date DATE

Tabelle für Daten

  • id
  • page Referenz auf Seiten-Tabelle
  • number_of_edit INT
  • column_number INT
  • cell_content TEXT

Beispiele

FamilysearchIndexing:

Datei:Layout eingabeprogramm.png

Schnittstelle

Die Clients kommunizieren mit dem Server über eine Schnittstelle mit den folgenden Operationen. Bei allen Anfragen müssen Benutzername und Paßwort übermittelt werden.

neue Seite abrufen

Der Bearbeiter fordert für ein angegebenes Projekt eine neue Seite an. Serverseitig wird eine zu bearbeitende Seite aus dem Projekt ausgewählt und Informationen zu Bilddatei und möglicherweise bereits erfaßte Daten der Seite an den Client geschickt.

GET /extern/newPage/$PROJECT_ID$
  • Eingabe
    • Kennung des Projekts
  • Antwort
    • Kennung der Seite
    • URL zum Scan
    • Seitenzahl (beginnend bei 0 bei mehrseitigen Scans, sonst 0)
    • MIME-Type des Scans
    • Termin Abgabeschluß
    • bisher eingegebene Daten

<xml><page id='1'>

 <url>http://wiki-commons.genealogy.net/images/2/2f/GDM_program_example04.png</url>
 <page-number>0</page-number>
 <mime-type>image/png</mime-type>
 <expires>Sun Jan 18 14:09:23 CET 2009</expires>
 <transcription>
   <row nr='8'>
     <cell nr='3'>Max</cell>
     <cell nr='4'>Mustermann</cell>
   </row>
 </transcription>

</page></xml>

defekte Seite melden

Mit Hilfe dieser Operation meldet ein Bearbeiter eine defekte Seite. Sie wird entsprechend markiert und ist anschließend nicht mehr dem Bearbeiter zugeordnet.

POST /extern/badPage/$PAGE_ID$

<xml><comment>Seite nur halb im Bild</comment></xml>

  • Eingabe
    • Kennung der Seite
    • Text mit Beschreibung des Defekts
  • keine Ausgabe

Informationen zu einem Projekt abrufen

Mit dieser Operation bekommt man Informationen über ein Projekt, unter anderem über die Struktur der zu erfassenden Daten.

GET /extern/project/$PROJECT_ID$
  • Eingabe
    • Kennung des Projekts
  • Ausgabe

<xml><project id='1'>

 <name>Testproject 1</name>
 <editingTime>10</editingTime>
 <columns>
   <column>
     <type>string</type>
     <name lang='de'>Familienname</name>
     <name lang='en'>family name</name>
   </column>
   <column>
     <type>string</type>
     <name lang='de'>Vorname</name>
     <name lang='en'>given name</name>
   </column>
 </columns>

</project></xml>

Daten einschicken

Hat ein Bearbeiter eine Seite komplett bearbeitet, schickt er mit dieser Operation die Daten an den Server. Dort werden die Daten gespeichert und der Status der Seite (entsprechend des Zustandsgraphen) aktualisiert.

POST /extern/submitData/$PAGE_ID$

<xml><transcription>

 <page id="7" />
 <row>
   <cell>Max</cell>
   <cell>Mustermann</cell>
   <cell>12345</cell>
   <cell>Musterstadt</cell>
 </row>

</transcription></xml>


Seite (unbearbeitet) freigeben

Ein Bearbeiter löst die Zuordnung einer Seite zu ihm ohne die Seite komplett bearbeitet und Daten übertragen zu haben. Anschließend steht die Seite anderen Bearbeitern zur Verfügung.

POST /extern/releasePage/$PAGE_ID$
  • Eingabe
    • Kennung der Seite
  • keine Ausgabe

Liste der Projekte abrufen

Der Server sendet eine Liste aller aktuellen Projekte.

GET /extern/projectList
  • keine Eingabe
  • Ausgabe

<xml><projects>

 <project id='1'>
   <name>Testproject 1</name>
 </project>
 <project id='2'>
   <name>Testproject 2</name>
 </project>

</projects></xml>


  1. Bei einem Ortsverzeichnis ist es sinnvoll, zunächst einen Index der Ortsnamen aufzunehmen und erst später die Detailsinformationen zu tippen