Bejövő feldolgozás

A bejövő eseményfeldolgozás egy aszinkron művelet. Az adapter lekérdezi az FTP kiszolgálót, lekéri onnan az eseményeket, üzleti objektumokká alakítja az információkat, és elküldi az üzleti objektumokat a konfigurált végponthoz.

Az adapter az FTPPollFrequency tulajdonságban megadott szabályos időközönként lekérdezi a fájlokat az FTP kiszolgáló eseménykönyvtárából. Amikor egy fájl érkezik az eseménykönyvtárba, az adapter az egész fájlt beolvassa és letölti a fájlt az adapterkiszolgálón lévő helyi eseménykönyvtárba. A fájl letöltése után az adapter a konfiguráció alapján vagy archiválja a fájlt az FTPArchiveDirectory tulajdonságban megadott archívum könyvtárban az FTP kiszolgálón, vagy törli azt. Az eseménykönyvtár, archív könyvtár, a lekérdezési időköz és a lekérdezési mennyiség (a lekérdezendő fájlok száma egy lekérdezési ciklusban) mind beállítható paraméterek.

Miután az üzleti objektumok sikeresen el lettek küldve a végpontnak, a beállítástól függően az események archiválásra kerülnek a beállított archív könyvtárban a helyi fájlrendszeren, vagy törlésre kerülnek. Az adapternek törölni vagy archiválni kell az eseményeket, különben azok újra le lesznek kérdezve.

Az adapter az üzleti objektumot a funkcióválasztó segítségével küldi a végponthoz; a funkcióválasztó kiválasztja, hogy a komponensen milyen műveletet és adatkötést kell meghívni.

A bejövő eseményfeldolgozás a következő lépésekből áll:
  1. Az FTP kiszolgáló fájlok formájában eseményeket állít elő.
  2. Az FTP adapter lekéri a fájlokat az eseménykönyvtárból.
  3. A fájlok teljesen letöltésre kerülnek az adapterkiszolgálóra.
  4. A fájlok a SplittingFunctionClassName és SplitCriteria tulajdonságok alapján kerülnek felosztásra.
    • Ha a felosztásnak egy határoló alapján kell megtörténnie, akkor a rendszer biztosítja azt az osztályt, ami végrehajtja ezt a funkcionalitást és a felosztásai feltételeket.
    • Ha a felosztásnak fájlméret alapján kell megtörténnie, akkor a rendszer biztosítja azt az osztálynevet, ami végrehajtja ezt a funkcionalitást.
    Megvalósíthat egy felosztási logikát tartalmazó egyéni osztályt. Az adapter egy Java felületet biztosít az osztályhoz. A felület részletei a következők:
    public interface SplittingFunctionalityInterface extends Iterator{
    	public int getTotalBOs(String filename) throws SplittingException;
    public void setBODetails(String filename, int currentPosition, int totalBOs,
     boolean includeEndBODelimiter) throws SplittingException;
    	public void setSplitCriteria(String splitCriteria);
    	public void setEncoding(String encoding);
    	public void setLogUtils(LogUtils logUtils);
    public boolean isSplitBySize()
    }
    1. public int getTotalBOs(String filename) throws SplittingException

      Ez a metódus visszaadja az filename által megadott eseményfájlban lévő üzleti objektumok teljes számát.

    2. public void setSplitCriteria(String splitCriteria)

      A metódus a splitCriteria paramétert veszi, amely az eseményfájlban üzleti objektumok számán alapul. Az egyes üzleti objektumok visszatérnek a next() hívás során.

    3. public void setLogUtils(LogUtils logUtils)

      Ezzel a metódussal a LogUtils objektumot lehet beállítani. Ennek az osztálynak a segítségével a felhasználó fájlokba írhatja a nyomkövetési napló üzeneteket.

    4. public void setEncoding(String encoding)

      Ezzel a metódussal állítható be az eseményfájl tartalmának kódolása. Ez a kódolás a fájl tartalmának beolvasásakor kerül felhasználásra. A kódolást a SplitCriteria is használja.

    5. public void setBODetails(String filename, int currentPosition, int totalBOs, boolean includeEndBODelimiter) throws SplittingException

      Ennek a metódusnak a segítségével beállítható az aktuális üzleti objektum szám, így a next() metódus hívásakor a currentPosition paraméterben megadott helyen lévő üzleti objektum tér vissza. Ha az includeEndBODelimiter paraméter értéke igaz, akkor az üzleti objektum tartalma után tartalmazza a SplitCriteria értéket is. A metódust meg kell hívni minden next() hívás előtt, így a next() metódus az itt beállított üzleti objektum tartalmát adja majd vissza.

    6. Az iterátornak 3 metódusa van: hasNext(), next és remove(), amelyeket szintén meg kell valósítani. A next() metódus a setBODetails() metódus segítségével beállított pozícióban lévő üzleti objektum tartalmát adja vissza. Ha nincs megadva az üzleti objektum pozíciója, akkor a hívás meghiúsul. A hasNext() metódus azt jelzi, hogy a setBODetails() metódusban megadott pozícióban lévő üzleti objektum létezik-e. A hasNext() hívás előtt meg kell hívni a setBODetails() metódust. A remove() metódus segítségével törölni lehet az üzleti objektum bejegyzést az EventPersistence táblából. Ne törölje az eseményfájlt ebben a metódusban. Csak a használatban lévő erőforrásokat takarítsa el.
    7. public boolean isSplitBySize()

      Ez a metódus jelzi, hogy az eseményfájlt méret vagy határoló alapján kell értelmezni.

  5. Az adapter az üzleti objektumot a funkcióválasztón keresztül küldi el a végponthoz. Ebben meghívódik a beállított adatkötés, és a szöveges rekord üzleti objektummá alakul. Az üzleti objektum elküldésre kerül a végpontra.

Használat feltételei |


(c) Copyright IBM Corporation 2005, 2006.
Az információs központ Eclipse technológiára épül (http://www.eclipse.org)