Si instala su seguimiento como un complemento, puede tener un script de salida. Consulte la página 526 del manual de secuencias de comandos, "Especificar secuencias de comandos de inicio y salida (opcional)".
Una precaución al usar una tabla compartida para el seguimiento, es decir, la contención de los usuarios cuando 2 usuarios intentan abrir el archivo. Más específicamente, user1 lo tiene abierto, luego user2 se inicia y trata de abrirlo. Un par de maneras de abordar esto:
- poner un try () alrededor de todo el script! Perderá el seguimiento en user2, pero user2 no producirá errores.
- Bloquear archivos: antes de abrir la tabla JMP, user1 crea un archivo "lock.txt", que puede estar en blanco. Cuando se inicia User2, el script primero verifica la presencia de lock.txt; si está ausente, créelo y abra la tabla JMP. Si lock.txt está presente, entonces 1) espere unos segundos e intente nuevamente, o 2) salga del script limpiamente sin intentar la información de inicio de registro. Una vez que user1 termina de actualizar la tabla de datos JMP, user1 elimina el archivo lock.txt. El problema que puede obtener con este método son los archivos lock.txt que persisten en el directorio compartido y no se eliminan; esto sucedería, por ejemplo, si el usuario 1 se bloqueaba antes de que se eliminara lock.txt.
- También podría interceptar el error en la tabla JMP abierta en lugar de usar archivos de bloqueo. Los archivos de bloqueo son buenos si la operación de la tabla posterior lleva mucho tiempo. Su archivo de seguimiento JMP aumentará de tamaño constantemente y tomará más tiempo para que los usuarios lo abran cada vez. Si atrapa el error y vuelve a intentarlo luego de un breve retraso, asegúrese de colocar un contador y un número máximo de reintentos; de lo contrario, los usos pueden atascarse esperando para un archivo que nunca está disponible.
- Una alternativa al inicio de sesión en 1 archivo es iniciar sesión en varios archivos. Cuando un usuario inicia JMP, crea una tabla JMP con un nombre de archivo que incluye la fecha y el nombre de usuario. Luego debe escribir un script que lea todas estas tablas JMP de 1 línea y las agregue a 1 archivo grande.
También he visto el seguimiento de usuarios realizado mediante métodos de préstamo de anunciantes en Internet, a saber, balizas web. Podría usar la web () para abrir una página web.
Finalmente, le recomendaría que publique una "política de privacidad" y que los usuarios sepan que se está monitoreando su uso, qué datos se están recopilando y cómo se van a utilizar. Si el uso de los datos cambia en el futuro, publique una "política de privacidad" revisada que indique los nuevos usos de los datos.
Estoy de acuerdo con klaus819, y desde la perspectiva de un administrador, existen métodos que no son JMP para realizar un seguimiento de las instalaciones y el uso del software.
Dentro de JMP, hay algunas otras opciones además de enviar correo electrónico. Recientemente estuve jugando con una idea para rastrear mi propio uso de JMP utilizando un script de inicio de JMP. Los detalles sobre cómo hacerlo están en la Guía de scripts de JMP, en algún lugar de la página 257.
La siguiente secuencia de comandos es para JMP10 que se ejecuta en Windows 7, los pequeños ajustes son necesarios para otros sistemas operativos o versiones (consulte la referencia anterior). Este script escribirá una nueva fila en una tabla de datos cada vez que se indique JMP. Está configurado para ejecutarse sin ser mostrado.
Utilicé otro script similar en el que la variable "evento" tiene otra definición, y el programador de Windows ejecuta el script en momentos específicos. En este caso, el script solo se ejecuta si mi computadora portátil está funcionando, lo cual es un sustituto para mí también.
El script depende de tener una tabla de datos específica con nombres de columna específicos. Este script de tabla se incluye al final del script a continuación.
//!
// "//!" en la primera línea de un script, permite que el script se abra y se ejecute sin mostrarse.
// Cuando este script se abre, se ejecutará y luego se cerrará. Para abrirlo, editarlo, haga clic con el botón derecho en él desde la lista de archivos de la ventana de inicio de JMP y // seleccione "Editar".
// Notas:
// Este script abre un archivo llamado Data1.jmp. La secuencia de comandos para una tabla vacía se incluye a continuación
// En la práctica, el archivo "log" estaría en un directorio al que todos los usuarios tienen acceso
// El script se ejecutará cuando cualquier usuario abra JMP en esta computadora
//
// El script debe tener este nombre: jmpStartAdmin.jsl
// El script puede estar en varios lugares en windows 7
// ref: Guía de scripts p.257 (JMP 10)
// Guarde el script aquí (asumiendo que JMP está instalado aquí) C: \ ProgramData \ SAS \ JMP \ jmpStartAdmin.jsl
// Si ya existe un archivo jmpStartAdmin.jsl, probablemente no sería una buena idea escribir sobre él.
////////////////////////////////////////////////// //////La secuencia de comandos
Nombres predeterminados hasta aquí (1);
//////// Paso 1: Obtenga el nombre de usuario y la identificación (de R. Lucas (gracias))
// Ver http://msdn2.microsoft.com/en-us/library/ms724435.aspx
NameUnknown = 0;
NameFullyQualifiedDN = 1;
NameSamCompatible = 2;
NameDisplay = 3;
NameUniqueId = 6;
NombreCanónico = 7;
NameUserPrincipal = 8;
NameCanonicalEx = 9;
NameServicePrincipal = 10;
NameDnsDomain = 12;
securDll = Cargar DLL ("Secur32.dll", AutoDeclare (false));
securDLL << DeclareFunction (
"GetUserNameExW",
Arg (Int32), // Formato de nombre (use el código de arriba)
Arg (UnicodeString (80), salida), // Nombre del búfer
Arg (UInt32, actualización) // Longitud del búfer
);
UserName = "";
Userid = "";
NameLen = 80;
securDLL << GetUserNameExW (NameDisplay, UserName, NameLen);
securDLL << GetUserNameExW (NameSamCompatible, Userid, NameLen);
Mostrar (nombre de usuario);
Show (Userid);
ver = JMP Version ();
///////// Paso 2: Abra el archivo al que desea agregar información
// nota: tiene que agregar su propia ruta de archivo para la ubicación de la tabla de datos
dt = abierto ("C: \ ruta de archivo \ Data1.jmp", invisible); // el argumento invisible lo oculta del usuario.
//////// Paso 3: Agregar la información a la tabla de datos
dt << AddRows ({Col1 = today (), Event = "Start Up",: name ("User Name") = UserName, UserID = Userid, Version = ver});
//////// Paso 4: Cerrar la tabla de datos de registro
close (dt, save ("C: \ ruta de archivo \ Data1.jmp"));
//Salida(); Esto cierra (sale) JMP justo después de que se ejecuta el script
// si esta secuencia de comandos se ejecutara con el programador de Windows esto haría
// será un paso conveniente para ejecutar, pero en este caso sería realmente molesto.
////////////////////////////////////////////////// ///////////////// final de Script
// Esta es la secuencia de comandos de la tabla para "Data1.jmp", ejecute esto para hacer la tabla de datos vacía inicial
// Luego guárdelo como su ruta de archivo para que el script pueda usarlo.
/ *
Nueva tabla ("Data1",
Añadir filas (0),
Nueva columna ("TimeStamp",
Numérico,
Continuo,
Formato ("m / d / yh: m: s", 23, 0),
Formato de entrada ("m / d / yh: m: s", 0),
Establecer valores ([])
)
Nueva columna ("Evento", Carácter, Nominal, Valores establecidos ({})),
Nueva columna ("Nombre de usuario", Carácter, Nominal, Establecer seleccionado, Establecer valores ({})),
Nueva columna ("ID de usuario", Carácter, Nominal, Valores establecidos ({})),
Nueva columna ("Versión",
Numérico,
Continuo,
Formato ("Mejor", 12),
Establecer valores ([])
)
Nueva columna ("Fecha",
Numérico,
Continuo,
Formato ("m / d / y", 12),
Formato de entrada ("m / d / y"),
Fórmula (: TimeStamp - Hora del día (: TimeStamp))
)
Nueva columna ("Duración para completar la tarea",
Numérico,
Continuo,
Formato ("hr: m", 12),
Formato de entrada ("hr: m"),
Fórmula (Hora del día (: TimeStamp -: Target Time))
)
Nueva columna ("Tiempo objetivo",
Numérico,
Continuo,
Formato ("h: m", 8),
Formato de entrada ("h: m"),
Establecer valores ([])
)
Nueva columna ("Día de la semana",
Numérico,
Continuo,
Formato ("Mejor", 12),
Fórmula (Día de la semana (: TimeStamp))
)
)
Puede tener un script jsl que se ejecuta automáticamente cuando se inicia JMP. Consulte la guía de scripts JMP página 259 (JMP 10).
Este fragmento de código a continuación debe enviar un correo con información de Usuario y Hora cada vez que alguien inicie JMP. El script debe llamarse jslStart.jsl y colocarse localmente en C: \ ProgramData \ SAS \ JMP \ (puede diferir entre las versiones de Windows, consulte la guía de scripting).
Sin embargo, no tengo conocimiento de un comando que se active al salir de JMP. Una solución de sistema operativo es probablemente más potente. No he probado la secuencia de comandos a continuación, ya que uso JMP para Macintosh.
// Envía un correo cuando JMP se inicia con información sobre el nombre de usuario y la hora de inicio
Si ( Host es ( Windows ) ,
Correo (
" to@me.com " ,
"Usuario" || Palabra ( 3 , Obtener directorio predeterminado () , "/" ) || "ejecuta JMP" ,
"Usuario" || Palabra ( 3 , Obtener directorio predeterminado () , "/" ) || "ha iniciado una sesión JMP en" ||
Formato ( Hoy () , "mdy hm" ) || "."
) ,
"El correo solo está disponible en Windows".
) ;