This translation is older than the original page and might be outdated.

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.