Monitorizar estado de Réplica



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.

RecordsRX


Este método devuelve un entero con las operaciones recibidas desde la última vez que se entró en la aplicación.

TotalRecordsRX


Este método devuelve un entero con el total de operaciones recibidas, sin importar cuando hayan entrado al dispositivo.

RecordsTX


Este método devuelve un entero con las operaciones transmitidas desde la última vez que se entró en la aplicación.

TotalRecordsTX


Este método devuelve un entero con el total operaciones transmitidas, sin importar cuándo hayan entrado al dispositivo.

RecordsPend


Este método devuelve un entero con los registros pendientes de enviar desde el dispositivo al servidor. Es la bandeja de salida del dispositivo.

Log


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.

Start


Indica al dispositivo que comience a replicar en este instante.