A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to managing transactions, and more particularly to routing employee transactions for approval in an enterprise environment.
As organizations continue to move to paperless systems, the complexity of managing transactions electronically within an organization increases accordingly. In many instances, existing transaction management and workflows are not sufficient to provide the functionality needed to process all variations of a transaction. For example, an employee might submit a transaction that requires approval from at least one manager, supervisor, or other appropriate person, department, etc. When an employee only has one job description or role and only works for one manager, this process is relatively straightforward as the transaction can simply be routed to that manager for approval. Problems arise, however, when the employee has multiple jobs, roles, or functions that result in multiple persons and/or entities being responsible for approving different transactions.
Further, many transactions require multiple layers of approval, and a manager making an initial approval might in turn report to more than one supervisor based upon the job or role of the manager relative to that transaction. Not only is this routing complexity not addressed in current systems, but current systems also do not provide a way to maintain job information throughout the various routing processes, as well as outside this processing, in order to make multiple routing and/or status determinations based thereon.
It therefore is desirable to provide an approach that contains enough granularity to be able to track users and transaction at the job level, wherein routing decisions can be made for users, managers, and/or other employees with multiple jobs, roles, functions, etc.
Systems and methods in accordance with various embodiments of the present invention provide for the routing and management of transactions utilizing a transaction management application and an Approval Framework. The Approval Framework is a universal framework capable of supporting multiple applications.
In one embodiment, a user submits a transaction that is received by the transaction management application. The transaction can be for any appropriate reason, such as to get approval for a request for time off work. The management application determines employee information identifying the user and also receives job information from the user. The user may have multiple jobs that report to multiple managers, so it is necessary to identify the job associated with the transaction in order to determine the proper routing. The application passes the employee information with the call into an object such as a UserList of the Approval Framework, and also passes a universal class such as a User Utilities Class to the Approval Framework, where the User Utilities Class contains the job information.
In one embodiment, the UserList object determines the appropriate person to which to route the transaction based on logic of the object, as well as the employee and job information. This routing information can be determined by calling into a reporting application such as a Direct Reports application. Once the routing information for the transaction is determined, the transaction is routed to the appropriate person for approval. Also, the job and employee information is written to a database for later retrieval outside the transaction processing.
When the appropriate person approves the transaction, another call is made into the Approval Framework. An Approval Framework engine determines whether another approval is needed. If so, the UserList object can extract the previous job and employee information from the database in order to determine a subsequent person to which to route the transaction for approval. Since the first person approving the transaction might also have multiple jobs reporting to multiple people, it can be necessary to again call into a Direct Reports or similar application in order to determine the proper routing information. Once the routing information is determined, the transaction is again routed to the appropriate person and the process continues until the transaction is ultimately approved or denied.
In one embodiment, a status monitor is provided that allows an employee or other authorized user to view the current path of the approval process for a transaction. Since the request to display information in a status monitor typically will occur outside of transaction processing, the UserList object can request the employee and job information from the database that is necessary to interpolate future routings for the transaction.
A further understanding of the nature and the advantages of the inventions disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
Various embodiments in accordance with the present invention will be described with reference to the drawings, in which:
a) and 2(b) illustrate exemplary authorization flows that can be used in accordance with one embodiment of the present invention;
a) and 3(b) illustrate exemplary authorization flows that can be used in accordance with one embodiment of the present invention;
Systems and methods in accordance with various embodiments can overcome the aforementioned and other deficiencies in existing transaction management systems by providing for the passing of job information, in addition to employee information, in order to properly route transactions for an employee. Further, the approach provides for storing the job information between routing decisions in order to properly make subsequent routing decisions for that transaction even though the original class may no longer be populated. These approaches can be used with a business process such as an approval process, wherein transactions are routed for approval within an organization. Such approaches also can provide a status monitor that is able to determine and display the current approval state for each such transaction outside of transaction processing.
A system in accordance with one embodiment can be used with a transaction management system, such as PeopleSoft Human Capital Management (HCM) available from Oracle Corporation of Redwood Shores, Calif., which is an application for performing human resources-related functions such as tracking employee and job information. Such a system 100 is illustrated in
In one example of a Direct Reports framework, an access type is by an identifier such as supervisor ID. Within the database, organizations can define relationships by explicitly defining a supervisor for an employee, by creating departments and placing employees in those departments with a manager being assigned to each department, or any other appropriate approach. Relationships also can be defined via positions, where a developer position and a development manager position are assigned, and those two positions report to one another.
The exemplary system 100 also includes an Approval Framework 116, which is a common framework that sits outside the HCM system into which transactions in the HCM system can call. The Approval Framework can support many applications including and in addition to the HCM system, and can be used to define and route transactions that require approvals, for example. The Approval Framework can include an Approval Workflow Engine (AWE) that provides the capability and framework for creating, running, and managing approval processes. The engine can use a series of database objects combined with application component configuration settings to determine how to process approvals using workflows. Approval workflows are triggered when requesters submit a transaction. The application passes the transaction over to the AWE, which finds the appropriate approval process definition and launches the approval workflow. A set of approvers than carry out tasks related to the transaction.
The AWE allows multiple levels of users to develop, configure, and use transaction approvals that meet organizational requirements. In order to provide such functionality to an application, the application must implement or integrate the Approval Framework in order to leverage the functionality. Application developers register the application with the AWE and describe the application components, event handler, and records, for example. The developer also can create a record and table in which to store cross-reference information and set up notification templates for events. The application then must make specific calls into the Approval Framework. When a user submits a transaction for approval, the action launches the approval process whereby the AWE reads an approval process definition and queues the transaction for approval. An Approval Process Definition is defined by a developer to include items such as stages, paths, steps, varying hierarchies, and criteria, among other configurable parameters. Each Approval Process Definition includes a process identifier (ID) that is registered with the AWE.
The AWE in one embodiment utilizes “User Lists”, with a UserList 114 being a standalone, user-defined object owned within the Approval Framework that is operable to be used to build groups of users. A UserList can accept information for one or more users and return information for one or more users. A UserList can be defined using any appropriate technology, such as by using SQL to query the HCM repository and return users, by pointing the object directly to a system role, or by utilizing particular application classes. Once defined, a UserList can be called upon to execute logic defined within that UserList to return a group of users. UserLists can be invoked several times throughout the approval process in order to determine the appropriate participant for a particular step. In one embodiment, users can be encapsulated into a role, wherein a request for an administrator role or HCM manager role will return a list of those users from the appropriate UserList. Embodiments providing for the use of application classes allows an organization to generate any appropriate logic to pull information from the database and determine users based on any appropriate condition or parameter value.
In one embodiment, the HCM application and Approval Framework work together as follows. The HCM application includes multiple jobs functionality and Direct Reports functionality. The multiple jobs and Direct Reports functionality interact with HCM transactions, such as an absence management (AM) transaction allowing employees to request time off, and a recruiting solution (RS) transaction for managing internal and external recruiting, including such functionality as accepting resumes and granting jobs. The HCM transactions are able to call the Approval Framework outside of HCM.
As discussed above, such a system can provide the flexibility needed to process transactions in a multiple job environment. For some cases, such as the approval flow 200 of
The routing is significantly more complicated in the approval flow 250 of
a) and 3(b) demonstrate an exemplary flow of calls and processes for the reporting tree of
In a second portion 350 of this process, once Manager 1312 approves the transaction, another call is made into the Approval Framework 304. An appropriate UserList 306, specified by the call, receives as input Manager Information for the manager submitting the transaction, here Manager 1, and a User Utilities Class including Job Information. In order to obtain the Job information, which would no longer be populated in the User Utilities Class after the first routing, the HCM system can read the information from memory and pass the Job information to the Approval Framework. A User List 306 again processes the information and determines the appropriate manager to receive the transaction. In this example, the Approval Framework engine determines that another routing is necessary, and the UserList determines that the already once-approved transaction should now be routed to Manager 2352. Once the determination is made, information about the job for Manager 2 is passed to a module 308 operable to store the job information. Information identifying Manager 2 is passed to a module 310 in the Approval Framework for routing the transaction to Manager 2352, who then also can approve or deny the transaction. Both Manager 1 and Manager 2 must approve the transaction in this example, in order for the transaction to be finally approved. Once Manager 2 approves the transaction, another call is made into the Approval Framework and the transaction is deemed complete by the Approval Framework.
In one embodiment, the UserList processing logic includes multiple processing branches. If, when executing the UserList, the user and job information is passed to the Approval Framework, the UserList knows the identity of the employee at runtime, and know which job the employee is submitting the transaction under, such that the UserList can easily determine the routing. If the user information is provided without job input information, such as when a request for a status monitor is received, only the user information is provided such that the record in the database has to be accessed to determine the job information to reconstruct the logic needed to determine the information needed to display a visual representation of the approval chain.
In some cases the database may not contain the necessary information, such as where a manager has not previously processed a transaction through the Approval Framework. In such a case, the information from the previous step in the approval process can be examined and the UserList can query Direct Reports to determine the job for which the user in a previous step submitted the transaction, and determine the job of the current manager to which that employee reports. If this information cannot be obtained from Direct Reports, the user's primary job can be used as a default to attempt to route the transaction to the appropriate person to approve that step in the process.
In most embodiments, the system 600 includes some type of network 610. The network may be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, the network 610 can be a local area network (“LAN”), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network (“VPN”); the Internet; an intranet; an extranet; a public switched telephone network (“PSTN”); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.11 suite of protocols, GRPS, GSM, UMTS, EDGE, 2G, 2.5G, 3G, 4G, Wimax, WiFi, CDMA 2000, WCDMA, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks.
The system may also include one or more server computers 602, 604, 606 which can be general purpose computers, specialized server computers (including, merely by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers rack-mounted servers, etc.), server farms, server clusters, or any other appropriate arrangement and/or combination. One or more of the servers (e.g., 606) may be dedicated to running applications, such as a business application, a Web server, application server, etc. Such servers may be used to process requests from user computers 612, 614, 616, 618. The applications can also include any number of applications for controlling access to resources of the servers 602, 604, 606.
The Web server can be running an operating system including any of those discussed above, as well as any commercially-available server operating systems. The Web server can also run any of a variety of server applications and/or mid-tier applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, business applications, and the like. The server(s) also may be one or more computers which can be capable of executing programs or scripts in response to the user computers 612, 614, 616, 618. As one example, a server may execute one or more Web applications. The Web application may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming/scripting languages. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, IBM® and the like, which can process requests from database clients running on a user computer 612, 614, 616, 618.
The system 600 may also include one or more databases 620. The database(s) 620 may reside in a variety of locations. By way of example, a database 620 may reside on a storage medium local to (and/or resident in) one or more of the computers 602, 604, 606, 612, 614, 616, 618. Alternatively, it may be remote from any or all of the computers 602, 604, 606, 612, 614, 616, 618, and/or in communication (e.g., via the network 610) with one or more of these. In a particular set of embodiments, the database 620 may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers 602, 604, 606, 612, 614, 616, 618 may be stored locally on the respective computer and/or remotely, as appropriate. In one set of embodiments, the database 620 may be a relational database, such as Oracle 10g, that is adapted to store, update, and retrieve data in response to SQL-formatted commands.
The computer system 700 may additionally include a computer-readable storage media reader 712, a communications system 714 (e.g., a modem, a network card (wireless or wired), an infra-red communication device, etc.), and working memory 718, which may include RAM and ROM devices as described above. In some embodiments, the computer system 700 may also include a processing acceleration unit 716, which can include a digital signal processor DSP, a special-purpose processor, and/or the like.
The computer-readable storage media reader 712 can further be connected to a computer-readable storage medium 710, together (and, optionally, in combination with storage device(s) 708) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The communications system 714 may permit data to be exchanged with the network and/or any other computer described above with respect to the system 700.
The computer system 700 may also comprise software elements, shown as being currently located within a working memory 718, including an operating system 720 and/or other code 722, such as an application program (which may be a client application, Web browser, mid-tier application, RDBMS, etc.). It should be appreciated that alternate embodiments of a computer system 700 may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, data signals, data transmissions, or any other medium which can be used to store or transmit the desired information and which can be accessed by the computer. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.