ROB-EX Time Tracker is an App optimized for mobile devices allowing named operators to check-in and check-out at operation level. When doing a check-out or partial completion, the client automatically suggest logging passed hours since the previous check-in. In addition to hours a quantity produced may be specified as well.

When “Pausing” and operation the operator selects the reason of the delay, so this is logged as part of the registry.

The full list of registrations are stored in a database table where it can form the basis for later analysis of comparing planned versus actual production times (see SQL lookup of time registrations). At the time of writing no standard analysis queries/tools ship with the ROB-EX package, so the analysis must be performed case by case as needed.

The total amount of hours/quantity logged is shown as progress on the operation in ROB-EX, ensuring that the current production progress is immediately reflected in the ROB-EX schedule.

Licensing and prices follows the current Shop Floor client model, so a customer may freely choose the module that best fit for their requirements (please see FAQ below regarding mixing Shop Floor and Time Tracker in same production).

Table of contents

Requirements

  1. ROB-EX Server and ROB-EX Client. Both in version 6.2 or newer.
  2. A valid ROB-EX license key with both of thes options enabled: “REST Server” and “Shop Floor
  3. Modern browser with good HTML 5 support
    • Internet Explorer is currently not supported in any version
    • Tested to work on Edge, Chrome, Fire Fox and Safari browsers

Quick getting started guide

  1. Install ROB-EX v6.2 or newer including ROB-EX Multiuser Server (ROB-EX Server is a requirement)
  2. Start ROB-EX client and install a valid client license key. Ensure in “Help->Register…” the following two options are enabled
    • REST Server
    • Shop Floor
  3. Select one ROB-EX Client in your system that will act as the ROB-EX REST Server. In a test/demo setup it will be your normal ROB-EX client
    • For an integration client running as a service, the REST Server is started automatically so no further configuration is necessary. Important: the default REST server port for service1 is 9999 and not 9998!
    • For a standard ROB-EX client modify your shortcut to include -Dgantt.rest=true (for details refer to the chapter Starting the REST server”). The user and password of the REST Server is not relevant for Time Tracker
    • Make sure this client has a TimeTracker.jar file located in the ROB-EX client folder “\plugins\rest\clients”
  4. Start the ROB-EX Server
  5. Start the ROB-EX client acting as REST Server
    • The Time Tracker service will now be automatically started as part of the REST Server. A correctly started Time Tracker will in the ROB-EX client the log-file (“Help->Show logfile”) display a message similar to “gantt.rest.ExternalClientsLoader – Client path /timetracker/, version ‘20XX-XX-XX XX:XX’ “
  6. Make sure the ROB-EX client acting as REST Server is logged into the Multiuser Server
  7. On the same PC as the ROB-EX client acting as REST Server, enter the following URL into the address line of a web-browser: http://localhost:9998/timetracker . (The actual port number varies – also see bullet below)
    • The expected result is a message “Loading ROB-EX Time Tracker …” displayed briefly for 5-10 seconds. Then the ROB-EX Time Tracker App is displayed.
    • Notice the default REST server port for integration client service1 is 9999 and not 9998!
    • Observe the requirement about supported browsers
  8. If you would like to run the Time Tracker App from a mobile device, then follow these steps
    • make sure a possible firewall on the PC running the ROB-EX client acting as REST Server is turned off.
    • Identify the IP address of the PC running the ROB-EX client acting as REST Server. On Windows open the Control Panel and select “View network status and tasks”. Click the name of your Internet connection to view its status. Click the Details button in the connection’s status window. You’ll find the IP address listed in the Network Connection Details window – look for the “IPv4 Address” field.
    • If the IP address as an example is 192.168.21.3, then in a web-browser on the mobile device, enter the following URL into the address line: http://192.168.21.3:9998/timetracker . Typically you would bookmark this address so it can be re-used easily again next time.
    • The expected result is a message “Loading ROB-EX Time Tracker …” displayed briefly for 5-10 seconds. Then the ROB-EX Time Tracker App is displayed.

Using the Time Tracker App

The image towards the top shows how the Time Tracker will look when a user, resource and operation have been selected.

We will now walk through and explain the individual elements. The “Layout id” column is used when changing the configuration of Time Tracker. See the configuration chapter below.

Element Layout id Description
User user First time using the Time Tracker on a device, a user name is needed. Add a new user by selecting the “New user” __ item in the dropdown (upper and lower case matters!). There is no checks on the username, it is up to the user to make sure he uses the same username next time he/she registers time.

Usernames are saved in a browser cookie when a time registration is created. This means the name will be remembered on the same device and will be automatically available in the dropdown the next time the users starts Time Tracker.
Active tasks active_tasks The active tasks dropdown will show what tasks the currently selected user is working on. A task is defined as active if the last time registration, made by the user, was not a Cancel, Check out or Complete. Selecting an active task will automatically select the resource and operation.
Resource resource This element is automatically filled with the resources. When a user have been selected, the resource dropdown will become active. Recently used resources for the user will be available towards the top of the list, making it easy for a user to select the frequently used resources.
Operation operation When a resource have been selected, this element will become active and filled with the operations planned on the resource. Only operations having status “Start possible” or higher will be visible.
Order description order_description When an operation have been selected, this element will show the order description of that operation. Any changes made to this element will be saved when a time registration is made.
Operation description operation_description When an operation have been selected, this element will show the operation description. Any changes made to this element will be saved when a time registration is made.
Registration time reg_time This element will become active when an operation has been selected. Here the user can select the time and date of the time registration. This element has an “Update time” button. Clicking this will set the date and time of the element to now and recalculate suggested values for the setup, workload and switchover elements.
Setup setup The value of this element is the progress in setup that the user wishes to register. This element will become active when an operation has been selected. If the operation status=Started, this element will automatically be filled with a suggested value depending on the registration time and the value of the setting in apply_load_to_active_step (see under configuration).
A suggested value is the number of open hours in resource shift calendar since a previous Checkin/Partial registration.

The suggested workload value will be added to the worktime step (setup, workload, switchover) that Time Tracker thinks is the active step. The active step will have a checked radio button on the right-hand side. If this step is no longer the active step, and the user wishes to register the suggested workload on another step, clicking the radio button of another worktime step will add the suggested value of the active step to the selected step.
Workload workload The value of this element is the progress in workload that the user wishes to register. This element will become active when an operation has been selected. If the operation status=Started, this element will automatically be filled with a suggested value depending on the registration time and the value of the setting in apply_load_to_active_step (see under configuration).

A suggested value is the number of open hours in resource shift calendar since a previous Checkin/Partial registration. Note that if an operation has some planned setup hours, the workload value will not be filled until either:
– all planned setup hours have been spent.
– or a user manually enters at least 0.1 hours into the Workload field.
– or a user manually enters produced pcs. into the Quantity field.

The suggested workload value will be added to the worktime step (setup, workload, switchover) that Time Tracker thinks is the active step. The active step will have a checked radio button on the right-hand side. If this step is no longer the active step, and the user wishes to register the suggested workload on another step, clicking the radio button of another worktime step will add the suggested value of the active step to the selected step.
Switchover switchover The value of this element is the progress in switchover that the user wishes to register. This element will become active when an operation has been selected. If the operation status=Started, this element will automatically be filled with a suggested value depending on the registration time and the value of the setting in apply_load_to_active_step (see under configuration).

A suggested value is the number of open hours in resource shift calendar since a previous Checkin/Partial registration. Note that if an operation has some planned workload hours, the switchover value will not be filled until either:
– all planned workload hours have been spent.
– or a user manually enters at least 0.1 hours into the Switchover field.

The suggested workload value will be added to the worktime step (setup, workload, switchover) that Time Tracker thinks is the active step. The active step will have a checked radio button on the right-hand side. If this step is no longer the active step, and the user wishes to register the suggested workload on another step, clicking the radio button of another worktime step will add the suggested value of the active step to the selected step.
Quantity quantity The value of this element is the delta progress in quantity that the user wishes to register. This element will become active when an operation has been selected.
Quantity bad quantity_bad The value of this element is the delta waste quantity that the user wishes to register. This element will become active when an operation has been selected.
Registration note description This element is a free text field where the user can add a note he wishes to save with the time registration.
Check in check_in_button Clicking this button will make a time registration with the type ‘Check in’ and update the operation status to ‘Started’. This is used to indicate, that the user has started working on the selected operation. This element will become active when an operation has been selected, the selected operation is allowed to be ‘Started’ in ROB-EX Scheduler and the last time registration, the user made on the operation, if any, was not a Check in.
Partial partial_button Clicking this button will create a time registration with the type ‘Partial’ and update the operation status to ‘Started’. This is used when the user is already working on the operation and wants to perform a partial time registration of completed work so far. This element will become active when an operation has been selected, the selected operation is allowed to be ‘Started’ in ROB-EX Scheduler and the last time registration, the user made on the operation was a Check in or Partial.
Pause pause_button Clicking this button will create a time registration with the type ‘Pause’ and update the operation status to ‘Paused’. This is used to indicate, that the user has temporarily stopped working on the selected operation. This element will become active when an operation has been selected and the selected operation is allowed to be ‘Paused’ in ROB-EX Scheduler.
When making a time registration following a pause, the Time Tracker will automatically add an extra time registration with the type NonProductionTime. The workload field of this time registration will reflect the non-production time passed between the registration time of the paused time registration and this new time registration. The calculation of this non-production time can be controlled using the setting non_production_time_calendar_based (see under configuration). The workload of the NonProductionTime type time registrations does not affect the operation progress.
Cancel cancel_button Clicking this button will create a time registration with the type ‘Cancel’ and update the operation status to ‘Cancelled’. This is used to indicate, that the user has cancelled the selected operation. This element will become active when an operation has been selected and the selected operation is allowed to be ‘Cancelled’ in ROB-EX Scheduler.
Check out check_out Clicking this button will create a time registration with the type ‘Check out’ and update the operation status to ‘Started’. This is used to indicate, that the user has stopped working on the selected operation. This element will become active when an operation has been selected, the selected operation is allowed to be ‘Started’ in ROB-EX Scheduler and the last time registration, the user made on the operation, was a Check in or Partial.
Complete complete_button Clicking this button will create a time registration with the type ‘Complete’ and update the operation status to ‘Completed’. This is used to indicate, that the user has completed work on the selected operation. This element will become active when an operation has been selected and the selected operation is allowed to be ‘Completed’ in ROB-EX Scheduler.
Undo undo_button Clicking this button will undo (delete) the last recently create time registration

The states an operation can transition into can be controlled from the ROB-EX Scheduler API. For more info on how to do this, see the example script in:

<sch_dir>\data\scripts\basemodel\OverrideOperationStateTransitions.groovy

Configuration

Most of the input fields and labels of the Time Tracker user interface can be configured. Also, some global App settings can be changed. To enable local customizations, locate the TimeTracker.json file in the installation folder under “\config”, and copy this file to the custom folder “\custom”.

Edit the “\custom\TimeTracker.json” file in a text editor by changing a parameter and save the file. Changes will take effect when the Time Tracker web page is reloaded.

Note: The configuration file is following the JSON syntax (for more info see www.json.org). Should it happen that the syntax is broken the whole configuration will be discarded and default values will be used. To check whether the JSON syntax is valid, use an online validator e.g. jsonlint.com

The general simple format of the configuration is that each row represents a UI item or a general setting. The syntax of the rows consists of a number of key and value pairs (a key and a value are separated by a colon: ‘:’ and pairs by a comma ‘,’). Like shown below:

{ "key": "value", "key": "value" }

Each row has an id-key pair. The value part corresponds to a UI element (the “Id” column in the usage table above). The value of these first key-value pairs should not be changed!

Below is shown the content of the default file TimeTracker.json:

[
	{ "id": "user", "label": "User:" },
	{ "id": "refresh_button", "label": "Refresh data" },
	{ "id": "active_tasks", "label": "Active tasks:" },
	{ "id": "resource", "label": "Resource:", "value": "{resource_name}" },
	{ "id": "operation", "label": "Operation:", "value": "{order_name} - {opr_name} - {opr_start_time_readable} - {opr_state}", "sort_by": "asc opr_state_level, asc opr_start_time"},
	{ "id": "exclude_operation_states", "values": "60, 70"},
	{ "id": "operation_description", "label": "Operation desc:", "visible": true, "enabled": true },
	{ "id": "order_description", "label": "Order desc:", "visible": true, "enabled": false },
	{ "id": "reg_time", "label": "Registration time:" },
	{ "id": "detail1", "label": "Product & quantity", "value": "{order_product_id} - {order_quantity}", "visible": true},
	{ "id": "detail2", "label": "Del. & planned start", "value": "{order_delivery_calendar_readable} - {opr_start_time_readable}", "visible": true},
	{ "id": "detail3", "label": "Detail3:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail4", "label": "Detail4:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail5", "label": "Detail5:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail6", "label": "Detail6:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail7", "label": "Detail7:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail8", "label": "Detail8:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail9", "label": "Detail9:", "value": "{order_quantity}", "visible": false},
	{ "id": "detail10", "label": "Detail10:", "value": "{order_quantity}", "visible": false},
	{ "id": "setup", "label": "Setup:", "visible": true, "enabled": true },
	{ "id": "workload", "label": "Workload:", "visible": true, "enabled": true },
	{ "id": "switchover", "label": "Switchover:", "visible": true, "enabled": true },
	{ "id": "quantity", "label": "Quantity:", "visible": true, "enabled": true },
	{ "id": "quantity_bad", "label": "Quantity bad:", "visible": true, "enabled": true },
	{ "id": "description", "label": "Registration note:", "visible": true, "enabled": true },
	{ "id": "check_in_button", "label": "Check in" },
	{ "id": "partial_button", "label": "Partial", "visible": true, "enabled": true },
	{ "id": "pause_button", "label": "Pause", "visible": true, "enabled": true, "values": "Missing personel, Missing materials, Breakdown" },
	{ "id": "cancel_button", "label": "Cancel", "visible": true, "enabled": true },
	{ "id": "check_out_button", "label": "Check out" },
	{ "id": "complete_button", "label": "Complete", "visible": true, "enabled": true },
	{ "id": "undo_button", "label": "Undo", "visible": true, "enabled": true },
	{ "id": "apply_load_to_active_step", "value": true},
	{ "id": "reconnect_timeout", "value": 300000},
	{ "id": "resource_views_filter", "value": "Standard"},
	{ "id": "visible_operation_period", "days_before_now": "7", "days_after_now":"7"},
	{ "id": "registrationtime_validator", "enabled": false, "creationtime_difference_in_minutes": 5},
	{ "id": "non_production_time_calendar_based", "value": false}
]

Below is a description of the different parameters:

Parameter key Parameter value Usable elements Description
label String value user, refresh_button, active_tasks, resource, operation, operation_description, order_description, reg_time, detail1-10, setup, workload, switchover, quantity, quantity_bad, description, check_in_button, partial_button, pause_button, cancel_button, check_out_button, complete_button, undo_button Changing the value of the label parameter will change the visible text shown above the UI element. I.e. use this option to localize the names of each field shown to the user.
value String value resource, operation, detail1-10, resource_views_filter The value of these elements represent the text shown inside the element (i.e. each row if the element is a list drop down). This string can contain a number of variables, which will then be replaced with the corresponding value for the selected task e.g. “{order_name} – {opr_name}” will be replaced with the order name and operation name for the selected task (e.g. “R1000 – Cutting”).

For the resource element, the variables used must be applicable to resources and for the operation and detail1-10 elements, the variables must be applicable to operations. See the Variable list.

Variables that return numbers or dates can be formatted by adding a dot (.) after the variable, followed by the format e.g. “{order_delivery_calendar.yyyy-MM-dd}”.
For more info on number and date formatting see number formats and SimpleDateFormat.

The resource_views_filter takes a comma-separated list of resource view names. The resource dropdown will only be filled with resources from the given resource views.
value Boolean value (true, false) apply_load_to_active_step When an operation is selected, the Time Tracker will automatically suggest a progress amount. This amount is the possible load from previous check-in time (of the same user) on the operation, to the current registration time.

If this setting is true (the default), all the calculated amount will be applied to the active step of the operation (setup/workload/switchover).

If false, only the progress amount left, for the active step, will be applied to the active step, the rest will be applied to the next step.
value Integer value reconnect_timeout This is the time in milliseconds that the Time Tracker waits, before automatically trying to reconnect, in case of an error.
value Boolean value (true, false) non_production_time_calendar_based This controls whether or not the non-production time should be calculated by taking into account the resource calendar.
values String value pause_button The pause button has a list of comma separated values, representing reasons for the pause. When clicking the pause button, one of these values must be selected and the selected values will then be prepended to the registration note of the time registration. The list of values can be empty, in which case the pause button will act like a regular button.
values String value description This is a comma-separated list of predefined values for the component. If values are defined, the component turn into a dropdown containing only the given values. Remove the values parameter completely to make the component work as normal.
values String value exclude_operation_states exclude_operation_states is a comma separated list of operation states which should not be visible in the Time Tracker. Default is 60, 70 (Cancelled and completed).
visible Boolean value (true, false) operation_description, order_description, detail1-10, setup, workload, switchover, quantity, quantity_bad, description, partial_button, pause_button, cancel_button, complete_button, undo_button If this setting is set to false, the UI element and its label will be invisible, otherwise they will be visible. Use this option to hide elements of the UI not applicable to your deployment.

Note that 10 different extra fields detail1-10 are readily available for further expansion. I.e. each of the different fields may be configured visible to show additional detail about the currently selected operation.
enabled Boolean value (true, false) operation_description, order_description, setup, workload, switchover, quantity, quantity_bad, description, partial_button, pause_button, cancel_button, complete_button, undo_button If this setting is set to false, the GUI element will be greyed out and the user will be unable to edit the content, otherwise the content will be editable. Use this setting to create read-only fields in your deployment.
days_before_now, days_after_now Integer value visible_operation_period Used to define a period an operation must start within to be visible in Time Tracker. If both are set to 0, only operations starting today will be visible i.e if today is 2018-12-31, operation start must be greater than or equal to 2018-12-31 00:00 and operation start must be smaller than or equal to 2018-12-31 23:59. The setting can be removed to include all operations.
sort_by String value operation Used to control the ordering of the operations in the operation list. This is a comma separated list of orderings. Each ordering is of the form “<ordering direction> <variable>” where the ordering direction can be asc for ascending or desc for descending. Ex. “sort_by”: “desc opr_state_level, asc opr_start_time”. For a list of variables see here.
enabled Boolean value (true, false) registrationtime_validator Setting this to true will enabled the registration time validator. The validator will check when making a time registration, that the registration time is not too early, compare to the time now. The number of minutes the registration time is allowed to be earlier than now is defined by the parameter creationtime_difference_in_minutes. If the registration time is too early, the user will be asked if he wants to update the time and the suggested registration values.
creationtime_difference_in_minutes Boolean value (true, false) registrationtime_validator The allowed difference in minutes between the registration time and now. If the registration time + creationtime_difference_in_minutes is smaller than the time now, the user will be asked to refresh the time and values. If set to 0, the user will be asked every time he makes a time registration.

Edit time registrations

To edit existing time registrations, locate the ‘time registrations’ tab on the ‘edit operation’ dialog.

From here it is possible to edit the time registrations for the operation. The only values that are not editable are the id and creation time.

Using the delete button it is also possible to delete an entire time registration.

Note: Editing a progress value or deleting a time registration, will force a recalculation of the registered progress times for the operation from the current time registrations i.e. if you have manually set some progress, this will be overwritten.

The ‘time registrations’ tab also has a refresh button. Clicking this will update the list with any time registrations made while the tab was open.

SQL lookup of time registrations

The time registrations may be viewed and used for further analysis, from the SQL table GanttMultiuser.ETimeRegistration of the Multiuser Server.

This is an example lookup of registrations

The values in the column “Type” corresponds to

Type Action
1 Check-in
2 Partial
3 Pause
4 Cancelled
5 Check-out
6 Completed

FAQ and known limitations

Q1: During startup of the client the following error is displayed

ExceptionError: Could not initialize plugin: REST WebService :: Unable to start REST Server on http://0.0.0.0:9998 java.net.BindException: Address already in use: bind

A1: Another ROB-EX client is already running – make sure to only run a single client at any point in time. Another cause could be that another program occupies the same network port. The solution is to change the network port as explained in the Starting the REST server” section of the manual (the -Dgantt.rest.portnumber startup option).

__

Q2: I would like to use both Time Tracker and Shop Floor in the same deployment

A2: With the availability of Time Tracker, then ROB-EX now has two time entry options: ROB-EX Shop Floor or ROB-EX Time Tracker. If a customer chooses to deploy both ROB-EX Shop Floor and ROB-EX Time Tracker care should be taken. The ROB-EX Time Tracker module will calculate the total progress of an operation based on the stored Time Tracker registrations. As an example.

  • User X reports 10 pcs complete on operation A using a regular Shop Floor client
  • A Time Tracker user Y then does a check-in on operation A as well
  • The result of this mix is that the 10 pcs. completed by user X are lost, i.e. the current progress on operation A is now 0 pcs. The reason being that Time Tracker does a new calculation of progress only based on the Time Tracker registrations.

As a consequence of the above, make sure that users for a particular operation only registers progress using one of the time entry modules – not both at the same time.
__

Q3: I suspect the Time Tracker client is not showing the latest version I just updated to

A3: Force the browser to load everything freshly from the Time Tracker server. On desktop computers click Ctrl+F5 when the browser is showing the Time Tracker client. On mobile devices you will have to clear the browser cache using the menus of the browser.

Feedback

Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Post Comment