Hi Sebastian,
You're absolutely correct that the users at the chambers could directly use the remote ELOG server (without having a local server), and I did originally think about this. Unfortunately, there are times that our network "goes down" (for maintenance and other issues), and it was important to maintain the users' ability to perform regular 'local' updates at the temperature chambers, regardless of the network status.
In our situation, having a remote server also became particularly useful in the event that the 'local' computer at a specific temperature chamber "went down". The user can continue to update the respective logbook at the remoter server, knowing that it would eventually synchronize with the respective local server(s).
Thanks for the great feedback!
Frank
Sebastian Schenk wrote: |
Hi Frank,
I am not sure, if I understood your setup correctly. But in my eyes, you don't need the local elog servers. The only difference for the users at the chambers would be to directly use the 'mirror' remote elog url instead of the local elog url in their browsers. "which is regularly updated..." could mean, that you are using some kind of automatism to add entries to the local elogs, but you could also use these directly on the remote
If you have concers about users editing the wrong chamber elog, there is a usermanagement to only allow certain users to certain elogs (on the remote).
As for the part "having a record conflict". That would be totally fine and handled by the mirror function.
See the part "If new entries exist locally and remotely having the same entry ID"... in the documentation of the function.
As you state, that you are working on windows. There is no "killall" command to send the signal, as far as i know.
Then a script could kill the elog and start it again. But this should have the disadvantage of loosing the login session of the users.
Best wishes,
Sebastian
Frank Baptista wrote: |
Hi Sebatian,
Thank you for taking the time to answer...very much appreciated!
Although I'm running Windows OS, I do understand your approach, and will work on an analogous solution.
Our setup is interesting -- we're running many temperature chambers, each one having a dedicated computer running a unique instance of ELOG, each of which is regularly updated to let users know what the progress is for the lengthy temperature testing. All of these individual logbooks regularly synchronize to a common 'mirror' ELOG server, which shows all the logbooks in one location. Users can view all the logbooks on one screen, by connecting to the mirror server. Since this can be done remotely, it also makes it convenient to add "updates" remotely to the mirror server, which eventually synchronizes with each individual computer at the temperature chambers. As you might imagine, if there is a user doing an update at the temperature chamber computer while another user enters an update remotely to the mirror server, there is a chance of having a record conflict.
I was trying to avoid conflicts by having real-time mirroring, where a change on either end is detected and immediately "synchronized", thereby reducing or eliminating conflicts.
In any case, if I do come up with a good solution for Windows, I'll be sure to share what I did.
Cheers,
Frank
Sebastian Schenk wrote: |
Hello Frank,
It seems, you are using the mirror function of elog. It should resolve conflicts by itself acording to the documented rules. (https://elog.psi.ch/elog/config.html)
As I don't use this function, I can't say how good it works.
If you don't want to use this function, I would suggest using the "Execute new | edit | delete" feature to trigger a script after each change of elog entries.
This script could itself run "rsync" or your sync solution to make the sync and
should afterwards call "killall -HUP elogd" on the remote to let elog re-read the config (and this sould also update the indices)
(see Server Configuration https://elog.psi.ch/elog/adminguide.html)
If you have a sync-solution, which itself permanently observes folders for changes and syncs it by itself,
It should have the option to run a command after sucessful sync or you need an other method to call "killall -HUP elogd" after sync.
Personally I would recommend the mirror function as it has a internal conflict resolution.
I hope this helps.
Best wishes,
Sebastian
PS: I don't know anything about your setup, but maybe there is a solution, where you don't need the local servers.
As I think, the mirror function is mainly for backup reasons of a main server to a secondary one or similar.
Frank Baptista wrote: |
Hello!
We have a number of local ELOG servers, all mirrored to a single "remote" ELOG server. We have users that create updates at the local server, and some at the remote server, which can run the risk of record conflicts. Right now, the local servers perform a "Mirror cron" every 5 minutes, but even that leaves the door open to potential conflicts.
I found an open-source JAVA-based app called DirSync Pro (https://www.dirsyncpro.org/) which is capable of performing real-time mirroring, and has conflict handling. I "took it for a spin", and it does do what it claims. However, because each ELOG server performs record "indexing", it doesn't recognize records that aren't part of the current list of records. Restarting the ELOG server obviously corrects that, but I was wondering if there is another way to get the server to recognize newer "remotely-generated" records without restarting the server.
As always, I'm appreciative for the outstanding working that has been done to make ELOG the great application that it is!
|
|
|
|
|
Good day,
I'm new to Elog and I find it really nice and straight foward...
I still have a few questions that I couldn't address reading the manuals.
-I'm creating a logbook with a lot of attributes. I would like to know if there is a way to name (display) my attribute differently then it's original name. That way I could program $attrib1; $attrib2, etc, and map a name to display the column accordingly... Is it something possible ?
-Is it possible to hide the field "Entry Time" when creating or editing an entry ?
-I saw the Cell Style fonction to set Color (really nice...), My attribute1 is a worker name; Attribute2 is how the work is going on (stop, ready, in process) I would like to hide Atribute2 in list mode but change Attribute1 cell color based on Attribute2 status... is it possible to do so?
-When using "Show Text = 0" (i'm only using attributes), creating a new entry present the menu "Submit", "Save", "Preview" and "Back".... Pressing "Save" leaves the page, shows "OK with a number" and "Preview" is useless. Is it possible to tune what button should be present or not ? I would like to remove Save and Preview....
For the info, my config file
[GCT]
Theme = default
Show Text = 0
Enable attachments = 0
Show attachments = 0
Use lock = 1
Bottom text =
Comment = Gestion de la charge de travail
omit email to = 1
Suppress Email to users = 1
Suppress default = 2
Suppress Email on edit = 2
Resubmit default = 2
Enable browsing = 0
Back to main = 1
List after submit = 1
'Mode commands = 0
Menu commands = Select, edit, Delete
List menu commands = Select, New, Find
Attributes = #Réception, #Galée, Infographiste, Traitement, Réviseur, Révision, Contrôleur, Contrôle, Correcteur, Correction, Contrôle final
List display = Edit, #Réception, #Galée, Infographiste, Traitement, Réviseur, Révision, Contrôleur, Contrôle, Correcteur, Correction, Contrôle final
Fixed Attributes Edit = #Réception
Preset #Réception = #####
Format #Réception = 0,attribname,attribvalue,5,5
Format #Galée = 0,attribname,attribvalue,10,10
Format Infographiste = 0,attribname,attribvalue,2,2
Format Réviseur = 0,attribname,attribvalue,2,2
Format Contrôleur = 0,attribname,attribvalue,2,2
Format Correcteur = 0,attribname,attribvalue,2,2
Options Infographiste = ??, ML
Options Réviseur = ??
Options Contrôleur = ??
Options Correcteur = ??
Preset Infographiste = ??
Preset Réviseur = ??
Preset Contrôleur = ??
Preset Correcteur = ??
Extendable options = Infographiste, Réviseur, Contrôleur, Correcteur
ROptions Traitement = ., En cours, Prêt, Vérification
ROptions Révision = ., En cours, Prêt
ROptions Contrôle = ., En cours, Prêt
ROptions Correction = ., En cours, Prêt
ROptions Contrôle final = ., OK
Cell Style Traitement En cours = background-color:#FF0000
Cell Style Traitement Prêt = background-color:#33FF33
Cell Style Traitement Vérification = background-color:yellow
Cell Style Révision En cours = background-color:#FF0000
Cell Style Révision Prêt = background-color:#33FF33
Cell Style Révision Vérification = background-color:yellow
Cell Style Contrôle En cours = background-color:#FF0000
Cell Style Contrôle Prêt = background-color:#33FF33
Cell Style Contrôle Vérification = background-color:yellow
Cell Style Correction En cours = background-color:#FF0000
Cell Style Correction Prêt = background-color:#33FF33
Cell Style Correction Vérification = background-color:yellow
Cell Style Contrôle final OK = background-color:#33FF33
Cell Style Contrôle final En cours = background-color:#FF0000
Cell Style Contrôle final Prêt = background-color:#33FF33
Cell Style Contrôle final Vérification = background-color:yellow
Thanks alot for your help :) |