# Patent

## Title
Apparatuses, methods and systems for a rule-integrated virtual punch clock

## Abstract

The APPARATUSES, METHODS AND SYSTEMS FOR A RULE-INTEGRATED VIRTUAL PUNCH CLOCK (hereinafter “RIVPC”) implement efficient and scalable monitoring, regulation, and allocation of computational processing, data, labor, and/or the like resources within an enterprise. The RIVPC may facilitate tracking employee time, such as time worked, time per activity, break time, vacation time, and/or the like, by providing an electronic time clock interface at an employee terminal device. The RIVPC may further be configured to track, implement and/or enforce one or more labor rules, regulations, laws, company policies, wage schedules, and/or the like based on one or more rulesets embedded in and/or interacting with the virtual clock components of the RIVPC. The embedded rules may be selected and/or enforced selectively based on user characteristics, including one or more descriptive business grammar strings associated with a user.

## Background
PRIORITY CLAIM AND RELATED APPLICATIONS
This application is a Non-Provisional of prior U.S. Provisional Patent Ser. No. 61/252,611 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,” filed Oct. 16, 2009, to which priority under 35 U.S.C. §119 is claimed.
This application is also a Continuation-In-Part of and claims priority under 35 U.S.C. §120 to prior U.S. Non-Provisional patent application Ser. No. 12/763,320 filed Apr. 20, 2010 entitled, “Apparatuses, Methods and Systems for a Descriptive Business Grammar Syntax Querier,”, which in turn claims priority to U.S. Non-Provisional patent application Ser. No. 12/650,542 filed Dec. 31, 2009 entitled, “Apparatuses, Methods and Systems for a Descriptive Business Grammar Syntax Querier,”, which in turn claims priority to U.S. Provisional Patent Application Ser. No. 61/252,611 filed Oct. 16, 2009 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,”.
This application is also a Continuation-In-Part of and claims priority under 35 U.S.C. §120 to prior U.S. Non-Provisional patent application Ser. No. 12/760,948 filed Apr. 15, 2010 entitled, “Apparatuses, Methods and Systems for a Universal Data Librarian,”, which in turn claims priority to U.S. Non-Provisional patent application Ser. No. 12/650,493 filed Dec. 30, 2009 entitled, “Apparatuses, Methods and Systems for a Universal Data Librarian,”, which in turn claims priority to U.S. Provisional Patent Application Ser. No. 61/252,611 filed Oct. 16, 2009 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,”.
This application is also a Continuation-In-Part of and claims priority under 35 U.S.C. §120 to prior U.S. Non-Provisional patent application Ser. No. 12/762,570 filed Apr. 19, 2010 entitled, “Apparatuses, Methods and Systems for a Global Data Exchange,”, which in turn claims priority to U.S. Non-Provisional patent application Ser. No. 12/650,442 filed Dec. 30, 2009 entitled, “Apparatuses, Methods and Systems for a Global Data Exchange,”, which in turn claims priority to U.S. Provisional Patent Application Ser. No. 61/252,611 filed Oct. 16, 2009 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,”.
This application is also a Continuation-In-Part of and claims priority under 35 U.S.C. §120 to prior U.S. Non-Provisional patent application Ser. No. 12/763,331 filed Apr. 20, 2010 entitled, “Apparatuses, Methods and Systems for an Automated Data Extractor,”, which in turn claims priority to U.S. Non-Provisional patent application Ser. No. 12/650,530 filed Dec. 30, 2009 entitled, “Apparatuses, Methods and Systems for an Automated Data Extractor,”, which in turn claims priority to U.S. Provisional Patent Application Ser. No. 61/252,611 filed Oct. 16, 2009 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,”.
This application is also a Continuation-In-Part of and claims priority under 35 U.S.C. §120 to prior U.S. Non-Provisional patent application Ser. No. 12/762,577 filed Apr. 19, 2010 entitled, “Apparatuses, Methods and Systems for a Real-Time Desktop Configurer,”, which in turn claims priority to U.S. Non-Provisional patent application Ser. No. 12/650,548 filed Dec. 31, 2009 entitled, “Apparatuses, Methods and Systems for a Real-Time Desktop Configurer,”, which in turn claims priority to U.S. Provisional Patent Application Ser. No. 61/252,611 filed Oct. 16, 2009 entitled, “Apparatuses, Methods and Systems for Tailored and Customizable Management of Enterprise and Human Resources,”.
This disclosure is also related to U.S. Non-Provisional patent application Ser. No. 12/905,221 filed Oct. 15, 2010, entitled “Apparatuses, Methods and Systems for an Employee Reimbursement Evaluator,” and U.S. Non-Provisional patent application Ser. No. 12/905,239 filed Oct. 15, 2010, entitled “Apparatuses, Methods and Systems for a Global Benefits Purse Facilitator”.
The entire contents of the aforementioned patent are herein expressly incorporated by reference.


FIELD
The present invention is directed generally to apparatuses, methods, and systems of human resource management, and more particularly, to APPARATUSES, METHODS AND SYSTEMS FOR A RULE-INTEGRATED VIRTUAL PUNCH CLOCK.
BACKGROUND
Employers keep track of the amount of time that employees are on the job in order to assess how hard employees are working, how much break and/or vacation time they have taken, and, in some instances, how much they should be compensated. In some cases, the amount of time that an employee has worked, the amount of break time, or the amount of vacation time may be dictated by legal regulations or company policies. Time clocks exist where an employee tracks time worked by punching his or her personal card in a slot of the clock in order to print a time in or a time out thereon.
SUMMARY
The APPARATUSES, METHODS AND SYSTEMS FOR A RULE-INTEGRATED VIRTUAL PUNCH CLOCK (hereinafter “RIVPC”) implement efficient and scalable monitoring, regulation, and allocation of computational processing, data, labor, and/or the like resources within an enterprise. In some embodiments, the RIVPC may facilitate tracking employee time, such as time worked, time per activity, break time, vacation time, and/or the like, by providing an electronic time clock interface at an employee terminal device. The RIVPC may further be configured to track, implement and/or enforce one or more labor rules, regulations, laws, company policies, wage schedules, and/or the like based on one or more rulesets embedded in and/or interacting with the virtual clock components of the RIVPC. In some implementations, the embedded rules may be selected and/or enforced selectively based on user characteristics, including one or more descriptive business grammar strings associated with a user.
the dissemination and integration of information associated with employee status updates, including the hiring of job candidates, promotions, demotions, and/or the like. In some implementations, the RIVPC may be configured to automatically update enterprise database systems as needed or desired to effectuate employee onboarding, reflect employee status changes and/or to transfer employee data from one place to another, such as from a human resources application database, where the employee status change may be first entered, to a wide variety of other enterprise systems, such as those associated with information technology, facilities, payroll, benefits, legal, marketing, and/or other enterprise departments. The RIVPC may further be configured to automatically generate a variety of reports based on employee status updates.
In various implementations and embodiments, RIVPC systems may facilitate: generation and maintenance of a universal business data library; a descriptive business grammar linked to and substantially tracking tables within the universal business data library and search methodologies based thereon; a global data exchange and universal data mapping tool; an automated data extractor; accounting journal entry automation and a chart/report clarifier; elimination of cash reconciliation requirements; invoice generation; a global payroll engine; cost center automation and graphical management; a universal payment integrator; transactional tagging; thin-client virtualization, tailored application provision, and device configuration; softphone configuration and personalization; storage configuration; user interface configuration and personalization; rules-based world wide web restriction; call recording and searching; payclock virtualization; call restriction and regulation; disclosure and/or disclaimer automation; rules-based referral bonus generation and payment tracking; emotional aptitude evaluation; streamlined labor resource allocation; purse-based global benefits planning; universal form resources; an integrated employee training platform; automatic reimbursement facilitation; graphical interactive voice response system programming; hardware asset utilization tracking and reporting; target contact estimation tools; strategic auto-dialing; estimation tools for payment collection efficacy; action sequence tools for collection strategy implementations; and/or the like and use of the RIVPC.
In one embodiment, an employee onboarding automating processor-implemented method is disclosed, comprising: receiving an employee status update trigger indicator; accessing at least one status update mapping record comprising a plurality of universal variables and at least one database identifier; and updating a first set of table fields linked to the plurality of universal variables in at least one database corresponding to the at least one database identifier based on employee data stored in a second set of table fields based on the at least one status update mapping record.
In another implementation, an employee onboarding automating processor-implemented method is disclosed, comprising: receiving an employee status update trigger indicator; accessing at least one status update report generation template comprising a plurality of universal variables and at least one database identifier; accessing employee data from a first set of table fields linked to the plurality of universal variables in at least one database corresponding to the at least one database identifier; and generating a status update report based on the accessed employee data and the at least one status update report generation template.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying appendices and/or drawings illustrate various non-limiting, example, inventive aspects in accordance with the present disclosure:
FIG. 1 illustrates an implementation of data flow among and between RIVPC components and/or affiliated entities for user authentication and application resource allocation in one embodiment of RIVPC operation;
FIG. 2A shows an implementation of logic flow for user authentication and application resource allocation in one embodiment of RIVPC operation;
FIG. 2B shows an implementation of a user interface for specifying user application privileges in one embodiment of RIVPC operation;
FIG. 3 shows an implementation of logic flow for application tailoring based on department codes in one embodiment of RIVPC operation;
FIG. 4 shows an implementation of data flow between and among RIVPC system components in one embodiment of RIVPC operation;
FIGS. 5A-5C show aspects of implementations of data models in one embodiment of RIVPC operation;
FIG. 6 shows an implementation of a table-tracking string syntax in one embodiment of RIVPC operation;
FIG. 7 shows a schematic illustration of correlations between positions within an organizational hierarchy and corresponding strings configured with a dynamic, hierarchical table-tracking syntax in one embodiment of RIVPC operation;
FIG. 8 shows an implementation of logic flow for string type discerning and parsing in one implementation of RIVPC operation;
FIG. 9 shows an implementation of logic flow for static table-tracking syntax parsing in one embodiment of RIVPC operation;
FIG. 10 shows an implementation of logic flow for parsing dynamic table-tracking syntax configured strings in one embodiment of RIVPC operation;
FIG. 11 provides a schematic illustration of an implementation of converting a table-tracking syntax configured string into a database query statement in one embodiment of RIVPC operation;
FIG. 12 shows an implementation of logic flow for forming a query statement based on an input string in one embodiment of RIVPC operation;
FIG. 13 provides a schematic illustration of an implementation of converting a table-tracking syntax configured string into a database input statement in one embodiment of RIVPC operation;
FIG. 14 shows an implementation of logic flow for forming a database input statement based on an input string in one embodiment of RIVPC operation;
FIGS. 15A-B show an implementation of data flow between and among RIVPC system components in one embodiment of RIVPC operation;
FIG. 16 shows an implementation of a user interface for universal variable allocation in one embodiment of RIVPC operation;
FIG. 17 shows another implementation of a user interface for universal variable allocation in one embodiment of RIVPC operation;
FIG. 18 shows an implementation of overall logic flow for a universal data library in one embodiment of RIVPC operation;
FIG. 19 shows an implementation of logic flow for connecting universal variable commands to application database commands in one embodiment of RIVPC operation;
FIGS. 20 and 21 show implementations of data flow for interfacing universal variables to external database fields in one embodiment of RIVPC operation;
FIGS. 22A-C show implementations of a user interface for data exchange specification in one embodiment of RIVPC operation;
FIG. 23 shows an implementation of logic flow for data exchange in one embodiment of RIVPC operation;
FIG. 24 shows an implementation of logic flow for database input statement generation in one embodiment of RIVPC operation;
FIG. 25 shows an implementation of logic flow for determining data relationships in one embodiment of RIVPC operation;
FIG. 26 shows an implementation of a user interface for database integration in one embodiment of RIVPC operation;
FIGS. 27A-C show implementations of a user interface for report generation and generated reports in one embodiment of RIVPC operation;
FIG. 28 shows an implementation of logic flow for report generation in one embodiment of RIVPC operation;
FIG. 29 shows an implementation of logic flow for employee status management in one embodiment of RIVPC operation;
FIG. 30 shows an implementation of logic flow for employee onboarding in one embodiment of RIVPC operation;
FIG. 31 shows an implementation of data flow between and among RIVPC systems and/or related entities for employee onboarding in one embodiment of RIVPC operation;
FIG. 32 shows an implementation of data flow for database updating subject to employee onboarding in one embodiment of RIVPC operation;
FIG. 33 shows another implementation of data flow for database updating subject to employee onboarding in one embodiment of RIVPC operation;
FIGS. 34A-B show implementations of user interfaces for employee onboarding in one embodiment of RIVPC operation;
FIG. 35 shows an implementation of data flow for report generation subject to employee onboarding in one embodiment of RIVPC operation;
FIG. 36 shows an implementation of user interface for report generation subject to employee onboarding in one embodiment of RIVPC operation;
FIG. 37 shows an implementation of logic flow for employee status update management in one embodiment of RIVPC operation;
FIG. 38 shows an implementation of data flow for employee status update management in one embodiment of RIVPC operation;
FIG. 39 shows an implementation of user interface for employee status update management in one embodiment of RIVPC operation;
FIG. 40 shows an implementation of logic flow for employee termination in one embodiment of RIVPC operation;
FIG. 41 shows an implementation of data flow for employee termination in one embodiment of RIVPC operation;
FIGS. 42A-B show implementations of user interface for employee termination in embodiments of RIVPC operation;
FIG. 43 shows an implementation of logic flow for employee referral reward management in one embodiment of RIVPC operation;
FIG. 44 shows an implementation of user interface for employee referral reward management in one embodiment of RIVPC operation;
FIG. 45 shows an implementation of data flow between and among RIVPC components and affiliated entities in one embodiment of RIVPC operation;
FIG. 46 shows an implementation of overall logic flow in one embodiment of RIVPC operation;
FIGS. 47A-B show an implementation of logic flow for benefits selection in one embodiment of RIVPC operation;
FIG. 48 shows an implementation of user interface for purse amount specification in one embodiment of RIVPC operation;
FIG. 49 shows an implementation of user interface for specifying benefits availability and parameters in one embodiment of RIVPC operation;
FIG. 50 shows an implementation of user interface for benefits package selection in one embodiment of RIVPC operation;
FIG. 51 shows an implementation of logic flow for reimbursement request processing in one embodiment of RIVPC operation;
FIG. 52 shows an implementation of logic flow for email message-based reimbursement request submission in one embodiment of RIVPC operation;
FIG. 53 shows an implementation of user interface for reimbursement request management in one embodiment of RIVPC operation;
FIG. 54 shows an implementation of user interface for benefits selection in one embodiment of RIVPC operation;
FIG. 55 shows an implementation of user interface for virtual clock rule specification in one embodiment of RIVPC operation;
FIG. 56 shows an implementation of logic flow for virtual clock rule generation in one embodiment of RIVPC operation;
FIG. 57 shows an implementation of user interface for virtual clock display and user interaction in one embodiment of RIVPC operation;
FIG. 58 shows an implementation of virtual clock engagement and interaction in one embodiment of RIVPC operation;
FIG. 59 shows an implementation of logic flow for rule retrieval in one embodiment of RIVPC operation;
FIG. 60 shows an implementation of logic flow for break enforcement in one embodiment of RIVPC operation;
FIG. 61 shows an implementation of logic flow for work time rule enforcement in one embodiment of RIVPC operation;
FIG. 62 shows an implementation of logic flow for employee payment determination in one embodiment of RIVPC operation; and
FIG. 63 is of a block diagram illustrating embodiments of the RIVPC controller.



Appendix A includes further details of an implementation of hierarchically arranged universal variables for a universal data library in one embodiment of RIVPC operation.
The leading number of each reference number within the drawings indicates the figure in which that reference number is introduced and/or detailed. As such, a detailed discussion of reference number 101 would be found and/or introduced in FIG. 1. Reference number 201 is introduced in FIG. 2, etc.
DETAILED DESCRIPTION
Application Tailoring and Device Virtualization/Configuration
FIG. 1 illustrates a dataflow of an example embodiment of RIVPC operation among and between RIVPC components and/or affiliated entities for user authentication and application resource allocation. A variety of other compositions and arrangements of RIVPC components and affiliated entities may be used in alternative embodiments of RIVPC operation. For example, in one embodiment, a RIVPC, requesting system, and database may all be localized within a single computing terminal. In another embodiment, the RIVPC may receive input strings over a network from one or more mobile devices and provide access to data from one or more databases in response to such received strings. The data flow shown in FIG. 1 is intended for illustrative purposes only, and to describe aspects of a particular embodiment.
In one embodiment, the RIVPC includes facilities for thin client virtualization and application tailoring based on user identities and/or profiles. In one implementation, a RIVPC computing environment may include a local office and/or collection of client terminals 101, wherein each client terminal 105 operated by a user 103 may comprise a thin client. In one implementation, the thin client may have no operating system initially installed. The computing environment may further include a projection server 115 communicatively coupled to the plurality of client terminals 105 in the local office. In one implementation, the projection server 115 may be situated locally with respect to the plurality of client terminals 105. In one implementation, the projection server may comprise a plurality of servers configured as a cloud computing facility. The computing environment may further include a central office facility 130 comprising one or more data 140 and/or authentication servers 135. A data server 140 in the central office may maintain and/or provide access to a central database 145, which may include master copies of one or more operating systems, applications, data files and/or database tables and/or the like. In one implementation, the data server may supply a so-called Golden Master or Golden Image 155 to the projection server 115, such as on a periodic basis, whenever requested by the projection server, whenever updates are made, and/or the like. The Golden Image 155 may, in one implementation, include an operating system destined for installation on one or more client terminals. The Golden Master may include additional files as well in various implementations, such as an authentication application, seed and/or compressed files for other applications, .NET framework files, and/or the like. The data server 140 may further provide a plurality of application files, application file updates 160, data values and/or updates 170, and/or the like to the projection server, which may be destined for installation and/or use on one or more of the client terminals. The projection server 115 may store received application files, data, and/or the like in a projection server database 118. In one implementation, the data server 140 may directly exchange data with one or more client terminals 105, including updated data values, records stored in the central database 145, and/or the like. In one implementation, application files may be “virtualized” prior to installation on the client terminals. In one implementation, application virtualization may be achieved using VMWare Thinapp. In one implementation, application virtualization occurs after application files are received at the projection server. In an alternative implementation, application files are virtualized at the central office, and virtualized application files are then provided to the projection server.
At power on, a client terminal 105 may be configured to boot from a communications network instead of from any local disk. In one implementation, a Preboot Execution Environment (PXE) boot may be engaged to boot the client terminal from the network, wherein the client polls for, contains, and/or is provided an address on the network to obtain boot information and/or to send a boot request. The client terminal's boot request 110 may be relayed to the projection server 115 which, in turn, may provide elements of the Golden Image, such as operating system files, application and/or authentication seed files, .NET framework files, and/or the like 120 for installation at the client terminal. Authentication seed files may then allow a user to submit authentication information in order to identify the user and/or initiate provision of further files and/or application use authorizations. In one implementation, the client terminal may be equipped with one or more biometric login devices (e.g., fingerprint and/or palmprint scanner, retina scanner, facial recognition scanner, earshape recognition scanner, voice recorder, typing rhythm analyzer, and/or the like) configured to admit biometric data associated with a user 125. In one example embodiment, a Digital Persona U.are.U. Fingerprint Reader is employed, which captures an image of the users fingerprint, converts it to a binary format and provides it via a Digital Persona service to the Authentication Control Server 135 server for authentication. In one implementation, software used to engage the one or more biometric login devices is provided from the Golden Image by the projection server to the client terminal after a boot request is made. In one implementation, other authentication measures may be used in place of and/or in addition to biometric authentication, such as use of a password, key device, secret question, and/or the like.
The user may engage the biometric login device and/or any other authentication measures to submit user identification information 125 to an authentication server 135, such as may be located at a central office 130. The authentication server may then verify and/or authenticate the user identification information, such as by comparing it against stored user identification information, e.g., as may be stored in a central database 145, ensuring a match beyond a specified threshold, and/or the like. If a match is detected, the authentication server 135 may query a database (e.g., the central database 145) for a matching user's profile to determine user access authorizations contained therein, such as a package of applications that should be provided to the user. In one implementation, the RIVPC may employ Microsoft Active Directory for administration of user access and authorizations, which may run on the Data Server. Based on the user identifier (ID) and/or information in an associated user profile, the RIVPC may determine one or more applications that the user is permitted to access. In one implementation, the applications a user may access may be correlated with one or more of a user's company, a user's department, a user's employment position, a user's location, a user's assignment, and/or the like. The authentication server 135 may provide an instruction to the projection server 115 to provide authorized application files to the client terminal 105 at which the user 103 is logged in. In turn, the projection server may provide application files 175, such as in the form of executable virtualized application files, to the client terminal at which the user is logged in. In one implementation, the user my be required to periodically re-enter login and/or authentication information to ensure that they are still the user of that client terminal, and that another user has not taken their place.
FIG. 2A shows an implementation of logic flow for user authentication and application resource allocation in one embodiment of RIVPC operation. The implementation in FIG. 2A indicates entities that may perform aspects of the method shown in some implementations, including authentication and/or data server(s) 201, a projection server 204, and a client terminal 207. The authentication and/or data server(s) 201 may generate and/or update a golden image, application files, data tables and/or records, and/or the like 210 and may pass the golden image and/or other updates to the projection server 213, which receives them at 222. The authentication and/or data server(s) may subsequently determine whether new updates are available for a new golden image 216 and, if not, then wait for a period of time before checking again 219. The projection server, in one implementation, may store the received golden image, application files, data files, and/or the like, such as in a database and/or in temporary storage.
A client terminal may be booted, such as on machine startup, to initiate a network (e.g., PXE) boot 231, passing a boot request over the network, such as to the projection server 204. The projection server 204, in turn, may monitor and/or determine whether a boot request has been received 228. If not, the projection server may wait for a period of time before checking again for a boot request 225. In one embodiment, the boot request may be configured in accordance with the Preboot Execution Environment (PXE) Specification v. 2.1 standard.
Once the request is received, the projection server may pass files and/or data to the client terminal 234, such as by employing HP Image Manager. In one implementation, the projection server may provide all or aspects of the Golden Image to the client terminal, such as: operating system files; .NET framework files, Java files, and/or the like; application seed files; authentication and/or login input (e.g., biometric) files; and/or the like. The client starts the boot process and begins to copy and unpackage the materials provided from the projection server. Using files received from the projection server which have now been executed/instantiated, a user at the client terminal may login and/or otherwise generate a user ID 237. In one implementation, the user ID generated at 237 comprises a biometric user ID, such as but not limited to a thumbprint or scan; a print or scan of any other finger, combination of fingers, part of the palm, and/or the like; an iris or retina scan; facial image scan; earshape image scan; voice audio data; and/or the like. For example, one of the packages received at the thin client may be DigitalPersona Pro and/or other thumbprint device drivers and capture programs. The generated user ID may then be passed to the authentication and/or data server(s) 240 (e.g., by sending it via FTP, HTTP Post, SSH, FTPS, SFTP, HTTPS, another Digital Persona service, and/or the like), which may then determine whether the received ID is valid 243. For example, the send message may include an image converted to binary format and may be sent to a server-side component of DigitalPersona Pro fingerprint authentication application, which will perform the recognition/identification of the biometric identifier. In one implementation, this determination may be made based on a comparison of the received ID with stored IDs, stored ID formatting information, and/or the like. If the user ID is determined to be invalid at 243, an error handling procedure may be undertaken, a request may be transmitted for reentry and/or retransmission of the user ID information, and/or the like 246.
For valid user IDs, the authentication and/or data server(s) may access user information and/or a user profile associated with the user ID 249. Accessed user information may then be used to determine which applications to include in a tailored application package for that user 252. For example, in one implementation, a user profile may have fields identifying authorized applications for that user. In another implementation, profile fields may be compared with application access fields defined separately for the applications, and those applications having appropriately matching fields with the user profile may be selected for that user. For example, a user profile and/or other user information may, in one implementation, identify a department code, program code, and/or the like structured syntax string associated with the user (e.g., as may be see in FIGS. 6-7), and various applications may also have associations with various department codes, program codes, and/or the like. The authentication and/or data server(s) may then, in this implementation, instruct provision applications sharing one or more department codes, program codes, and/or the like with those of the user to the user's client terminal. In one implementation, some or all of the determination of which applications to provide to the user may take place at the projection server, and the authentication and/or data server(s) may provide sufficient information to the projection server to allow it to complete the identification of user-appropriate applications.
Once the appropriate package of applications is determined for the user, the authentication and/or data server(s) may pass an instruction message to the projection server 255, the message comprising, in one implementation, specification of applications to be provided to the user. The projection server may receive the instruction and select a package of tailored application files to provide to the client terminal 258. In one implementation, the projection server may select and provide to the client terminal a plurality of virtualized application executable files corresponding to selected applications. For example, FIG. 2B shows an implementation of a user interface for specifying user application privileges in one embodiment of RIVPC operation. The user interface provides a system administrator with facilities to specify a policy, rule, and/or the like delineating which employees, groups of employees, third parties, and/or the like should receive which applications and/or application packages. In the illustrated implementation, a user may specify at 285a client and/or group of clients to which a particular specified application distribution and/or access rule and/or policy should be applied. The application may be specified at 286, and characteristics of users, employees, groups, departments, and/or the like who should receive and/or be allowed to use that application may be specified at 287-292. For example, access characteristics may include an employee title 287, an employee function 288, an employee subfunction 289, a department (as may be specified by a department code, which is discussed in further detail below and with reference to FIG. 7) 290, a program (as may be specified by a program code, which is discussed in further detail below and with reference to FIG. 6) 291, an employee name 292, and/or the like. The interface therefore provides both for specification of application privileges for wide classes of users, as well as for user-friendly exception handling whereby a single user or highly specific class of users may be given special access privileges as needed.
In some implementations, application files received from the authentication and/or data server(s) at 222 may be virtualized at the projection server, such as via application of VMWare's Thinapp to the application files to yield virtualized application executables, such as in .EXE format. In another implementation, application files may be virtualized at the authentication and/or data server(s), and the virtualized application executables provided to the projection server for temporary storage until they are to be provided to the client terminals.
In one implementation, virtualized application executables may be pushed to the thin client using a secure file transfer protocol, secure shell (SSH), and/or the like.
The projection server passes the virtualized application executables to the client terminal 261, which receives, unpackages, and/or runs the files to engage the applications at the client terminal, including exchanges of data related to operation of those applications 270. The projection server may then monitor whether a logout request has been received from the client terminal 264 and, if not, may wait until such a request is received 267. The user at the client terminal may then initiate a logout when he or she is finished with the application session 273, precipitating a re-initialization of the client terminal, whereby data updates are passed over the network to one or more targets, and the client terminal is returned to its pre-login and/or pre-boot state 276. In one embodiment, the terminal may erase (e.g., securely) the contents of its memory to ensure a pre-boot state and enhance security, for example, by issuing root/admin level format command on the storage mechanism, e.g., hard drive. In one implementation, user generated data and/or other saved data may be persisted and/or passed to the authentication and/or data server(s) by the projection server, and projection of application images to the client terminal ceased 279. In an alternative implementation, the client terminal may itself communicate directly with the authentication and/or data server(s) to provide data update information. Data updates received by the authentication and/or data server(s) may be stored and/or persisted, such as in a central database 282.
FIG. 3 shows an implementation of logic flow for application tailoring based on department codes in one embodiment of RIVPC operation. In one implementation, the method illustrated in FIG. 3 may be operable on an authentication and/or data server. An application package request is received, the request comprising at least a user identifier 301. In another implementation, the request may further comprise a client terminal identifier and/or other information to assist in selecting an application package and/or providing requested applications to a client terminal device. A user department code may be queried based on the user identifier 305, such as, in one implementation, by accessing a user profile containing a department code (e.g., see FIG. 7 for more detail on department codes) associated with the user. A query may then be submitted for application access fields based on the department code 310. In one implementation, application access fields may specify applications accessible to users associated with the particular department code. Application identifiers may be selected based on the application access fields 315, and an instruction message may be prepared including the application identifiers 320. In an alternative implementation, application identifiers may be directly selected based on a department code and/or other user information, and/or a rules-based system may specify correspondences between application identifiers and department codes and/or other user information. An example of user information for obtaining application access may take a form similar to the following XML example:
<user_info>

    
    
        <name> John.Smith </name>
        <title> Agent </title>
        <function> Operations </function>
        <subfunction> “blank”</subfunction>
    
    
    <department_code> CORP1.OPS.US.CS.TEAM1</department_code>


</user_info>
In one implementation, one or more fields of user information (e.g., name and department code) may be mandatory, with remaining fields optional. An example of a instruction message response to user information for application access may comprise a list of application identifiers and may, in one implementation, take a form similar to the following XML example:
<response>

    
    
        <application1> Qallbar </application1>
        <application2> Qorus </application2>
        <application3> CRM </application3>
    
    


</response>
In one implementation, the instruction message may further include a client terminal device identifier to direct the application files to the appropriate target.
Data Construct and Tracking Syntax
FIG. 4 shows an implementation of data flow between and among RIVPC system components in one embodiment of RIVPC operation. The embodiments illustrated in FIG. 4 are directed to a RIVPC system residing at the Authentication/Control Server 135 and/or Data Server 140 shown in FIG. 1. It is to be understood that aspects of the illustrated embodiment directed to integration with the framework shown in FIG. 1 are for illustrative purposes only, and the RIVPC system may be deployed in a wide variety of other contexts, including those independent of and apart from the framework illustrated in FIG. 1.
The RIVPC system 401 may contain a number of operational components and/or data stores. A RIVPC controller 405 may serve a central role in some embodiments of RIVPC operation, serving to orchestrate the reception, generation, modification, and distribution of data and/or instructions to, from, and between RIVPC components and/or mediate communications with external entities and systems.
In one embodiment, the RIVPC controller 405 may be housed separately from other controllers, modules, components and/or databases within or external to the RIVPC system, while in another embodiment, some or all of the other modules, components, controllers and/or databases within and/or external to the RIVPC system may be housed within and/or configured as part of the RIVPC controller. Further detail regarding implementations of RIVPC controller operations, modules, components and databases is provided below.
In the implementation illustrated in FIG. 4, the RIVPC system may be integrated as part of an authentication/control and/or data server, and the RIVPC controller 405 may be configured to couple to external entities and/or systems via one or more interface components. For example. the RIVPC controller 405 may be coupled to a projection server/client interface 410. In one implementation, the projection server/client interface 410 may mediate communications to and from a remote projection server and/or one or more client terminals, such as to receive data requests, data inputs, table-tracking syntax configured strings, rule specifications, organizational structure specification and/or inputs, instructions, and/or the like and to return data, rules, instructions, parsed string tokens, generated table-tracking syntax configured strings, and/or the like. The RIVPC controller 405 may further be coupled to a central database interface 415. In one implementation, the central database interface 415 may mediate communications to and from a remote central database to send parsed string tokens, data updates, rules, data requests, and/or the like and to receive requested data, rules, table identifiers, field identifiers, column identifiers, and/or the like. The RIVPC controller 405 may further be coupled to a user interface 420. In one implementation, the user interface 420 may mediate communications to and from a user to receive administrator inputs, settings, configuration inputs and/or files, table-tracking syntax configured strings, data requests, data inputs, updates, and/or the like and to send graphical user interface screens, requested data, generated strings, and/or the like. In various implementations, one or more of the interface components described above may serve to configure data into application, transport, network, media access control, and/or physical layer formats in accordance with a network transmission protocol, such as, but not limited to FTP, TCP/IP, SMTP, Short Message Peer-to-Peer (SMPP), and/or the like. For example, the interfaces may be configured for receipt and/or transmission of data to an external and/or network database. The interfaces may further be configurable to implement and/or translate Wireless Application Protocol, VOIP, and/or the like data formats and/or protocols. The interfaces may further house one or more ports, jacks, antennas, and/or the like to facilitate wired and/or wireless communications with and/or within the RIVPC system.
In one implementation, the RIVPC controller 405 may further be coupled to a plurality of components configured to implement RIVPC functionality and/or services. For example, the RIVPC controller 405 may be coupled to a Parser component 425 which may, in one implementation, be configured to parse received input strings into constituent string tokens and/or otherwise implement interpretation of inputs in accordance with one or more table-tracking syntaxes and/or descriptive business grammars. The Parser component 425 may further be configured to parse inputs into a table-tracking syntax configured input string and attendant data, instructions, requests, and/or the like (e.g., a search query, data input, rule request, and/or the like accompanying a table-specifying input string). The RIVPC controller 405 may further be coupled to a Command Generator component 430 which may, in one implementation, be configured to generate database manipulation commands, queries, data input and/or storage commands, and/or the like, such as based on tokens extracted from received input strings. For example, in one implementation, the Command Generator component 430 may be configured to receive parsed string tokens, such as from the Parser component 425, and generate a SQL Select command to query data from a RIVPC database and/or generate a SQL Insert Into command to enter attendant data into a RIVPC database. Implementations such as these are illustrated in further detail below. The RIVPC controller 405 may further be coupled to a Dynamic Syntax Generator component 435, which may, in one implementation, be configured to dynamically generate a syntax and/or strings configured with a dynamic syntax in response to user action. For example, in one implementation, the Dynamic Syntax Generator may engage a graphical user interface, such as may be provided to a client terminal via the Projection Server/Client Interface 410 and/or the User Interface 420, that is accessible by a user and that admits inputs indicative of an organizational structure, said inputs instructing the formation and/or organization of the dynamic syntax. The RIVPC controller 405 may further be coupled to a String Generator component 440, which may, in one implementation, be configured to generate strings in association with various inputs and/or stored data. For example, in one implementation, the String Generator 440 may be configured to generate strings based on organizational hierarchies generated by and/or with the Dynamic Syntax Generator 435. In another implementation, the String Generator 440 may be configured to generate strings matching data queries, such as may be submitted by a user, to see any and/or all syntax-configured strings that match the data query.
In one implementation, the RIVPC controller 405 may further be coupled to one or more databases configured to store and/or maintain RIVPC data. A Syntax database 445 may contain information pertaining to string token types and/or sequences, delimiters, string token lengths, syntax identifiers, dynamic syntax parameters, and/or the like. In some implementations, the RIVPC may compare received input strings with fields and/or records in the Syntax database 445 in order to verify formatting of the input string, assist in parsing the string, and/or the like.
FIGS. 5A-5C show aspects of implementations of data models in one embodiment of RIVPC operation. The tables shown in FIGS. 5A-5C may, in one implementation, be stored in a central database such as that shown at 145 in FIG. 1 and accessible to the RIVPC via the central database interface 415 in FIG. 4.
FIG. 5A shows an implementation of a data model illustrating relationships among a group of database tables pertaining to Programs. A ClientProgram table 501 may include fields allowing specification of records pertaining to the organization of an enterprise's clients, the type(s) of work performed for them, and/or the like. In one implementation, a ClientProgram table 501 may include fields such as, but not limited to: ProgramID, ProgramCode, ProgramName, Description, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, Timestamp (TS), AutoDeductFlag, SalesID foreign key (FK), ClientID (FK), CountryID (FK), BusinessTypeID (FK), VerticalID (FK), ProgramTypeID (FK), EntityID (FK), InvoiceGrouplD (FK), and/or the like. The ClientProgram table 501 may be linked to a variety of other tables, including so-called atomic-level tables, via the foreign keys specified therein. For example, the ClientProgram table 501 may be linked to a Sales table 505, which may include fields allowing specification of records pertaining to sales made in association with a particular client, type of work performed for them, and/or the like. In one implementation, a Sales table 505 may include fields such as, but not limited to: SalesID, SalesName, SalesCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The ClientProgram table 501 may further be linked to a ProgramType table 510, which may include fields allowing specification of records pertaining to the types of work performed for clients. In one implementation, a ProgramType table 510 may include fields such as, but not limited to: ProgramTypeID, ProgramTypeName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The ClientProgram table 501 may further be linked to a BusinessType table 515, which may include fields allowing specification of records pertaining to the types of businesses associated with clients, the types of business between an enterprise and a client, and/or the like. In one implementation, a BusinessType table 515 may include fields such as, but not limited to: BusinessTypeID, BusinessTypeCode, BusinessTypeName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The ClientProgram table 501 may further be linked to a ClientProgramHistory table 520, which may include fields allowing specification of records pertaining to historical and/or time-resolved client programs. In one implementation, a ClientProgramHistory table 520 may include fields such as, but not limited to: ProgramHistoryID, OldProgramCode, ChangeDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ProgramID (FK), and/or the like. The ClientProgram table 501 may further be linked to a Country table 525, which may include fields allowing specification of records pertaining to countries. In one implementation, a Country table 525 may include fields such as, but not limited to: CountryID, CountryName, CountryCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The ClientProgram table 501 may further be linked to a LegalEntity table 530, which may include fields allowing specification of records pertaining to legal entity status, tax status, personnel and/or the like of enterprises, clients, and/or the like. In one implementation, a LegalEntity table 530 may include fields such as, but not limited to: EntityID, EntityName, EntityCode, TaxID, ChairmanName, SecretaryName, DirectorName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CurrencyID (FK), CountryID (FK), and/or the like. The ClientProgram table 501 may further be linked to a Client table 535, which may include fields allowing specification of records pertaining to clients and/or client information. In one implementation, a Client table 535 may include fields such as, but not limited to: ClientID, ClientName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CountryID (FK), VerticalID (FK) and/or the like. The ClientProgram table 501 may further be linked to a Vertical table 540, which may include fields allowing specification of records pertaining to market and/or industry categories, and/or the like. In one implementation, a Vertical table 540 may include fields such as, but not limited to: VerticalID, VerticalName, VerticalCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like.
In some implementations, links may exist between lower-level and/or atomic-level tables as well. For example, in the illustrated implementation, the Client table 535 is linked to the Country table 525 and to the Vertical table 540; and the LegalEntity table 530 is linked to the Country table 525. Some tables linked by foreign keys to tables shown in FIG. 5A have been omitted from illustration for the sake of clarity.
FIG. 5B shows an implementation of a data model illustrating relationships among a group of database tables pertaining to Departments. A DepartmentCode table 543 may include fields allowing specification of records pertaining to departments within an enterprise, the organization of the enterprise's departments, and/or the like. In one implementation, a DepartmentCode table 543 may include fields such as, but not limited to: DepartmentCodeID, DepartmentCode, DepartmentFullName, TreeLevel, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, DepartmentID (FK), EntityID (FK), LocationlD (FK), ClassID (FK), SubClassID (FK), and/or the like. The DepartmentCode table 543 may be linked to a variety of other tables, including so-called atomic-level tables, via the foreign keys specified therein. For example, the DepartmentCode table 501 may be linked to a Department table 546, which may include fields allowing specification of records pertaining to departments within an enterprise, and/or the like. In one implementation, a Department table 546 may include fields such as, but not limited to: DepartmentID, Name, Code, Type, CreatedBy, CreatedDate, TS, and/or the like. The DepartmentCode table 543 may further be linked to a DepartmentHistory table 549, which may include fields allowing specification of records pertaining to the history of department assignments and/or characteristics, and/or the like. In one implementation, a DepartmentHistory table 549 may include fields such as, but not limited to: DepartmentHistoryID, DepartmentFullName, DepartmentCode, DepartmentID, ParentDepartmentID, ChangedDepartmentID, ChangedDate, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The DepartmentCode table 543 may further be linked to a LegalEntity table 552, which may include fields allowing specification of records pertaining to legal entity status, tax status, personnel and/or the like of enterprises, clients, and/or the like. In one implementation, a LegalEntity table 552 may include fields such as, but not limited to: EntityID, EntityName, EntityCode, TaxID, ChairmanName, SecretaryName, DirectorName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CurrencyID (FK), CountryID (FK), and/or the like. The LegalEntity table 552 may, in turn, be linked to a Country table 558, which may include fields allowing specification of records pertaining to countries. In one implementation, a Country table 558 may include fields such as, but not limited to: CountryID, CountryName, CountryCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. In the illustrated implementation, the country code may further be linked to a Client table 561, which may include fields allowing specification of records pertaining to clients and/or client information. In one implementation, a Client table 561 may include fields such as, but not limited to: ClientID, ClientName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CountryID (FK), VerticalID (FK) and/or the like. The Client table 561, in turn, may be linked to a Vertical table 570, which may include fields allowing specification of records pertaining to market and/or industry categories, and/or the like. In one implementation, a Vertical table 570 may include fields such as, but not limited to: VerticalID, VerticalName, VerticalCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The DepartmentCode table 543 may further be linked to a Location table 555, which may include fields allowing specification of enterprise locations, and/or the like. In one implementation, a Location table 555 may include fields such as, but not limited to: LocationID, LocationName, LocationCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CountryID (FK), and/or the like. The Location table 555 may, in turn, be linked to the Country table 558. The DepartmentCode table 543 may further be linked to a Class table 567, which may include fields allowing specification of records pertaining to classes, such as accounting classes, associated with enterprises, departments, and/or the like. In one implementation, a Class table 567 may include fields such as, but not limited to: ClassID, ClassName, ClassCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. The DepartmentCode table 543 may further be linked to a SubClass table 564, which may include fields allowing specification of records pertaining to subclasses, such as accounting subclasses, associated with enterprises, departments, and/or the like. In one implementation, a SubClass table 564 may include fields such as, but not limited to: SubClassID, SubClassName, SubClassCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ClassID (FK), SubClassTypeID (FK), and/or the like.
In some implementations, links may exist between lower-level and/or atomic-level tables as well. For example, in the illustrated implementation, the Class table 567 is linked to the SubClass table 564. Some tables linked by foreign keys to tables shown in FIG. 5B have been omitted from illustration for the sake of clarity.
FIG. 5C shows an implementation of a data model illustrating relationships among a group of database tables pertaining to Assignments and Employees/Users. An Assignment table 580 may include fields allowing specification of records pertaining to assignments, such as within an enterprise, performed for or on behalf of a client, by a department, and/or the like. In one implementation, an Assignment table 580 may include fields such as, but not limited to: AssignmentID, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ProgramID (FK), DepartmentCodeID (FK), and/or the like. The Assignment table 580 may be linked to a variety of other tables, including so-called atomic-level tables, via the foreign keys specified therein. For example, the Assignment table 580 may be linked to a ClientProgram table 575, which may include fields allowing specification of records pertaining to the organization of an enterprise's clients, the type(s) of work performed for them, and/or the like. In one implementation, a ClientProgram table 575 may include fields such as, but not limited to: ProgramID, ProgramCode, ProgramName, Description, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, Timestamp (TS), AutoDeductFlag, SalesID foreign key (FK), ClientID (FK), CountryID (FK), BusinessTypeID (FK), VerticalID (FK), ProgramTypeID (FK), EntityID (FK), InvoiceGrouplD (FK), and/or the like. The Assignmnt Table 580 may further be linked to a Department Code table 590, which may include fields allowing specification of records pertaining to departments within an enterprise, the organization of the enterprise's departments, and/or the like. In one implementation, a DepartmentCode table 590 may include fields such as, but not limited to: DepartmentCodeID, DepartmentCode, DepartmentFullName, TreeLevel, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, DepartmentID (FK), EntityID (FK), LocationlD (FK), ClassID (FK), SubClassID (FK), and/or the like. In the illustrated implementation, the DepartmentCode table 590 is further linked to a Department table 585, which may include fields allowing specification of records pertaining to departments within an enterprise, and/or the like. In one implementation, a Department table 585 may include fields such as, but not limited to: DepartmentID, Name, Code, Type, CreatedBy, CreatedDate, TS, and/or the like.
An Employee table 595 may include fields allowing specification of records pertaining to user and/or employee attributes and/or characteristics, and/or the like. In one implementation, an Employee table 595 may include fields such as, but not limited to: UserID, GUID, UserName, Email, SubTitleID, SubFunctionID, ISOwner, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, TitleID (FK), FunctionlD (FK), DepartmentCodeID, and/or the like. Some tables linked by foreign keys to tables shown in FIG. 5C have been omitted from illustration for the sake of clarity.
FIG. 6 shows an implementation of a table-tracking string syntax in one embodiment of RIVPC operation. In one embodiment, each token in a business grammar syntax 601 tracks to an individual table, e.g., FIG. 5A-C, 605-625. As such, any token used between grammar eliminators may be parsed and supplied as targets as part of an SQL (e.g., Select) command to a RIVPC database.
A string is shown at 601 that is configured in accordance with a table-tracking grammar syntax whereby delimited string tokens correlate with and/or correspond to tables in the database. For example, in the illustrated implementation, the string comprises a series of tokes delimited by periods, wherein each token admits a table identifier value corresponding to one of the indicated tables. The first token of the string at 601 corresponds to a Client table 605 and may, in one implementation, admit values for the ClientID field. The second token of the string at 601 corresponds to a Country table 610 and may, in one implementation, admit values for the CountryID field. The third token of the string at 601 corresponds to a Vertical table 615 and may, in one implementation, admit values for the VerticalID field. The fourth token of the string at 601 corresponds to a BusinessType table 620 and may, in one implementation, admit values for the BusinessTypeID field. In some implementations, the table-tracking string syntax may also include table fields other than table identifier fields. For example, while the fifth token of the string at 601 may be said to correspond to or correlate with a ClientProgram table 625, the token itself admits values for the Description field of that table.
In various implementations of a table-tracking string syntax, various punctuation marks, character, and/or the like (e.g., periods, commas, dashes, blank spaces, hash marks, dollar signs, asterisks, and/or the like and/or any combination or sequence thereof) may be used in different combinations and arrangements to delimit string tokens. For example, in one implementation, periods may be placed between pairs of string tokens (e.g., the period between the client and country tokens in the string at 601). In one implementation, every pair of string tokens is separated by delimiting punctuation, such as a period. In another implementation, one or more pairs of tokens may have alternative punctuation and/or characters delimiting them than other token pairs, and/or may have no delimiting punctuation and/or characters whatsoever. For example, the country token 610 and vertical token 615 in the string at 601 are not delimited by any additional characters or punctuation. In one implementation, a string interpreting component may have a pre-set token length stored for a given table-tracking syntax and may parse the string based, for example, on the number of characters at a certain point in the string, following a particular delimiter, and/or the like.
In some implementations, the table-tracking syntax may comprise a descriptive business grammar having string tokens that correspond to table fields determined and/or expected to have strong descriptive correlation with business properties and/or behaviors. For example, the implementation of a program code string syntax shown in FIG. 6 has string tokens corresponding to a client name, country, vertical (e.g., industry, company position in a supply chain, and/or the like), business type (e.g., nature of services provided to a client), and a client program description. Any of a wide variety of other tables and/or table fields may be correlated with string tokens in other implementations of descriptive business grammars. In one implementation, tables and/or table fields comprising a string syntax in a descriptive business grammar may be selected by a RIVPC administrator. In an alternative implementation, tables and/or table fields having strong descriptive correlation with business properties and/or behaviors may be determined systematically by selecting one or more business properties and/or behaviors of interest (e.g., size, revenue, common business rules, and/or the like) and performing a discriminant analysis, classification and/or regression tree analysis, and/or the like statistical analysis to select a subset of tables and/or table fields from a larger set, the subset having maximal correlation with the business properties and/or behaviors of interest.
In one implementation, a table-tracking string syntax may take a form that is static and pre-set, such that the number, arrangement, selection, and/or the like of string tokens is fixed and/or substantially the same for each instance of a string formed in accordance with the syntax. In another implementation, a table-tracking string syntax may be formed dynamically, such as based on user inputs, and different strings formed in accordance with the syntax may appear different, have a different number, selection, arrangement, and/or the like of tokens and/or the like. For example, hierarchical properties of a system (e.g., departments of an organization) may be indexed with a dynamic table-tracking string syntax having a selection and/or number of tokens representing a position of a given property within the hierarchy. FIG. 7 shows a schematic illustration of correlations between positions within an organizational hierarchy and corresponding strings configured with a dynamic, hierarchical table-tracking syntax in one embodiment of RIVPC operation. The organizational hierarchy 701 is configured as a tree depicting departments within an organization, with each node of the tree representing a descriptor or characteristic of a corresponding department, division, and/or the like. In turn, each displayed characteristic may correspond to a table, table identifier, table field, and/or the like in a database. The root node 710 corresponds to the organization depicted (XYZ Corp.) and may represent a table field and/or table identifier for, for example, a EntityID, EntityName, ClientID, ClientName, and/or the like. Also depicted in the figure are a series of so-called Department Codes 705 comprising dynamic, hierarchical table-tracking syntax configured strings correlated with nodes in the organizational hierarchy 701, wherein each token in the string corresponds to and/or correlates with one of the descriptors and/or characteristics of the organizational department represented at a given node of the organizational hierarchy tree 701. In one implementation, a department code configured with a dynamic, hierarchical table-tracking syntax may include any and/or a particular class of logical arrangements of descriptors, including but not limited to: function, sub-function, country, location, vertical, business type, client, team, and/or the like.
For example, the root node depicting the identity of the organization, XYZ Corp. 710, has a corresponding department code of “XYZ” 715. A sub-node emanating from the root note, such as the “Analytics” department shown at 720, may then have a corresponding department code with a root token as in 715, but with the addition of a new token (ANA) delimited from the root token to yield XYZ.ANA 725. The addition of further levels of hierarchy may add further tokens to the string syntax. Depending on the hierarchical arrangement of organizational descriptors in the organizational tree 701, different department codes 705 may be generated having tokens in similar positions in the strings which, nevertheless, correspond to different types of descriptors, different tables, different table identifiers, and/or the like. For example, in the illustrated implementation, the department code at 730, XYZ.MAR.US.LA, has a concluding token “LA” indicating a location of the department (i.e., in Los Angeles 735). On the other hand, the department code at 740, XYZ.OPS.CA.A, has a concluding token “A” that is also in the fourth position of the string but, here, indicates a team affiliation (i.e., Team A 745). In one implementation, the RIVPC may parse a dynamic, hierarchical table-tracking syntax configured string in a hierarchical manner, proceeding from a root token which may, in some implementations, always correspond to a particular table, table identifier, table field, and/or the like, and then progressively comparing subsequent string tokens to table fields and/or linked tables until matches are found permitting identification of the tables, table identifiers, table fields, and/or the like to which the string tokens correspond. As such, the number of delimiters may indicate the relative hierarchical position of a value, but the tokens within the delimiters may represent the types of categorization; this has the very powerful advantage allowing for orthogonal constructs of disparate data types within the grammar without excess duplication of descriptors and greater number of descriptive permutations; for example, it allows for the decoupling of business categories of information from accounting categories, while allowing permutations therebetween.
In one embodiment, the RIVPC may include a user interface facility similar in appearance to the schematic illustration shown in FIG. 7A permitting a graphical generation of a hierarchical organizational chart and corresponding dynamic, hierarchical table-tracking syntax configured strings, such as the department codes shown at 705 (see FIG. 7B illustrating an example UI screenshot). For example, such a user interface may include a plurality of organizational descriptors, such as function, sub-function, country, location, vertical, business type, client, team, and/or the like, that are configured as selectable interface elements. The organizational chart may then be generated by selecting the descriptors for association with different positions in the chart, causing new nodes to be created from those positions. In one implementation, each descriptor may be dragged and dropped from a bank of descriptors to a position on or near the chart, causing that descriptor to become a new node extending by a branch from the nearest node above it in the hierarchy. The RIVPC may also automatically generate a new department code corresponding to the new node by appending a token corresponding to the new node to the string corresponding to the next highest node in the chart from the new node.
FIG. 8 shows an implementation of logic flow for string type discerning and parsing in one implementation of RIVPC operation. The implementation illustrated in FIG. 8 may be employed, for example, in a circumstance wherein both static and dynamic table-tracking syntaxes are used and strings configured with either syntax may be received as inputs. The RIVPC may receive an input string 801, such as via a web interface, a text and/or command line input, data transfer from another RIVPC application and/or component, selection of input string tokens in a graphical user interface (e.g., from one or more pull-down menus), string tokens spoken into a microphone and analyzed with speech recognition software, a string scanned from a document and/or discerned from a photograph that is analyzed such as with optical character recognition (OCR), and/or the like. A determination may then be made as to whether the string type, associated table-tracking syntax and/or descriptive business grammar, and/or the like is clear from the context in which the string was input, and/or from the content of the string itself 805. For example, in one implementation, a string type may be identified from the application into which the string was input and/or the method of input and/or receipt of the input string. In another example, a string type may be identified from the length, composition, arrangement, content, and/or the like of the string itself. The input string may be compared to elements of a syntax database, which delineate the formal characteristics of a particular table-tracking syntax and allow for determination of whether a particular input string appears to be configured in accordance with the particular syntax. In one implementation, the RIVPC at 805 may determine whether sufficient indicia of string type exist to permit a determination of the string type. In one implementation, the RIVPC at 805 may only determine whether sufficient indicia exist to distinguish the string type and/or associated syntax between static table-tracking syntax and a dynamic table-tracking syntax.
If sufficient indicia do not exist to distinguish the type of string and/or syntax corresponding to an input string, the RIVPC may undertake an error handling process, request user specification of the string type, perform additional analysis on the input string to discern the type, and/or the like 810. If sufficient indicia are present at 805, the RIVPC may determine which string type and/or string syntax is associated with the input string, such as based on that indicia 815. In one implementation, the RIVPC may distinguish between a string configured in accordance with a static table-tracking index and with a dynamic table-tracking index. In the illustrated implementation, a static table-tracking syntax configured input string may then be subjected to a static table-tracking syntax parsing 820, and a dynamic table-tracking syntax configured input string may be subjected to a dynamic table-tracking syntax parsing 825.
FIG. 9 shows an implementation of logic flow for static table-tracking syntax parsing in one embodiment of RIVPC operation. A determination may be made as to whether a first segment of the received string and/or corresponding string syntax comprises a single token or an undelimited multi-token segment 901. In the latter case, the RIVPC may query a token size 915, such as from a syntax database that holds a list of table names, token sizes, and/or the like, and extract a next token from the undelimited multi-token segment based on the token size 920. In one implementation, a token size may be specified as part of the table-tracking syntax and/or descriptive business grammar. In another implementation, such as for a dynamic table-tracking syntax, a token size may be specified as a maximum number of characters for a table name corresponding to that token type. Extracted string tokens may be stored 925, and a determination made as to whether there are additional tokens in the undelimited multi-token segment 930, such as may be indicated by a syntax record in the syntax database. If so, the RIVPC may return to 920 to extract the next token in the segment.
If the RIVPC determines at 901 that the next segment in the string is not an undelimited multi-token segment, then the RIVPC may extract the whole segment as a string token 905 and store the extracted string token 910, such as in a database, in random access memory, and/or the like.
A determination may be made as to whether there exists a delimiter past the token or tokens previously extracted 935. If there is an additional delimiter, the RIVPC may drop the delimiter from the string and move to evaluate the next string segment 940. In an implementation where there is no trailing delimiter at the end of a string in a table-tracking syntax, determining that there are no delimiters at 935 may cause the RIVPC to conclude parsing the input string and/or to provide extracted string tokens to a target 945, such as an end user, target application, database table and/or record, display device, report, and/or the like.
FIG. 10 shows an implementation of logic flow for parsing dynamic table-tracking syntax configured strings in one embodiment of RIVPC operation. A first string token of known type may be extracted 1001 and stored 1005. In one implementation, all dynamic table-tracking syntax configured strings may be configured with the same type of leading string token (e.g., an organization name). In another implementation, the token type of the leading string token may be discerned prior to parsing, such as via contextual indicia, such as how the string was submitted to the RIVPC, simultaneously running applications, other user inputs and/or instructions from other software modules, and/or the like.
A determination may then be made as to whether there exists a delimiter after the first extracted token 1010. If not, such as in the case of a single-token string configuration, then the ADE's parsing of the dynamic table-tracking syntax string may be concluded and/or the extracted string token provided to a target 1015. If a delimiter is found at 1010, the RIVPC may drop the delimiter from the input string and move to the next segment of the string 1020. The next string token may be extracted 1025 and compared with data fields and/or records of a table associated with the previously extracted token to determine a next token type 1030. A determination may be made as to whether a match to the token has been found 1035 and, if not, then an error handling procedure may be undertaken 1040, such as providing an error message to the user, requesting reentry of the input string, checking common typographical or spelling errors, and/or the like. If, on the other hand, a match is found to the next token, the determined token type may be noted and stored in association with the extracted token 1045, before returning to 1010 to check for a next delimiter in the string sequence.
In one embodiment, department codes may be parsed based on token positions relative to delimiting characters, and as such, provide the parsed values for use in SQL commands. For example, a rule may specify that all department codes having a particular token after the nth delimiting character are authorized to access a particular set of application files. A parsing routine may then count n delimiters and compare the immediately following token to the rule token to determine if the rule is applicable (e.g., whether a user associated with the department code is authorized to access the set of application files).
FIG. 11 provides a schematic illustration of an implementation of converting a table-tracking syntax configured string into a database query statement in one embodiment of RIVPC operation. The input string in the illustrated implementation 1101 is configured as a program code, having a first segment reflecting a client token, a second segment comprising an undelimited multi-token segment having a country token and a vertical token, a third segment reflecting a business type token, and a fourth segment reflecting a description token. The content of each token in a particular instance of a program code may be extracted and rearranged to form a SQL Select statement, such as that shown at 1105. In the illustrated implementation, the parsed string tokens are used to specify SQL Where search conditions, limiting the query to records having fields with matching values as those specified in the Where clauses. The Select statement 1105 also admits specification of a column name 1110 and table name 1115 from which the requested data should be selected. Thus, the Select statement at 1105 will select data from a column corresponding to “columnname” 1110 in a table corresponding to “tablename” 1115 for records in that table having a clientID=“ACS”, countryID=“US”, verticalID=“FC”, businesstypeID=“FE”, and description=“CONFIN”.
FIG. 12 shows an implementation of logic flow for forming a query statement based on an input string in one embodiment of RIVPC operation. A string is received at 1201, as well as any query specifiers 1205 which may comprise additional inputs that serve to provide further resolution and/or specificity related to a data request. For example, in one implementation, query specifiers 1205 may comprise information sufficient to identify at least one column name and/or table name in which requested data may be found. An example of a query specifier is a PLACEMENTMONTH of August 2008 submitted with a PROGRAMCODE of CL1.USMI.FP.HR to retrieve associated matching data.
A determination may be made as to whether sufficient query specifiers have been supplied to conduct a database query 1210. If not, then an error handling procedure may be undertaken, an error message returned, additional information may be requested from a user, and/or the like 1215. If sufficient query specifiers have been supplied, the RIVPC may resolve a table name and/or a column name based on the query specifiers 1220. For example, in one implementation, the query specifiers themselves may comprise a table name and/or a column name. The RIVPC may also parse the input string into one or more string tokens 1225. The query statement may then be formed as a combination of parsed string tokens and resolved table name and/or column name 1230, and said statement used to query the database 1235. A determination may be made as to whether one or more results are returned in response to the query 1240. If not, then an error handling procedure may be undertaken, an error message returned, reentry of query parameters requested, and/or the like 1245. Otherwise, if a result is obtained by the query, the result may be provided to a target 1250, such as to the requesting system, to a third party user, application, system, and/or the like 1250.
FIG. 13 provides a schematic illustration of an implementation of converting a table-tracking syntax configured string into a database input statement in one embodiment of RIVPC operation. In the illustrated implementation, a program code syntax configured string 1301 is provided to the RIVPC, along with a series of data inputs 1305. Tokens parsed from the input string, along with the data inputs, may be used to form a SQL Input statement such as that shown at 1310, where the data inputs and string tokens comprise values to populate fields in a database record. The illustrated Input statement may also include specification of one or more table names 1315, one or more column 1320, and/or the like, such as to identify a location in the database where the received data inputs should be entered. Therefore, in the illustrated implementation, data1 is slotted for input to column1name, data2 to column2name, and so forth, and “ACS” is slotted for input to the CLIENTID column, “US” to the COUNTRYID column, and so forth. The illustrated implementation is directed to circumstances where all of the input data is to be entered into a single table having accommodating fields. In some other implementations, the RIVPC may accommodate data inputs destined for different database tables, such as by discerning linking relationships between tables and generating appropriate JOIN statements for inclusion in a database transaction command statement such as that shown at 1301. In one implementation, a table name, column name, and/or the like to be included in the Input statement may be discernable based on a variety of different information sources, such as but not limited to a received string and/or parsed string tokens, a type and/or content of data inputs, a source of data inputs and/or input string (e.g., based on the identity of a submitting application), a user's data input permissions, and/or the like.
FIG. 14 shows an implementation of logic flow for forming a database input statement based on an input string in one embodiment of RIVPC operation. An input string is received 1401, along with attendant data inputs 1405, which may represent data sought to be input to the database by a user, and may comprise data values, rules, reports, data collections, and/or the like inputs. A determination may be made as to whether a table name and/or column name are discernible 1410, such as based on the received string and/or data, a source of the received string and/or data (e.g., an application from which the string and data were received), a user profile and/or user permissions, and/or the like and/or any combination thereof. If a table name and/or column name are not discernible, the RIVPC may undertake an error handling procedure, request additional information from a user or requesting application, and/or the like 1415. Otherwise, the table name and/or column name may be determined from the provided information 1420. The RIVPC may then parse the input string into one or more string tokens 1425, and form an insert statement based on the parsed string tokens, the data inputs, and the table name and/or column name 1430. The data inputs may then be inserted into the database using the formed insert statement 1435, and the updated database tables may then be persisted 1440 for future use and/or reference.
Data Integration
FIGS. 15A-B show an implementation of data flow between and among RIVPC system components in one embodiment of RIVPC operation. In FIG. 15A, plurality of application systems may exist, each having a respective application database (1501, 1510, 1520) and application server (1505, 1515, 1525). For example, an enterprise or organization may employ different applications for different enterprise goals or functions, such as a human resources application, a facilities application, a finance application, and/or the like. In some implementations, an enterprise may employ further databases that are independent of a specific application or specialized server system, such as for data storage or warehousing. A universal data library 1530 may be communicatively coupled to databases and/or application servers to provide and/or mediate access to data contained in the databases through the use of intermediate objects acting as universal variables. As described in further detail below, the universal variables contained in and managed by a universal data librarian system may provide object-oriented database access to users while masking the intricacies of database relational structure and the details of database query languages. Furthermore, judicious selection of universal variables allows common data types across otherwise disparate databases, including external data sources in some implementations, to be encapsulated within a relatively small set of universal variables and allows for effective integration of databases without the need for data warehousing practices. In some implementations, universal variables managed by the universal data librarian may be organized in accordance with a hierarchical schema, as described in further detail below.
In some implementations, the universal data library may be communicatively coupled with an automated data extractor 1535 configured to receive specification of report templates and/or to generate reports 1540 of values associated with universal variables. Report generation schedules, triggering conditions, and/or the like may likewise be specified as part of report template definition, and values included in the report may be draw in real-time and/or on a scheduled, periodic, or triggered basis, via the universal data librarian, from multiple otherwise disparate databases and/or data sources.
In some implementations, the universal data library may further be communicatively coupled with a global data exchanger 1545 configured to communicate with one or more internal or external databases and/or data sources to exchange data therewith. For example, the RIVPC may be coupled to one or more external data servers and/or external databases 1555 to receive data files therefrom and/or provide data files thereto. In one implementation, the RIVPC may be configured to retrieve one or more data files from an external data source (1550, 1555), such as on a scheduled, periodic, triggered, and/or the like basis; parse discrete data units from the file contents, wherein the parsing may depend on whether the file is fixed length, delimited, XML format, and/or the like; and associate the parsed data units with universal variables in accordance with a pre-defined specification. In some implementations, the RIVPC may further be configured to mediate exchanges of data between internal databases. For example, the RIVPC may be configured to draw data from a source database, such as on a scheduled, periodic, triggered, and/or the like basis, and to associate the drawn data with universal variables in accordance with a pre-defined specification. In both cases, association of sourced data with universal variables may cause the sourced data to be input in one or more internal databases based on associations between database tables and/or fields and universal variables, as defined within the universal data librarian.
In one implementation, the universal data librarian, global data exchanger, and/or RIVPC may be configured to reformat data, such as to place it in a condition of conformity with like data in a target database. For example, sourced date data may be in a MM/DD/YY format while target date data is stored in a DD/MM/YYYY format. One or more of the described systems may be configured to reformat data as needed or desired, in accordance with a pre-defined specification. In one implementation, the universal data librarian, automated data extractor, and/or RIVPC may be configured to combine data from one or more sources, such as by appending, arithmetic operation, and/or the like, into a single data value provided to a data target.
A schematic illustration of RIVPC operation in one example is provided in FIG. 15B. Here, two application databases 1501 and 1510, each attended by a respective application server (1505 and 1515), each have tables (1560 and 1565) containing fields related to a first name (labeled Firstname in table 1560 and Name.First in 1565). Each database is communicatively coupled to a universal data library 1530, which includes records specifying relationships between the fields in application databases and universal variables. In the illustrated example, a record 1570 specifies a relationship between the Firstname field in the application 1 database and the universal variable First_Name. Similarly, a record 1575 specifies a relationship between the Name.First field in the application 2 database and the universal variable First_Name. The universal variable First_Name 1580 and/or values thereof may then be provided to a user interface, third party application, external data target, report generator, and/or the like 1585. Though omitted for clarity, details pertaining to the location of fields in an application database, such as table names, foreign keys, and/or the like may also be included in universal data library records to facilitate location of desired data.
FIG. 16 shows an implementation of a user interface for universal variable allocation in one embodiment of RIVPC operation. The user interface shown in FIG. 16 allows a user to specify associations between universal variables and applications having database fields to which the variables are connected. In the illustrated implementation, universal variables are organized in accordance with a hierarchical structure comprising a family 1601, a subfamily 1605, and a field name 1610. Here, the family shown pertains to a “candidate”, such as a candidate for a job opening. Subfamily designations provide further specificity as to the type of data that is being embodied in the universal variable, such as candidateidentifier, candidatename, candidateaddress, and/or the like. The field name then specifies the precise data embodied in the universal variable, such as candidatessn for a social security number, candidatebirthdate, candidatecity, and/or the like. The interface further allows for specification of a display name 1615 associated with the universal variable, such as may be used in display interfaces, used in reports, provided in integrated data manipulation and/or third party applications, and/or the like. The interface further allows for specification of any of a variety of universal variable types 1620. For example, types may include, but are not limited to: static (e.g., data that is likely to not change often or at all, such as a user social security number), dynamic (e.g., data that is expected to change at some time in the future or that is frequently updated, such as a number of tests taken by a user, a user password, and/or the like), restricted text (e.g., data that must conform to a particular format or limited number of input options, such as a state abbreviation, a gender, and/or the like), and/or the like. The interface may further allow for specification of a data category 1625, such as whether the data is private or publicly available.
The interface may further allow for specification of a function, reformatting, and/or the like to be applied to data associated with one or more universal variables 1630. For example, in the illustrated implementation, the CandidateName universal variable field is set as a concatenation of a firstname variable and a lastname variable. The interface may further allow for specification of one or more databases, applications, and/or the like with which a universal variable is to be associated 1635. In one implementation, by specifying an application in connection with a particular universal variable, a facility may be made available for a user to further specify a particular table and/or field within a database associated with that application to which the universal variable should be connected and/or mapped. Such further specification is described in further detail below. The interface may further admit specification of particular values for universal variables, such as a fixed value for particular variables and/or sets of restricted values to which future inputs and/or associations must be matched (e.g., a list of 50 state abbreviations to which any state input to a corresponding universal variable must conform).
FIG. 17 shows another implementation of a user interface for universal variable allocation in one embodiment of RIVPC operation. The interface shown in FIG. 17 may, in one implementation, allow for specification of specific tables and/or fields in databases, such as may be associated with particular software applications, to which specified universal variables are to be connected and/or mapped. A list of available, selectable applications and/or databases is provided at 1701. Selection of a particular application and/or database may cause a list of connected universal variables to be provided 1705. In one implementation, the list of universal variables shown 1705 in connection with a selected application or database 1701 is based on specifications made via the interface of FIG. 16. Each listed universal variable name at 1705 may then have one or more fields from tables in a database connected with the application and/or database specified at 1701, such as in the interface area shown at 1715. In one implementation, the interface may further allow for specification of one or more functions, reformatting, and/or the like to be applied to field values as they are associated with universal variables 1710. For example, a particular database may store an account value in US cents instead of US dollars, which may be the typical unit for the corresponding account value universal variable. The interface at 1715 would allow the database account value to be divided by 100 before association with the universal variable for the account.
An example implementation of hierarchically arranged universal variables is provided in Appendix A for one embodiment of RIVPC operation. Each universal variable includes family and subfamily designation, and is further characterized by a field name. Variable families may specify high-level categories to which particular universal variables belong and/or are associated. In the implementation illustrated in Appendix A, the families include Consumer, Account, Payment, Letter, Call, Product, Consumer Credit, Candidate, Employee, Plans, Forms, Supplier, Program, Employee, Government, Investor, Entity, and/or the like. Subfamilies may provide further detail as to the nature of the particular universal variable, and the field name provides yet further detail to unambiguously designate the type of data to be associated with that universal variables. Universal variables, such as may be organized hierarchically, with families, subfamilies, field names, and/or the like, may be selected, in some implementations, to maximize the extent to which the variables can be mapped to and/or otherwise associated with enterprise and/or third party data and/or database tables and/or table fields. For example, in one implementation, universal variables may comprise business objects, wherein the selection, naming, and organization of the universal variables is designed to facilitate understanding of the variables in a business context and/or by those skilled in business who may otherwise have little or no knowledge of database design or management. By mapping table fields from the underlying databases to such business object universal variables, the RIVPC may facilitate manipulation of the data relevant to business managers without the need for assistance from database administrators and/or any other database manipulation experts. The selection of universal variables illustrated in Appendix A will hereinafter be referred to as a business descriptive set of universal variables.
In an alternative implementation, a universal variable hierarchy may follow a business grammar construct, where each segment of the hierarchy follows a business grammar segment or token type (e.g., client name, followed by country, followed by vertical, followed by business type, followed by client program, in an implementation wherein the hierarchy follows a program code grammar).
In another embodiment, the hierarchy may itself be stored in the RIVPC database; e.g., where an object oriented database may be used to establish entity-relationships between a superclass entity and its constituent subclasses, and its eventual field entries. In one embodiment, each of the XML and/or data entries may be read into the user interface table column headings. Thus, when a user creates and/or edits values in the user interface, appropriate records and/or XML entries are pushed into the hierarchy data structure.
FIG. 18 shows an implementation of overall logic flow for a universal data library in one embodiment of RIVPC operation. A plurality of universal variables may be generated at 1801. In one implementation, universal variables may be organized in accordance with a hierarchical schema, such as may include a variable families, subfamilies, and fields. In one implementation, the universal variables may be selected and/or specified to represent business objects and/or with an eye to maximizing applicability of the variables across multiple entities, databases, clients, companies, and/or the like. The generated universal variables may then be mapped and/or otherwise connected to table fields in one or more databases 1805, and the mapping stored 1810, such as in a universal data library database. The universal variables, stored in the universal data library and managed by a universal data librarian, may then be used for a wide variety of different activities. For example, data reports may be generated 1815, whereby a user specifies data to be included in the report using universal variables, as well as a data layout in some implementations, and the data to be included in the reports is automatically extracted from the appropriate sources based on the mapping of universal variables to database tables and fields. In another example, different applications and/or databases having different data, table, and field labeling, database structure, data formatting, and/or the like, may be interfaced and/or integrated with each other 1820, whereby data updates in one database are automatically ported to corresponding fields in the interfaced database. This would allow, for example, data input from one application to update a database associated with a different application. In another example, an application and/or local database may be interfaced with an external entity and/or database 1825, whereby data updates by the local application and/or in the local database may be automatically provided to the external entity and/or database, and/or updates at the external entity and/or database may be automatically provided to the local database. These and other aspects and applications of the universal variables will be described in further detail below.
In one embodiment, the universal data librarian and/or other components described herein may connect to internal and/or external databases by means of one or more database adapters, such as but not limited to ODBC, JDBC, ADO.NET,OLEDB, and/or the like.
FIG. 19 shows an implementation of logic flow for connecting universal variable commands to application database commands in one embodiment of RIVPC operation. A data transaction request, such as a request to input data, a data query, and/or the like, that specifies at least one universal variable is received 1901, and a determination is made as to whether a particular application, application database, other database, and/or the like has been identified or is identifiable in association with the request 1905. For example, in one implementation, a user may include an application and/or database specification in the request. In another example, an application and/or database may be contextually discerned based on the type of request, type of data queried, type of input, application used to generate the request, user identifier, and/or the like. For example, the RIVPC may compare a user identifier of a requesting user with a record of application and/or database identifiers associated with that user and/or for which the user is authorized to discern a database from which to query the requested data. In one implementation, a database registration table may be used as a repository for all database tables with which the RIVPC has come into contact, and the RIVPC may query such a table to (a) provide a user with a list of targets, (b) use a program specified parameter to match and/or specify a database, (c) use terms in the request to match best to a database entry, and/or the like.
If at least one database for the request cannot be identified, an error handling procedure may be undertaken 1910, such as providing an error message to the user, requesting specificity as to the application and/or database to which the request is directed, and/or the like. Otherwise, a universal data library query may be generated 1915 based on the specified one or more universal variables and the specified and/or discerned application and/or database.
In one implementation, business grammar tokens may be connected to and/or otherwise associated with particular universal variables which, in turn, may be linked to table fields in local and/or remote databases. A query or other database transaction leveraging a business grammar string may, then, be employed to access and/or transact data with table fields in either local or remote databases, using universal variables as intermediaries in construction of, for example, SQL commands. This query may be submitted to the universal data librarian 1920 to determine one or more table fields in the specified database, and/or a database associated with the specified application, to which the specified universal variable corresponds. A determination may be made as to whether the associated field exists in the target database, whether the field has some data values stored in association with it, and/or the like 1925 and, if not, another error handling procedure may be undertaken 1930, such as providing an error message to the user. In one implementation, determination of whether an associated field exists may be accomplished by evaluating a database management system response to a query submission (e.g., whether the desired data is retrieved, or whether an error message is returned from the database management system). Otherwise, a database command may be generated for the target database based on the identified one or more fields and the original user request 1935. The database command may, in various implementations and/or uses, comprise a query, an input, a data transfer, a data reformatting, an update, and/or the like. The generated command may then be submitted to the target database to effect the desired transaction 1940.
FIGS. 20 and 21 show implementations of data flow for interfacing universal variables to external database fields in one embodiment of RIVPC operation. In FIG. 20, the RIVPC is shown as a connecting interface between a universal data librarian and/or application databases and an external data server 2108, external database 2110, and/or the like. In the illustrated implementation, the external data server 2108 may generate a data file 2107 based on data contained in the external database 2110. The data file 2107 may be configured in accordance with a variety of formats and/or protocols, such as but not limited to fixed-length, delimited, extensible markup language (XML), and/or the like. In one implementation, the file may be stored in a pre-specified location and accessed by the RIVPC, such as on a scheduled, periodic, triggered, and/or the like basis. In an alternative implementation, the file may be pushed to the RIVPC as desired by the external data server 2108. The data in the file may be parsed by the RIVPC into values for a plurality of external data variables 2115. How the data is parsed from the file may depend on the format and/or protocol with which the file is configured and is discussed at greater length below. The RIVPC may access a mapping to determine which universal variables 2120 correspond to which external variables and/or external variable values 2115 parsed from the input file 2107. In some implementations, the RIVPC may apply reformatting instructions 2125 to one or more external variable values 2115 prior to storage of those values in association with the corresponding one or more universal variables 2101. Illustrative examples of reformatting instructions include conversion of a Julian formatted date into its Gregorian formatted equivalent; extraction of a first name from any of a variety of different name formats (e.g., First Middle Last, Last First, Last First Middle, etc.); conversion of data present in binary-coded decimal to ordinary decimal representation; and/or the like.
Once the external values are associated with universal variables, the values may be stored in an appropriate database, provided to a local application, and/or the like 2105.
In some implementations, the reverse procedure may also be implemented by the RIVPC, whereby data values stored in a local database 2105 and associated with universal variables 2101 are provided as values for external variables 2115 and configured as an output file 2107 for provision to an external data server 2108 and/or external database 2110. In some implementations, the output file 2107 may be configured as a report, which may be provided for viewing on a display device, for printing, and/or the like. In some implementations, the formatting instructions 2125 may be reversible and applied to either external variable values or reversibly to universal variable values.
The data exchange illustrated in FIG. 21 is similar to that shown in FIG. 20, except that instead of reformatting a single external variable 2115 and/or universal variable 2120 value, the RIVPC 2101 may apply a function 2130 to combine values associated with more than one of the variables to yield the appropriate associations. For example, the function may specify that Universal Variable 1 is equal to External Variable 1, while Universal Variable 2 is equal to a sum of External Variable 1 and External Variable 2. This example function is reversible, since External Variable 1 and External Variable 2 could be recovered from Universal Variable 1 and Universal Variable 2 (i.e., External Variable 1=Universal Variable 1, and External Variable 2=Universal Variable 2−Universal Variable 1). Any mathematical operation, calculation, computation, data manipulation, reformatting, and/or the like may be applied to data by the RIVPC, as desired in various implementations or embodiments of RIVPC operation.
In some implementations, the RIVPC 2101 in FIGS. 20 and 21 may be provided at the local side 2105 with a limited subset of universal variable inputs, a file containing universal variable inputs and/or pointers to universal variables, and/or the like. This may allow for isolation of data received from an external source and/or generation of universal variable collections for particular functions or implementations of RIVPC embodiments. For example, in one implementation, a universal payment file may be generated locally, containing a set of universal variables that are expected to be relevant to any bank payment transaction. The RIVPC may then have particular mappings set up for particular banks whereby each mapping selects a subset of universal variables from the universal payment file that is relevant to and/or desired by the particular bank to which payment information is being provided. For example, a domestic wire transaction in the U.S. may only use a routing number and account number, while an international wire may instead, or in addition, require a Society for Worldwide Interbank Financial Transaction (SWIFT) code, intermediary bank information and account number, and/or the like.
FIGS. 22A-C show implementations of a user interface for data exchange specification in one embodiment of RIVPC operation. In FIG. 22A, a user may specify parameters associated with a data exchange with one or more external data sources. For example, the interface may admit specification of a program code 2201, such as may specify characteristics of a program, project, work order, and/or the like. Program codes are described in further detail above. Specification of a program code may cause received data to be stored in association with the program code and/or in association with data corresponding to one or more tokens specified in the program code. The interface may further admit specification of a filename 2205, such as may correspond to a file received from or sent to the external data source. In some implementations, the interface may further admit specification of a filename for a local file input. Additional file information may also be specified, such as a file type 2210 (e.g., inbound, outbound, and/or the like), file format, and a variety of other file information 2215, which may include a file extension and/or associated reader application, file passwords, encryption key, decompression tool, file source (e.g., file transfer protocol [FTP]), file target (e.g., database to which the file and/or data contained therein should be provided), file tags, and/or the like. In an example wherein the file source is an FTP source, the interface may further admit specification of a variety of FTP information 2220, such as an FTP server address, a folder therein, a login and/or password, port number, secure sockets layer information, other security information, and/or the like. The interface may further include facilities for specifying one or more schedules, triggering conditions, and/or the like for causing data to be exchanged between the universal variables and the target. For example, these specified values may be exported as comma delimited values which are to be read by a cron job that feeds them as parameters to various programs.
In one implementation, an FTP cron entry may take a form similar to the following example:

    
    
        Source: ftp.xyz.com 22 Folder: /inbound/placement Frequency: Daily at 5 AM.
    
    


In another example, a user may specify a periodic schedule (e.g., a specified time of each day) at which the RIVPC is to pull a file from (or push a file to) an external data target. In another example, a user may specify a triggering condition (e.g., a data update, a user request or other user action, occurrence of an automated part of a process, and/or the like), the occurrence of which triggers a RIVPC mediated data exchange between the universal variables and the target. The scheduled and/or triggered data exchange may also apply to data exchanges between local databases mapped to universal variables. For example, a user may specify that, at a specified time every day, particular fields in local database 1 corresponding to the universal variables should be updated with data in fields in local database 2 associated with those same universal variables. In some implementations, a user may specify a time-variable and/or trigger-variable frequency of effectuating transactions. For example, if a new external source has just been added and the data from that source is expected to be updated frequently in an initial period, the transaction schedule for that source may be set to a twice-daily frequency for the first week, followed by a once-daily update for the following two weeks, and a weekly update thereafter. Transaction frequencies may also be automatically varied based on the detected occurrence of specified triggers. For example, the RIVPC may monitor a stock market index, such as the Dow Jones Industrial Average, and may be configured to increase transaction frequencies related to market data when a slope of the monitored index exceeds a specified threshold and to decrease the transaction frequency when the slope of the monitored index drops back below the specified threshold.
The interface may further provide a listing of selectable universal variables for association, such as via a drag-and-drop interface mechanism, with parsed components of an external data file (such as may be received from an external source or may be destined for transmission to an external target). An example of such a listing of selectable universal variables is shown at 2225 in FIG. 22B. In one implementation, a universal variable may be dragged and dropped to an association area of the interface, wherein the universal variable may be mapped to and/or otherwise associated with a specified portion of the external file. For example, in one implementation, the external file may be configured as a fixed-length file and one or more universal variables may be associated with one or more portions of the fixed-length file as specified by the position of the data within that file. In another implementation, the external file may be configured as a delimited file and one or more universal variables may be associated with one or more portions of the delimited file as specified by how the data is delimited within the file. In another implementation, the external file may be configured as an XML file and one or more universal variables may be associated with one or more portions of the XML file as specified by the XML tags setting off data within the file.
FIG. 22C shows another implementation of a user interface for specifying parameters associated with a data exchange with one or more external data sources. The interface may include a variety of different parameter specification fields and/or field areas, such as but not limited to: a program code area 2235 for entering one or more strings structured in accordance with a table tracking syntax and/or a descriptive business grammar; filename and detail information area 2240; data exchange counterparty address and detail information area 2245; scheduling information area 2250; universal variable selection listing area 2255, such as may, in one implementation, be configured with a drag-and-drop facility (e.g., employing Silverlight code and language libararies); clarifier specification area 2265 for refining data retrieval results; workpad area 2270 for entering data processing and/or analytical instructions; and/or the like.
An implementation of an XML data exchange specification resulting from inputs to interfaces such as those shown in examples of FIGS. 22A-C may take a form similar to the following example:
<vendor vendor id=‘irmcocap’><account acct_num=“1001221235” bid=“1” sid=“2” action_dt=“2009-10-07”>

    
    
        <record_types>
        
            <record_type>ASSIGN</record_type>
        
        
        </record_types>
        <vendor_assignment_detail>
        
            <screen_name>JOE SHREE</screen_name>
            <day_phone_quality_score>10</day_phone_quality_score>
            <night_phone_quality_score>01</night_phone_quality_score>
            <pi_code>3916</pi_code>
            <pi_title>AOL</pi_title>
            <usage1>0</usage1>
            <usage2>0</usage2>
            <usage3>0</usage3>
            <usage4>0</usage4>
            <usage5>0</usage5>
            <usage6>0</usage6>
            <usage7>0</usage7>
            <usage8>0</usage8>
            <last_4_mon_fee>0</last_4mon_fee>
            <last_4_mon_roaming>0</last_4mon_roaming>
            <last_4_mon_commsurch>0</last_4_mon_commsurch>
        
        
        </vendor_assignment_detail>
        <contact_name>
        
            <first_name>JOE</first_name>
            <last_name>SHREE</last_name>
        
        
        </contact_name>
        <address>
        
            <street1>100 XYZ ST</street1>
            <street2> </street2>
            <city>XYZ CITY </city>
            <state>NJ</state>
            <zip>00000-0000</zip>
        
        
        </address>
        <phone>
        
            <day_phone>2222222222</day_phone>
            <evening_phone>2222222222</evening_phone>
        
        
        </phone>
        <acct_osb_amount>10360</acct_osb_amount>
        <member_misc_details>
        
            <current_pm_id>4</current_pm_id>
            <cancel_dt>2009-06-22</cancel_dt>
            <registration_dt>1999-11-26</registration_dt>
            <special_instr></special_instr>
            <member_status_indicator></member_status_indicator>
        
        
        </member_misc_details>
        <letter_details>
        
            <letter_id></letterid>
            <letter_due_days>0</letter_due_days>
        
        
        </letter_details>
        <payment_chargeback_details>
        
            <last_payment_dt></last_payment_dt>
            <last_payment_amount>0</last_payment_amount>
            <last_chargeback_code></last_chargeback_code>
            <last_chargeback_amount>0</last_chargeback_amount>
            <last_chargeback_dt></last_chargeback_dt>
            <old_delinquent_charge_dt>2009-02-27</old_delinquent_charge_dt>
        
        
        </payment_chargeback_details>
        <special_codes/>
        <line_item_transactions>
        
            <transaction>
            
                <charge_id>0000000000000</charge_id>
                <line_item>1</line_item>
                <line_item_desc>TWX*AOL SERVICE </line_item_desc>
                <pm_id>4</pm_id>
                <osb_amount>10360</osb_amount>
                <placement_dt>2009-10-07</placement_dt>
                </transaction>
            
            
            </line_item_transactions>
        
        
        </account>
        <account_acct_num=“000000000” bid=“1” sid=“2” action_dt=“2009-10-07”>
        </vendor>
    
    


Other file configurations and parsing specifiers may be employed within various implementations of RIVPC embodiments.
FIG. 23 shows an implementation of logic flow for data exchange in one embodiment of RIVPC operation. The example illustrated in FIG. 23 is directed to receipt of a file from a data source and provision of data therein to fields associated with the universal variables. It is to be understood that the RIVPC may also be configured for the reverse process, generation of a file, report, and/or the like and provision to a target based on data contained in fields mapped to the universal variables (see, e.g., FIGS. 27 and 28). The RIVPC may further be configured, in some implementations, for exchange of data from fields in one database that are associated with the universal variables to fields in another database that are also associated with the universal variables (see, e.g., FIG. 26). In the implementation illustrated in FIG. 23, the RIVPC may monitor time in relation to a specified schedule and/or one or more specified triggering conditions 2301 to determine whether or not to effectuate a specified data exchange 2305. If not, the RIVPC may continue to monitor until the specified time and/or conditions indicate that an exchange is to occur. Once the exchange is triggered, the RIVPC may query the location of a data source 2310 (e.g., the address of an FTP server, such as specified at 2220 in FIG. 22A), such as from a mapping record in a database. The RIVPC may then connect to the source using the queried address 2315 and retrieve a file 2320 contained therein. In one implementation, the RIVPC may retrieve every file contained in a specified target location (e.g., any file stored on the server, any file contained in a specified subfolder, and/or the like). In another implementation, the RIVPC may retrieve only a file having a filename matching a name specified in a mapping record associated with the data exchange.
In one implementation, the RIVPC may perform an initial check of the file to ensure that it does not have any clear problems or errors. For example, the RIVPC may check that the file has at least a minimum file size (e.g., not a null file), is configured in accordance with an expected format, does not exhibit any characteristics of a virus or other undesired file, and/or the like. If errors or other problems are detected 2330, an error handling procedure may be undertaken 2335, such as providing an error message to a specified recipient (e.g., an administrator of the data source), attempting to repair the file, attempting to extract any salvageable data from the file, and/or the like. A determination may be made as to whether there is any retrievable data in the file 2340, such as following an attempted repair at 2335, and, if not, then the process may conclude 2345. Otherwise, if data can be retrieved from the file, the RIVPC may query a parse instruction from a mapping record associated with the transaction 2350. The parsing instruction may, for example, specify a position of data in the file for a fixed-length file, a number of delimiters setting off data in the file for a delimited file, an XML tag setting off the data in an XML file, and/or the like. Based on the parsing instruction, the RIVPC may parse data from the file 2355. A determination may then be made as to whether any reformatting of the data is needed or desired 2360, such as may be specified in the mapping record. For example, the convention for formatting of dates may be different in the file than for the universal variable to which the date is to be connected, so a conversion of format may be desired before associating the file data with the universal variable and/or table fields connected thereto in local databases. If conversion is desired, then a conversion instruction may be queried from the mapping record 2365, and the particular data converted and/or reformatted in accordance with that instruction 2370. The RIVPC may then query a data location associated with the mapping to which the data from the file is to be provided 2375, such as may be directed by a universal variable specified in the mapping record. For example, the data location may be a field in a table in a database mapped to the universal variable to which the data from the file is connected. The data parsed from the file may then be stored at the data location 2380, and a determination made as to whether there is any further data in the file to be extracted 2385. If so, information associated with the next data element may be queried from the mapping record associated with the transaction 2390, and the RIVPC may return to 2350 to parse that next data from the file. Otherwise, the transaction may be concluded 2345.
FIG. 24 shows an implementation of logic flow for database input statement generation in one embodiment of RIVPC operation. The logic flow shown in 24 may, in some implementations, be provided as a further detail of the storage of data at 2375 and 2380 in FIG. 23. In some circumstances, data provided in an external file may be provided as a single column of data or may be provided as multiple columns that are independent of each other (i.e., wherein the data in a given row of one column has no relationship to data in a corresponding row of any other column). On the other hand, in some circumstances, data provided in an external file may comprise multiple columns having fixed relationships to each other. An example of this latter circumstance may be a file containing a column of customer names and a second column of customer accounts, wherein exactly one account corresponds to each customer name. The flow in FIG. 24 serves to distinguish between these two circumstances and to handle each appropriately. The RIVPC may discern universal variable correspondences to input data columns 2401 and to query the databases and/or table/field locations associated thereto 2405, such as via a mapping record and/or records for universal variables stored in a universal data library. A determination may then be made as to whether there are multiple data columns having fixed relationships to each other in the input data file 2410. In one implementation, this determination may be made by querying a specification of a multi-column file with fixed relationships in a mapping record. In another implementation, the RIVPC may automatically determine whether columns have a fixed relationship to each other, such as by comparing column headers to values in a table indicating columns that are likely to be related (e.g., “name” and “account” may be associated in such a record, so columns having these words their headers may be automatically determined to have a fixed relationship).
If there are not multiple columns, or if there are multiple columns but no fixed relationship therebetween, the RIVPC may generate input statements, such as SQL Input statements, with the input data (which may, in some implementations, be arranged in multiple independent columns) and the corresponding table/field locations 2415 to save the data from the file at those locations 2430. In some implementations, a SQL statement generated as described above may take a form similar to the following example:
insert into tblAccountHdr
(ClientAccountNumber,ProgramID,CreatedDate,TS,CreatedBy)
select tblAccountHdr_ClientAccountNumber,ProgramID,getdate( ),‘633976851390226187’,‘311’

    
    
        from
        (select t1.tblAccountHdrClientAccountNumber_1_0 as tblAccountHdr_ClientAccountNumber,t2.ProgramID
        From ##iQorFileMapping_fdfde5fb3c8c03411f3be8a3cd7c6953edcf2 t1
        inner join tblProgram t2 on t2.ProgramCode=t1.tb1Program_ProgramCode_1_1
        WHERE t1.tblAccountHdr_ClientAccountNumber_1_0 is not null
        Except
        Select ClientAccountNumber,ProgramID
        from tblAccountHdr) b
        |Q|Parent
        insert into tblPhoneNumber
        (PhoneTypeCode,PhoneNumber,PhoneSource,PhoneSubSource,AccountID,EffectiveDate,CreatedDate,TS,CreatedBy)
        select tblPhoneNumber_PhoneTypeCode,tblPhoneNumber_PhoneNumber,tblPhoneNumber_PhoneSource,tblPhoneNumber_PhoneSubSource,AccountID,getdate( ),getdate ( ),‘633976851390538675’,‘311’
        from
        (select t1.tblPhoneNumber_PhoneTypeCode_5_0 as tblPhoneNumber_PhoneTypeCode case
        when len(ltrim(rtrim(t1.tblPhoneNumber_PhoneNumber_6_0)))>0 and isnumeric(ltrim(rtrim(t1.tblPhoneNumber_PhoneNumber_6_0)))=1
        then convert(decimal(20,0),ltrim(rtrim(t1.tblPhoneNumber_PhoneNumber_6_0)))
        when len(ltrim(rtrim(t1.tblPhoneNumber_PhoneNumber_6_0)))=0 and
        isnumeric(ltrim(rtrim(t1.tblPhoneNumber_PhoneNumber_6_0)))=0
        then 0
        else ltrim(rtrim(t1.tblPhoneNumberPhoneNumber_6_0)) end as
        tblPhoneNumber_PhoneNumber,t1.tblPhoneNumber_PhoneSource_9_0 as
        tblPhoneNumber_PhoneSource,t1.tblPhoneNumber_PhoneSubSource_10_0 as
        tblPhoneNumber_PhoneSubSource,t3.AccountID
        from ##iQorFileMappingfdfde5fb3c8c03411f3be8a3cd7c6953edcf2 t1
        inner join tblProgram t2
        on t2.ProgramCode=t1.tblProgram_ProgramCode_1_1
        inner join tblAccountHdr t3
        on t3.ClientAccountNumber=t1.tblAccountHdr_ClientAccountNumber_1_0 and t3.ProgramID=t2.ProgramID WHERE t1.tblPhoneNumber_PhoneTypeCode_5_0 is not null AND t1.tblPhoneNumber_PhoneNumber_6_0 is not null AND t1.tblPhoneNumber_PhoneSource_9_0_is not null AND t1.tblPhoneNumber_PhoneSubSource_10_0 is not null)b
    
    


If, on the other hand, the RIVPC determines that there are multiple columns with a fixed relationship between them at 2410, then it may seek to discern relationships between table/field locations to which the columns in the file correspond 2420. For example, the file may include a column for customer_name, which is connected to a universal variable CustomerName, and a column for customer account, which is connected to a universal variable CustomerAccount. Each universal variable is, in turn, mapped to table fields within one or more databases, such as a customer name field and a customer account field. In order to build a command to port the file data to those fields, the RIVPC may seek to determine the relationship between the customer name field and the customer account field. If these fields are in the same table in the same database, a direct Input statement may be employed. However if, for example, the fields exist in different tables within a database, the Input statement may be supplemented with a Join clause, such as a SQL Join clause, to reflect the connection between the tables and the data provided thereto. By inputting the data with the Join clause, the connection between the customer name information and the customer account information will be preserved for future access. Further detail as to how the relationship between table fields is determined is provided below. Once the relationship is established, the RIVPC may generate an Input statement with the file data, the table/field locations, and any necessary or desired Join clauses 2425, and may store the data with the generated statement 2430.
FIG. 25 shows an implementation of logic flow for determining data relationships in one embodiment of RIVPC operation. The example illustrated in FIG. 25 is directed primarily to an implementation discerning a relationship between two related data columns. It should be understood, however, that the flow can be generalized to discern relationships between any desired number of data columns, such as to assist in generation of Join clauses for database transaction commands. The RIVPC may compare a first table field associated with a first universal variable (which, in turn, may be associated with a first column of an input file) and a second table field associated with a second universal variable (which, in turn, may be associated with a second column of an input file) 2501. A determination may be made as to whether the first table field and second table field are fields within a single table 2505. For example, the RIVPC may check whether the fields are in tables having the same name and in existing in the same database. If the fields are in the same table, the RIVPC may generate a database command to store the values in the same table, wherein the command may not include any Join clauses 2510. If the fields are not in the same table, the RIVPC may query keys contained in the table associated with the first universal variable 2515 and a counter may be initialized 2520. The RIVPC may then determine whether at least one of the keys in the table corresponding to the first universal variable connects to a table associated with the second universal variable 2525. If so, the RIVPC may form a Join clause for inclusion in a database command for storing the data values in association with the first and second universal variables, wherein the Join clause explicitly connects the tables associated with each universal variable 2530. Otherwise, if no direct connection can be discerned between the tables associated with the first and second universal variables, then the counter may be incremented 2535, and a determination made as to whether the counter exceeds a pre-set maximum value 2540. If not, then the RIVPC may query keys contained in each table directly connected to the table corresponding to the first universal data variable, or to whatever the last round of tables checked at 2525 were, and repeat the determination of whether any of those keys link to the table corresponding to the second universal variable (2525-2540). When the counter exceeds the maximum, the flow may be exited and/or an error handling procedure may be undertaken 2550, such as providing an error message to a user and/or administrator indicating that the distance between the tables corresponding to the first and second universal variables is too great to be established, and/or the like.
FIG. 26 shows an implementation of a user interface for database integration in one embodiment of RIVPC operation. The interface shown in FIG. 26 may, in one implementation, be employed to specify connections between table fields in different databases, such as local databases and/or separate databases connected to different enterprise software applications. The interface may, in one implementation, admit specification of one or more universal variables 2601, as well as an identifier of a source database 2605 and of a target database 2610. The interface may further admit specification of a frequency, schedule, triggering condition, and/or the like 2615, which may set how often the data in a field in the source database that is associated with the universal variable is provided to corresponding field in the target database. In one implementation, a default schedule may be implemented when no other scheduling and/or triggering specification is provided, such as one time only, once per day, once per week, and/or the like. The interface areas at 2620, 2625 and 2630 may further admit additional limitations, specifications, operations, and/or the like for the data transactions specified in the interface. In one implementation, a user may specify information to limit the data associated with a universal variable that is passed from the source database to the target database. For example, a user may specify values for a second table field and/or universal variable to limit data for the first universal variable to only those values associated with the specified values for the second universal variable and/or table field (e.g., only provide account information or male customers). The interface may further admit specification of reformatting instructions and/or one or more functions and/or operations (e.g., mathematical calculations) to be performed on one or more data values extracted from the source before providing the processed data to the target.
FIGS. 27A-C show implementations of a user interface for report generation and generated reports in one embodiment of RIVPC operation. The interface in FIG. 27A may, in various implementations, admit input of report specifications, including a selection of data to be included (such as may be specified in terms of universal variables), data layout, desired or required manipulations of data, scheduling and/or triggering of report generation and/or output, and/or the like. In one implementation, the interface may admit specification of an author of a particular report generation template 2701, as well as a name identifying the template 2705, a distribution list and/or other target information for the report 2710 (e.g., a list of email addresses, an FTP server address, a location on a file system, and/or the like), a report generation frequency (and/or, in various implementations, a schedule, triggering condition or event, and/or the like), and/or the like. The interface may further admit selection of any of the full set or some subset of universal variables, such as via a drag-and-drop mechanism. Selected universal variables, shown at 2725 in the figure, may be limited as to the particular database from which their associated data is to be drawn, and may further be limited in a variety of other ways. For example, the illustrated implementation admits entry of so-called Limiters 2720, specifying desired values for particular universal variables, program codes and/or code tokens, department codes and/or code tokens, and/or the like. Here, the data retrieved for a report is limited to those data associated with a PROGRAMCODE of CL1.USMI.FP.HR and a PLACEMENTMONTH of August 2008. The interface may further admit additional limitations on the data included in the report, such as by the so-called Clarifiers shown at 2730. Clarifiers may, in one implementation, limit the data based on specified relationships between universal variables (e.g., “DIALEDDATE >=PLACEMENTDATE”, “CALLRESULT=PROMISE”, and/or the like).
Another implementation of a report parameter specification interface is shown at 2735 in FIG. 27B, with report parameter fields filled. FIG. 27C displays an example of a report generated by the inputs shown in FIG. 27B. The report is configured as a spreadsheet file and includes columns corresponding to extracted data such as call account number 2740, call user name 2745, call phone number 2750, call result 2755, extended result 2760 (which may, in one implementation, include additional information to refine the call result information), call date and/or time 2765, and/or the like.
In one implementation, Silverlight code, general Silverlight language libraries, and/or the like may be used to generate the tables and column presentation in HTML format. The tables may be comprised of text fields, and appropriate calls to the libraries may be made to pass information via drag and drop.
In various implementations, a report may be generated for output as a physical document (e.g., a printout), an electronic document, a structured data file (e.g., fixed length, delimited, XML, and/or the like), one or more database records, a user interface display, and/or the like.
FIG. 28 shows an implementation of logic flow for report generation in one embodiment of RIVPC operation. A report output specification, such as may define a report template and may include a selection of universal variables, may be received 2801, such as via a report generation user interface. Based on the universal variables specified in the report output specification, data values associated with selected universal variables may then be retrieved from the sources containing those values 2805. In one implementation, data values in contained in table fields in remote databases that are associated with universal variables may first be pulled into one or more cache and/or local databases, and/or used to update table fields in local databases, before being retrieved for report generation. In an alternative implementation, no intermediate pulling of data values occurs, and the data is read directly from the remote database prior to inclusion in the report. In one implementation, such as when a report specification includes scheduling information, periodicity, triggering conditions, and/or the like, those triggering conditions, a clock, and/or the like may be monitored 2815 to determine when a report is to be generated, when the data for the report is to be sampled, and/or the like. A determination may be made as to whether or not report generation, data sampling, and/or the like has been triggered 2810 before proceeding to retrieve the requisite data for the report 2805.
A determination may be made as to whether any of the retrieved data is to be reformatted, modified, functionally combined with one or more other data values, and/or the like prior to inclusion in the report 2820. If so, the reformatting instructions may be retrieved 2825, such as by querying them from a report generation template record, and those instructions may then be applied to one or more selected universal variables and/or universal variable values 2830. In one implementation, a set of data layout and/or configuration instructions may also be retrieved 2835, such as from a report specification template record. Data layout and/or configuration instructions may, for example include specifications of the arrangement and/or order of data; font, text size, text color, and/or other typographical characteristics of the data; titles, headers, borders, margins, table formats, charts, graphics, and/or the like for inclusion with the data; and/or the like. The retrieved data may then be configured in accordance with the retrieved layout and/or configuration instructions 2840.
A report target may then be queried 2845, such as from a report generation template record. A report target may, in various implementations, be selected from any of a wide variety of different possibilities, such as a display interface, a printer, a local or remote database and/or data server, an electronic file and/or document format (e.g., portable document format, spreadsheet, word processing document, and/or the like), and/or the like. The configured report may then be provided to the target 2850. In some implementations, a schedule, triggering condition, and/or the like may monitored to determine when the report should be provided to the target. In one implementation, the schedule, triggering condition and/or the like for provision of a report to a target may be separate and distinct from a schedule, triggering condition, and/or the like for report generation and/or data querying for inclusion in a report.
In some implementations, the RIVPC may be integrated as part of the system architecture illustrated in FIG. 1 and may interact with any or all of the other system components described with reference thereto. For example, in one implementation, the RIVPC may be provided at the authentication/control server 135 and/or at the data server 140 to mediate interactions with data stored in one or more central databases 145. Mediated interactions may include interactions with external and/or third party data sources or targets, projection servers 115, thin clients 105 and/or other network terminal devices, and/or the like.
Employee Status Management and Referral Reward Administration
In some embodiments, the RIVPC may facilitate the dissemination of information related to new hires, employee promotions, demotions, terminations and/or the like employee status changes and/or updates throughout the various data systems and/or departments of an enterprise. For example, the RIVPC may be configured to automatically update selected table fields in various enterprise databases as needed to incorporate information regarding employee status updates. The RIVPC may further be configured to automatically generate reports, letters, forms, manuals, instructions, requisitions, notifications, requests, inventories, invoices, and/or the like documents based on employee information in response to changes in employee status. In some implementations, the RIVPC may also be configured to receive employee referrals of prospective job candidates, to track candidate progress, and/or to administer and/or instruct the provision of referral rewards to eligible referrers based on the hiring of referred candidates.
FIG. 29 shows an implementation of logic flow for employee status management in one embodiment of RIVPC operation. An RIVPC system may monitor an employee status update trigger to determine whether an employee status update has occurred and/or whether any action should be taken as a result of some prior employee status update. Employee status updates may take a wide variety of forms, which may include hiring and/or onboarding, firing and/or termination, promotion, demotion, change of title, change of function, change of sub-function, change of department, change of employee compensation, change of employee benefits, change of location, and/or the like. A wide variety of different triggers may be employed within different implementations. For example, in one implementation, actions may be taken with regard to employee status updates on a scheduled and/or periodic basis, and a trigger may comprise occurrence of some scheduled and/or periodically recurring time. In another example, actions may be taken with regard to employee status updates upon some registration of the occurrence of such updates, such as the updating of employee status data in an employee database. In yet another implementation, actions may be taken with regard to employee status upon receipt of a request, such as from a system administrator. A determination may be made as to whether one or more employee status update actions have been triggered 2905 and, if not, then the system may wait 2910 and/or continue to monitor trigger conditions 2901.
Once the trigger has been detected, the system may query employee information associated with and/or connected to employee status updates 2915. For example, in one implementation, employee information, such as employee status update information, may be queried based on an employee identifier or other information contained in and/or linked to the employee status update trigger. In another implementation, the system may query all employee information, a subset of employee information, and/or employee information meeting some specified criteria (e.g., employee information that has a status update timestamp later than a benchmark time). The system may then proceed to take one or more actions related to the employee status update, such as updating other databases with the new employee status information, generating reports related to the new employee status, and/or the like. To that end, the system may select one or more global data exchange maps, automated data extractor templates, and/or the like. A determination may be made as to whether selection of maps, templates, and/or the like should be rule-based 2920. If so, then one or more rules may be queried, such as based on employee information, the employee status update trigger, and/or the like 2925, and the retrieved one or more rules may then be applied to select global data exchange maps, automated data extractor templates, and/or the like 2930. An example of such a rule may be a rule specifying that, for all employee title changes caught by a scheduled system review at the end of each workday, a report template is selected for generating reports to department heads for those employees confirming the updating of the employee title. In another example, a rule may specify that any employee status update recognized as a new hire of a candidate should cause selection of a global data exchange map for transferring candidate data to corresponding employee data.
If rule-based selection of maps and/or templates is not desired at 2920, then the system may select maps and/or templates independent of any rules 2935. For example, a global data exchange map may exist to harmonize employee title data across several databases on a scheduled basis regardless of what the title change is, who the employee is, or other factors. Once maps and/or templates have been selected, the system may updated database data and/or generate reports therewith 2940.
In one implementation, maps and/or templates may be selected after and/or in response to occurrence of an employee status update trigger. In another implementation, maps and/or templates may be selected before occurrence of an employee status update trigger, and the application of those maps and/or triggers may occur after and/or in response to occurrence of the employee status update trigger.
FIG. 30 shows an implementation of logic flow for employee onboarding in one embodiment of RIVPC operation. The flow in FIG. 30 may be applicable, in one implementation, for updating databases, generating reports, generating departmental instructions, and/or the like in response to the hiring of a job candidate within an enterprise. Candidate information may be received and/or associated with one or more universal variables 3001. In one implementation, candidate information may include information corresponding to any of the universal variables listed in Appendix A belonging to the “Candidate” family. Receipt of candidate information may be by any of a wide variety of different avenues, such as but not limited to: entries to a web form, entry by a human resources administrator to a human resources software system, an email message, receipt and/or parsing of a resume, and/or the like. Associations of candidate information with universal variables may be made in a variety of different ways, such as may depend on the manner in which candidate information is received or input to the system. For example, fields in a web form may be pre-associated with universal variables. In another example, an HR administrator may actively associate candidate information with universal variables during data entry. In one implementation, one or more database identifiers may be provided during association of candidate information with universal variables to further identify the particular tables and/or fields in which candidate data should be stored.
In one implementation, some or all candidate information may be provided by a referrer, such as by a current employee. In such a referral situation, a referrer identifier may also be included in association with the received candidate information.
Candidate information may then be stored in table fields linked to the universal variables to which the candidate information has been associated 3005. A determination may then be made as to whether the candidate has been hired 3010. Such a determination may be made in a variety of different ways within different implementations. For example, the determination may be made based upon the receipt of a hiring indicator (see 3020), such as may be generated by the selection of a “Hired” or “Offer” button, and/or the like, by a hiring administrator in association with a candidate identifier in a user interface (see, e.g., FIGS. 34A-B). Alternatively, the determination may be made by checking (such as on a scheduled and/or periodic basis) a database entry corresponding to a hire date for that particular candidate, all candidates, a subset of candidates, and/or the like. If no indication of hiring is discerned, the system may wait for a period of time 3015 before checking again, receiving a hiring indicator, and/or the like. If a hire has occurred, a hiring indicator may be received, such as a Boolean variable value indicating a hire, a variable indicating a recent hire date, and/or the like 3020, and stored 3025. The system may then select one or more global data exchange maps and/or automated data extractor templates 3030, such as may or may not be based on one or more selected rules as in FIG. 29.
The selected maps and/or templates may then be applied to update databases and/or generate reports with employee data as needed or desired in response to the hiring 3035. In one implementation, maps may be selected and applied to notify various enterprise departments, and/or to update their corresponding databases, of the new hire and/or to generate reports, instructions, requests and/or the like for equipment, services, and/or the like to accommodate the new employee. For example, departments such as information technology, legal, marketing, benefits, payroll, accounting, human resources, facilities, an employee's specific department of employment, and/or the like may have corresponding maps to port all or some subset of candidate data to their own databases upon the hiring of the candidate. In another example, one or more such departments may have established report templates to generate letters, requisitions, instructions, manuals, reports, forms, and/or the like based on candidate data upon hiring of the candidate. Further details of such examples are provided with reference to the figures below.
A determination may be made as to whether updating of a database in accordance with the application of a selected map at 3035 itself triggers the selection of additional maps and/or templates 3040 (see FIG. 33). If so, the system may return to 3030 to select the additional maps and/or templates. Otherwise, the flow may conclude 3045.
FIG. 31 shows an implementation of data flow between and among RIVPC systems and/or related entities for employee onboarding in one embodiment of RIVPC operation. A candidate 3101 may provide personal information, such as resume information and/or any other job candidate information, via a wide variety of inputs 3110 to the RIVPC system, such as, but not limited to: a web form, an email message, a freeform and/or structured resume for parsing, administrative input, and/or the like. The candidate may also be referred to the system by a referrer 3105, such as a current employee, and have a referrer identifier be associated with candidate information. The received candidate information 3115 may then be provided, such as to an HR application server 3120 and/or via a central authentication and/or data server 3125, for eventual storage in an HR application database 3130 and/or in one or more other local and/or remote databases 3135. Tables/fields for storage of candidate information may be instructed, in one implementation, by respective universal variables and/or one or more database identifiers to which the provided candidate information are associated.
FIG. 32 shows an implementation of data flow for database updating subject to employee onboarding in one embodiment of RIVPC operation. An HR data application database 3201 may include candidate information 3205. Upon a trigger or other indication of the candidate being hired, onboarded, offered a job, accepting a job, and/or the like, one or more maps within the global data exchanger 3215 may be selected. In one implementation, as discussed above, map selection may be subject to one or more map selection rules 3210. In the illustrated implementation, five maps have been selected, including: an HR map 3220, an information technology (IT) map 3225, a benefits map 3230, a facilities map 3225, and a departmental map 3240. Any of a wide variety of other maps may be employed, such as may be needed or desired within an enterprise implementation, including but not limited to: a legal department map, a marketing department map, a payroll map, an accounting department map, and/or the like. Furthermore, multiple and/or special purpose maps may be employed for a single enterprise department, such as one legal department map for porting employee employment qualification data and another legal department map for porting employee conflict clearance data. In the illustrated implementation, each map selects candidate information (and, in some implementations, other information from the HR application database and/or any other database) for inclusion in the corresponding database. The HR map 3220 may select a subset of the candidate information 3205 as HR data 3245 for inclusion back in the HR application database 3270 (which may, in one implementation, be the same as the database at 3201). In one implementation, the HR map may port candidate information from candidate table fields to employee table fields within the same database. The IT map 3225 may select a subset of candidate information 3205 as IT data 3250 for inclusion in an IT database. For example, an employee title (which may be stored as a proposed title within candidate information) may be provided to the IT database and later used to instruct the provision of title-specific IT resources to the employee (e.g., an enterprise Blackberry device if the employee's title is vice president or above). Similarly, the benefits map 3230 and facilities map 3235 may select subsets of candidate information 3205 as benefits data 3255 and facilities data 3260 for inclusion, respectively in a benefits database 3280 and a facilities database 3285. It should be noted that, in some implementations, a single map may port data to more than one target database.
A departmental map 3240 may also select a subset of employee data as departmental data 3265 for inclusion in a departmental database 3290. In one implementation, a departmental map may be chosen and/or queried based on a department code associated with the candidate information and/or the department for which the candidate has been hired. In general, other maps, templates and/or the like may be selected, queried, and/or applied based on one or more tokens contained in a descriptive business grammar and/or table-tracking syntax configured string.
FIG. 33 shows another implementation of data flow for database updating subject to employee onboarding in one embodiment of RIVPC operation. As in FIG. 32, an HR application database 3301 may contain candidate information 3305 that, when an indication of hiring of the candidate is registered, may be ported through global data exchanger 3310 maps to various other databases. In the implementation illustrated in FIG. 33, an HR map 3315 selects a subset of candidate info 3305 as HR data 3325 and ports it to the HR application database 3335, which may be the same as the database at 3301 or a different HR application database. The updating of the HR application database 3335, in turn, may then trigger the selection of additional global data exchanger maps. In one implementation, one or more map selection rules 3345 may be applied to select maps based on the data update in the HR application database 3335. Here, subsets of HR application database data may be selected by an IT map 3350, benefits map 3355, facilities map 3360, departmental map 3363, and/or the like to generate, respectively, IT data 3365, benefits data 3370, facilities data 3375, departmental data 3378, and/or the like for inclusion in, respectively, an IT database 3380, benefits database 3385, facilities database 3390, and departmental database 3395. In some implementations, updating of one or more databases by a global data exchanger map may trigger the selection of additional maps and/or automated data extractor templates.
FIGS. 34A-B show implementations of user interfaces for employee onboarding in one embodiment of RIVPC operation. In FIG. 34A, a variety of information is displayed pertaining to job candidates and the jobs for which they may be applying. A status column 3401 may include information reflecting the status of a candidate's pursuit of a job, such as whether an offer has been made, whether the candidate has been rejected, whether the candidate has accepted the offer, and/or the like. A title column 3405 may include information reflecting the titles of one or more positions for which the candidate is applying. A function column 3410 may include information reflecting further detail about the functions, responsibilities, departments, and/or the like of a job being pursued by the candidate. A location column 3415 may include information reflecting a location, such as an office location, associated with the job being sought. Last name 3420 and first name 3425 columns may include candidate name information. An email column 3430 may include one or more candidate email addresses. An interviewer column 3435 may include information reflecting the names of one or more individuals who have interviewed or are assigned to interview the candidate. The interviewer column may also include an interface element, such as a button, to allow a user to enter notes about an interview. An action column 3440 may include additional interface elements, such as buttons, to allow a user to perform an action with relation to the candidate, such as rejecting the candidate, making an offer to the candidate, hiring the candidate, onboarding the candidate, and/or the like. In one implementation, a system user may initiate all database updates and/or report generations needed and/or desired in association with the hiring of a new employee by engaging a single interface element, such as the “Offer” element shown at 3440.
The interface in FIG. 34B may include some columns indicative of a candidate's performance on one or more evaluations, tests, interviews, and/or the like. In one implementation, the interface in FIG. 34B may further be applicable for current employees who are candidates for new positions, promotions, and/or the like, such as may require additional training, passing a test, and/or the like. A status column 3445 may include information reflecting performance on a test, performance in an interview, performance during and/or successful completion of a training program, generation of a job offer and/or rejection, hiring, onboarding, and/or the like. A test date column 3450 may include information reflecting a date and/or time of a test taken related to a job for which the candidate has applied. A start date column 3455 may include information reflecting a proposed or expected employment start date. A location column 3460 may include information reflecting a location of and/or associated with a prospective job, such as an office location. Last name 3465 and first name 3470 columns may include information reflecting a candidate's name and/or other identifying information. An email column 3475 may include information reflecting a candidate email address or other contact information. First party and third party columns 3480 may include information reflecting a performance, score, and/or the like on particular tests, interviews, and/or the like taken by the candidate. A background column 3485 may include interface elements allowing a user to enter information such as may pertain to performance of a candidate on a test, in an interview, completion of a training program, and/or the like. An interview column 3490 may include one or more interface elements allowing entry of notes, scores, ratings, and/or the like related to performance of a candidate on a test, in an interview, during a training program, and/or the like. An action column 3495 may include interface elements allowing entry of a candidate status with regard to a job offer, interview performance, test performance, training program performance, and/or the like. For example, in one implementation, the interface elements may allow an administrator to reject a candidate with respect to a particular job offer, promotion, title change, and/or the like, and/or to offer the same to the candidate. In another implementation, the interface elements may allow an administrator to register a user's performance status with respect to a training program, test, and/or the like, such as whether the user has passed or failed, attained a certification, and/or the like. Selection of interface elements such as those shown at 3495 may trigger the updating of candidate and/or employee data in one or more databases, such as may be related to a job title, employment status, certification status, training status, and/or the like and, in one implementation, may further trigger selection and/or application of one or more global data exchanger maps and/or automated data extractor templates for updating of one or more additional databases and/or the generation of one or more reports based on changes to employee status.
FIG. 35 shows an implementation of data flow for report generation subject to employee onboarding in one embodiment of RIVPC operation. An HR application database 3501 may contain candidate information 3505 that, upon an indication of hiring and/or other status change of the candidate is registered, may be provided for inclusion in one or more reports as instructed by templates in an automated data extractor 3515. In one implementation selection of report templates for application to particular candidate information may be based on one or more templates selection rules 3510. For example, a rule may specify that, for any candidate hired for a job associated with a particular department code, a specific collection of templates are to be applied to generate reports based on that candidate's information. In the illustrated implementation, five templates are applied, including: an HR report template 3520, an IT report template 3525, a first benefits report template 3530, a second benefits report template 3535, and a departmental report template 3540. These generate, respectively, an HR report 3545, an IT report 3550, a first benefits report 3555, a second benefits report 3560, and a departmental report 3565. In one implementation, an RIVPC system may employee automated data extractor templates to generate any of a wide variety of documents, reports, manuals, instructions, forms, and/or the like suitable for and/or associated with the hiring, onboarding, promoting, demoting, terminating, and/or the like of a candidate and/or employee. For example, a W4 template may automatically generate a W4 form based on candidate information when a candidate is hired. In another example, an automated data extractor template may automatically generate a requisition form for particular office equipment, computer equipment, and/or the like based on candidate info, job title, location, and/or the like and an indication that the candidate has been hired for a particular position.
FIG. 36 shows an implementation of user interface for report generation subject to employee onboarding in one embodiment of RIVPC operation. An interface similar to the example shown in FIG. 36 may provide displays of automated data extractor report templates and/or of reports generated by those templates in conjunction with candidate and/or employee data. An entity column 3601 may include information reflecting a legal entity, company, employer, and/or the like to which a particular set of templates and/or reports is associated. A title column 3605 may include information reflecting a particular job title, employee function and/or subfunction, department, location, and/or the like to which a particular set of templates and/or reports is associated. In some implementations, a wildcard character may be included in the title column (and/or in one or more other columns) to indicate that a particular report template is suited for application to any job title, and/or a subset of job titles matching an abridged set of title-specifying criteria. A type column 3610 may include information reflecting a type of report (e.g., offer letter, termination letter, promotion letter, demotion letter, civil order response, and/or the like) associated with a particular set of templates and/or reports. A display window 3615 may provide a display of a template and/or a report generated thereby, such as may include generic information for illustrative purposes and/or may include actual candidate and/or employee information. Thus, in the example illustrated in FIG. 36, a report is displayed that is provided as an offer letter to candidates for an “executive” position with XYZ India.
In addition to managing database updates and/or report generation associated with hiring and/or onboarding of job candidates, the RIVPC system may be configured to manage database updates and/or generate reports associated with status updates of existing employees, such as promotions, demotions, transfers, training certifications, and/or the like. FIG. 37 shows an implementation of logic flow for employee status update management in one embodiment of RIVPC operation. The system may monitor employee status update trigger conditions 3701 to determine if a status update trigger has occurred 3705. Examples of triggers may include the occurrence of a prescheduled and/or periodically recurring trigger time, the receipt of an administrator request, the detection of an update occurring in particular tables and/or fields of one or more monitored databases, and/or the like. If no trigger is detected, the system may wait for a period of time 3710 and/or continue to monitor trigger conditions 3701. Once a trigger is detected, status update information, such as the nature of a title change, may be received 3715 and stored 3720. A determination may then be made as to whether additional database updates and/or reports are warranted, needed, desired, and/or the like 3725. Such a determination may, for example, be based on the application of one or more map and/or template selection rules to employee information, employee status update trigger information, and/or the like. If no updates or reports are needed, the flow may conclude 3730, and/or may return to 3701 to continue monitoring employee status update trigger conditions. Database updates and/or report generation may not be needed, for example, when an employee status update reflects a minor change in an employee position and/or a change that does not require notification of other departments within an enterprise. Otherwise, one or more global data exchange maps and/or automated data extractor templates may be selected 3735 and applied to update database fields and/or generate reports based on employee information. A determination may be made as to whether the updating of one or more databases at 3740 triggers the selection and/or application of further global data exchanger maps and/or automated data extractor templates 3745. If so, the system may return to 3735 to select additional maps and/or templates as needed. Otherwise, the flow may conclude 3750 and/or return to 3701 to continue monitoring employee status update trigger conditions.
FIG. 38 shows an implementation of data flow for employee status update management in one embodiment of RIVPC operation. An HR application database 3801 may contain employee information 3805. An employee status update 3803 may be detected and/or may trigger the selection of one or more global data exchanger 3815 maps and/or automated data extractor 3825 templates. In one implementation, map and/or template selection may be based on one or more selection rules 3810. In turn, the global data exchanger may produce updates in one or more databases 3820 as instructed by selected global data exchanger maps, and the automated data extractor may generate one or more reports 3830 based on employee data as instructed by selected templates.
FIG. 39 shows an implementation of user interface for employee status update management in one embodiment of RIVPC operation. A system interface similar to that shown in the example of FIG. 39 may be employed to view and/or modify employee status information. An original hire column 3901 may include information reflecting a date at which an employee was originally hired by a particular entity, a date at which an employee was hired for a particular position, and/or the like. A hire column 3905 may include information reflecting a date at which an employee was most recently hired, such as by a particular entity, for a most recently held position, and/or the like. Last name 3910 and first name 3915 columns may include information reflecting an employee name and/or other identifiers. A status column 3920 may include information reflecting aspects of an employee status, such as whether the employee is in good standing, is on leave, is terminated, and/or the like, and/or other employee information such as a certification status, training status, exam performance status, and/or the like. A SSN column 3925 may include information reflecting an employee social security number and/or the like employee identifier. A DOB column 3930 may include information reflecting an employee date of birth. An entity column 3935 may include information reflecting an the name, other identifiers, and/or other information pertaining to an entity with which the employee is employed. A location column 3940 may include information reflecting a location associated with a particular job, employer, employee, and/or the like. A department column 3945 may include information reflecting a department associated with the employee and/or a particular job. In one implementation, the department column may include a department code and/or one or more other descriptive business grammar and/or table-tracking syntax configured strings, such as may indicate the position of a particular job relative to an organizational hierarchy. A manager column 3950 may include information reflecting a manager overseeing a particular job or position. Title and sub-title columns 3955 may include information reflecting a title, sub-title, function, sub-function, and/or the like associated with a particular job, position, and/or employee. The interface may also include one or more interface elements 3960 by which changes to employee status and/or other employee information may be effectuated. In one implementation, a change to employee status effectuated by interface elements such as those shown at 3960 may cause the selection of maps and/or templates, and/or the generation of database updates and/or reports, such as in accordance with the implementation of logic flow shown in FIG. 37.
FIG. 40 shows an implementation of logic flow for employee termination in one embodiment of RIVPC operation. An employee termination indicator may be received 4001, indicative of the termination, firing, and/or the like of one or more existing employees. In one implementation, an employee termination indicator may comprise a data signal generated by selection of an interface element such as that shown at 4250 in FIG. 42A. In another implementation, the employee termination indicator may comprise termination data, such as a Boolean variable and/or a termination date/time, queried, such as on a scheduled and/or periodic basis, from an appropriate database. The employee termination indicator may, in one implementation, be stored 4005 and the system may then access employee information based on the employee termination indicator 4010. For example, in one implementation, the employee termination indicator may include an employee identifier, and additional employee information (e.g., location, title, employing entity, and/or the like) may be queried based thereon. The system may further access one or more global data exchanger maps and/or automated data extractor templates based on information associated with the employee termination indicator and/or accessed employee information 4015. The maps and/or templates may then be applied to update enterprise databases and/or generate reports as needed or desired to effectuate the employee termination 4020. For example, in one implementation, one or more global data exchanger maps may instruct the deletion of employee data from one or more table fields in one or more databases. In another example, an automated data extractor template may, in response to receipt of an employee termination indicator, generate a termination letter including employee-specific information. A determination may be made as to whether any of the database updates resulting from application of selected global data exchanger maps at 4020 triggers the selection and/or application of further global data exchanger maps and/or automated data extractor templates 4025. If so, the system may return to 4015 to select such further maps and/or templates. Otherwise, the flow may conclude 4030.
FIG. 41 shows an implementation of data flow for employee termination in one embodiment of RIVPC operation. An HR application database 4101 may include employee information 4105 in one or more table fields. The receipt and/or generation of an employee termination indicator 4103 may then cause a global data exchanger 4115 and/or an automated data extractor 4125 to effectuate, respectively, one or more database updates 4120 and/or the generation of one or more reports, instructions, manuals, notices, orders, and/or the like 4130 (e.g., a termination notice to be provided to the employee, a recovery order directed to an enterprise facilities department for recovery of employee office furniture, a severance payout report, and/or the like). In one implementation, selection of global data exchanger maps and/or automated data extractor templates may be made based on one or more selection rules 4110. In one implementation, termination map and/or template selection rules may be based on a reason for termination, such as any of the reasons shown at 4225 in FIG. 42A. For example, if the reason for termination is a resignation, a map may be selected to retain sufficient employee information in one or more enterprise databases to reflect the eligibility of the employee for rehire. In another example, if the reason for termination is gross misconduct, a map may be selected to delete all employee information from enterprise databases except, perhaps, for a single record in a human resources database indicating that the employee is ineligible for future employment and providing a reason.
FIGS. 42A-B show implementations of user interface for employee termination in embodiments of RIVPC operation. An interface similar to the example shown in FIG. 42A may be employed, in some implementations, for reviewing employee information and/or effectuating employee terminations. An entity column 4201 may include information reflecting an entity employing the employee. A location column 4205 may include information reflecting a location at which the employee is employed. Last name 4210 and first name 4215 columns may include information reflecting an employee name and/or other identifying information. A title column 4220 may include information reflecting a current and/or previous employee title. A reason column 4225 may include information reflecting a reason for employee termination. A re-hire column 4230 may include information reflecting the status of an employee as it may relate to whether or not the employee is eligible and/or qualified to be rehired. A terminator column 4235 may include information reflecting the name and/or other identifiers of an individual responsible for terminating the employee. A date column 4240 may include information reflecting a date of interview, termination, and/or the like of the employee. An interview column 4245 may include one or more interface elements which may be engaged to input notes and/or other information pertaining to an employee's interview answers, performance, and/or the like. An action column 4250 may include one or more interface elements which may be engaged to effectuate termination of an employee. In one implementation, once an employee is terminated, the termination interface element associated with that employee may be grayed out or otherwise modified to indicate that it cannot be currently operated or selected by the user.
An interface similar to the example shown in FIG. 42B may be employed, n some implementations, to display, manage, manipulate, organize, and/or the like automated data extractor templates and/or template generated reports associated with employee terminations. A date column 4275 may include information reflecting a date of termination, a date at which a particular template was generated or last updated, a date at which a particular report was generated or last updated, and/or the like. An entity column may include information reflecting the name and/or other identifiers relating to a legal entity, employer, and/or the like associated with an employee's former employment, a particular termination report template, a particular termination report, and/or the like. A type column 4279 may include information reflecting a type of template and/or associated report (e.g., an offer letter, a change of employee status report, interview notes, a termination latter, and/or the like). A display window such as that shown at 4281 may provide a display of selected reports, templates, and/or the like.
FIG. 43 shows an implementation of logic flow for employee referral reward management in one embodiment of RIVPC operation. A flow similar to the example shown in FIG. 43 may effectuate a referral bonus or other referral reward for an employee of an enterprise when that employee refers a candidate for a job with the enterprise and said candidate is later hired. A referral notice may be received, which may include candidate data such as a candidate identifier and a referrer identifier 4301. In one implementation, a referrer may provide a referral notice by entering candidate information into a web form. In another implementation, a referrer may provide a referral notice by sending candidate information in an electronic message, such as an email addressed to the referrer's own email address with a pre-designated subject line (e.g., “Referral Notice”). In one implementation, the referral notice may comprise a candidate identifier and a referrer identifier. In another implementation, further candidate information may be provided by the referrer, up to and including a full candidate resume, curriculum vitae, and/or the like. A received referral notice, candidate data, and/or the like may be stored 4305, such as in the form of a database record, in an email database, and/or the like. In one implementation, table fields in which candidate information are stored may be linked to one or more universal variables. In implementations, referrer information may be stored in the same record as candidate data and/or as a record linked to a record storing candidate data.
A determination may then be made as to whether the candidate has been hired 4315. Such a determination may be made, for example, by querying (e.g., on a scheduled and/or periodic basis) a Boolean variable, hiring date/time, and/or the like stored in and/or in association with a candidate record and/or that is accessible by and/or linked to one or more universal variables. In some implementations, a referral reward may be made available to a referrer if an offer is made to a candidate, even if the candidate does not accept the offer, and the system may check only that an offer was extended to the candidate. In other implementations, in addition to being hired, a candidate may have to be employed for a period of time before a referrer is eligible for a referral reward, and the system may check a hire date stored in an employee record associated with the candidate against a current date to determine if sufficient time has passed. In some implementations, various referral rewards may be available at various stages of a candidate's employment, such as an initial bonus upon hiring of the candidate and a subsequent bonus after the candidate has worked with the company for one year. Any of a wide variety of different referral reward schedules, schemes, and/or the like may be implemented by the RIVPC system in various embodiments.
If the candidate has not been hired, a determination may be made as to whether the candidate has been denied the position for which he or she has applied 4320. Such a determination may be made, for example, by querying a Boolean variable reflecting an offer denial, a denial date/time, and/or the like stored in and/or in association with a candidate record. If the candidate has been denied a job offer then, in one implementation, candidate information and/or referral information may be deleted 4325. In another implementation, candidate information may be retained even after an offer denial, such as when a candidate is determined to be eligible and/or qualified for future possible job offers. Referral information may also be retained, in some implementations, if a referrer may still qualify for a referral reward despite an initial candidate offer denial. A determination of such qualification and/or eligibility may be made by an administrator, and/or automatically on the basis of one or more rules set based on enterprise goals, needs, and/or desires. If the candidate's offer has not been denied at 4320, the system may wait for a period of time 4330 and continue to monitor the hiring status of the candidate 4310. In one implementation, a determination may be made as to whether the amount of time that has passed after submission of the referral notice without any hiring of the candidate exceeds a threshold limit beyond which the referrer is no longer eligible for the referral reward. In such a circumstance, the system may modify and/or delete one or more records of the referral to indicate the ineligibility of the referrer for the reward even if the candidate is hired.
If the system determines that the candidate has been hired at 4315, it may check a candidate record and/or other records linked thereto to find information reflecting a qualified referral, such as the identity of a referrer. In some implementations, one or more referral rules may be applied to candidate information and/or information associated therewith to determine whether a qualified referral exists. For example, a rule may check a referral date to determine whether the amount of time that has passed between the referral notice and the hiring of the candidate is less than a threshold limit. In another example, a rule may query the title of the job for which the candidate is being hired and compare it to a table of referral rewards to determine an appropriate reward to provide to the referrer (e.g., a higher reward for a candidate hired as an executive than for a candidate hired as an entry-level agent). In still another example, a rule may generate a request for administrator approval of a particular referral reward, and may refrain from authorizing and/or instructing provision of the reward until receipt of some indicator of that administrator approval. In some implementations, a rule seeking administrator approval may first query a job title associated with the referrer (e.g., queried based on the referrer identifier) and only seek administrator approval if the retrieved job title is one of a group of job titles associated with an administrator approval requirement. In yet another example, a rule may query a referrer record to find a number of prior referral rewards received and may determine eligibility for further referral rewards based, at least in part, thereon. For example, in one implementation, a referrer may be limited to a fixed number of referral rewards in a given time period, and such a rule may enforce that limit by denying a referral reward to a referrer who has already received the limiting number of rewards. In yet another example, a rule may query a referrer location (e.g., the country in which the referrer's office is located) and compare said location to a series of locations in a lookup table in order to determine an appropriate referral reward amount for that referrer at that location. In yet another example, a rule may query a department code, program code, and/or any other descriptive business grammar and/or table tracking syntax configured string associated with the candidate and/or the referrer and compare the string with other strings in a lookup table to determine a referral reward appropriate for and/or associated with that string for provision to the referrer.
In some implementations, multi-tiered rules may be applied, whereby the outcome of a first rule may determine the selection and/or application of subsequent rules for determining referral reward qualification. As an example, a first rule may query a candidate job title to determine which of a series of referral reward schedules is applicable to a given candidate hiring, and a second rule may be applied based on the selected referral reward schedule to determine if sufficient time has passed after the hiring in order for the referrer to qualify for the reward.
A determination may be made as to whether qualifying referrer information has been found in association with the candidate record 4340 and, if not, then the flow may conclude and/or proceed to select global data exchange maps, automated data extractor templates, and/or the like as needed 4345. If qualified referrer data is found, then a determination may be made as to whether one or more rules should be applied 4350. Such a determination may be made, for example, based on an administrator setting, based on the nature of the referral, referrer identifier, candidate identifier, candidate job title, and/or any of a wide variety of other criteria. If a rule is to be applied, the rule may be queried, such as based on referrer and/or candidate parameters, such as a referrer identifier, referrer job title, candidate identifier, candidate job title, and/or the like 4355. The queried rule is retrieved 4360 and applied to determine whether to grant the referral reward and/or how much of a referral reward to provide 4365. In one implementation, rules such as those described above with reference to boxes 4315 and 4335 may be applied at 4365. In one implementation, rules may be specified, generated, indexed, and/or otherwise defined based on and/or using one or more universal variables. A determination may be made as to whether or not a grant of a referral reward is warranted 4370 and, if not, then the flow may conclude 4375. If a referral reward is warranted, then the system may pull and/or query one or more global data exchanger maps and/or automated data extractor templates 4380 and apply them to initiate and/or otherwise effectuate the reward payment process 4385. For example, in one implementation, the system may pull an automated data extractor template for a reward requisition form that is auto-populated with candidate and/or referrer information to request that the reward be paid to the referrer. Such a requisition may be provided, for example, to a payroll administrator for final approval and/or payment of the reward. In another example, a global data exchanger map may automatically pass candidate and/or referrer information to a payroll database to initiate a process for payment of a referral reward to the referrer. In yet another example, in addition to a referrer identity, a global data exchanger map may draw referrer title information, benefits information, and/or the like and provide it to a payroll database for inspection in determining whether, when, and how much of a referral reward to provide to the referrer.
FIG. 44 shows an implementation of user interface for employee referral reward management in one embodiment of RIVPC operation. An interface similar to the example shown in FIG. 44 may be employed, for example, by an administrator to review referral information, the status of referred candidates, and/or the like. A referred date column 4401 may include information reflecting a date at which a referral occurred, a referral notice was submitted and/or received, and/or the like. A referrer column 4405 may include information reflecting a referrer name and/or other identifying information. Last name 4410 and first name 4415 columns may include information reflecting the name and/or other identifying information associated with a job candidate, such as may have been referred to the enterprise by the referrer indicated at 4405. Home phone 4420, cell phone 4425 and email 4430 columns may include information reflecting candidate and/or referrer contact information such as, respectively, a home phone number, a mobile phone number, an email address, and/or the like. A resume column 4435 may include one or more interface elements facilitating the viewing of a candidate resume, such as in a portable document format (PDF). A location column 4440 may include information reflecting a location associated with a prospective job for which the candidate is applying, and/or for a location associated with the referrer. A title column 4445 may include information reflecting a job title of a job for which a candidate is applying, a referrer's job title, and/or the like. A status column 4450 may include information reflecting the status of a candidate's pursuit of a job, such as whether the candidate has been hired or rejected.
In some embodiments, the employment status management and/or referral reward administration systems and facilities may be implemented at an authentication and/or data server, such as may be located at a central office, and/or at a projection server and/or other systems located at one or more local offices.
Global Benefits Purse and Reimbursement Facilitator
In some embodiments, the RIVPC may allow for a purse-based benefits administration system, rule-based reimbursement facilitation, and/or the like. For example, in one embodiment, an administrator may engage RIVPC facilities to specify employee purse amounts, which employees may spend on various employment benefits, such as health benefits, vacation packages, reimbursement plans, life and/or disability insurance plans, savings plans, discount programs, and/or the like. Purse amounts may, in one embodiment, be based on and/or linked with various employee characteristics, such as title and/or position, company, location, department code, program code, other descriptive business grammar and/or table tracking syntax configured string tokens, and/or the like. A RIVPC administrator may also be able to specify rules for allocation of purse funds to various benefits. For example, rules may be set (such as may be specific to particular user characteristics) specifying required minimum and/or maximum allocations to particular benefits, required benefits, user restrictions, and/or the like. In one embodiment, the RIVPC may further facilitate the processing and provision of reimbursement payments to employees which, in one implementation, may be tied to benefits selected via purse-based benefits selection procedures. Employees may submit reimbursement requests, such as by sending an appropriately formatted email to their own email address or another specified email address, and the RIVPC may process the request to extract information therefrom and determine if the reimbursement is authorized and/or otherwise appropriate. If so, the RIVPC may then provide and/or instruct the provision of the requested reimbursement payment for the employee.
FIG. 45 shows an implementation of data flow between and among RIVPC components and affiliated entities in one embodiment of RIVPC operation. An employee 4501 may engage the RIVPC, configured as part of a human resources system 4520, via a terminal device 4505. The RIVPC may provide a benefits selection interface 4510, which may include a purse amount and a selectable list of benefits, for display to the user. User selections may be received at a benefits module 4515 for processing and/or storage in a benefits database 4525. The employee 4501 may also submit reimbursement requests via the employee terminal 4505. For example, in one implementation, a reimbursement request may take the form of a reimbursement request email message 4525, which may a variety of information such as a reimbursement amount, reimbursement type, user identifiers, and/or the like. In one implementation, an employee may submit the reimbursement email to a specified address designated for receipt of reimbursement requests. In another implementation, an employee may address a reimbursement request email message to their own email address, and include a designated flag in the subject line and/or body of the message by which the reimbursement email can be identified. In one implementation, the email message may be processed by an email server 4530 and/or stored in an email database 4535 and accessed by a global data exchanger 4540 and/or automated data extractor component to automatically inspect user email records and retrieve records having the designated flag for reimbursement processing by the reimbursement module 4545. A record of the reimbursement request and/or payment may be stored in a reimbursements database 4550, and if the reimbursement module 4545 determines that fulfillment of the reimbursement request is warranted, payment of the reimbursement 4555 to the employee may be made and/or instructed. In one implementation, the reimbursement module 4545 may interact with the benefits module 4515 and/or benefits database 4525 to query benefits records and determine reimbursement authorizations and/or amounts based on benefits associated with a reimbursement requestor.
FIG. 46 shows an implementation of overall logic flow in one embodiment of RIVPC operation. Purse amounts, which in one implementation represent the amount of money that an employee is given to spend on benefits, are specified 4601, such as by a RIVPC administrator. Different purse amounts may be specified based on a variety of employee characteristics, such as but not limited to: title, company, location, department code, program code, other descriptive business grammar and/or table tracking syntax configured strings and/or string tokens, and/or the like. Benefits properties may also be set 4605, such as specifying the amount of money and/or percentage of pay associated with and/or required to receive each benefits option; minimum and/or maximum allocation amounts for a given benefit; benefit statuses, such as which benefits require at least some allocation, tax status of each benefit, reimburseability of payments associated with a given benefit, whether a particular benefit option is included in an employee benefits package by default, and/or the like; and/or the like. A benefits selection user interface may then be generated and/or provided for display to one or more employees 4610, and benefits selection may be received therefrom 4615 for review, storage, and/or the like. An employee may subsequently submit a request for reimbursement, which may be received 4620 and processed in order to provide reimbursements to the employee, such as may be based on benefits selections made by that employee 4625.
FIGS. 47A-B show an implementation of logic flow for benefits selection in one embodiment of RIVPC operation. For a given employee, the RIVPC may query employee characteristics and/or parameters, such as an employee title or other level, location, company, department code, program code, other descriptive business grammar and/or table tracking syntax configured strings and/or string tokens, and/or the like 4701. Purse amounts may then be determined based on the retrieved employee parameters 4705, such as by using the parameters to query purse amount records. In one implementation, the purse amount represents an amount of money and/or percentage of compensation available for each employee to spend on various benefits, such as health insurance, life insurance, disability insurance, vacation packages, compensation packages, reimbursement plans, retirement plans, technology benefits (e.g., a type of computer, mobile device, and/or the like made available to the employee), education benefits (e.g., tuition reimbursement), child care, transportation benefits, and/or the like. An assortment of benefits may be selected and provided for employee selection 4710. In one implementation, the assortment of benefits provided as options for a given employee may depend on employee characteristics and/or parameters such as those queried at 4701 (e.g., benefits records may include and/or be linked to fields specifying qualifying employee characteristics). Benefits rules appropriate for a given employee may also be queried 4715, such as based on employee characteristics and/or parameters such as those queried at 4701. A determination may then be made as to whether any applicable benefits rules constrain the employee's ability to select benefits from those selected at 4720 (e.g., if there are minimum or maximum allocation requirements, if one or more benefits are mandatory or are selected by default, and/or the like). If benefits selection is constrained by the rules, then the constraints are applied 4725 (e.g., a portion of the employee purse may be automatically applied to a particular benefit to satisfy a minimum allocation requirement). In an alternative implementation, no benefit constraints are applied prior to benefit selection by the employee, and the rules are only applied after such selection to determine if the selected benefits are compliant therewith. Continuing in FIG. 47B, the RIVPC may then provide a selectable display of the benefits assortment to the employee 4730, and user selections may be subsequently received 4735. User selections may comprise pure selection of a benefit for inclusion in a benefits package, a specific allocation of purse funds for a given benefit, selection of one of several subcategories of benefits, and/or the like. In one implementation, an employee may always be limited in benefits selection to the amount of funds available in the employee's benefits purse. A determination may be made as to whether the benefits selection is finished 4740. If not, then a determination may be made as to whether there is any and/or sufficient money left in the employee's purse that may be allocated to further benefits 4750 and, if so, the RIVPC may return to 4735 to receive the additional benefits selections. If sufficient money is not left in the purse at 4750, then the RIVPC may undertake an error handling procedure, such as providing a message to the user that sufficient funds are unavailable for the requested allocation. A user may then be provided with the option to reselect and/or reallocate funds among benefits 4760. If, at 4740, the RIVPC determines that no further benefits selections are to be made (e.g., if a user selects an option to conclude the benefits selection procedure), then benefits selections may be stored in association with the user, and notice may be provided to an enterprise human resources department and/or one or more benefits vendors to implement the selected benefits 4745. In one implementation, stored benefits records may be accessed by a global data exchanger and/or automated data extractor for providing selected benefits information to a human resources department and/or one or more outside vendors, for generating reports and/or displays of benefits, and/or the like.
In one implementation, selected benefits may be further evaluated with respect to benefit selection rules to determine if the selected benefits and/or designated purse allocations are compliant. When the determination is made at 4740 that benefits selection is concluded, the RIVPC may evaluate the benefits selections based on retrieved rules 4765 (e.g., one or more of those retrieved at 4715 of FIG. 47A) to determine if the selections are compliant therewith 4770. If the selections are compliant, the RIVPC may proceed to 4745 for benefits selection storage. Otherwise, if one or more of the selections fails to comply with the rules, an error handling procedure may be undertaken, such as to provide an error message to the employee, request reselection and/or reallocation of benefits, generate rule-compliant suggestions, and/or the like 4775.
FIG. 48 shows an implementation of user interface for purse amount specification in one embodiment of RIVPC operation. An interface similar to that shown in the example of FIG. 48 may be employed to specify purse amounts for association with different employee characteristics and/or parameters. For example, employee titles are listed in a title column 4801 and subtitles at 4805. For each title and/or subtitle, the interface allows for specification of a purse amount, shown in the illustrated implementation as an absolute quantity of money. In an alternative implementation, a purse may be specified as a percentage of an employee salary or other compensation benchmark. The illustrated implementation allows for purse amounts to further be specified based on employee country, for example displaying different purse amounts for US employees 4810 than for Canada employees 4815. In various other implementations, a wide variety of other employee characteristics may be included in specifying and resolving purse amounts, such as but not limited to department, level, experience and/or seniority, merit rating, vertical category, company name, company characteristics, business type, department code, program code, other descriptive business grammar and/or table tracking syntax configured strings and/or string tokens, and/or the like. In one implementation, the currencies associated with the purse amounts shown in FIG. 48 may be automatically set to a default currency for the country for which the purse is specified (e.g., US dollars for US, Canadians dollars for Canada, Indian rupees for India, and/or the like).
FIG. 49 shows an implementation of user interface for specifying benefits availability and parameters in one embodiment of RIVPC operation. An interface similar to that shown in the example of FIG. 49 may be employed, such as by a RIVPC administrator, to specify benefits characteristics for provision as selectable displays to employees. An items column 4901 allows for specification of a benefit and/or benefits category (e.g., health care, retirement, vacation, technology, insurance, education, family, transportation, compensation, life and/or disability insurance, and/or the like). A sub item column 4905 allows for specification of subcategories of benefits and/or identifiers of benefits packages 4905. For example, in the illustrated implementation, different health care benefits packages are specified in the sub item column, including a “red self” package, a “red spouse” package, a “red children” package, a “red family” package, a “yellow self” package, and a “yellow spouse” package. A notes column 4910 allows for specification and/or review of notes (e.g., text) related to a listed benefit. A brochure column 4915 may allow for uploading, attachment, viewing, and/or the like of a document (e.g., PDF, word processing document, text document, presentation file, and/or the like) describing aspects of the associated benefit. In one implementation, the brochure uploaded at 4915 may be provided upon request for display to an employee considering selection of the associated benefit. An amount column 4920 may allow for entry of a price, cost, and/or the like, as an absolute amount, that is associated with a given benefit. A % of pay column 4925 may allow for specification of may allow for entry of a price, cost, and/or the like, as a percentage of employee compensation, that is associated with a given benefit. A title column 4930 may allow for specification of one or more titles that are specifically authorized (or, in the alternative, specifically excluded) to select and/or receive the associated benefit. A non-purse column 4935 may allow for selection of an option to designate one or more benefits as non-purse benefits. Designated non-purse benefits may, for example, be provided on a mandatory basis for employees with particular characteristics, be optionally provided on a free basis, and/or otherwise be implemented separately from a purse-based benefits program. A taxable column 4940 may allow for selection of an option to designate one or more benefits as taxable benefits. Designated taxable benefits may, for example, be marked for tax withholding and/or other accounting purposes. An expandable column 4945 may allow for selection of an option to designate one or more benefits as expandable benefits. Designated expandable benefits may, for example, be supplemented, expanded, and/or otherwise modified at a time subsequent to the initial selection of the benefit. For example, an employee may choose a vacations benefit allotting them a certain number of vacation days per year. If designated as expandable, the vacations option may be expanded at a later time to include further days, provided that the employee has sufficient purse funds for that expansion. A reimbursable column 4950 may allow for specification of an option to designate one or more benefits as reimbursable benefits. Designated reimbursable benefits may, for example, be marked to indicate that payments made by an employee in connection with that benefit are to be reimbursed, in whole or in part. In one implementation, designation of a benefit as reimbursable may mark that benefit for interaction with a reimbursement component of the RIVPC to allow for automatic evaluation and/or fulfillment of reimbursement requests. A mandatory column 4955 may allow for specification of an option to designate one or more benefits as mandatory benefits. Designated mandatory benefits may, for example, be required in every benefits package, and a user may have to select a mandatory benefit in order to complete a benefits selection session. In one implementation, a designation of a benefit as mandatory may not necessarily require selection of that particular benefit, but rather may require selection of either that benefit or a benefit of equal and/or greater price. A default column 4960 may allow for specification of an option to designate one or more benefits as default benefits. Designated default benefits may automatically be included as part of a benefits package for qualifying employees (e.g., employees having characteristics matching those associated with that benefit), and they may then be allowed to de-select those benefits, provided that the benefits are not further designated as mandatory. An immediate column 4965 may allow for specification of an option to designate one or more benefits as immediate benefits. Designated immediate benefits may, for example, be marked to take effect immediately and/or be available for exploitation by the selecting employee as soon as the benefits package selections are submitted.
FIG. 50 shows an implementation of user interface for benefits package selection in one embodiment of RIVPC operation. In one implementation, an interface similar to that shown in the example of FIG. 50 may be engaged by an employee to select components of a personal benefits package. In another implementation, an interface similar to that shown in the example of FIG. 50 may be engaged by a system administrator to review, supplement, modify, and/or the like benefits packages for one or more users. For example, in one implementation, some or all benefits may be locked in for a user after an initial selection, and an administrator may be necessary to modify a benefits package thereafter. An item column 5001 indicates a general category of each benefit option (e.g., reflecting the items specified at 4901 in FIG. 49). A sub item column 5005 may allow for selection of particular benefit options (e.g., reflecting the sub items specified at 4905 in FIG. 49) corresponding to the items in the column at 5001. In one implementation, selection at 5005 of a particular benefit requiring registration and/or entry of additional employee information may cause a “Register” button, or other such interface element, to be displayed. Selection of that element may allow a user to enter the additional information for that benefit. An elected column 5010 may allow for specification of an amount of purse funds that a user elects to allocate to a particular benefit. In one implementation, a minimum allocation may be required to select a benefit at all. In one implementation, a benefit may only allow increments to the election amount to be made in particular quantized units (e.g., $1000 minimum, and $100 increments thereon). An accrued column 5015 may indicate an amount of money that has been expended in connection with the associated benefit (e.g., medical bills for the healthcare item, computing device costs for the technology item, and/or the like). In another implementation, an accrued column 5015 may indicate an amount of money accrued by an employee based on which reimbursement payments may be made (e.g., up to and including the accrued amount). A paid column 5020 may indicate an amount already paid for in association with a particular benefit.
FIG. 51 shows an implementation of logic flow for reimbursement request processing in one embodiment of RIVPC operation. A flow similar to the example shown in FIG. 51 may be employed by the RIVPC to evaluate reimbursement requests, effectuate employee reimbursements, and/or the like A reimbursement request may be received 5101, such as via entries to a web form, an email message directed to a specified reimbursement request address, an email directed to an employee's own email address and having specified content, an XML or other structured file provided by an intermediary application, and/or the like. Reimbursement parameters (e.g., a reimbursement amount, reimbursement type and/or reason, requestor identifiers, password and/or other authorization information, benefit plan identifiers and/or codes, and/or the like) may then be extracted from the request 5105. In one implementation, the request may be provided in and/or be converted to a structured file (e.g., XML file, delimited file, and/or the like) and the reimbursement parameters may be extracted according to their positions, labels, and/or the like within that file. Based on one or more reimbursement parameters (e.g., a requestor ID), the RIVPC may query benefits selections associated with the requestor 5110 and determine whether such selections exist or have been made 5115. If not, an error handling procedure may be undertaken 5120, such as providing an error message to the requestor, denying the reimbursement request, providing an opportunity to select benefits (in which case the RIVPC may return to 5110), and/or the like. If benefits selections exist, the RIVPC may compare reimbursement parameters with the benefits selections 5125 in order to determine whether or not the reimbursement request should be fulfilled 5130. For example, in one implementation, a benefit selection may comprise a health care reimbursement plan whereby any cost up to $1000 per month associated with care provided by any of a specified network of doctors is automatically reimbursable. In one implementation, a determination as to whether a particular request is reimbursable may also comprise submission of the request to an administrator and receipt of a reimbursement authorization. In such an implementation, the administrator to which the request is provided may be selected in accordance with one or more selection rules, which may be based on factors such as reimbursement parameters, a requester identifier, associated descriptive business grammar and/or table tracking syntax strings, and/or the like. If the request is determined at 5130 to not be reimbursable, then an error handling procedure may be undertaken 5135, such as to provide a message to the requestor denying the request. If the request is determined to be reimbursable, then the RIVPC may evaluate whether the request is fully reimbursable 5135. If so, then a full reimbursement may be instructed 5140, such as by generating a data record including a reimbursement authorization (which, for example, may be later accessed by a global data exchanger and/or automated data extractor to relay the reimbursement authorization to a payment facility). If full reimbursement is not warranted at 5135, the reimbursable amount may be determined 5145, for example, by querying a reimbursement cap based on the reimbursement parameters, and the provision of partial reimbursement payment may be instructed 5150. In another implementation, a partial reimbursement amount may be determined by comparing a reimbursement request to an accrued amount associated with that category of reimbursement and/or associated with the reimbursement requestor. For example, the RIVPC may track an accrual amount on a periodic basis (e.g., monthly) and pay out a requested amount subject to the limitation of an amount accrued. In one implementation, a user message noting the partial reimbursement may also be generated 5155.
FIG. 52 shows an implementation of logic flow for email message-based reimbursement request submission in one embodiment of RIVPC operation. A flow similar to that shown in the example of FIG. 52 may be employed by the RIVPC to process employees' self-addressed reimbursement email messages. An employee may submit a reimbursement request as a self-addressed email message 5201. In one implementation, the employee may mark the message as a reimbursement request by including specific text in the subject line and/or body of the message (e.g., the RIVPC may detect a reimbursement request as a self-addressed email message having the subject line “Reimbursement Request”). The RIVPC may receive the email message, such as by inspecting the email server storing the message and/or accessing the message via a global data exchanger and/or automated data extractor intermediary, and may check the message for one or more reimbursement request indicators, marks, tags, flags, and/or the like 5205. A determination may be made as to whether the reimbursement request has been detected 5210 and, if not, then the RIVPC may take no further action to effectuate a reimbursement, and may instead treat the message as an ordinary email message 5215. If, on the other hand, the RIVPC recognizes a reimbursement request at 5210, reimbursement request parameters may be extracted from the message 5220. In one implementation, reimbursement request parameters may be extracted from the body of the message based on the position of the parameters within the message, based on tags and/or flags proximate to the parameters, based on comparison of message text with known values, and/or the like. In one implementation, request parameters may be provided in an email attachment, such as in a PDF file (e.g., a scanned receipt), XML file, or other file. In one implementation, the RIVPC may apply optical character recognition or other text recognition techniques to an attachment in order to verify and/or extract request parameters. In one implementation, request parameters are extracted from the text of the email message, and a scanned copy of a receipt may be required for inclusion as an attachment for verification of the reimbursement parameters in order for the request to be authorized. In one implementation, requesty parameters may comprise the existence of an attachment, the identity of a request message sender and/or requestor, and/or the like. A determination may be made as to whether any required or desired request parameters are missing 5225. If so, then, in one implementation, a message may be provided to the employee requesting entry of the missing parameters 5230. In an alternative implementation, the reimbursement request may be immediately denied if required or desired parameters are missing at 5225. If no required or desired parameters are missing at 5225, then the RIVPC may store the reimbursement request, such as by storing the reimbursement request parameters as a database record for later access by a global data exchanger and/or automated data extractor component, and/or the like 5235.
FIG. 53 shows an implementation of user interface for reimbursement request management in one embodiment of RIVPC operation. An interface similar to that shown in the example of FIG. 53 may be employed to track reimbursement requests, such as by an employee, employer, RIVPC administrator, and/or the like. A name column 5301 includes values reflecting the name and/or other identifier of a reimbursement requestor. A submitted date column 5305 includes values reflecting the date, time, and/or the like that particular reimbursement requests were made and/or submitted. A submitted amount column 5310 includes values reflecting the amount of money for which reimbursement has been requested. A verified amount column 5315 may include values and/or admit inputs of amounts that have been authorized and/or verified as being legitimate reimbursable amounts. A receipt column 5320 may provide access to attachments, such as may comprise scanned images, PDFs, text documents, and/or the like of one or more receipts associated with a reimbursement request. A category column 5325 may include values reflecting a category, type, item, and/or the like of a reimbursement request and/or associated benefit. An item column 5330 may include values reflecting a subcategory, item, sub item, and/or the like of a reimbursement request and/or associated benefit. A notes column 5335 may include values and/or admit inputs reflecting comments, notes, and/or the like for association with a particular reimbursement request. In one implementation, notes entered for a particular reimbursement request may be provided in a message to a requestor, request fulfillment agency, and/or the like.
FIG. 54 shows an implementation of user interface for benefits selection in one embodiment of RIVPC operation. In one implementation, an interface similar to that shown in the example of FIG. 54 may be engaged by employees or other users to manage, select and/or view benefits, generate, submit and/or track reimbursement requests, and/or the like. A purse amount for the employee may be shown 5401, as well as an amount of the purse utilized 5405 and an amount remaining 5410. In one implementation, any remaining amount 5410 of the purse after benefits selection may be paid out to the employee as compensation. In another implementation, any remaining amount 5410 of the purse after benefits selection in one period may be carried over for to one or more subsequent periods for benefits selection at that time, thus possibly allowing the employee to afford more expensive benefits. A selectable listing of benefits is shown at 5415, where various categories of benefits (e.g., healthcare, retirement, vacation, etc.) and the benefits themselves (e.g., core plan-self, core plan-spouse, etc.) are shown. An employee may view details for each benefit, and a cost associated with each benefit is also provided for display. The employee may select a benefit by, for example, clicking on the displayed add option to add the benefit to his or her benefits package, provided that he or she has sufficient funds remaining in his or her purse to afford the benefit. An account area 5420 shows information about selected benefits, such as benefit identifiers and/or descriptions, an amount of benefit elected (e.g., an amount reimbursable under the benefit within a given period), an amount of expenses accrued, an amount of reimbursement requested, an amount of reimbursement verified, an amount of reimbursement paid, and/or the like. The interface further includes fields 5425 admitting entry of information regarding dependents and/or beneficiaries for particular benefits (e.g., a beneficiary of a life insurance benefit, a dependent for coverage under a health care policy, and/or the like). Specification of a dependent and/or beneficiary may be noted in association with a corresponding benefit record and may influence subsequent reimbursement and/or benefit authorizations and/or payments. The interface also includes an area 5430 admitting submission of reimbursement requests and/or receipts, including instructions for submission of a reimbursement request. In the illustrated implementation, the user submits a receipt along with request parameters entered into a web form, which are all included in an email and sent to a specified reimbursement request address.
Virtual Pay Clock
In some embodiments, the RIVPC may allow for the provision of a virtual punch clock for display to an employee, such as at an employee computer terminal, to allow the employee to indicate the start of work, end of work, break periods, and/or the like and to track employee activities, implement labor regulations and/or company labor policies, determine compensation and/or wages, and/or the like. In one implementation, the RIVPC may be configured to automatically enforce labor regulations, force breaks and/or end-of-day quitting, and/or the like. In one implementation, a virtual punch clock such as that described herein may be provided as a virtualized application to employee computing terminals in a call center or other such multi-terminal work environment.
FIG. 55 shows an implementation of user interface for virtual clock rule specification in one embodiment of RIVPC operation. In one implementation, an interface similar to that shown in the example of FIG. 55 may be engaged by an employer, RIVPC administrator, and/or the like to enter and/or generate rules, labor regulations, company work policies, wage administration rules, and/or the like for operation in conjunction with and/or enforcement by a virtual punch clock. The interface includes a first region 5501 wherein a user may enter rule inputs, and a second region 5505 where a user may specify rule outputs, limits, consequences, and/or the like. For example, in the illustrated implementation, inputs include employee title 5510 and a descriptive business grammar and/or table tracking syntax configured string 5515 having tokens including employee company 5520, employee department 5525, and employee country 5530. While particular values have been specified for title 5510, department 5525 and country 5530 in the illustrated implementation, a wild-card character (e.g., “*”) has been entered for employee company 5520. Thus, the rule is to be applied regardless of which company an employee record is associated with, provided that the other parameters of the rule are satisfied. In the illustrated implementation, satisfaction of the rule inputs implies three results: that a break must be taken every 3 hours; the total time worked per day may not exceed 12 hours; and that the pay rate is $10 per hour. It should be understood that the particular rule shown in the example of FIG. 55 is for illustrative purposes only, and any of a wide variety of other inputs or rule results may be generated and enforced in other implementations and/or embodiments of RIVPC operation. In one implementation, a rule may take as input a particular activity type identifier, so as to enforce variable pay rates, labor regulations, break policies, and/or the like based on the type of activity that an employee is engaged in.
FIG. 56 shows an implementation of logic flow for virtual clock rule generation in one embodiment of RIVPC operation. In one implementation, a flow similar to that shown in the example of FIG. 56 may be employed by the RIVPC to receive rule specifications and/or to generate virtual clock rules. A rule specification interface (e.g., an interface similar to that shown in FIG. 55) may be provided for display 5601, and rule inputs may be received therefrom 5605. A wide variety of different inputs may be specified for a virtual punch clock rule, such as but not limited to: title, employee identifiers, company, location, vertical market category, activity types and/or identifiers, department code and/or code tokens, program code and/or code tokens, other descriptive business grammar and/or table tracking syntax configured strings and/or string tokens, and/or the like. Rule specification parameters and/or results may also be received, such as but not limited to: break period requirements (e.g., time between breaks, break duration, and/or the like), work time limits, start time, end time, wages and/or pay rates (e.g., global, activity-resolved, and/or the like), time spent per activity, and/or the like. A determination may be made as to whether a rule conflict exists 5615. For example, a conflict may exist if another rule exists with identical or substantially overlapping rule inputs but a different or incompatible rule result (e.g., a first rule specifies that all employees of company XYZ must take a break every 3 hours, and a second rule specifies that all employees of company XYZ must take a break every 2 hours). If a conflict exists, an error handling procedure may be undertaken 5620, such as to reject the new rule, provide a message to the user notifying him or her of the existence of the prior conflicting rule, request re-entry of rule parameters to resolve the conflict, and/or the like. In one implementation, rules that are later in time than prior conflicting rules may replace the prior rules, such as automatically or at the option of the user generating the rule. If no conflict exists, a rule identifier may be generated 5625, such as a code, name, or other identifier by which the rule may be later queried and/or retrieved. The rule may then be stored as a rule record associating the rule identifier, rule specification parameters, and rule inputs 5630. A determination may then be made as to whether the user wishes to generate more rules 5635. If so, the RIVPC returns to 5601. Otherwise, the rule generation flow may conclude 5640.
FIG. 57 shows an implementation of user interface for virtual clock display and user interaction in one embodiment of RIVPC operation. In one implementation, an interface similar to that shown in the example of FIG. 57 may be employed to engage and/or provide access to virtual punch clock features to an employee. An area 5701 may be reserved for other applications and/or employee computer activities 5701, with the virtual punch clock application occupying a separate window 5705. In one implementation, the virtual punch clock window 5705 may be configured as a pop-up window and/or may appear in response to a click and/or mouse-over of a punch clock option and/or other employee option (e.g., a selectable interface element in an employee intranet window). The interface may be configured with one or more time keeping devices, such as a virtual analog clock 5710 and/or a virtual digital clock 5715, which may track various times, such as a world time, coordinated universal time, Greenwich mean time, and/or the like time zone variant, time worked, break time, activity time, and/or the like. The interface may further include employee identifying and/or characterizing information 5720, such as an employee name, identification number, department code, and/or the like. The interface may further provide buttons and/or other such interface elements to allow an employee or other user to clock in 5725 (e.g., to register the start of a work period), to clock out 5730 (e.g., to register the end of a work period), to start or end a break period 5735, and/or the like. The interface may further include a window 5740 whereby a user may be presented with system messages and/or status.
FIG. 58 shows an implementation of virtual clock engagement and interaction in one embodiment of RIVPC operation. In one implementation, a flow similar to that shown in the example of FIG. 58 may be employed to providing a virtual punch clock interface, tracking user activities, enforcing labor regulations, and/or the like. A selectable clock interface may be provided for display to a logged-in user 5801, and a clock-in indicator may be received therefrom 5805, such as based on the selection of a clock-in interface element by the user. The RIVPC may then track user time 5810, such as one or more of overall time, time per activity, break time, and/or the like. In one implementation, the virtual punch clock may interact with one or more other applications in order to determine which activities a user is spending time on. The RIVPC may also access labor rules based on an identifier associated with the logged-in user 5815 and/or based on other employee characteristics, and may evaluate the rules vis a vis the tracked time and/or user activities 5820. A determination may be made as to whether a violation of one or more rules has occurred and/or whether the rules call for effectuation of some other action 5825 (e.g., the recordation of a payment for the employee). If so, then the RIVPC may undertake a response to the violation and/or action imperative 5830, such as to force a break, force the employee to quit for the day, generate a notice and/or alarm for the employee and/or employee's supervisor, increment a wage record, and/or the like. A determination may be made as to whether the employee has clocked out 5835. If not, the RIVPC may continue to track the user's time 5810 and, otherwise, the flow may conclude 5840.
FIG. 59 shows an implementation of logic flow for rule retrieval in one embodiment of RIVPC operation. In one implementation, a flow similar to that shown in the example of FIG. 59 may be employed to retrieve rules, such as labor regulations embedded within the operation of a virtual punch clock, based one or more descriptive business grammar and/or table tracking syntax configured strings and/or string tokens associated with an employee. One or more user-associated descriptive business grammar and/or table tracking syntax configured strings may be queried, such as based on a user identifier, user name, user identification number, and/or the like 5940. At least one token may then be extracted from a retrieved string 5945, such as based on the position of the token within the string (e.g., if a client token is desired, the RIVPC may extract the first token of a program code such as that displayed in FIG. 6). The extracted one or more tokens may then be used to query and retrieve at least one labor rule 5950. A determination may be made as to whether any rules exist in association with the at least one token 5955 and, if not, an error handling procedure may be undertaken 5960, such as to apply one or more default and/or universal labor rules, apply no labor rules, and/or the like. If at least one rule is to be applied, the RIVPC may further compare tracked employee activity information, such as work times, with labor regulation parameters and/or otherwise evaluate the retrieved rules based on tracked user activities to determine if a violation exists and/or if further action (e.g., the recording of accrued wages) is required 5965.
FIG. 60 shows an implementation of logic flow for break enforcement in one embodiment of RIVPC operation. In one implementation, a flow similar to that shown in the example of FIG. 60 may be employed to enforce break requirements (e.g., legal obligations to provide a break period after a certain amount of work time) among employees. The RIVPC may track employee work time 6001, such as by monitoring the progress of a clock after a user clock-in action. A determination may be made as to whether the user has clocked out 6005 and, if so, the flow may conclude bolo. Otherwise, if the user has not clocked out at 6005, a determination may be made as to whether the current work time exceeds a limit 6015, such as may be defined by the corresponding break regulation and/or rule. If the work time is less than the limit, the RIVPC may return to 600i and continue to track work time. Otherwise, once the work time has exceeded the limit at 6015, a break may be forced 6020. In one implementation, the RIVPC may force a break by automatically changing the work state to a break mode. In another implementation, a break may be forced by providing a notice to the employee asking him or her to engage the break mode (e.g., by interacting with a break-mode user interface element), preventing work on other activities, and/or the like. A determination may be made as to whether the break is over 6025. Such a determination may be made, for example, by monitoring whether an automatic break termination process has engaged (e.g., automatically changing a work state from a break mode back to a normal work mode), by monitoring registration of the end of a break by a user, and/or the like. If the break is not over, the RIVPC may wait for a period of time 6030 and recheck 6025. Otherwise, the RIVPC may return to 6001 and continue tracking work time.
FIG. 61 shows an implementation of logic flow for work time rule enforcement in one embodiment of RIVPC operation. In one implementation, a flow similar to the example shown in FIG. 61 may be employed to enforce work time requirements and/or limits. The RIVPC may track work time 6101 and determine one or more work statistics 6105, such as total time worked, time worked per activity, average time per period, average time per activity, variance and/or standard deviation, and/or the like. Determined statistics may be compared with rule limits 6110 to determine if one or more of those statistics are out of bounds 6115 or otherwise at actionable levels. If so, then the RIVPC may respond to the violation 6120, such as by storing a record of the violation, reporting the violation to an employee supervisor or RIVPC administrator, generating a warning message for the employee, automatically altering a work state of the employee's computer terminal, and/or the like. If the work time statistics are not out of bounds, a determination may be made as to whether monitoring should continue 6125, such as may be based on a work state, detection of a clock-out, and/or the like. If monitoring is to continue, the RIVPC may return to 6101 to continue tracking work time. Otherwise, the flow may conclude 6130.
FIG. 62 shows an implementation of logic flow for employee payment determination in one embodiment of RIVPC operation. In one implementation, a flow similar to the example shown in FIG. 62 may be employed to track and/or administer wages. The RIVPC may track work time 6201 and query one or more pay rates based on one or more user identifiers, user-associated descriptive business grammar and/or table tracking syntax configured strings and/or string tokens, user activities, and/or the like 6205. For example, in one implementation, an employer may desire to enforce different pay rates for different employee activities, and thus pay rate records may be stored in association with and/or queried based on activity identifiers. A determination may be made as to whether one or more exceptions should be applied 6210. For example, an exception record may be stored for a particular user, department, company, location, and/or the like employee characteristic such that the pay rate may differ from that queried at 6205. If an exception exists, it may be applied 6215. The RIVPC may determine a pay amount based on the work time and the queried pay rate 6220 and may process, transfer and/or store the determined pay amount 6225. In one implementation, a stored pay amount may be accessed by a global data exchanger and/or automated data extractor for subsequent payment processing. A determination may be made as to whether to continue tracking work time 6230 and, if so, the RIVPC may return to 6201. Otherwise, the flow may conclude 6235.
RIVPC Controller
FIG. 63 illustrates inventive aspects of a RIVPC controller 6301 in a block diagram. In this embodiment, the RIVPC controller 6301 may serve to aggregate, process, store, search, serve, identify, instruct, generate, match, and/or facilitate interactions with a computer through enterprise and human resource management technologies, and/or other related data.
Typically, users, which may be people and/or other systems, may engage information technology systems (e.g., computers) to facilitate information processing. In turn, computers employ processors to process information; such processors 6303 may be referred to as central processing units (CPU). One form of processor is referred to as a microprocessor. CPUs use communicative circuits to pass binary encoded signals acting as instructions to enable various operations. These instructions may be operational and/or data instructions containing and/or referencing other instructions and data in various processor accessible and operable areas of memory 6329 (e.g., registers, cache memory, random access memory, etc.). Such communicative instructions may be stored and/or transmitted in batches (e.g., batches of instructions) as programs and/or data components to facilitate desired operations. These stored instruction codes, e.g., programs, may engage the CPU circuit components and other motherboard and/or system components to perform desired operations. One type of program is a computer operating system, which, may be executed by CPU on a computer; the operating system enables and facilitates users to access and operate computer information technology and resources. Some resources that may be employed in information technology systems include: input and output mechanisms through which data may pass into and out of a computer; memory storage into which data may be saved; and processors by which information may be processed. These information technology systems may be used to collect data for later retrieval, analysis, and manipulation, which may be facilitated through a database program. These information technology systems provide interfaces that allow users to access and operate various system components.
In one embodiment, the RIVPC controller 6301 may be connected to and/or communicate with entities such as, but not limited to: one or more users from user input devices 6311; peripheral devices 6312; an optional cryptographic processor device 6328; and/or a communications network 6313.
Networks are commonly thought to comprise the interconnection and interoperation of clients, servers, and intermediary nodes in a graph topology. It should be noted that the term “server” as used throughout this application refers generally to a computer, other device, program, or combination thereof that processes and responds to the requests of remote users across a communications network. Servers serve their information to requesting “clients.” The term “client” as used herein refers generally to a computer, program, other device, user and/or combination thereof that is capable of processing and making requests and obtaining and processing any responses from servers across a communications network. A computer, other device, program, or combination thereof that facilitates, processes information and requests, and/or furthers the passage of information from a source user to a destination user is commonly referred to as a “node.” Networks are generally thought to facilitate the transfer of information from source points to destinations. A node specifically tasked with furthering the passage of information from a source to a destination is commonly called a “router.” There are many forms of networks such as Local Area Networks (LANs), Pico networks, Wide Area Networks (WANs), Wireless Networks (WLANs), etc. For example, the Internet is generally accepted as being an interconnection of a multitude of networks whereby remote clients and servers may access and interoperate with one another.
The RIVPC controller 6301 may be based on computer systems that may comprise, but are not limited to, components such as: a computer systemization 6302 connected to memory 6329.
Computer Systemization
A computer systemization 6302 may comprise a clock 6330, central processing unit (“CPU(s)” and/or “processor(s)” (these terms are used interchangeable throughout the disclosure unless noted to the contrary)) 6303, a memory 6329 (e.g., a read only memory (ROM) 6306, a random access memory (RAM) 6305, etc.), and/or an interface bus 6307, and most frequently, although not necessarily, are all interconnected and/or communicating through a system bus 6304 on one or more (mother)board(s) 6302 having conductive and/or otherwise transportive circuit pathways through which instructions (e.g., binary encoded signals) may travel to effect communications, operations, storage, etc. Optionally, the computer systemization may be connected to an internal power source 6386. Optionally, a cryptographic processor 6326 may be connected to the system bus. The system clock typically has a crystal oscillator and generates a base signal through the computer systemization's circuit pathways. The clock is typically coupled to the system bus and various clock multipliers that will increase or decrease the base operating frequency for other components interconnected in the computer systemization. The clock and various components in a computer systemization drive signals embodying information throughout the system. Such transmission and reception of instructions embodying information throughout a computer systemization may be commonly referred to as communications. These communicative instructions may further be transmitted, received, and the cause of return and/or reply communications beyond the instant computer systemization to: communications networks, input devices, other computer systemizations, peripheral devices, and/or the like. Of course, any of the above components may be connected directly to one another, connected to the CPU, and/or organized in numerous variations employed as exemplified by various computer systems.
The CPU comprises at least one high-speed data processor adequate to execute program components for executing user and/or system-generated requests. Often, the processors themselves will incorporate various specialized processing units, such as, but not limited to: integrated system (bus) controllers, memory management control units, floating point units, and even specialized processing sub-units like graphics processing units, digital signal processing units, and/or the like. Additionally, processors may include internal fast access addressable memory, and be capable of mapping and addressing memory 529 beyond the processor itself; internal memory may include, but is not limited to: fast registers, various levels of cache memory (e.g., level 1, 2, 3, etc.), RAM, etc. The processor may access this memory through the use of a memory address space that is accessible via instruction address, which the processor can construct and decode allowing it to access a circuit path to a specific memory address space having a memory state. The CPU may be a microprocessor such as: AMD's Athlon, Duron and/or Opteron; ARM's application, embedded and secure processors; IBM and/or Motorola's DragonBall and PowerPC; IBM's and Sony's Cell processor; Intel's Celeron, Core (2) Duo, Itanium, Pentium, Xeon, and/or XScale; and/or the like processor(s). The CPU interacts with memory through instruction passing through conductive and/or transportive conduits (e.g., (printed) electronic and/or optic circuits) to execute stored instructions (i.e., program code) according to conventional data processing techniques. Such instruction passing facilitates communication within the RIVPC controller and beyond through various interfaces. Should processing requirements dictate a greater amount speed and/or capacity, distributed processors (e.g., Distributed RIVPC), mainframe, multi-core, parallel, and/or super-computer architectures may similarly be employed. Alternatively, should deployment requirements dictate greater portability, smaller Personal Digital Assistants (PDAs) may be employed.
Depending on the particular implementation, features of the RIVPC may be achieved by implementing a microcontroller such as CAST's R8051XC2 microcontroller; Intel's MCS 51 (i.e., 8051 microcontroller); and/or the like. Also, to implement certain features of the RIVPC, some feature implementations may rely on embedded components, such as: Application-Specific Integrated Circuit (“ASIC”), Digital Signal Processing (“DSP”), Field Programmable Gate Array (“FPGA”), and/or the like embedded technology. For example, any of the RIVPC component collection (distributed or otherwise) and/or features may be implemented via the microprocessor and/or via embedded components; e.g., via ASIC, coprocessor, DSP, FPGA, and/or the like. Alternately, some implementations of the RIVPC may be implemented with embedded components that are configured and used to achieve a variety of features or signal processing.
Depending on the particular implementation, the embedded components may include software solutions, hardware solutions, and/or some combination of both hardware/software solutions. For example, RIVPC features discussed herein may be achieved through implementing FPGAs, which are a semiconductor devices containing programmable logic components called “logic blocks”, and programmable interconnects, such as the high performance FPGA Virtex series and/or the low cost Spartan series manufactured by Xilinx. Logic blocks and interconnects can be programmed by the customer or designer, after the FPGA is manufactured, to implement any of the RIVPC features. A hierarchy of programmable interconnects allow logic blocks to be interconnected as needed by the RIVPC system designer/administrator, somewhat like a one-chip programmable breadboard. An FPGA's logic blocks can be programmed to perform the function of basic logic gates such as AND, and XOR, or more complex combinational functions such as decoders or simple mathematical functions. In most FPGAs, the logic blocks also include memory elements, which may be simple flip-flops or more complete blocks of memory. In some circumstances, the RIVPC may be developed on regular FPGAs and then migrated into a fixed version that more resembles ASIC implementations. Alternate or coordinating implementations may migrate RIVPC controller features to a final ASIC instead of or in addition to FPGAs. Depending on the implementation all of the aforementioned embedded components and microprocessors may be considered the “CPU” and/or “processor” for the RIVPC.
Power Source
The power source 6386 may be of any standard form for powering small electronic circuit board devices such as the following power cells: alkaline, lithium hydride, lithium ion, lithium polymer, nickel cadmium, solar cells, and/or the like. Other types of AC or DC power sources may be used as well. In the case of solar cells, in one embodiment, the case provides an aperture through which the solar cell may capture photonic energy. The power cell 6386 is connected to at least one of the interconnected subsequent components of the RIVPC thereby providing an electric current to all subsequent components. In one example, the power source 6386 is connected to the system bus component 6304. In an alternative embodiment, an outside power source 6386 is provided through a connection across the I/O 6308 interface. For example, a USB and/or IEEE 1394 connection carries both data and power across the connection and is therefore a suitable source of power.
Interface Adapters
Interface bus(ses) 6307 may accept, connect, and/or communicate to a number of interface adapters, conventionally although not necessarily in the form of adapter cards, such as but not limited to: input output interfaces (I/O) 6308, storage interfaces 6309, network interfaces 6310, and/or the like. Optionally, cryptographic processor interfaces 6327 similarly may be connected to the interface bus. The interface bus provides for the communications of interface adapters with one another as well as with other components of the computer systemization. Interface adapters are adapted for a compatible interface bus. Interface adapters conventionally connect to the interface bus via a slot architecture. Conventional slot architectures may be employed, such as, but not limited to: Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), and/or the like.
Storage interfaces 6309 may accept, communicate, and/or connect to a number of storage devices such as, but not limited to: storage devices 6314, removable disc devices, and/or the like. Storage interfaces may employ connection protocols such as, but not limited to: (Ultra) (Serial) Advanced Technology Attachment (Packet Interface) ((Ultra) (Serial) ATA(PI)), (Enhanced) Integrated Drive Electronics ((E)IDE), Institute of Electrical and Electronics Engineers (IEEE) 1394, fiber channel, Small Computer Systems Interface (SCSI), Universal Serial Bus (USB), and/or the like.
Network interfaces 6310 may accept, communicate, and/or connect to a communications network 6313. Through a communications network 6313, the RIVPC controller is accessible through remote clients 6333b (e.g., computers with web browsers) by users 6333a. Network interfaces may employ connection protocols such as, but not limited to: direct connect, Ethernet (thick, thin, twisted pair 10/100/1000 Base T, and/or the like), Token Ring, wireless connection such as IEEE 802.11a-x, and/or the like. Should processing requirements dictate a greater amount speed and/or capacity, distributed network controllers (e.g., Distributed RIVPC), architectures may similarly be employed to pool, load balance, and/or otherwise increase the communicative bandwidth required by the RIVPC controller. A communications network may be any one and/or the combination of the following: a direct interconnection; the Internet; a Local Area Network (LAN); a Metropolitan Area Network (MAN); an Operating Missions as Nodes on the Internet (OMNI); a secured custom connection; a Wide Area Network (WAN); a wireless network (e.g., employing protocols such as, but not limited to a Wireless Application Protocol (WAP), I-mode, and/or the like); and/or the like. A network interface may be regarded as a specialized form of an input output interface. Further, multiple network interfaces 6310 may be used to engage with various communications network types 6313. For example, multiple network interfaces may be employed to allow for the communication over broadcast, multicast, and/or unicast networks.
Input Output interfaces (I/O) 6308 may accept, communicate, and/or connect to user input devices 6311, peripheral devices 6312, cryptographic processor devices 6328, and/or the like. I/O may employ connection protocols such as, but not limited to: audio: analog, digital, monaural, RCA, stereo, and/or the like; data: Apple Desktop Bus (ADB), IEEE 1394a-b, serial, universal serial bus (USB); infrared; joystick; keyboard; midi; optical; PC AT; PS/2; parallel; radio; video interface: Apple Desktop Connector (ADC), BNC, coaxial, component, composite, digital, Digital Visual Interface (DVI), high-definition multimedia interface (HDMI), RCA, RF antennae, S-Video, VGA, and/or the like; wireless: 802.11a/b/g/n/x, Bluetooth, code division multiple access (CDMA), global system for mobile communications (GSM), WiMax, etc.; and/or the like. One typical output device may include a video display, which typically comprises a Cathode Ray Tube (CRT) or Liquid Crystal Display (LCD) based monitor with an interface (e.g., DVI circuitry and cable) that accepts signals from a video interface, may be used. The video interface composites information generated by a computer systemization and generates video signals based on the composited information in a video memory frame. Another output device is a television set, which accepts signals from a video interface. Typically, the video interface provides the composited video information through a video connection interface that accepts a video display interface (e.g., an RCA composite video connector accepting an RCA composite video cable; a DVI connector accepting a DVI display cable, etc.).
User input devices 6311 may be card readers, dongles, finger print readers, gloves, graphics tablets, joysticks, keyboards, mouse (mice), remote controls, retina readers, trackballs, trackpads, and/or the like.
Peripheral devices 6312 may be connected and/or communicate to I/O and/or other facilities of the like such as network interfaces, storage interfaces, and/or the like. Peripheral devices may be audio devices, cameras, dongles (e.g., for copy protection, ensuring secure transactions with a digital signature, and/or the like), external processors (for added functionality), goggles, microphones, monitors, network interfaces, printers, scanners, storage devices, video devices, video sources, visors, and/or the like.
It should be noted that although user input devices and peripheral devices may be employed, the RIVPC controller may be embodied as an embedded, dedicated, and/or monitor-less (i.e., headless) device, wherein access would be provided over a network interface connection.
Cryptographic units such as, but not limited to, microcontrollers, processors 6326, interfaces 6327, and/or devices 6328 may be attached, and/or communicate with the RIVPC controller. A MC68HC16 microcontroller, manufactured by Motorola Inc., may be used for and/or within cryptographic units. The MC68HC16 microcontroller utilizes a 16-bit multiply-and-accumulate instruction in the 16 MHz configuration and requires less than one second to perform a 512-bit RSA private key operation. Cryptographic units support the authentication of communications from interacting agents, as well as allowing for anonymous transactions. Cryptographic units may also be configured as part of CPU. Equivalent microcontrollers and/or processors may also be used. Other commercially available specialized cryptographic processors include: the Broadcom's CryptoNetX and other Security Processors; nCipher's nShield, SafeNet's Luna PCI (e.g., 7100) series; Semaphore Communications' 40 MHz Roadrunner 184; Sun's Cryptographic Accelerators (e.g., Accelerator 6000 PCIe Board, Accelerator 500 Daughtercard); Via Nano Processor (e.g., L2100, L2200, U2400) line, which is capable of performing 500+MB/s of cryptographic instructions; VLSI Technology's 33 MHz 6868; and/or the like.
Memory
Generally, any mechanization and/or embodiment allowing a processor to affect the storage and/or retrieval of information is regarded as memory 6329. However, memory is a fungible technology and resource, thus, any number of memory embodiments may be employed in lieu of or in concert with one another. It is to be understood that the RIVPC controller and/or a computer systemization may employ various forms of memory 6329. For example, a computer systemization may be configured wherein the functionality of on-chip CPU memory (e.g., registers), RAM, ROM, and any other storage devices are provided by a paper punch tape or paper punch card mechanism; of course such an embodiment would result in an extremely slow rate of operation. In a typical configuration, memory 6329 will include ROM 6306, RAM 6305, and a storage device 6314. A storage device 6314 may be any conventional computer system storage. Storage devices may include a drum; a (fixed and/or removable) magnetic disk drive; a magneto-optical drive; an optical drive (i.e., Blueray, CD ROM/RAM/Recordable (R)/ReWritable (RW), DVD R/RW, HD DVD R/RW etc.); an array of devices (e.g., Redundant Array of Independent Disks (RAID)); solid state memory devices (USB memory, solid state drives (SSD), etc.); other processor-readable storage mediums; and/or other devices of the like. Thus, a computer systemization generally requires and makes use of memory.
Component Collection
The memory 6329 may contain a collection of program and/or database components and/or data such as, but not limited to: operating system component(s) 6315 (operating system); information server component(s) 6316 (information server); user interface component(s) 6317 (user interface); Web browser component(s) 6318 (Web browser); database(s) 6319; mail server component(s) 6321; mail client component(s) 6322; cryptographic server component(s) 6320 (cryptographic server); the RIVPC component(s) 6335; and/or the like (i.e., collectively a component collection). These components may be stored and accessed from the storage devices and/or from storage devices accessible through an interface bus. Although non-conventional program components such as those in the component collection, typically, are stored in a local storage device 6314, they may also be loaded and/or stored in memory such as: peripheral devices, RAM, remote storage facilities through a communications network, ROM, various forms of memory, and/or the like.
Operating System
The operating system component 6315 is an executable program component facilitating the operation of the RIVPC controller. Typically, the operating system facilitates access of I/O, network interfaces, peripheral devices, storage devices, and/or the like. The operating system may be a highly fault tolerant, scalable, and secure system such as: Apple Macintosh OS X (Server); AT&T Nan 9; Be OS; Unix and Unix-like system distributions (such as AT&T's UNIX; Berkley Software Distribution (BSD) variations such as FreeBSD, NetBSD, OpenBSD, and/or the like; Linux distributions such as Red Hat, Ubuntu, and/or the like); and/or the like operating systems. However, more limited and/or less secure operating systems also may be employed such as Apple Macintosh OS, IBM OS/2, Microsoft DOS, Microsoft Windows 2000/2003/3.1/95/98/CE/Millenium/NT/Vista/XP (Server), Palm OS, and/or the like. An operating system may communicate to and/or with other components in a component collection, including itself, and/or the like. Most frequently, the operating system communicates with other program components, user interfaces, and/or the like. For example, the operating system may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses. The operating system, once executed by the CPU, may enable the interaction with communications networks, data, I/O, peripheral devices, program components, memory, user input devices, and/or the like. The operating system may provide communications protocols that allow the RIVPC controller to communicate with other entities through a communications network 6313. Various communication protocols may be used by the RIVPC controller as a subcarrier transport mechanism for interaction, such as, but not limited to: multicast, TCP/IP, UDP, unicast, and/or the like.
Information Server
An information server component 6316 is a stored program component that is executed by a CPU. The information server may be a conventional Internet information server such as, but not limited to Apache Software Foundation's Apache, Microsoft's Internet Information Server, and/or the like. The information server may allow for the execution of program components through facilities such as Active Server Page (ASP), ActiveX, (ANSI) (Objective-) C (++), C# and/or .NET, Common Gateway Interface (CGI) scripts, dynamic (D) hypertext markup language (HTML), FLASH, Java, JavaScript, Practical Extraction Report Language (PERL), Hypertext Pre-Processor (PHP), pipes, Python, wireless application protocol (WAP), WebObjects, and/or the like. The information server may support secure communications protocols such as, but not limited to, File Transfer Protocol (FTP); HyperText Transfer Protocol (HTTP); Secure Hypertext Transfer Protocol (HTTPS), Secure Socket Layer (SSL), messaging protocols (e.g., America Online (AOL) Instant Messenger (AIM), Application Exchange (APEX), ICQ, Internet Relay Chat (IRC), Microsoft Network (MSN) Messenger Service, Presence and Instant Messaging Protocol (PRIM), Internet Engineering Task Force's (IETF's) Session Initiation Protocol (SIP), SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE), open XML-based Extensible Messaging and Presence Protocol (XMPP) (i.e., Jabber or Open Mobile Alliance's (OMA's) Instant Messaging and Presence Service (IMPS)), Yahoo! Instant Messenger Service, and/or the like. The information server provides results in the form of Web pages to Web browsers, and allows for the manipulated generation of the Web pages through interaction with other program components. After a Domain Name System (DNS) resolution portion of an HTTP request is resolved to a particular information server, the information server resolves requests for information at specified locations on the RIVPC controller based on the remainder of the HTTP request. For example, a request such as http://123.124.125.126/myInformation.html might have the IP portion of the request “123.124.125.126” resolved by a DNS server to an information server at that IP address; that information server might in turn further parse the http request for the “/myInformation.html” portion of the request and resolve it to a location in memory containing the information “myInformation.html.” Additionally, other information serving protocols may be employed across various ports, e.g., FTP communications across port 21, and/or the like. An information server may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the information server communicates with the RIVPC database 6319, operating systems, other program components, user interfaces, Web browsers, and/or the like.
Access to the RIVPC database may be achieved through a number of database bridge mechanisms such as through scripting languages as enumerated below (e.g., CGI) and through inter-application communication channels as enumerated below (e.g., CORBA, WebObjects, etc.). Any data requests through a Web browser are parsed through the bridge mechanism into appropriate grammars as required by the RIVPC. In one embodiment, the information server would provide a Web form accessible by a Web browser. Entries made into supplied fields in the Web form are tagged as having been entered into the particular fields, and parsed as such. The entered terms are then passed along with the field tags, which act to instruct the parser to generate queries directed to appropriate tables and/or fields. In one embodiment, the parser may generate queries in standard SQL by instantiating a search string with the proper join/select commands based on the tagged text entries, wherein the resulting command is provided over the bridge mechanism to the RIVPC as a query. Upon generating query results from the query, the results are passed over the bridge mechanism, and may be parsed for formatting and generation of a new results Web page by the bridge mechanism. Such a new results Web page is then provided to the information server, which may supply it to the requesting Web browser.
Also, an information server may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses.
User Interface
The function of computer interfaces in some respects is similar to automobile operation interfaces. Automobile operation interface elements such as steering wheels, gearshifts, and speedometers facilitate the access, operation, and display of automobile resources, functionality, and status. Computer interaction interface elements such as check boxes, cursors, menus, scrollers, and windows (collectively and commonly referred to as widgets) similarly facilitate the access, operation, and display of data and computer hardware and operating system resources, functionality, and status. Operation interfaces are commonly called user interfaces. Graphical user interfaces (GUIs) such as the Apple Macintosh Operating System's Aqua, IBM's OS/2, Microsoft's Windows 2000/2003/3.1/95/98/CE/Millenium/NT/XP/Vista/7 (i.e., Aero), Unix's X-Windows (e.g., which may include additional Unix graphic interface libraries and layers such as K Desktop Environment (KDE), mythTV and GNU Network Object Model Environment (GNOME)), web interface libraries (e.g., ActiveX, AJAX, (D)HTML, FLASH, Java, JavaScript, etc. interface libraries such as, but not limited to, Dojo, jQuery(UI), MooTools, Prototype, script.aculo.us, SWFObject, Yahoo! User Interface, any of which may be used and) provide a baseline and means of accessing and displaying information graphically to users.
A user interface component 6317 is a stored program component that is executed by a CPU. The user interface may be a conventional graphic user interface as provided by, with, and/or atop operating systems and/or operating environments such as already discussed. The user interface may allow for the display, execution, interaction, manipulation, and/or operation of program components and/or system facilities through textual and/or graphical facilities. The user interface provides a facility through which users may affect, interact, and/or operate a computer system. A user interface may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the user interface communicates with operating systems, other program components, and/or the like. The user interface may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses.
Web Browser
A Web browser component 6318 is a stored program component that is executed by a CPU. The Web browser may be a conventional hypertext viewing application such as Microsoft Internet Explorer or Netscape Navigator. Secure Web browsing may be supplied with 128 bit (or greater) encryption by way of HTTPS, SSL, and/or the like. Web browsers allowing for the execution of program components through facilities such as ActiveX, AJAX, (D)HTML, FLASH, Java, JavaScript, web browser plug-in APIs (e.g., FireFox, Safari Plug-in, and/or the like APIs), and/or the like. Web browsers and like information access tools may be integrated into PDAs, cellular telephones, and/or other mobile devices. A Web browser may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the Web browser communicates with information servers, operating systems, integrated program components (e.g., plug-ins), and/or the like; e.g., it may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses. Of course, in place of a Web browser and information server, a combined application may be developed to perform similar functions of both. The combined application would similarly affect the obtaining and the provision of information to users, user agents, and/or the like from the RIVPC enabled nodes. The combined application may be nugatory on systems employing standard Web browsers.
Mail Server
A mail server component 6321 is a stored program component that is executed by a CPU 6303. The mail server may be a conventional Internet mail server such as, but not limited to sendmail, Microsoft Exchange, and/or the like. The mail server may allow for the execution of program components through facilities such as ASP, ActiveX, (ANSI) (Objective-) C (++), C# and/or .NET, CGI scripts, Java, JavaScript, PERL, PHP, pipes, Python, WebObjects, and/or the like. The mail server may support communications protocols such as, but not limited to: Internet message access protocol (IMAP), Messaging Application Programming Interface (MAPI)/Microsoft Exchange, post office protocol (POP3), simple mail transfer protocol (SMTP), and/or the like. The mail server can route, forward, and process incoming and outgoing mail messages that have been sent, relayed and/or otherwise traversing through and/or to the RIVPC.
Access to the RIVPC mail may be achieved through a number of APIs offered by the individual Web server components and/or the operating system.
Also, a mail server may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, information, and/or responses.
Mail Client
A mail client component 6322 is a stored program component that is executed by a CPU 6303. The mail client may be a conventional mail viewing application such as Apple Mail, Microsoft Entourage, Microsoft Outlook, Microsoft Outlook Express, Mozilla, Thunderbird, and/or the like. Mail clients may support a number of transfer protocols, such as: IMAP, Microsoft Exchange, POP3, SMTP, and/or the like. A mail client may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the mail client communicates with mail servers, operating systems, other mail clients, and/or the like; e.g., it may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, information, and/or responses. Generally, the mail client provides a facility to compose and transmit electronic mail messages.
Cryptographic Server
A cryptographic server component 6320 is a stored program component that is executed by a CPU 6303, cryptographic processor 6326, cryptographic processor interface 6327, cryptographic processor device 6328, and/or the like. Cryptographic processor interfaces will allow for expedition of encryption and/or decryption requests by the cryptographic component; however, the cryptographic component, alternatively, may run on a conventional CPU. The cryptographic component allows for the encryption and/or decryption of provided data. The cryptographic component allows for both symmetric and asymmetric (e.g., Pretty Good Protection (PGP)) encryption and/or decryption. The cryptographic component may employ cryptographic techniques such as, but not limited to: digital certificates (e.g., X.509 authentication framework), digital signatures, dual signatures, enveloping, password access protection, public key management, and/or the like. The cryptographic component will facilitate numerous (encryption and/or decryption) security protocols such as, but not limited to: checksum, Data Encryption Standard (DES), Elliptical Curve Encryption (ECC), International Data Encryption Algorithm (IDEA), Message Digest 5 (MD5, which is a one way hash function), passwords, Rivest Cipher (RC5), Rijndael, RSA (which is an Internet encryption and authentication system that uses an algorithm developed in 1977 by Ron Rivest, Adi Shamir, and Leonard Adleman), Secure Hash Algorithm (SHA), Secure Socket Layer (SSL), Secure Hypertext Transfer Protocol (HTTPS), and/or the like. Employing such encryption security protocols, the RIVPC may encrypt all incoming and/or outgoing communications and may serve as node within a virtual private network (VPN) with a wider communications network. The cryptographic component facilitates the process of “security authorization” whereby access to a resource is inhibited by a security protocol wherein the cryptographic component effects authorized access to the secured resource. In addition, the cryptographic component may provide unique identifiers of content, e.g., employing and MD5 hash to obtain a unique signature for an digital audio file. A cryptographic component may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. The cryptographic component supports encryption schemes allowing for the secure transmission of information across a communications network to enable the RIVPC component to engage in secure transactions if so desired. The cryptographic component facilitates the secure accessing of resources on the RIVPC and facilitates the access of secured resources on remote systems; i.e., it may act as a client and/or server of secured resources. Most frequently, the cryptographic component communicates with information servers, operating systems, other program components, and/or the like. The cryptographic component may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses.
The RIVPC Database
The RIVPC database component 6319 may be embodied in a database and its stored data. The database is a stored program component, which is executed by the CPU; the stored program component portion configuring the CPU to process the stored data. The database may be a conventional, fault tolerant, relational, scalable, secure database such as Oracle or Sybase. Relational databases are an extension of a flat file. Relational databases consist of a series of related tables. The tables are interconnected via a key field. Use of the key field allows the combination of the tables by indexing against the key field; i.e., the key fields act as dimensional pivot points for combining information from various tables. Relationships generally identify links maintained between tables by matching primary keys. Primary keys represent fields that uniquely identify the rows of a table in a relational database. More precisely, they uniquely identify rows of a table on the “one” side of a one-to-many relationship.
Alternatively, the RIVPC database may be implemented using various standard data-structures, such as an array, hash, (linked) list, struct, structured text file (e.g., XML), table, and/or the like. Such data-structures may be stored in memory and/or in (structured) files. In another alternative, an object-oriented database may be used, such as Frontier, ObjectStore, Poet, Zope, and/or the like. Object databases can include a number of object collections that are grouped and/or linked together by common attributes; they may be related to other object collections by some common attributes. Object-oriented databases perform similarly to relational databases with the exception that objects are not just pieces of data but may have other types of functionality encapsulated within a given object. If the RIVPC database is implemented as a data-structure, the use of the RIVPC database 6319 may be integrated into another component such as the RIVPC component 6335. Also, the database may be implemented as a mix of data structures, objects, and relational structures. Databases may be consolidated and/or distributed in countless variations through standard data processing techniques. Portions of databases, e.g., tables, may be exported and/or imported and thus decentralized and/or integrated.
In one embodiment, the database component 6319 includes several tables 6319a-s. A ClientProgram table 6319a may include fields such as, but not limited to: ProgramID, ProgramCode, ProgramName, Description, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, Timestamp (TS), AutoDeductFlag, SalesID foreign key (FK), ClientID (FK), CountryID (FK), BusinessTypeID (FK), VerticalID (FK), ProgramTypeID (FK), EntityID (FK), InvoiceGrouplD (FK), and/or the like. A Sales table 6319b may include fields such as, but not limited to: SalesID, SalesName, SalesCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A ProgramType table 6319c may include fields such as, but not limited to: ProgramTypeID, ProgramTypeName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A BusinessType table 6319d may include fields such as, but not limited to: BusinessTypeID, BusinessTypeCode, BusinessTypeName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A ClientProgramHistory table 6319e may include fields such as, but not limited to: ProgramHistoryID, OldProgramCode, ChangeDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ProgramID (FK), and/or the like. A Country table 6319f may include fields such as, but not limited to: CountryID, CountryName, CountryCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A LegalEntity table 6319g may include fields such as, but not limited to: EntityID, EntityName, EntityCode, TaxID, ChairmanName, SecretaryName, DirectorName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CurrencyID (FK), CountryID (FK), and/or the like. A Client table 6319h may include fields such as, but not limited to: ClientID, ClientName, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CountryID (FK), VerticalID (FK) and/or the like. A Vertical table 6319i may include fields such as, but not limited to: VerticalID, VerticalName, VerticalCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A DepartmentCode table 6319j may include fields such as, but not limited to: DepartmentCodeID, DepartmentCode, DepartmentFullName, TreeLevel, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, DepartmentID (FK), EntityID (FK), LocationlD (FK), ClassID (FK), SubClassID (FK), and/or the like. A Department table 6319k may include fields such as, but not limited to: DepartmentID, Name, Code, Type, CreatedBy, CreatedDate, TS, and/or the like. A DepartmentHistory table 63191 may include fields such as, but not limited to: DepartmentHistoryID, DepartmentFullName, DepartmentCode, DepartmentID, ParentDepartmentID, ChangedDepartmentID, ChangedDate, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A Location table 6319m may include fields such as, but not limited to: LocationID, LocationName, LocationCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, CountryID (FK), and/or the like. A Class table 6319n may include fields such as, but not limited to: ClassID, ClassName, ClassCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, and/or the like. A SubClass table 63190 may include fields such as, but not limited to: SubClassID, SubClassName, SubClassCode, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ClassID (FK), SubClassTypeID (FK), and/or the like. An Assignment table 6319p may include fields such as, but not limited to: AssignmentID, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, ProgramID (FK), DepartmentCodeID (FK), and/or the like. An Employee table 6319q may include fields such as, but not limited to: UserID, GUID, UserName, Email, SubTitleID, SubFunctionID, ISOwner, StartDate, EndDate, CreatedBy, CreatedDate, UpdatedBy, UpdatedDate, TS, TitleID (FK), FunctionlD (FK), DepartmentCodeID, Benefits, Reimbursements, and/or the like. A Universal Data Library table 6319r may include fields such as, but not limited to: variable_ID, family, subfamily, field_name, display_name, type, category, used_by, associated_database(s), associated_table(s), associated_field(s), reformatting_instruction(s), value_combination_instruction(s), and/or the like. A Data Transaction table 6319s may include fields such as, but not limited to: transaction_ID, variable_ID(s), schedule and/or trigger_condition(s), data_repository_ID, data_repository_address, report_type, data_layout and/or data_configuration, file_type, file_name, file_password, program_code, department_code, limiter, chooser, and/or the like. One or more of the tables discussed above may support and/or track multiple entity accounts on a RIVPC.
In one embodiment, the RIVPC database may interact with other database systems. For example, employing a distributed database system, queries and data access by search RIVPC component may treat the combination of the RIVPC database, an integrated data security layer database as a single database entity.
In one embodiment, user programs may contain various user interface primitives, which may serve to update the RIVPC. Also, various accounts may require custom database tables depending upon the environments and the types of clients the RIVPC may need to serve. It should be noted that any unique fields may be designated as a key field throughout. In an alternative embodiment, these tables have been decentralized into their own databases and their respective database controllers (i.e., individual database controllers for each of the above tables). Employing standard data processing techniques, one may further distribute the databases over several computer systemizations and/or storage devices. Similarly, configurations of the decentralized database controllers may be varied by consolidating and/or distributing the various database components 6319a-s. The RIVPC may be configured to keep track of various settings, inputs, and parameters via database controllers.
The RIVPC database may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the RIVPC database communicates with the RIVPC component, other program components, and/or the like. The database may contain, retain, and provide information regarding other nodes and data.
The RIVPCs
The RIVPC component 6335 is a stored program component that is executed by a CPU. In one embodiment, the RIVPC component incorporates any and/or all combinations of the aspects of the RIVPC that was discussed in the previous figures. As such, the RIVPC affects accessing, obtaining and the provision of information, services, transactions, and/or the like across various communications networks.
The RIVPC component enables the management of enterprise and human resources, the provision of tailored and/or personalized computing experiences, massively scalable monitoring and regulation of personnel, efficient collection, organization, distribution, and presentation of enterprise data, and/or the like and use of the RIVPC.
The RIVPC component enabling access of information between nodes may be developed by employing standard development tools and languages such as, but not limited to: Apache components, Assembly, ActiveX, binary executables, (ANSI) (Objective-) C (++), C# and/or .NET, database adapters, CGI scripts, Java, JavaScript, mapping tools, procedural and object oriented development tools, PERL, PHP, Python, shell scripts, SQL commands, web application server extensions, web development environments and libraries (e.g., Microsoft's ActiveX; Adobe AIR, FLEX & FLASH; AJAX; (D)HTML; Dojo, Java; JavaScript; jQuery(UI); MooTools; Prototype; script.aculo.us; Simple Object Access Protocol (SOAP); SWFObject; Yahoo! User Interface; and/or the like), WebObjects, and/or the like. In one embodiment, the RIVPC server employs a cryptographic server to encrypt and decrypt communications. The RIVPC component may communicate to and/or with other components in a component collection, including itself, and/or facilities of the like. Most frequently, the RIVPC component communicates with the RIVPC database, operating systems, other program components, and/or the like. The RIVPC may contain, communicate, generate, obtain, and/or provide program component, system, user, and/or data communications, requests, and/or responses.
Distributed RIVPCs
The structure and/or operation of any of the RIVPC node controller components may be combined, consolidated, and/or distributed in any number of ways to facilitate development and/or deployment. Similarly, the component collection may be combined in any number of ways to facilitate deployment and/or development. To accomplish this, one may integrate the components into a common code base or in a facility that can dynamically load the components on demand in an integrated fashion.
The component collection may be consolidated and/or distributed in countless variations through standard data processing and/or development techniques. Multiple instances of any one of the program components in the program component collection may be instantiated on a single node, and/or across numerous nodes to improve performance through load-balancing and/or data-processing techniques. Furthermore, single instances may also be distributed across multiple controllers and/or storage devices; e.g., databases. All program component instances and controllers working in concert may do so through standard data processing communication techniques.
The configuration of the RIVPC controller will depend on the context of system deployment. Factors such as, but not limited to, the budget, capacity, location, and/or use of the underlying hardware resources may affect deployment requirements and configuration. Regardless of if the configuration results in more consolidated and/or integrated program components, results in a more distributed series of program components, and/or results in some combination between a consolidated and distributed configuration, data may be communicated, obtained, and/or provided. Instances of components consolidated into a common code base from the program component collection may communicate, obtain, and/or provide data. This may be accomplished through intra-application data processing communication techniques such as, but not limited to: data referencing (e.g., pointers), internal messaging, object instance variable communication, shared memory space, variable passing, and/or the like.
If component collection components are discrete, separate, and/or external to one another, then communicating, obtaining, and/or providing data with and/or to other component components may be accomplished through inter-application data processing communication techniques such as, but not limited to: Application Program Interfaces (API) information passage; (distributed) Component Object Model ((D)COM), (Distributed) Object Linking and Embedding ((D)OLE), and/or the like), Common Object Request Broker Architecture (CORBA), local and remote application program interfaces Jini, Remote Method Invocation (RMI), SOAP, process pipes, shared files, and/or the like. Messages sent between discrete component components for inter-application communication or within memory spaces of a singular component for intra-application communication may be facilitated through the creation and parsing of a grammar. A grammar may be developed by using standard development tools such as lex, yacc, XML, and/or the like, which allow for grammar generation and parsing functionality, which in turn may form the basis of communication messages within and between components. For example, a grammar may be arranged to recognize the tokens of an HTTP post command, e.g.:

    
    
        w3c-post http:// . . . Value1
    
    


where Value1 is discerned as being a parameter because “http://” is part of the grammar syntax, and what follows is considered part of the post value. Similarly, with such a grammar, a variable “Value1” may be inserted into an “http://” post command and then sent. The grammar syntax itself may be presented as structured data that is interpreted and/or other wise used to generate the parsing mechanism (e.g., a syntax description text file as processed by lex, yacc, etc.). Also, once the parsing mechanism is generated and/or instantiated, it itself may process and/or parse structured data such as, but not limited to: character (e.g., tab) delineated text, HTML, structured text streams, XML, and/or the like structured data. In another embodiment, inter-application data processing protocols themselves may have integrated and/or readily available parsers (e.g., the SOAP parser) that may be employed to parse communications data. Further, the parsing grammar may be used beyond message parsing, but may also be used to parse: databases, data collections, data stores, structured data, and/or the like. Again, the desired configuration will depend upon the context, environment, and requirements of system deployment.
In order to address various issues and improve over the prior art, the invention is directed to apparatuses, methods and systems for an automated data extractor. The entirety of this application (including the Cover Page, Title, Headings, Field, Background, Summary, Brief Description of the Drawings, Detailed Description, Claims, Abstract, Figures, and otherwise) shows by way of illustration various embodiments in which the claimed inventions may be practiced. The advantages and features of the application are of a representative sample of embodiments only, and are not exhaustive and/or exclusive. They are presented only to assist in understanding and teach the claimed principles. It should be understood that they are not representative of all claimed inventions. As such, certain aspects of the disclosure have not been discussed herein. That alternate embodiments may not have been presented for a specific portion of the invention or that further undescribed alternate embodiments may be available for a portion is not to be considered a disclaimer of those alternate embodiments. It will be appreciated that many of those undescribed embodiments incorporate the same principles of the invention and others are equivalent. Thus, it is to be understood that other embodiments may be utilized and functional, logical, organizational, structural and/or topological modifications may be made without departing from the scope and/or spirit of the disclosure. As such, all examples and/or embodiments are deemed to be non-limiting throughout this disclosure. Also, no inference should be drawn regarding those embodiments discussed herein relative to those not discussed herein other than it is as such for purposes of reducing space and repetition. For instance, it is to be understood that the logical and/or topological structure of any combination of any program components (a component collection), other components and/or any present feature sets as described in the figures and/or throughout are not limited to a fixed operating order and/or arrangement, but rather, any disclosed order is exemplary and all equivalents, regardless of order, are contemplated by the disclosure. Furthermore, it is to be understood that such features are not limited to serial execution, but rather, any number of threads, processes, services, servers, and/or the like that may execute asynchronously, concurrently, in parallel, simultaneously, synchronously, and/or the like are contemplated by the disclosure. As such, some of these features may be mutually contradictory, in that they cannot be simultaneously present in a single embodiment. Similarly, some features are applicable to one aspect of the invention, and inapplicable to others. In addition, the disclosure includes other inventions not presently claimed. Applicant reserves all rights in those presently unclaimed inventions including the right to claim such inventions, file additional applications, continuations, continuations in part, divisions, and/or the like thereof. As such, it should be understood that advantages, embodiments, examples, functional, features, logical, organizational, structural, topological, and/or other aspects of the disclosure are not to be considered limitations on the disclosure as defined by the claims or limitations on equivalents to the claims. It is to be understood that, depending on the particular needs and/or characteristics of a RIVPC individual and/or enterprise user, database configuration and/or relational model, data type, data transmission and/or network framework, syntax structure, and/or the like, various embodiments of the RIVPC, may be implemented that enable a great deal of flexibility and customization. The instant disclosure discusses embodiments of the RIVPC directed to manipulation and storage of business data and enterprise-scale operations. However, it is to be understood that the systems described herein may be readily configured and/or customized for a wide variety of other applications and/or implementations. For example, aspects of the RIVPC may be adapted for non-enterprise and/or personal data management, efficient data access by mobile devices, and/or the like applications. It is to be understood that the RIVPC may be further adapted to other implementations or data management applications.

## Claims

1. A rule-integrated virtual punch clock processor-implemented method, comprising:
providing a virtual punch clock interface for display to a user;
receiving a clock-in indicator and a user information via the virtual punch clock interface;
incrementing a user work timer following receipt of the clock-in indicator and the user information;
querying a database using the user information to obtain a data-structure-tracking syntax-configured string associated with the user information, wherein the syntax-configured string consists of a plurality of component parts, delimited by syntax separators, and wherein each part of the string tracks a separate data structure;
utilizing the data-structure tracking syntax-configured string and the user information to generate a request to at least one business grammar rule database containing a plurality of business grammar rules for an enterprise;
selectively evaluating and obtaining at least one universal variable based on the user information and the evaluation of the business grammar rules for the enterprise and based on a presence of user-defined associated universal variables for at least one table field, wherein said universal variables comprise user-defined intermediate data objects that allow access and mapping of logically interrelated table fields in a plurality disparate relational databases and external data sources containing enterprise-specific data, and wherein the universal data variables are organized into a hierarchical structure following the business grammar construct for the enterprise, where each segment of the hierarchy follows a user-defined business grammar token type, and wherein the selective evaluation and use of the universal variable for mapping and access is also dependent on the evaluated business grammar rules for the enterprise;
obtaining and evaluating additional data comprising the a user activities based on the presence and evaluation of at least one universal variable and determining at least one application that is used by the user after the receipt of a clock-in indicator;
evaluating the at least one extracted enterprise business grammar rule based on the user work timer, monitoring the progress of the work timer aider the receipt of a clock-in indicator;
determining from the evaluation of said at least one extracted enterprise business grammar rule and said at least one universal variable, the application that is used by the user and user work timer whether a violation of the extracted rule has occurred, determining whether the at least one extracted enterprise business grammar rule conflicts with any other business grammar rule for the enterprise;
determining the priority of the conflicting extracted enterprise business grammar rules and revising the determination of whether a violation of the extracted rule has occurred based on the priority determination; and
performing a response action based on an outcome of the determination that a violation of the at least one extracted enterprise business grammar rule has occurred, wherein a response remedies the occurred violation.

2. The method of claim 1, wherein the virtual punch clock interface is provided a part of a virtualized application at a user computer terminal.

3. The method of claim 1, wherein the user information comprises a descriptive business grammar configured string.

4. The method of claim 1, wherein requesting at least one business grammar rule based on a user information associated with the user further comprises:
querying at least one descriptive business grammar configured string based on the user information;
extracting at least one token from the descriptive business grammar configured string; and
accessing the at least one rule based on the at least one token.

5. The method of claim 4, wherein the descriptive business grammar configured string comprises a department code.

6. The method of claim 4, wherein the descriptive business grammar configured string comprises a program code.

7. The method of claim 1, wherein at least one business grammar rule is an at least one labor regulation.

8. The method of claim 7, wherein the at least one labor regulation enforces a break time requirement.

9. The method of claim 8, wherein the response action comprises forcing a break period.

10. The method of claim 1, wherein the at least one business grammar rule is a company labor policy.

11. The method of claim 1, wherein the at least one business grammar rule is a pay rate specification.

12. The method of claim 11, wherein the pay rate specification is activity specific, and wherein requesting at least one business grammar rule is further based on an activity identifier.

13. The method of claim 11, wherein the response action comprises processing a payment based on the pay rate and the user work timer.

14. The method of claim 1, wherein the response action comprises generation of a violation indicator.

15. The method of claim 14, wherein the violation indicator is provided as a warning message to the user.

16. The method of claim 14, wherein the violation indicator is provided as a warning message to a supervisor of the user.

17. The method of claim 1, wherein evaluating the at least one business grammar rule based on the user work timer further comprises:
determining at least one work time statistic based on the user work timer; and
evaluating the at least one business grammar rule based on the at least one work time statistic.

18. A rule-integrated virtual punch clock apparatus, comprising:
a memory;
a processor disposed in communication with said memory and configured to issue a plurality of processing instructions stored in the memory, wherein the processor issues instructions to:
provide a virtual punch clock interface for display to a user;
provide an interface to allow entering and revising at least one rule in a database of business grammar rules applicable to a plurality of users for an enterprise;
receive a dock-in indicator and a user information via the virtual punch dock interface;
increment a user work timer following receipt of the dock-in indicator and the user information;
query a database using the user information to obtain a data-structure-tracking syntax-configured string associated with the user information, wherein the syntax-configured string consists of a plurality of component parts, delimited by syntax separators, and wherein each part of the string tracks a separate data structure;
utilize the data-structure tracking syntax-configured string and the, user information to generate a request to at least one business grammar rule database containing a plurality of business grammar rules for an enterprise;
selectively evaluate and obtain at least one universal variable based on the user information and the evaluation of the business grammar rules for the enterprise and based on a presence of user-defined associated universal variables for at least one table field, wherein said universal variables comprise user-defined intermediate data objects that allow access and mapping of logically interrelated table fields in a plurality disparate relational databases and external data sources containing enterprise-specific data, and wherein the universal data variables are organized into a hierarchical structure following the business grammar construct for the enterprise, where each segment of the hierarchy follows a enterprise business grammar token type, and wherein the selective evaluation and use of the universal variable for mapping and access is also dependent on the evaluated business grammar rules for the enterprise;
obtain and evaluate additional data comprising a user activities based on the presence and evaluation of at least one universal variable and comprising determining at least one application that is used by the user after the receipt of a clock-in indicator;
evaluate the at least one extracted enterprise business grammar rule based on the user work timer, monitoring the progress of the work timer after the receipt of a clock-in indicator;
determine from the evaluation of said at least one extracted enterprise business grammar rule and said at least one universal variable, the application that is used by the user and user work timer whether a violation of the extracted rule has occurred,
determine whether the at least one extracted enterprise business grammar rule conflicts with any other business grammar rule for the enterprise;
determine the priority of the conflicting extracted enterprise user-specific business grammar rules and revising the determination of whether a violation of the extracted rule has occurred based on the priority determination; and
perform a response action based on an outcome of the determination that a violation of the at least one extracted enterprise business grammar rule has occurred.

19. A non-transitory processor readable computer memory for a rule-integrated virtual punch clock processor, said media comprising:
A plurality of processing instructions stored in the medium and issuable by a processor to:
provide a virtual punch clock interface for display to a user;
provide an interface to allow entering and revising at least one rule in a database of business grammar rules applicable to a plurality of users for an enterprise;
receive a clock-in indicator and a user information via the virtual punch clock interface;
increment a user work timer following receipt of the clock-in indicator and the user information;
query a database using the user information to obtain a data-structure-tracking syntax-configured string associated with the user information, wherein the syntax-configured string consists of a plurality of component parts, delimited by syntax separators, and wherein each part of the string tracks a separate data structure;
utilize the data-structure tracking syntax-configured string and the user information to generate a request to at least one business grammar rule database containing a plurality of business grammar rules for an enterprise,
selectively evaluate and obtain at least one universal variable based on the user information and the evaluation of the business grammar rules for the enterprise and based on a presence of user-defined associated universal variables for at least one table field, wherein said universal variables comprise user-defined intermediate data objects that allow access and mapping of logically interrelated table fields in a plurality disparate relational databases and external data sources containing enterprise-specific data, and wherein the universal data variables are organized into a hierarchical structure following the business grammar construct for the enterprise, where each segment of the hierarchy follows a user-defined business grammar token type, and wherein the selective evaluation and use of the universal variable for mapping and access is also dependent on the evaluated business grammar rules for the enterprise;
obtain and evaluate additional data comprising a the user activities based on the presence and evaluation of at least one universal variable and comprising determining at least one application that is used by the user after the receipt of a clock-in indicator;
evaluate the at least one extracted enterprise business grammar rule based on the user work timer, monitoring the progress of the work timer after the receipt of a clock-in indicator;
determine from the evaluation of said at least one extracted enterprise business grammar rule and said at least one universal variable, the application that is used by the user and user work timer whether a violation of the extracted-rule has occurred, determine whether the at least one extracted enterprise business grammar rule conflicts with any other business grammar rule for the enterprise same user;
determine the priority of the conflicting extracted enterprise business grammar rules and revising the determination of whether a violation of the extracted rule has occurred based on the priority determination; and
perform a response action based on an outcome of the determination that a violation of the at least one extracted enterprise business grammar rule has occurred.

20. A rule-integrated virtual punch clock processor-implemented method, comprising:
providing a virtual punch clock interface for display to a user;
receiving a clock-in indicator and a user information via the virtual punch clock interface;
incrementing a user work timer following receipt of the clock-in indicator and the user information;
querying a database using the user information to obtain a data-structure-tracking syntax-configured string associated with the user information, wherein the syntax-configured string consists of a plurality of component parts, delimited by syntax separators, and wherein each part of the string tracks a separate data structure;
utilizing user identifier associated with the user and the data-structure tracking syntax-configured string to extract and access at least one enterprise business grammar rule from a database of business grammar rules comprising labor regulation rules on break time requirements for employees of an enterprise;
selectively evaluating and obtaining at least one universal variable based on the user information and the evaluation of the business grammar rules for the enterprise and based on a presence of user-defined associated universal variables for at least one table field, wherein said universal variables comprise user-defined intermediate data objects that allow access and mapping of logically interrelated table fields in a plurality disparate relational databases and external data sources containing enterprise-specific data, and wherein the universal data variables are organized into a hierarchical structure following the business grammar construct for the enterprise, where each segment of the hierarchy follows a user-defined business grammar token type, and wherein the selective evaluation and use of the universal variable for mapping and access is also dependent on the evaluated business grammar rules for the enterprise;
obtaining and evaluating additional data comprising a user activities based on the presence and evaluation of at least one universal variable and comprising determining at least one application that is used by the user after the receipt of a clock-in indicator;
evaluating the at least one extracted enterprise business grammar rule based on the user work timer, monitoring the progress of the work timer after the receipt of a clock-in indicator;
determining from the evaluation of said at least one extracted enterprise business grammar rule and said at least one universal variable, the application that is used by the user and user work timer whether a violation of the extracted rule has occurred,
determining whether the at least one extracted enterprise business grammar rule conflicts with any other business grammar rule for the enterprise;
determining the priority of the conflicting extracted enterprise business grammar rules and revising the determination of whether a violation of the extracted rule has occurred based on the priority determination; and
performing a response action based on an outcome of the determination of violation of the at least one extracted enterprise business grammar rule has occurred, wherein such a response remedies the occurred violation.

21. A rule-integrated virtual punch clock processor-implemented method, comprising:
providing a virtual punch clock interface for display to a employee;
providing an interface to allow entering and revising at least one rule in a database of business grammar rules applicable to a plurality of employees for an enterprise;
incrementing an employee work timer following receipt of the clock-in indicator;
receiving a clock-in indicator and the employee information via the virtual punch clock interface;
incrementing an employee work timer following receipt of the clock-in indicator and the employee information;
querying a database using the user information to obtain a data-structure-tracking syntax-configured string associated with the user information, wherein the syntax-configured string consists of a plurality of component parts, delimited by syntax separators, and wherein each part of the string tracks a separate data structure;
utilizing the data-structure tracking syntax-configured string and the employee information to generate a request to at least one business grammar rule database containing a plurality of business grammar rules for an enterprise;
selectively evaluating and obtaining at least one universal variable based on the employee information and the evaluation of the business grammar rules for the enterprise and based on a presence of user-defined associated universal variables for at least one table field, wherein said universal variables comprise user-defined intermediate data objects that allow access and mapping of logically interrelated table fields in a plurality disparate relational databases and external data sources containing enterprise-specific data, and wherein the universal data variables are organized into a hierarchical structure following the business grammar construct for the enterprise, where each segment of the hierarchy follows a user-defined business grammar token type, and wherein the selective evaluation and use of the universal variable for mapping and access is also dependent on the evaluated business grammar rules for the enterprise;
obtaining and evaluating additional data comprising a employee activities based on the presence and evaluation of at least one universal variable and comprising determining at least one application that is used by the employee after the receipt of a clock-in indicator;
evaluating the at least one extracted enterprise business grammar rule based on the employee work timer, monitoring the progress of the work timer after the receipt of a clock-in indicator;
determining whether the at least one extracted specific enterprise business grammar rule conflicts with any other business grammar rule for the enterprise;
determining the priority of the conflicting extracted enterprise business grammar rules and revising the determination of whether a violation of the extracted rule has occurred based on the priority determination; and
performing a response action based on an outcome of the determination that a violation of the at least one extracted enterprise business grammar rule has occurred.