Errores comunes con la programación de GpsGate
Si ya has leído Expresiones de Script y comenzaste a programar pero te quedaste atascado, este artículo debería ayudarte.
¡Buenas Preguntas - Ahorra Tiempo!
- ¿Qué estados quiero en mi máquina de estados?
- ¿Cómo me muevo entre estos estados?
- ¿Qué debería suceder al moverme entre los estados?
- ¿He escrito el diagrama de estados anterior que resuelve mi caso de negocio?
- ¿He actualizado todos los plugins?
¡Empieza a programar si la respuesta es “sí”!
Consejos y Trucos
Solo hay una captura de pantalla en este blog, ver abajo. Todos los números que encontrarás aquí, se encuentran en esa captura de pantalla.
Probando tu script con datos reales
Tus “Objetos expuestos y valores de prueba” a tu derecha, ver “4” abajo, se actualizarán automáticamente al hacer clic en un usuario y sus puntos de seguimiento, ver “2” abajo, con algunas excepciones descritas más adelante. La documentación se encuentra en “1” haciendo clic en el respectivo objeto.
Cambiar estado
Prueba qué sucede al moverte entre diferentes estados. Puedes crear datos de prueba adecuados que desencadenen estos movimientos con el simulador de activos para acelerar el trabajo. Pero recuerda que no todos los objetos, en el entorno de prueba, se actualizan al hacer clic en un usuario y sus puntos de seguimiento, por ejemplo, los objetos de sesión: usuario, activo y conductor. Esos objetos siempre incluirán los últimos datos enviados al servidor. Al menos puedes estar seguro de que lo que tienes bajo “Objetos expuestos y valores de prueba”, (ver “4”), es la entrada para tu script.
Recrear el problema
Por favor exporta la regla de evento y los puntos de seguimiento relevantes, que coincidan con tus capturas de pantalla, así como una captura de pantalla de las variables mapeadas en tu mapeador de dispositivos, para que podamos recrear fácilmente el problema, en caso de que sospechemos un error en nuestra plataforma.
Gestionando el estado
Cuando trabajes con estados, asegúrate de inicializarlos correctamente. Aquí tienes un ejemplo tomado de otro artículo.
var st = context.state || { prevActive: false , prevUtc: utc, duration: {run: 0, idle: 0, sleep: 0, off : 0} }
|
Usa el cuadro de texto context.state para monitorear el estado mientras pruebas, (ver “4” en la captura de pantalla). Asegúrate de vaciar este cuadro de texto al probar la inicialización.
Ten en cuenta que el script se ejecuta una vez por cada punto de seguimiento.
Argumentos del reporte
-
Cuando trabajas con la Regla de Evento EV1000, puedes usar Argumentos de Reporte para completar dinámicamente valores en el Reporte de la Regla de Evento. Así es como funciona paso a paso:
1. Configuración de Variables en la Regla de Evento:
- Usa
context.setVariable("Variable1", value);
dentro de la lógica de la Regla de Evento. - Esto asigna un valor a una variable (
Variable1
) que luego puede ser referenciada en el reporte.
2. Uso de Argumentos de Reporte en Notificaciones:
- En la sección de Notificaciones de la Regla de Evento, selecciona el tipo Argumento de Reporte.
- Para cada Argumento de Reporte, defines:
- Un Nombre de Encabezado (por ejemplo,
Header Name
) que describe lo que representa el valor. - Un Valor (por ejemplo,
Variable1
) que se asigna a la variable que configuraste anteriormente usandocontext.setVariable
.
- Un Nombre de Encabezado (por ejemplo,
3. Comportamiento en el Reporte de la Regla de Evento:
- Cuando la Regla de Evento pasa de true a false, se activa la creación de una nueva fila en el Reporte de la Regla de Evento.
- Los Argumentos de Reporte que definiste se asignan a campos específicos en el reporte:
- El primer Argumento de Reporte en tu lista llenará la columna
[EventArgument]
. - El segundo Argumento de Reporte llenará
[EventArgument01]
. - El tercer Argumento de Reporte llenará
[EventArgument02]
, y así sucesivamente.
- El primer Argumento de Reporte en tu lista llenará la columna
4. Detalles Clave a Recordar:
- Las variables que defines (por ejemplo,
Variable1
) deben tener sus valores configurados antes de que la Regla de Evento pase a false. De lo contrario, los campos correspondientes de Argumento de Evento estarán vacíos. - Este mecanismo permite reportes flexibles y dinámicos, ya que puedes usar valores de variables personalizadas en tu Reporte de la Regla de Evento.
- Usa
¡Explica lo que realmente esperabas y por qué!
Estamos constantemente mejorando nuestras capacidades de scripting. Por lo tanto, háznos saber si te gustaría tener una nueva función. Asegúrate de explicar cómo ayudaría a tus clientes a ser más rentables.
Si observas un comportamiento inesperado de nuestra plataforma, por favor indica cómo el comportamiento no coincide con nuestra documentación, (ver “1”) y envía una o varias capturas de pantalla a support@gpsgate.com incluyendo:
- El punto de pista problemático resaltado, (ver “2”) y sus datos encontrados en “Objetos expuestos y valores de prueba”, (ver “4”).
- La salida de prueba del script, (ver “3”)
- El cuadro de texto de estado de contexto si se utilizan estados, (ver “4”).
- Explicación de lo que realmente esperabas y por qué, ver plantilla a continuación.
Plantilla de Ticket para Comportamiento Inesperado
Una forma de explicar tu comportamiento inesperado es esta:
Hola David,
Según la documentación, se supone que el objeto context.state “almacena datos entre evaluaciones” (ver “1”).Ahora, para el punto de seguimiento de X (ver “2”), state.DriverOrVehicle devuelve “indefinido” (ver “3”), a pesar de lo que vemos en el cuadro de texto para el context.state, (ver “4”), y a pesar de [...] mostrado en mis otras capturas de pantalla (ver “XY”).
No veo cómo el resultado de la prueba (ver “3”) tiene sentido en mi caso particular. ¿Qué más debería revisar para asegurarme de que todo está funcionando como debería, y que el comportamiento inesperado no proviene del servidor, sino del script o incluso del diagrama de estados?
Vea las capturas de pantalla adjuntas, los datos de seguimiento exportados relevantes, el diagrama de estados y la regla de eventos.
Saludos cordiales,
Desarrollador de Scripts
¡Dirija preguntas sobre características al soporte!
Podemos responder preguntas directas relacionadas con las características en GpsGate, pero eso no significa que desarrollaremos un script para usted, o solucionaremos problemas complejos de personalización que pueda haber creado. Solo proporcione soluciones a sus clientes que entienda y pueda controlar. También podemos conectarlo con un Proveedor de Soluciones de GpsGate que podría ayudarlo con sus necesidades de personalización, incluyendo scripting.