Distance work became popular in the last year for obvious reasons and the delight of introverted programmers. This forced companies to create new ways to improve communication efficiency within teams as a competitive advantage. What if you urgently need to find a person of certain qualifications at the moment or to check a certain person's presence at the workplace? Of course, you can check the status of messengers, ask to update absences and breaks in the calendar or even in the HR system. But we suggest a simple and easy way to solve this need — WorkTracker App.
What is WorkTracker?
WorkTracker is a personal computer application that gains various activity states and sends them to the back end system for further analysis and visualization, in our example — in Salesforce as our Co-founder many years ago for some unknown reason decided to connect his life with Salesforce. The main purpose of the program is to show the availability of company employees at a given time. Of course, my colleagues think that I have been working on the App designed to track their active time on the PC. It was impossible to convince them. My Project Manager even swore on the SCRUM Guide but it didn’t work. I hope this article will change the situation and I will be called to play poker again.
1. WorkTracker Desktop App is a program consisting of the request sender, screen tracking, and mouse tracking modules and a minimalistic user interface.
- Request sender module has requesting logics and all necessary preparations for that (such an oauth2 authentication chain, state calculation function)
- The screen tracking module has functionality that creates a screenshot per time interval, compares the size of the current and previous ones (reside in the memory), and counts deviations in bytes. The output of this operation shows a percent deviation between the images. This algorithm uses WinAPI(Windows.h) functions.
- The mouse tracking module defines the mouse tracking process by calculating the mouse move distance percentage at the given period. Realization of that functionality uses native qt methods(Methods that belong to Qt Framework).
- UI of the program (Pic.1) has dynamically set tracking values and submitting requests to count. You can find the shutdown button on the right side of the UI. Additionally, the application window has a drag-moving system.
Pic.1 Application UI. P.S. Sorry Shia LaBeouf and Lemur that we posted your images without your approval. I have not found you on LinkedIn and I don’t use Twitter, Instagram, and Facebook to take a chance there. As compensation, we invite you to our free Salesforce Apex Developer courses
WorkTracker Desktop App is installed on the user PC with UniqueKey batch to confirm its usage by a certain person and mapping WorkTracker Desktop App request data with Employee record in Salesforce.
Inbound channel service:
Pic.2 Test request with application data
2. WorkTracker Analytics App in our case is a Force.com application that is consists of:
- Data model to store employee data, employee activity status data received from WorkTracker, and settings. To avoid employee dissatisfaction only the current employees' activity status is stored in the application, no activity history is tracked.
Pic 3. Employee Activity records
- REST services for the requests from the WorkTracker desktop App .
- Lightning web components for Application business logic.
- Salesforce site to display employee availability (pic 4).
Pic.4 Employee availability display
WorkTracker Analytics App is set up as a managed package and can be enhanced according to your specific requirements using Salesforce capabilities.
WorkTracker Desktop App Application also could be connected with any other Information System (ex. SAP), if it’s required according to your needs. In this case, an interface and a simple custom app for Analytics should be implemented.
- Improvements of the “hide in tray button”
- Possibility to automatically add an app to Windows Autorun
- Keyboard activity counting
WorkTracker App provides the company's management or even each employee with a simple tool to determine active colleagues at the current moment, so if it is necessary to contact them and solve the issues quickly or at the right moment. We expect that the demand for these applications will grow soon as even after the end of lockdown many employees will decide to stay home.
Link to Qt documentation page;
Link to Qt wiki page;
Link to WinAPI documentation.
Andrey Ivashkin - software developer at JET BI working on R&D projects, IoT, Computer Vision, VR and Augmented reality.
Julia Solomenko - PM