Table of Contents
- Genus Clock Applications v1.02
- Developer Information
- Source Code
- Batch Files
- Compiling
- Configuration
- Java Libraries and System Files
- Available Memory
- Consultant Information
- Clock Types and Applications
- Configuration Attributes
- Loading Clock Software
- Clock Rebooting
- Usability Configuration
- Functionality
- Idle Screen
- Punching IN and OUT
- Employee Verification
- Administration Screen
- Enroll
- Remove
- Check Queue Size
- Test Queue Capacity
- Clear All
- Clock Ping Service
- Notes
Genus Clock Applications v1.02#
This paper is to explain all aspects of the High Line Genus Clock Application for both developers and consultants.
Developer Information#
Source Code#
- The source code for both G1 and G2 applications is kept in a package as part of the standard product code
com.highlinecorp.timeclock - Copies of the source each release are kept on
pandora\dfs\ePersonality\Time_Clock_Software\From PD - For each release zip files are kept:
- a built G1 app, G2 app and zipped with the configuration files (These are the zip files which may be released to clients)
- The current build scripts used to generate the apps
- A copy of the Genus clock app source which keeps track of the eP version in the zip file names.
Batch Files#
- Deploying Genus class libraries ( from CMI ), deploying genus system file ( from CMI ), Compiling HL code, building jar files, deploying the App.jar and configuration file, retrieving - Existing App.jar, config files and genus classes and libraries are all accomplished through DOS batch files.
- They are all located in:
C:\HLApplication\HLApplication\dd\timeclock\bat - They are organized to work with G1 and G2 types separately. Each clock type requires different class libraries and different java files to build different App.jar files although they are named the same.
- The App.jar created for each clock type G1 or G2 will support Biometric, Mifare and proximity readers.
Compiling#
- For ease of development the clock applications may be developed from within JDeveloper. Although development is done here, it is important that compilation of the code be compiled on a java version no newer than 1.05.0.11 and compiler set to 1.4. The code must be written and compiled to be compatible with the J2ME Personal Profile 1.1
- The application must be compile outside JDeveloper before a built and may be done using the cmd file located in:
C:\HLApplication\HLApplication\dd\timeclock\bat - The batch files with naming of either G1 .... or G2 ..... have been developed. The purposes of each are:
- Deploy clock library and system files (provided from CMI)
- Compile application code outside JDeveloper required before a build.
- Build the jar file.
- Deploy configuration and application to a clock.
- Are "gets" for getting the above files off an existing clock.
- These files are configured via the ~setvars.cmd file.
Configuration #
- The configuration file is located in:
c:\HLApplication\HLApplication\dd\timeclock\config - The file name is app.conf
- This file is used for both the G1 and G2 clock types of all readers. It contains all supported clock feature attributes and some attributes in the database configuration that have been planned for but not developed or supported.
- Each attribute has an example with explanation line and the actual attribute and value. The example line is remarked by placing a # at the beginning of the line, so it will not be loaded into the clock.
Example:
#TITLE = High Line Time Clock - main screen title
TITLE = HL (Devel) Time Clock - Extra unused lines may also be remarked for reference and not used.
Example:
#HOST_URL = http://<host>:<port>/<webapp>/<process> - server connection string
#HOST_URL = http://localhost:8988/selfService/clock.process - example
#HOST_URL = http://192.168.97.165:8988/selfService/clock.process
#HOST_URL = http://192.168.97.47/selfService/clock.process
HOST_URL = http://192.168.97.165:8988/selfService/clock.process - This config file needs to be loaded before the application in order for it to be read by the application at start up. (see the "G2 4 Deploy file" described above. )
Java Libraries and System Files#
- The supporting java libraries are provided to High Line from Control Module Incorporated. The current supported versions as of May 13, 2010 for the G2 are:
Java class files : 1.0.91
Clock system files: 4.03.04
Available Memory#
- G1 available memory:
32 MB dynamic memory, 2MB of non-volatile memory for data retention, 32MB of flash memory for program storage. - G2 available memory:
32MB dynamic memory, 2 MB of non-volatile memory for data retention, 40 MB of flash memory for program storage.
Consultant Information#
Clock Types and Applications#
G1 Clock Type G2 Clock Type- The time clock application will be a set of Java programs that are compiled centrally, packaged and transferred to each terminal as follows:
tftp -i <ipaddress> PUT App.jar \flashdisk\App.jar - Highline currently has two clock applications with various types of readers. They are all on the same version with each release. The current clock version for ePersonality 4.09 Application and web server is 2.03.04
Application | Supported Readers |
---|---|
G1 | Biometric, Magnetic Strip |
G2 | Biometric, Magnetic Strip, Proximity (Mifare) |
Configuration Attributes#
- Parameters and options will be maintained in a central configuration file that can be transferred to the terminals at any time with the following command:
tftp -i <ipaddress> PUT terminal.conf \ramdisk\terminal.conf - This configuration information will initially be held in permanent memory on the terminal. This information is loaded into memory only when the time clock is booted(application starts up).
- The following parameters with explanations will be supplied in a configuration file:
#DEBUG = true | false - toggle for debugging
DEBUG = true
Application Configuration
#TITLE = High Line Time Clock | - main screen title | TITLE = HL (Devel) Time Clock |
#WELCOME_MESSAGE | -Idol page Welcome message. Only referenced by a G2 application. | WELCOME_MESSAGE = Welcome |
#PASSCODE = <passcode> | - clock administrator passcode | PASSCODE = 9 |
#ALLOW_KEYING = true/false | - toggle for allowing keying of employee/badge numbers | ALLOW_KEYING = false |
#VALID_KEYED_VALUES = | -Employee Badge or Person codes which are allowed to be keyed when ALLOW_KEYING = false. (Spaces not supported.) | VALID_KEYED_VALUES = 56,5000 |
#USE_BADGE = true/false | - toggle for use of badge numbers (true= badge in ITCC, false=person_code) | USE_BADGE = true |
#MIN_BADGE_LEN = 4 | - minimum length of badge/employee number | MIN_BADGE_LEN = 2 |
#MAX_BADGE_LEN = 10 | - maximum length of badge/employee number | MAX_BADGE_LEN = 6 |
#ENTER_JOB = true/false | - toggle for allowing a list of assignment Authorized jobs for selection during IN punches. | ENTER_JOB = true |
#ENTER_COST_CENTER = true/false | - toggle for entering cost center information | ENTER_COST_CENTER = false |
#VALID_COST_CENTERS = | - comma delimited list of valid cost centers. (Spaces not supported.) | VALID_COST_CENTERS = 1234,5678 |
#VALIDATE_PUNCHES = true/false | - toggle for validating punches on server ( validation will occur regardless if Keyed.) | VALIDATE_PUNCHES = false |
#STORE_BIO = true/false | - toggle for storing biometric templates on server. | STORE_BIO = false |
#QUEUE_FULL | -an "Out of Order" message displayed Once the punch queue is full. ( G1 20 Characters Max.) | QUEUE_FULL = Clock Out of Order. Please advise your manager. |
#QUEUE_FULL2 | -Used in G1 applications for 2nd line text messages ( G1 20 Characters Max.) | QUEUE_FULL2 = Advise your manager. |
#QUEUE_LIMIT | -Used to define the MAXIMUM number of queued punches allowed to be in the queue IF less than the maximum physical limit. | QUEUE_LIMIT = 200 |
#THAW_LIMIT | -Used to define the number of queued punches allowed to be in the queue and automatically thaw the clock to accept punches. | THAW_LIMIT = 0 |
Terminal Configuration
#BIO_SENSITIVITY = 0 to 7 | - biometric sensitivity level | BIO_SENSITIVITY = 4 |
#BIO_QUALITY = 0 to 2 | - biometric quality level | BIO_QUALITY = 1 |
#MIFARE_POLL_INTERVAL | - Mifare Card reading interval in ms. | MIFARE_POLL_INTERVAL = 10 |
#MSG_TIME = 3000/<milliseconds> | - milliseconds to wait for display messages | MSG_TIME = 3000 |
#DELAY_TIME = 5000/<milliseconds> | - milliseconds to delay screens | DELAY_TIME = 5000 |
#IDLE_TIMEOUT 5000/<milliseconds> | - milliseconds between idle screen refreshes | IDLE_TIMEOUT 5000 |
#QUEUE_SLEEP_TIME = 50000/<milliseconds> | - time between connections to the server | QUEUE_SLEEP_TIME = 50000 |
#DATA_SERVER_TYPE = HTTP/ORACLE/WEB | - data transfer method | DATA_SERVER_TYPE = HTTP |
#PING_SLEEP_TIME = 30000/<milliseconds> | - time between pings to the server storing device information. | PING_SLEEP_TIME = 0 |
Web Configuration
#HOST_URL = http://<host>:<port>/<webapp>/<process> - server connection string |
#HOST_URL = http://192.168.97.165:8988/selfService/clock.process -example |
HOST_URL = http://192.168.97.165:8988/selfService/clock.process |
#WB_RETRY_INTERVAL = 60000/<milliseconds> - retry frequency for invalid POSTs |
WB_RETRY_INTERVAL = 60000 |
Database Configuration - NOT USED
#DATABASE_DRIVER = oracle.jdbc.driver.OracleDriver - database driver class |
DATABASE_DRIVER = oracle.jdbc.driver.OracleDriver |
#DATABASE_URL = jdbc:oracle:thin:@<host>:<port>:<sid> - database URL |
DATABASE_URL = jdbc:oracle:thin:@NSI:1521:NSI |
#DATABASE_USER = <user> - database user name |
DATABASE_USER = P2K |
#DATABASE_PSWD = <password> - database password |
DATABASE_PSWD = p2k |
#DB_RETRY_INTERVAL = 60000 / <milliseconds> - retry frequency for invalid connection attempts |
DB_RETRY_INTERVAL = 60000 |
Loading Clock Software#
- There are 4 main pieces of software that are required to be loaded and maintained on the clocks.
- Control Module Provided
- Genus files latest version 2.4.3.04
- Class files latest version 1.0.91
- High Line Provided
- App.conf
- App.jar
- Control Module Provided
- The first two are only required when and if CMI sends out an upgrade. It is suggested that HL test the app on all new versions provided from CMI before a client installed the new software unless specifically directed by CMI. HL should be notified if that clients are on higher versions when reporting issues found after the install.
- The Load all four pieces of software is preformed via TFTP communication.
- Examples:
- tftp -i 192.168.97.168 PUT ..\config\g2_4_3_04 \flashdisk\Genus
- tftp -i 192.168.97.168 PUT ..\config\G2-Classes-1.0.91.jar \flashdisk\Classes.jar
- tftp -i 192.168.97.183 PUT ..\config\app.conf \ramdisk\app.conf
- tftp -i 192.168.97.183 PUT ..\..\..\jar\App.jar \flashdisk\App.jar
- It is suggested to used cmd files to aid in this process and keep track of where the software has been loaded when multiple clocks exist. (Note all spaces in the examples above.)
Clock Rebooting#
- The Genus clocks may require a reboot once in a while to load new software. This is accomplished by either physically unplugging the clock from the power source or loading a new App.jar file.
- If a new app.conf file is loaded, the newly changed attributes will not be respected until a clock reboot has been done.
Usability Configuration#
- The configuration file has had attributes added to help tailor the clocks to get the best performance for users.
- Biometric readers may have the sensitivity settings adjusted to help read difficult finger prints by setting BIO_SENSITIVITY and BIO_QUALITY configuration attributes.
- Mifare card readers may have the poll interval time adjusted using MIFARE_POLL_INTERVAL. This is the time in between card reads. This will speed up or slow down the time the user is required to be holding the card up to the reader.
- Delay times for displaying messages(MSG_TIME), clock idle time (time when no key strokes have been recorded)(IDLE_TIMEOUT) and function completion time before returning to the idle screen (DELAY_TIME) may be set in milliseconds to ensure users have time to read the information on the clock screens.
- Data server communication does have an attribute however ONLY HTTP request types are currently supported. (DATA_SERVER_TYPE)
Functionality#
- For clock functionality please refer to the provided xls story boards giving screen illustrations and available keys. The functionality described below is as it pertains to the G2 application and is common to the G1. Functionality not available in the G1 will be identified.
- Some functionality will be configurable with the relevant attribute noted in brackets. The configuration attribute will be found in the app.conf file located in ..\config\app.conf \ramdisk\app.conf mentioned in the clock software section of this document.
Idle Screen#
- The idle screen is the screen which all clocks revert back to when waiting for a user to punch. This screen may include such information as a main title(TITLE), welcome message (WELCOME_MESSAGE), punch IN and OUT(*) prompts(*), verification prompt(*), Software Version(G2 only), time stamp including date and time.
- The G2 provides access to the administrators screen and functions using the F1 key(**).
Punching IN and OUT#
- The Genus clocks have designated function buttons enabling the user to identify if they want to punch IN or OUT.
- A user may then be requested to enter a valid cost center code if defined in the configuration file (ENTER_COST_CENTER). The entered code is validated against a list provided in the configuration file (VALID_COST_CENTERS). An error sound and light will tell the user of an invalid entry and the punch attempt is stopped. If a valid cost center code is entered the user will then be allowed to continue the punch.
- The user will be asked to identify themselves using the reader built into the clock being used. If permitted (ALLOW_KEYING ) a prompt stating a badge code may be entered manually to identify the employee will be displayed. If this is set to false. All keying for all employees will be removed. If using a biometric reader some employees may be unable to record a bio template successfully; If that is the case the administrator may define specific employees who are allowed to key their badge. ( VALID_KEYED_VALUES a comma separated list of badge numbers). All Badge values will be validated for minimum and maximum length. ( MIN_BADGE_LEN, MAX_BADGE_LEN)
- When an employee badge is keyed or if badge validation is required ( VALIDATE_PUNCHES ) the entered badge will be sent immediately to the server. An active employment will be searched for using either the person code or the clock card code as defined by (USE_BADGE) .
- Employees may be requested to punch into a specific job. (ENTER_JOB) When this is true the information collected identifying the employee is sent immediately to the server for validation and a list of jobs the employee may clock into is returned to the clock. If the employee has only one assignment the punch will be recorded and the clock will declare a successful punch recorded.
- If validation is not required the punch details will be stored into clock memory (the queue) for speed to allow the next user to punch. All details collected within the defined (QUEUE_SLEEP_TIME) are sent to the server. Once the details are stored in the queue a successful completion message is given and the clock is reset back to the welcome screen for the next user.
Employee Verification#
- The Idle screen has a function button dedicated to initiate the employee verification. When pressed the user is given two choices. One to verify using the reader or to enter the employee number.
- Validation using the reader will verify the badge number ( Please refer to USE_BADGE attribute. ) on the server. Biometric readers will verify that biometric templates exist in the clock memory first then check the server for validation.
- G2 validation is currently limited to ONLY Biometric and Mifare readers and keyed values if the clock contains one of those readers. (HL note: Development required to allow keying regardless of reader type.)
- G1 validation will accept Biometric, Magnetic cards and keyed badge values.
Administration Screen#
- The G2 has a dedicated screen for the administrator holding all functions available. (The G1 admin functions are accessed via the function keys listed in the Idle screen description.) An administrator will be requested to enter the admin pass code as defined in the config file (PASSCODE) loaded into the clock for start up.
- Clocks equipped with biometric readers will have options to Enroll and Remove templates.
- All G2 clocks will have options to Check queue size, Test queue capacity and Clear all.
Enroll#
- The enroll key is used to capture two finger print bio scans referred to as templates and record them into the clock memory. An option to store the print templates on the server is provided in the configuration file (STORE_BIO). If this attribute is false two templates will be stored on the clock only; If true two templates will be stored on both the clock being used and in the database which the web server points to.
- The template may be verified it was stored correctly by viewing the ITCC effective record for the badge the templates were enrolled with.
Remove#
- When remove is selected the administrator will be provided with two options. The first is to remove a single employee and prompted for a badge number ( Reminder: This may be either a clock card code or person code depending what was used to enroll the employee and what the config file has defined with USE_BADGE. ) . The templates associated to that badge number will be removed from memory on that clock only. If prints were stored on the server they will remain.
- The second option is to remove ALL templates stored on that clock only. This feature is provided for testing purposes and not recommended for a live clock. The admin will be prompted to enter 10 "9"'s in a row for confirmation before this is executed.
Check Queue Size#
- This option provides the administrator the ability to get a count of punches waiting in memory to be sent to the server. In most cases this option is used when the server has been down(not available) to the clock for communication. This may be for several reasons such as network, web server or database issues. The clock name and the number of live clock punches in memory will be displayed.
Test Queue Capacity#
- This feature is useful in tuning the clock depending on the use.
- Once the maximum is found each company may decide the maximum memory capacity is not a business practice they would like to allow each clock to hold in cases of emergency. There are two configuration file attributes available to set a ceiling for stored punches where the clock will stop allowing punches and provide a configurable message to the users that a manager must be notified the clock is full. The second is used once communication comes back on line the clock will begin again down loading queued punches. When the queue size reaches the thaw limit the clock will then become operational and accept punches.
Clear All#
- The Administrator is given the ability to clear all punches in the queue. This is generally used for testing purposes. Upon selection the user will be prompted to enter 10 number 9's to confirm the removal of all queued punches.
Clock Ping Service#
- This is a feature which runs transparent to users. Administrators may define a time in milliseconds which the clock will ping the server. (PING_SLEEP_TIME)
- Each ping includes the machine name, time, the HL clock software version.
- The ping information is stored in the device information field of ITCD - Define clock devices.
- If the clock device record was made with data in the device information field previous to the initial ping, that data will be appended to at the end. All xml data received will always be the last appended.