El adaptador utiliza el archivo DataSourceControl.xml para controlar su acceso al origen de datos y garantizar que, cuando se ejecute, siempre continúe hacia adelante desde el último punto leído.
El adaptador de archivos conserva el nombre de la última lectura, la última línea leída y la posición alcanzada en el archivo. La siguiente vez que se ejecute el adaptador, accederá al archivo desde la ubicación mediante la información incluida en el archivo DataSourceControl.xml. Mediante este mecanismo, el adaptador puede leer sólo nuevos registros cada vez que se ejecuta.
El adaptador no trabaja directamente en los archivos de origen, sino que primero copia el archivo actual en un archivo de trabajo. Por consiguiente, se guarda la misma información para el archivo de trabajo y para el archivo de origen. Si se adjunta el archivo de origen, sólo se copian los registros nuevos en el archivo de trabajo.
Si el adaptador se ha configurado para suprimir el archivo de origen una vez procesado, al establecer el parámetro en el archivo de configuración DeleteAfterProcessing en "yes", no se guardará la información en el archivo de origen. Cuando termine, leerá todos los archivos nuevos en la carpeta de trabajo que coincidan con el patrón de archivo definido en el archivo de configuración.
Solamente cuando DeleteAfterProcessing se establezca en "no" se buscarán registros nuevos en el último archivo. Si no hay ninguno, pasará al archivo siguiente en orden lexicográfico. Por lo tanto, al nombrar los archivos de los datos de origen, para garantizar que se lean en la secuencia correcta, intente imponer un patrón de denominación de aumento secuencial. Por ejemplo, para que esto sea posible añada los archivos con un valor de fecha en formato inverso (aaaammdd-hhmmss). Por ejemplo:
A continuación sigue un ejemplo de DataSourceControl.xml para un adaptador de archivos.
<AdapterControl Save="end" LastSaveTime="2005/05/20 13:06:39"> <Data><WorkData><LineNumber>0</LineNumber> <FilePattern>c:\adapters\callsadapter\*adapterpca.csv</FilePattern> <file name></FileName> <BasicPosition>0</BasicPosition> </WorkData> <NonDeletedFiles> <File NamePattern="c:\adapters\callsadapter\*adapterpca.csv"> <file name>2005adapterpca.csv</FileName> <LastLine>25/04/2005,5925,NN4B,12,12,0,10,0,11</LastLine> <LastPosition>15427</LastPosition></File> </NonDeletedFiles> </Data> </AdapterControl>
Un adaptador de SQL conserva el último valor de los campos clave de consulta para cada consulta ejecutada. Los campos clave son identificadores únicos para registros en la tabla de base de datos de destino. El adaptador utiliza estos valores al construir la consulta para la ejecución siguiente. Esto permite al adaptador leer sólo registros nuevos.
Por ejemplo, supongamos que usamos la declaración SQL siguiente para obtener algunos datos de tickets de incidencia.
Select ticket_id, status, organization, open_date, respond_date, resolved_date, record_modified_date from t_ticket_data;
En este ejemplo, para capturar todos los últimos registros del origen de datos, el campo clave de consulta elegido para garantizar que se obtiene la última información es record_modified_date, ya que genera tickets nuevos emitidos desde la última ejecución del adaptador, así como actualiza los tickets existentes. Al seleccionar este campo como el campo clave de la consulta, el adaptador automáticamente añade la sección siguiente al final de la consulta durante su ejecución:
where record_modified_date > :previous_value order by record_modified_date asc
Así, solamente recupera los registros más nuevos. Tenga en cuenta que hay cierto número de cuestiones que tener en cuenta al elegir el campo clave de la consulta, y que siempre dependen del comportamiento del origen de datos y de lo que se pretende conseguir con los datos recuperados. Tenga en cuenta también que los campos elegidos en el ejemplo anterior no son siempre la mejor elección para todas las situaciones.
A continuación se muestra un ejemplo del archivo DataSourceControl.xml para un adaptador de SQL.
<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 © 2013 CA.
Todos los derechos reservados.
|
|