Die Datei DataSourceControl.xml wird vom Adapter verwendet, um seinen Zugriff zur Datenquelle zu steuern und um sicherzustellen, dass er, wann auch immer er ausführt wird, immer weiter vom letzten Punkt an fortfährt, zu dem er liest.
Die Datei "Adapter" behält den Namen der letzten gelesenen Datei, der letzten gelesenen Zeile und die Position in der Datei die er erreichte bei. Das nächste Mal wenn der Adapter läuft, greift er auf die Datei von dem Speicherort zu, welcher in den Informationen in der Datei DataSourceControl.xml gefunden wird. Bei der Verwendung dieses Mechanismus, kann der Adapter nur neue Datensätze bei jedem Start lesen.
Der Adapter funktioniert nicht direkt auf den Quelldateien, sondern kopiert zuerst die aktuelle Datei zu einer Arbeitsdatei. Daher wird die gleiche Information für die Arbeitsdatei und für die Quelldatei beibehalten. Wenn die Quelldatei angehängt wird, werden nur neue Datensätze zur Arbeitsdatei kopiert.
Wenn der Adapter so konfiguriert wird, die Quelldatei zu löschen sobald sie verarbeitet wurde, indem der Parameter in der Konfigurationsdatei DeleteAfterProcessing auf "ja" festgelegt ist, speichert er die Information nicht in der Quelldatei. Nach Abschluss liest er eine neue Datei, die in dem Arbeitsordner existiert, der mit dem in der Konfigurationsdatei angegebenen Dateimuster übereinstimmt.
Nur wenn DeleteAfterProcessing auf "nein" festgelegt wird, überprüft er auf neue Datensätze in der letzten Datei. Wenn es keine gibt, geht er zur nächsten Datei in lexikografischer Reihenfolge. Damit die Quelldatendateien in der richtigen Reihenfolge gelesen werden können, sollten Sie konsequent auf eine aufsteigende, sequenzielle Namensgebung achten. Hängen Sie zum Beispiel den Dateien einen umgekehrten Datumswert (yyyymmdd-hhmmss) an, um dies zu unterstützen. Zum Beispiel:
Nachfolgend finden Sie ein Beispiel einer DataSourceControl.xml für einen Dateiadapter.
<AdapterControl Save="end" LastSaveTime="2005/05/20 13:06:39"> <Data><WorkData><LineNumber>0</LineNumber> <FilePattern>c:\adapters\callsadapter\*adapterpca.csv</FilePattern> [set the File Name variable]</FileName> <BasicPosition>0</BasicPosition> </WorkData> <NonDeletedFiles> <File NamePattern="c:\adapters\callsadapter\*adapterpca.csv"> [set the File Name variable]2005adapterpca.csv</FileName> <LastLine>25/04/2005,5925,NN4B,12,12,0,10,0,11</LastLine> <LastPosition>15427</LastPosition></File> </NonDeletedFiles> </Data> </AdapterControl>
Ein SQL-Adapter behält den letzten Wert der Abfrageschlüsselfelder für jede ausgeführte Abfrage bei. Die Schlüsselfelder sind einmalige Bezeichner für Datensätze in der Zieldatenbanktabelle. Der Adapter verwendet diese Werte beim Erstellen der Abfrage für den nächsten Start. Dies ermöglicht dem Adapter, nur neue Datensätze zu lesen.
Betrachten wir zum Beispiel die folgende SQL-Anweisung für das Abrufen einiger Trouble-Ticket-Daten.
Wählen Sie ticket_id, status, organization, open_date, respond_date, resolved_date, record_modified_date from t_ticket_data;
In diesem Beispiel wurde das Abfrageschlüsselfeld ausgewählt, um alle neuesten Datensätze von der Datenquelle zu erfassen, um sicherzustellen, dass die neueste Information record_modified_date ist, da sie neue Tickets erzeugt, die seit der letzten Adapterausführung angesprochen wurden, sowie die Aktualisierung vorhandener Tickets durchführt. Durch das Auswählen dieses Feldes statt des Abfrageschlüsselfelds, hängt der Adapter automatisch den folgenden Abschnitt ans Ende der Abfrage während Ausführung an:
wo record_modified_date > :previous_value-Reihenfolge von record_modified_date asc
Folglich ruft er nur die neueren Aufzeichnungen ab. Beachten Sie, dass es eine Reihe von Überlegungen bei der Wahl des Abfrageschlüsselfelds gibt und dies beim Auswählen immer vom Verhalten der Datenquelle und dem abhängt, was Sie versuchen mit den gefundenen Daten zu erreichen. Beachten Sie auch, dass die im vorherigen Beispiel gewählten Felder nicht immer die beste Wahl für jede Situation sind.
Ein Beispiel einer DataSourceControl.xml-Datei für einen SQL-Adapter wird unten angezeigt.
<AdapterControl Save="end" LastSaveTime="2005/05/20 15:59:02"> <Data><QueryCollection> <Query QueryName="ChangeManagementOpenQuery"> <KeyField Name="Incident Ref"><LastValue>32357</LastValue></KeyField> <KeyField Name="Date Logged"><LastValue>18/04/2005 16:56:26</LastValue></KeyField> <LastFileName/> </Query> <Query QueryName="ChangeManagementPendingQuery"> <KeyField Name="Incident Ref"><LastValue>0</LastValue></KeyField> <KeyField Name="Date Resolved"><LastValue>1900-01-01</LastValue></KeyField><LastFileName/> </Query>
| Copyright © 2012 CA. Alle Rechte vorbehalten. | Senden Sie CA Technologies eine E-Mail zu diesem Thema. |