Para ver en que estado se encuentra la Réplica, es posible crear una colección que monitorice los datos que va manejando la Réplica.
Colección de ejemplo:
<coll name="ConsolaReplica" fontsize="8" title="ConsolaReplica" objname="Empresa" updateobj="Empresa" progid="ASData.CASBasicDataObj" sql="SELECT t1.* FROM ##PREF##Empresa t1" filter="" sort="" notab="true" editmask="2"> <group name="General" id="1" /> <!-- frames --> <frame name="borde" framebox="true" height="100%" width="100%" bgcolor="#e4eefd" /> <frame name="frame1" frame="borde" bgcolor="#00000000" align="center|top" width="100%" height="50%" scroll="true" /> <frame name="fversion" frame="borde" framebox="true" align="left" width="100%" height="30%" bgcolor="#ffffd8" /> <!-- ESTADO REPLICA --> <prop name="MAP_TL1" group="1" type="TL" frame="borde" title="CONSOLA DE REPLICA" visible="1" lmargin="1%" labelshadow="false" labelbox="true" labelfont-bold="true" fontsize="12" align="center" labelwidth="40" /> <prop name="MAP_RECORDSRX" title="Operaciones Recibidas" type="T" labelwidth="15" fontsize="15" visible="15" group="1" frame="borde" locked="true" /> <prop name="MAP_RECORDSTX" title="Operaciones Enviadas" tmargin="1%" type="T" labelwidth="15" fontsize="15" visible="15" group="1" frame="borde" locked="true" /> <prop name="MAP_RECORDSPEND" title="Operaciones Pendientes" tmargin="2%" type="T" labelwidth="15" fontsize="15" visible="15" group="1" frame="borde" locked="true" /> <prop name="MAP_LOG" title="Log" type="T" labelwidth="0" fontsize="15" fieldsize="80" visible="15" group="1" frame="frame1" locked="true" /> <!-- VERSION DE LA APLICACION --> <prop name="MAP_VERSIONAPP" frame="fversion" group="1" locked="true" type="T" visible="1" labelwidth="9" fieldsize="18" title="Aplicacion" labelshadow="false" labelbox="false" /> <prop name="MAP_VERSIONFRAME" frame="fversion" group="1" locked="true" type="T" visible="1" labelwidth="9" fieldsize="18" title="FrameXOne" labelshadow="false" labelbox="false" /> <prop name="MAP_VERSIONXONELIVE" frame="fversion" group="1" locked="true" type="T" visible="1" labelwidth="9" fieldsize="18" title="XOneLive" labelshadow="false" labelbox="false" /> <prop name="MAP_DISPOSITIVO" frame="fversion" group="1" locked="true" type="T" visible="1" labelwidth="9" fieldsize="18" title="Dispositivo" labelshadow="false" labelbox="false" /> <prop name="REPLICADOR" group="1" frame="fversion" type="B" visible="1" labelwidth="80" lmargin="25%" width="80" height="50" title="REPLICAR" method="ExecuteNode (replicar)" /> <prop name="BTSALIR" group="1" frame="fversion" type="B" width="80" height="50" labelwidth="80" lmargin="5%" visible="1" title="SALIR" method="ExecuteNode (salir)" newline="false" /> <before-edit> <action name="setval" field="MAP_VERSIONAPP" value="##VERSION##" /> <action name="setval" field="MAP_VERSIONFRAME" value="##FRAME_VERSION##" /> <action name="setval" field="MAP_VERSIONXONELIVE" value="##LIVEUPDATE_VERSION##" /> <action name="setval" field="MAP_DISPOSITIVO" value="##DEVICE_MODEL##" /> <action name="runscript"> <script language="VBScript"> this("MAP_RECORDSRX")=cstr(Replica.RecordsRX)+"/"+cstr(Replica.TotalRecordsRX) this("MAP_RECORDSTX")=cstr(Replica.RecordsTX)+"/"+cstr(Replica.TotalRecordsTX) this("MAP_RECORDSPEND")=Replica.RecordsPend this("MAP_LOG")=CStr(Replica.Log) <!-- Se programa para que se ejecute "refresh" en 5 segundos --> ui.ExecuteActionAfterDelay "refresh",5 </script> </action> </before-edit> <refresh> <action name="runscript"> <script language="VBScript"> this("MAP_RECORDSRX")=cstr(Replica.RecordsRX)+"/"+cstr(Replica.TotalRecordsRX) this("MAP_RECORDSTX")=cstr(Replica.RecordsTX)+"/"+cstr(Replica.TotalRecordsTX) this("MAP_RECORDSPEND")=Replica.RecordsPend this("MAP_LOG")=CStr(Replica.Log) <!-- Se vuelve a llamar a sí mismo en 5 segundos, para hacerse recursivo. --> ui.ExecuteActionAfterDelay "refresh",5 </script> </action> </refresh> <salir> <action name="runscript"> <script language="VBScript"> appdata.failwithmessage -11888,"##EXIT##" </script> </action> </salir> <replicar> <action name="runscript"> <script language="VBScript"> Replica.Start </script> </action> </replicar> </coll>
Los siguientes métodos de la clase Replica son los que usamos en el ejemplo de arriba.
Este método devuelve un entero con las operaciones recibidas desde la última vez que se entró en la aplicación.
Este método devuelve un entero con el total de operaciones recibidas, sin importar cuando hayan entrado al dispositivo.
Este método devuelve un entero con las operaciones transmitidas desde la última vez que se entró en la aplicación.
Este método devuelve un entero con el total operaciones transmitidas, sin importar cuándo hayan entrado al dispositivo.
Este método devuelve un entero con los registros pendientes de enviar desde el dispositivo al servidor. Es la bandeja de salida del dispositivo.
Este método devuelve una cadena con los mensajes de debug del replicador del framework, mostrando lo que va haciendo y mostrando posibles errores de conexión.
Indica al dispositivo que comience a replicar en este instante.