wiki:Architektura

Architektura

Pozadavky

Cely proces musi byt plne automaticky - tzn. v nejjednodussim pripade uzivatel zada jazyk a urci, kdy se ma proces zastavit (doba behu, objem prenesenych dat, pocet stazenych dokumentu, aktualni velikost korpusu).

V kazdem okamziku take musi byt mozne zjistit, v jakem stavu je cely proces (doba behu, prenesene data, ...).

Idea

  • Vznikne nekolik nastroji pro reseni dilcich uloh.
  • Jednotlive nastroje budou obaleny wrapperem (klient), ktery zajisti komunikaci s hlavnim programem (server).
  • Klienti zadaji o prideleni ukolu, reportuji dokonceni ukolu a zasilaji statistiky.
  • Muze byt vice klientu stejneho typu a muzou bezet na vice strojich.

Klienti

  • Factory
    • provadi nejakou transformaci dat
  • Monitor
    • pouze monitoruje stav
    • pocita statistiky

Ulozeni dat

  • Pro ulozeni dat se pouzije databaze (MySQL)
  • Data budou ulozeny jako n-tice [dokumentId, operaceId, nejake flagy, text]

Komunikace

Factory

  • Server => Klient: [taskId, dokumentId, operaceIdVstupni] - informace o umisteni vstupniho textu
  • Klient => Server: [taskId, dokumentId, operaceIdVystupni, vysledek] - informace o umisteni vystupniho textu; vysledek = 1 - s textem dale pracovat; 0 - s textem dale nepracovat

Monitor

  • Server => Klient: [taskId, dokumentId, operaceIdVstupni] - informace o umisteni vstupniho textu
  • Server => KLient: [jednotka, hodnota]
  • Klient => Server: [jednotka, hodnota] - o kolik se zmenila jednotka