![]() |
Dobré důvody pro uchování dokumentů v Kaskádě |
![]() |
Dokumenty v Kaskádě | Dokument jako obraz objektu |
![]() |
Tato kapitola se týká
takových typů obsahu, které potřebují externí aplikaci (jinak se práce odehraje přímo v prostoru Kaskádního prohlížeče)
především přímého spuštění externích prostředků, technologie ActiveX pouze okrajově.
Spolupráce Kaskády s externími aplikacemi, které umožňují uživateli pracovat s obsahem interních dokumentů, probíhá podle zdánlivě jednoduchého scénáře:
Kaskáda dokument z databáze vyexportuje
do pracovní složky na lokálním disku dané uživatelské stanice (cesta k pracovnímu souboru je uvedena v
plovoucí nápovědě nad hodnotou stavu čekání).
Tento první krok je zcela bezproblémový, jako pracovní prostor je automaticky použita složka, určená k tomu
účelu systémem Windows.
Kaskáda spustí aplikaci
nastaveným preferovaným způsobem spuštění externí
aplikace a to aplikací registrovanou pro otevření
daného typu souboru v systému Windows dané uživatelské stanice.
Dále záleží na tom, zda uživatel požaduje prohlížení nebo editaci
Při prohlížení se nic dalšího neděje (Kaskáda nezamyká objekt, nesleduje vyexportovaný soubor...)
Při editaci Kaskáda "sleduje" soubor vyexportovaný na disk, jakmile dojde k jeho změně (čas jeho poslední
změny se zvýšil), převezme a uloží jeho obsah zpět do databáze.
Sledování souboru a rozhodnutí o ukončení tohoto sledování je nejožehavějším tématem, neboť každá externí
aplikace se může k otevíraným souborům a ukládání změn chovat jinak.
Přímé spuštění registrované aplikace pro obsah daného dokumentu lze provést
dvojklikem na objekt (např. v seznamu objektů nebo v deníku), nebo
dvojklikem na ikonu znázorňující typ souboru v první kartě prohlížeče dokumentu
Přitom program zobrazí dotaz, zda
V takovém případě stav čekání bude vždy Žádné čekání.
Program otevře externí aplikaci s obsahem dokumentu, ale neočekává žádné zpětné ukládání.
Pro jistotu je vyexportovanému souboru nastavena vlastnost "Jan pro čtení", aby se v případě uživatelova
pokusu o editaci a uložení dat (kterým jde uživatel proti logice věci) program takovému uložení bránil.
V takovém případě Stav čekání se dostane do jedné z následujících hodnot
Prohlížeč běžného dokumentu se vždy nachází v jednom ze čtyř stavů :
V tomto stavu je prohlížeč tehdy, když obsah dokumentu není editován externí aplikací, ani v okně ActiveX (buďto editace obsahu nebyla spuštěna, nebo již byla regulerně ukončena)
Program v tomto stavu
neblokuje v databázi dokument proti editaci jinými uživateli, pokud není do editačního stavu uveden samotný prohlížeč, pro práci s "kaskádními atributy" jako je název, anotace, ....
žádným způsobem nesleduje žádný pracovní soubor a neočekává jeho změny za účelem načtení do databáze.
V tomto stavu je prohlížeč tehdy, když byla spuštěna externí aplikace pro editaci obsahu dokumentu a tato aplikace stále prokazatelně běží a lze předpokládat, že se Kaskáda díky mechanismům windows dozví, až aplikace skončí.
Program v tomto stavu
blokuje v databázi dokument proti editaci jinými uživateli
sleduje pracovní soubor s obsahem, který předtím byl vyexportován do pracovní složky a předán externí aplikaci, očekává jeho změny (uživatel v externí aplikaci něco editoval a dal pokyn k uložení dat), pokud k nim dojde - načte nový stav do databáze.
U tohoto stavu je v závorce uveden počet uložení dokumentu prostřednictvím externí aplikace.
V tomto stavu je prohlížeč tehdy, když
byla spuštěna externí aplikace pro editaci obsahu dokumentu
tato aplikace však okamžitě skončila, neboť předala pracovní soubor nějaké jiné aplikaci, která není Kaskádě známa (Kaskádě proto nezbývá, než "hlídat stav a změny" vyexportovaného pracovního souboru).
Program v tomto stavu
blokuje v databázi dokument proti editaci jinými uživateli
sleduje pracovní soubor s obsahem, který předtím byl vyexportován do pracovní složky, očekává jeho změny (uživatel v externí aplikaci něco editoval a dal pokyn k uložení dat), pokud k nim dojde - načte nový stav do databáze.
U tohoto stavu je v závorce uveden počet uložení dokumentu prostřednictvím externí aplikace.
Může se stát (a v praxi se opravdu běžně stává), že tento stav zůstává i poté, kdy uživatel práci se souborem v externí aplikaci ukončil. Jak se v takových případech chovat popisuje odstavec Jak se má uživatel chovat, pokud skončil práci v externí aplikaci a přesto stav prohlížeče zůstává "Čekání na uvolnění souboru"
V tomto stavu je prohlížeč tehdy, když
v uživatelských preferencích je povoleno Používat ActiveX pro editaci dokumentů
prohlížeč pracuje s dokumentem takového typu, který umožňuje použití ActiveX technologie
uživatel spustil editaci obsahu a pro tento účel se otevřelo samostatné okno.
Samotný externí program je samozřejmě plně v rukách uživatele.
Jakmile uživatel provede v externím programu (např. MS Word) příslušnou editaci, musí uložit změny do pracovního souboru, t.j. do toho souboru, který daná aplikace na pokyn Kaskády otevřela - tento soubor je Kaskádou "hlídán" a při změně si Kaskáda nový obsah přečte a uloží automaticky do databáze.
Předchozí pokyn (uložit změny) zní velmi jednoduše, přesto může dojít k problémům a zmatkům, neboť
různé aplikace se mohou z hlediska ukládání změn chovat různě
pro uložení mohou být k dispozici tlačítka (disketka), položky menu (Uložit), klávesové zkratky (<Ctrl+S>), ale
ne vždy se např. za tlačítkem s disketou skrývá funkce "Uložit", u některých aplikací je to funkce "Uložit jako ..." a pokud uživatel uloží soubor na jiné místo nebo do souboru s jiným jménem, Kaskáda to netuší a obsah nenačte a neuloží do databáze
V případě pochybností o jménu pracovního souboru a jeho umístění (složce na disku PC) si toto ověřte v prohlížeči dokumentu, v plovoucí nápovědě nad informací o stavu čekání.
Při práci s aplikací, kterou v kontextu Kaskády používáte poprvé, v klidu postup vyzkoušejte a ověřte si, že vše probíhá tak jak očekáváte.
To, že prohlížeč zůstal ve stavu Čekání na uvolnění souboru i poté, kdy uživatel práci se souborem v externí aplikaci ukončil, není chyba, ale běžná situace. Důvody jsou popsané v komentáři o technických detailech.
Uživatel může:
zavřít prohlížeč, přitom v dotazu zda ukončit čekání na soubor zvolit volbu "Yes"
kliknout na titulek "Čekání na uvolnění souboru" a v dotazu zda ukončit čekání na soubor zvolit volbu "Yes"
Běžní uživatelé nechť tento odstavec vynechají, zájemcům o technické detaily může osvětlit některé aspekty chování Kaskády v součinnosti s různými typy externích aplikací.
Kaskáda se při sledování editovaných dokumentů zabývá dvěma aspekty, které spolu sice souvisí, ale každý má jiný dopad a jinou technickou podstatu.
Vyexportovaný dokument je nutno, pokud dojde k jeho změně (uživatel něco editoval a data uložil), načíst a uložit zpět do databáze.
Kaskáda proto
požaduje od operačního systému oznámení o každé změně v dané složce
operační systém hlásí každou změnu, bez ohledu na to jaká aplikace změnu provedla
Kaskáda si vždy při takovém "ohlášení" prověří stav příslušného pracovního souboru, zda se jeho datum od posledně (vyexportování nebo minulé uložení změn do databáze) změnilo
pokud ke změně došlo, Kaskáda soubor načte a zapíše do databáze tento nový obsah dokumentu
Kaskáda také posoudí, zda stav souboru nevypovídá o ukončení práce uživatele s tímto souborem - pokud ano, pak změní stav čekání na Žádné čekání, toto posuzování probíhá následně
pokud dosavadní stav čekání je Čekání na konec aplikace, pak se nic nemění a čeká se dál, jinak
pokud je pracovní soubor držen externí aplikací (nelze ho např. ani v průzkumníku přejmenovat nebo smazat), je jasné že práce s ním pokračuje a čeká se dál, jinak
pokud dříve zapamatovaný stav "držení externí aplikací" je "byl držen" (tedy byl držen a teď už držen není), pak změní v prohlížeči stav čekání na Žádné čekání,
jinak se nic nemění
Z minulých řádků je zřejmé, že
pokud externí aplikace během práce se souborem tento soubor "nedržela" (neotevřela jej ve výhradním modu),
pak bez ohledu na to lze do Kaskády přebírat změny v pracovním souboru,
ale nelze ze stavu souboru nijak usuzovat na to, zda ještě je či není uživatelem tento soubor editován,
což může být problém, a to sice tehdy, když ani ukončení aplikace samotné není Kaskádou zachytitelné.
Kaskáda se snaží sledovat ukončení práce spuštěné aplikace proto, aby jednoznačně rozpoznala, že uživatel již daný pracovní soubor needituje a lze stav čekání změnit na Žádné čekání.
Má to však řadu úskalí, neboť
Některé aplikace (registrované k práci s daným typem dokumentu) pouze spustí jinou aplikaci, té předají soubor, samy skončí - a Kaskáda v tu chvíli o reálně běžící aplikaci neví nic, to co spustila okamžitě skončilo, přesto je jasné že uživatel má nějakou externí aplikaci otevřenou a se souborem pracuje.
Některé aplikace se sice u prvního otevřeného souboru zachovají "vstřícně" a Kaskáda má šanci dovědět se o jejich ukončení, ale
u dalších souběžně otevřených souborů to tak již není
v jedné instanci dané aplikace může být editováno více souborů
navenek není vůbec zřejmé, který soubor ještě je/není otevřen
Takže je jasné, že informace o ukončení aplikace může mít nějakou hodnotu, ale nedá se na to spoléhat a Kaskáda to vždy musí vyhodnotit v nějakém kontextu.
Tato oblast funkčnosti je naprogramována tak, aby
v první řadě garantovala, že uživatel nepřijde o změny, které v externí aplikaci provedl a řádně uložil do pracovního souboru
v druhé řadě byla k uživateli co nejvstříčnější a pokud to jde, aby rozpoznala stav "ukončení práce uživatele s pracovním souborem" a podle toho změnila stav čekání na Žádné čekání,
může se však stát, že uživatel práci ukončil a přesto je prohlížeč ve stavu "Čekání na uvolnění souboru" - v tom případě však uživatel může kliknutím na informační pole čekání ukončit, resp. při zavírání prohlížeče pouze potvrdit úmysl zavření.
![]() |
Dobré důvody pro uchování dokumentů v Kaskádě |
![]() |
Dokumenty v Kaskádě | Dokument jako obraz objektu |
![]() |