ROB-EX Time Tracker is an App optimized for mobile devices allowing named operators to check in and check out at the operation level. When doing a check-out or partial completion, the client automatically suggests logging past hours since the previous check-in. In addition to hours, a quantity produced may be specified as well.
When “Pausing” an operation the operator selects the reason for the delay, so this is logged as part of the registry. Non-productive time is also logged, see this paragraph
The full list of registrations is 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, but scripts are available (contact ROB-EX support).
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.
It is supported also to mix Shop Floor and Time Tracker, i.e. use the main Shop Floor overview page – and popup Time Tracker to perform the actual partial completion.
Table of contents
- Quick getting started guide
- Using the Time Tracker App
- Configuration
- Edit time registrations
- SQL lookup of time registrations
- FAQ and known limitations
Requirements
- ROB-EX Server and ROB-EX Client. Both in version 6.2 or newer.
- A valid ROB-EX license key with both of these options enabled: “REST Server” and “Shop Floor”
- Modern browser with good HTML 5 support
- Internet Explorer is currently not supported in any version
- Tested to work on Edge, Chrome, Firefox and Safari browsers
Quick getting started guide
- Install ROB-EX v6.2 or newer including ROB-EX Multiuser Server (ROB-EX Server is a requirement)
- 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
- 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”
- Start the ROB-EX Server
- 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’ “
- Make sure the ROB-EX client acting as REST Server is logged into the Multiuser Server
- 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
- 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 user 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 has 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 has 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 has 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 has 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 the 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 the 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 canceled 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 saving 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 ‘,’). As 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": "desc opr_state_level, asc opr_start_time"},
{ "id": "exclude_operation_states", "values": "60, 70"},
{ "id": "operation_description", "label": "Operation desc:","maxHeight":84 , "visible": true, "enabled": true },
{ "id": "order_description", "label": "Order desc:","maxHeight":84 , "visible": true, "enabled": false },
{ "id": "reg_time", "label": "Registration time:", "enabled": true, "auto_update": false, "auto_update_interval_minutes": 1 },
{ "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, "radioButtonEnabled": true, "totalDeltaEnabled": true, "totalDeltaValue": "delta" },
{ "id": "workload", "label": "Workload:", "visible": true, "enabled": true, "radioButtonEnabled": true, "totalDeltaEnabled": true, "totalDeltaValue": "delta" },
{ "id": "switchover", "label": "Switchover:", "visible": true, "enabled": true, "radioButtonEnabled": true, "totalDeltaEnabled": true, "totalDeltaValue": "delta" },
{ "id": "quantity", "label": "Quantity:", "visible": true, "enabled": true, "totalDeltaEnabled": true, "totalDeltaValue": "delta" },
{ "id": "quantity_bad", "label": "Quantity bad:", "visible": true, "enabled": true, "totalDeltaEnabled": true, "totalDeltaValue": "delta" },
{ "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},
{ "id": "min_suggested_time_threshold_in_minutes", "value": 0},
{ "id": "suggested_time_calendar_based", "value": true},
{ "id": "suggested_time_override_min_value", "value": 0},
{ "id": "force_completion_of_active_step", "value": false},
{ "id": "warn_if_registration_more_than_planned", "value": false},
{ "id": "no_of_allowed_concurrent_tasks", "value": -1},
]
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 represents 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 the 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 amounts 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 turns 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) | reg_time, 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 | Integer value | 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. |
value | Integer value | min_suggested_time_threshold_in_minutes | Time Tracker will not show any suggested progress amount until the suggested amount is larger than this threshold. The threshold is in minutes. Default is 0 |
value | Integer value | suggested_time_override_min_value | Time Tracker will never suggest a value lower than this setting. This setting will ignore min_suggested_time_threshold_in_minutes. The value is in minutes. Default is 0 |
radioButtonEnabled | Boolean value (true, false) | setup, workload, switchover | Controls if the radion buttons for setup, workload, and switchover should be enabled or disabled. Default is true i.e. enabled |
value | Boolean value (true, false) | force_completion_of_active_step | With this enabled, if a user has made a registration with some time on a step (setup, workload, switchover), he is not allowed to change that step until a check-out has been made. |
value | Boolean value (true, false) | warn_if_registration_more_than_planned | With this enabled, the user will get a warning if the sum of registration time for a step (setup, workload, switchover) exceeds what was planned for the step |
maxHeight | Integer value | operation_description, order_description | This defines the maximum height for the field in pixels. The operation and order description fields will automatically expand up until this maximum height |
auto_update | Boolean value | reg_time | Set to true to enable automatic update of the registration time |
auto_update_interval_minutes | Integer value | reg_time | This determines how often the registration time will automatically update |
value | Boolean value | suggested_time_calendar_based | This controls whether or not the suggested time should be calculated by taking into account the resource calendar. Default is true |
value | Integer value | no_of_allowed_concurrent_tasks | Limit the amount of active tasks per user. Default is -1 (unlimited). Introduced from build #190. |
totalDeltaEnabled | Boolean value | setup, workload, switchover, quantity, quantity_bad | Enable/disable the delta/total switch (default: enabled). Introduced from build #280. |
totalDeltaValue | String value | setup, workload, switchover, quantity, quantity_bad | Set a default value, which can be either “delta” or “total” (default: delta). Introduced from build #280. |
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 were 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 |
7 | NonProductionTime |
Non production time
As of Time Tracker v 6.4.1.823, an additional “non-production time” line is automatically added first time an registration is made after an operation has been paused. I.e. the extra line sums up hours an operation has been paused (non-productive) during open shift calendar periods. The line has “type=7”. The hours from this line is not included in the normal progress hours accumulated on the operation in ROB-EX.
The TimeRegAggregatedView1 has as part of this been extended to include non-production time as separate columns in the view. This has affected the following columns.
Column | Description |
RegisteredWorkloadHours | Total workload time in hours from productive registrations (type 1-6) |
RegisteredSetupHours | Total setup time in hours from productive registrations (type 1-6) |
RegisteredSwitchoverHours | Total switch over time in hours from productive registrations (type 1-6) |
ProdRegDesc | Descriptions from production Time Tracker registrations (type 1-6, comma separated) |
ProdRegOperators | Operator names from production Time Tracker registrations (type 1-6, comma separated) |
NonProdTime | Total time from Time Tracker non-production registrations (type=7) |
NonProdRegDesc | Descriptions from Time Tracker non-production registrations (type=7, comma separated) |
NonProdRegOperators | Operator names from Time Tracker non-production registrations (type=7, comma separated) |
RegDescriptions | A comma separated list of all descriptions registered in Time Tracker. As of v6.4.1.823 replaced by ProdRegDesc |
Operators | A comma separated list of all Time Tracker operators having registered on this operation. As of v6.4.1.823 replaced by ProdRegOperators |
FAQ and known limitations
Q1: During the 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 is 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 register 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 it 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.
__
Q4: Is it possible to change what happens when a TimeRegistration is made?
A4: Yes, from a UserPlugin it is possible to implement the interface TimeRegistrationCallback to add additional functionality when a TimeRegistration is created/deleted.
__
Q5: Is it possible to make timeregistrations with e.g. workload, without updating the workload of the operation?
A5: Yes, using the GanttSetup setting “timetracker.convert.to.operation.values”, it is possible to control which timeregistration values that should be updated on the operation.
Post your comment on this topic.