A portion of the disclosure of this patent document contains material which 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 disclosure relates to the field of delivery of enterprise application data to users and more particularly to techniques for aggregating and delivering transaction approvals to mobile terminals.
Many businesses and other organizations use software applications and/or suites of such applications to organize the organization's business affairs, track business performance, manage employee data, and perform functions for managing the enterprise. These “enterprise applications” are often quite complex, relying on numerous database tables to store and manage data covering a wide range of aspects of an organization's business. Moreover, functions to manage an enterprise are often partitioned into multiple enterprise applications, where each application serves one particular function (e.g., purchase order management, accounts payable management, etc.).
One particular aspect of such enterprise applications is known as “management approvals”, and a management approval process is frequently present as a feature of any or all of these enterprise applications. Management approvals are used, for example, to provide approval processing for transaction types such as expense reports, purchase orders, vouchers, and other types of transactions that require progression through an approvals process.
Conventional systems do not aggregate approvals when transactions needing approval span across multiple transaction types. For example, in a conventional system, if a user needs to approve an expense report, and also needs to approve a voucher, the user would need to first access an “Expense Report” application and then would need to access a “Voucher” application. This leads to an inordinate amount of time spent context-switching between applications, and leads to egregious inefficiencies when multiple transactions need to be approved. Moreover, conventional systems rely on desktop-borne interfaces when performing the approval processing.
What is needed is a technique or techniques to perform approvals across differing transaction types, and furthermore to perform approvals on groups of transactions and to display groups of transactions on any suitable platform, including mobile devices.
The present disclosure provides an improved method, system, and computer program product suited to address the aforementioned issues with legacy approaches. More specifically, the present disclosure provides a detailed description of techniques used in methods, systems, and computer program products for aggregating and delivering transaction approvals to mobile terminals.
Processing is initiated by identifying an enterprise application running on a server (e.g., an application server) for which approval processing is to be performed to approve transactions pertaining to the enterprise application. Further processing aggregates groups of transactions, and generates transaction approval display data (e.g., for display screens) that can be displayed on a mobile device (e.g., a smartphone, a mobile terminal, etc.). A sending module participates in sending the transaction approval display data to the mobile device, after which a mobile user performs approvals (e.g., singly or in groups), and transmits data back to (e.g., as an approval or as a disapproval or both). The approvals or disapprovals responsive to the displayed transaction approval display data are processed (e.g., as approvals or as disapprovals or both) for retrieval by the enterprise application.
Further details of aspects, objectives, and advantages of the disclosure are described below and in the detailed description, drawings, and claims. Both the foregoing general description of the background and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the claims.
Some embodiments of the present disclosure address the problem of aggregating transaction approvals from multiple applications. More particularly, disclosed herein and in the accompanying figures are exemplary environments, methods, and systems for aggregating and delivering transaction approvals to mobile terminals.
In describing techniques to address aggregating and delivering transaction approvals to mobile terminals, an environment is described (e.g., see
Some of the terms used in this description are defined below for easy reference. The presented terms and their respective definitions are not rigidly restricted to these definitions—a term may be further defined by the term's use within this disclosure.
Reference is now made in detail to certain embodiments. The disclosed embodiments are not intended to be limiting of the claims.
As shown, system 100 is operated by one or more users (e.g., user 1051, user 1052) via one or more desktop applications 101 (e.g., desktop application 1011, desktop application 1012, application 1013 etc.), and/or one or more mobile phone or tablet mobile devices (e.g., mobile device 1021, mobile device 1022, etc.). Using desktop or mobile terminals, the users operate the system to access and utilize enterprise applications (e.g., enterprise application 1031, enterprise application 1032, enterprise application 1033, etc.) hosted on a server 118. Such user interactions can be communicated over wireless signals or over network 117, and such user interactions serve to initiate and/or perform any activities or functions offered by the server 118 and/or offered by the enterprise applications such as approval of transactions.
User interaction may originate from any type of computing platform that may be used to operate or interface with a server 118. Examples of such computing platforms include for example, workstations, personal computers, laptop computers, or remote computing terminals. Mobile devices 102 comprise any type of a portable tablet device, including for example, tablet computers, portable readers, etc. Mobile telephone devices comprise any mobile device that can suitably access an application on server 118, such as smartphones and programmable mobile handsets. It is noted that practice of the techniques disclosed herein is not limited in its application to just these types of devices. The various disclosed embodiments are applicable to any computing device that works in conjunction with an enterprise application.
Exemplary desktop or mobile terminals comprise a display device, such as a display monitor or screen for displaying scheduling data and other interface elements to users. Further, desktop or mobile terminals may also comprise one or more input devices for the user to provide operational control over the activities of the enterprise applications. Such input devices can be implemented in the form of a mouse, a touch screen, a keypad, or keyboard or combinations of the foregoing.
Exemplary enterprise applications can include supply chain management (SCM) applications that manage raw materials, work-in-process and/or finished products, and coordinate with suppliers; customer relations management (CRM) applications that are used to track, store and/or manage customer information; financial applications that track and/or analyze the financial performance of the organization, and/or human resources applications that provide management of the human resources functions of the organization, and/or other applications. In some cases, these applications are standalone applications. In other cases, a single business application or suite of applications might provide some or all of such functionalities using any number of interface screens.
The data accessed or created by the enterprise applications (e.g., transactions 151, approvals 153, other approvable content 152, other instances of enterprise application data 120, etc.) can be stored in a data storage unit (e.g., data storage 110). The data storage 110 can be implemented using any type of computer readable mediums or storage devices. The computer readable storage devices comprise any combination of hardware and software that allows for ready access to the data within data storage 110. For example, the computer readable storage device can be implemented as computer memory or disk drives operatively managed by an operating system. The aforementioned transactions 151 or other approvable content 152 can be accessed by the enterprise applications and/or from the aggregator 150. In some cases the aggregator can access transactions 151 or other approvable content 152 directly from the data storage 110 (e.g., without traversing the enterprise applications). The aggregator serves to aggregate transactions for delivery to the approval processing module 107, which in turn uses a sending module 111 to communicate mobile devices (e.g., mobile device 1021, mobile device 1022, mobile device 1023, etc.).
As shown, an approval processing module 107 is provided on the server 118 and comprises two application packages that comprise one or more instances of user interface logic 144 and aggregated approval logic 146, respectively. The user interface logic 144 can include HTML generation for screen device display and for navigation within and between display screens (e.g., see
As shown, the approval processing commences at an operation 202 to identify transactions that are pending approval. Such transactions can originate from a particular enterprise application, or they can be aggregated from a plurality of enterprise applications, or they can originate from stored transactions 151 in data storage 110. In one exemplary case, the aggregator or other module is configured to search one or more database structures (e.g., database structures in data storage 110) to identify one or more transactions for which approvals are needed by a reviewer (e.g., a user). Specific search criteria may be used to identify and aggregate pending transactions. For example, the search for pending transactions can be performed based upon specific users, reviewers, departments, groups, and/or any other suitable search criteria, which search results in a set or sets of identified transactions.
The operation 204 aggregates the identified transactions and retrieves constituent transaction data (e.g., any one or more of the identified transactions are retrieved from underlying database structures). The identified transactions can be aggregated together. Such aggregation can occur even if the identified transactions are not uniformly of a common type of transaction. For example, the transactions may pertain to expense reports, journal entries, purchase orders, requisitions, and/or voucher transactions (see
The operation 206 serves to generate interface pages and display transaction data for approvals. The interface pages (e.g., see
At operation 208, the transaction display data is sent (e.g., using sending module 111) to the appropriate device to be accessed by a user. The display mechanism at the user device (e.g., browser or display processor) parses the transaction display data and displays the pages to the user. For example, if the transaction display data incorporates HTML5, then an HTML5 browser at the user device processes the sent HTML5 data to generate display images. The device can also accept user inputs to send control signals (e.g., transaction approval indications 161) back to the server to process the user interactions (e.g., to indicate approval of a group of transactions from the mobile device).
A server receives transaction approval indications responsive to user interactions; see operation 210.
As earlier indicated, HTML for codifying interface pages, and for codifying the display transaction data for approvals, are generated and sent to the user. Such interface pages can include navigation controls, and can implement logic between the mobile device and server (e.g., using PHP, Java Server Pages, Python, etc.). For example, user interface logic can be partitioned into modules for navigation logic, HTML generation, and one or more modules for HTML library access.
As shown, an interface page generation module 221 subsumes the navigation logic generation module 201 and the control logic generation module 203. Each of the aforementioned modules serve to host or interact with an HTML generation module 205, which in turn interacts with an HTML library via one or more library access modules (e.g., HTML library access module 207 and/or script library access module 209).
The foregoing examples of libraries and library access modules are purely illustrative. Other libraries can be used, and/or access to subroutines (e.g., in C or C++ or C#) or classes (e.g., Java classes) and/or scripts (e.g., in JavaScript) can be facilitated by a library access module. Further, the HTML generation module 205 can access display-centric facilities such as cascaded style sheets (e.g., CSS, or CSS3, etc.).
Returning to the flow of operations shown and described in
In some embodiments, an environment for page generation and logic processing is provided in the form of a framework.
On the client side (e.g., the shown mobile device 102), a client-side browser 301 is used to display a user interface. User actions are processed, and in exemplary cases the processing includes communicating (e.g., in the form of client-server interactions) commands for querying and for approving pending transactions. The display data may be implemented using HTML5, CSS3, and/or JavaScript. Further, various libraries (e.g., client-side libraries 303) may be utilized to implement user and/or client-server interactions 311. Examples of such libraries include JQuery, JQuery Mobile, etc. In certain embodiments, a client-server interface such as the common gateway interface (CGI) can be used in conjunction with java servlets to allow access to resources on the server. As yet another example, scripts (e.g., Oracle iScripts) can be used to access URL identifiable resources.
On the server side, the approval processing module 107 implements interface logic including navigation logic generation, control logic generation, and HTML generation (e.g., see
As shown, and as earlier indicated, the approval processing module implements a data model and plug-in interface to provide access to functions of the approval processing module by using plug-in data handlers 302. The plug-in data handlers 302 serve to retrieve (e.g., from data storage) or otherwise access (e.g., via an interface to enterprise applications 103) transaction data and data constituent to transactions. In some embodiments, helper classes are used to maintain mappings between each approval item, its handler, its related images, and any corresponding transaction definitions. For example, mappings can be created using a configuration file or a configuration relation, possibly also using a configuration graphical user interface. As a specific case, to configure a particular transaction, the following steps are performed:
The aforementioned particular transactions can be any one or more of any transaction types supported by system 100. Some examples of possible transaction types are hereunder discussed.
The shown list includes:
The shown transaction types are purely examples and other transaction types are possible.
The screen of
Extensions to the screen of
The diagrammatic representation of
In exemplary operation, instances of the handler interface return a count for the pending approval items. In addition, the handler interface supports a method to return a list of items to be approved. The handler can also return constituent data for any one or more of the items to be approved.
In some embodiments, an object class is used to represent the approval items, and object class can associate various properties with a particular aspect of an approval item. Properties can be processed by a common framework, and properties and their values can be passed individually (or in groups) on demand. Further, the data to be displayed together with a particular approval item can be passed in any format.
Approval items can have any granularity, including a line item granularity for approval (e.g., a line item in a purchase order). Any level of granularity of any form of an approval item can be represented as objects. In addition, attachments may be specified to correspond to any of the approval items. For example, an image of a receipt corresponding to a line item in an expense report can be attached. In one alternative, a URL can be passed to provide a location/representation of such an image or other object.
The entity hierarchy 500 or variations thereof support a wide variety of correspondences and operations that can be applied to one or more entities and/or instances of such entities. Strictly as examples, various operations (e.g., filtering, aggregation, ordering, etc.) can be applied to the transactions 151 or other data items in the hierarchy such that:
Some embodiments can include variations in the entity hierarchy, and variations in semantics and inheritance might correspond with the variations in the entity hierarchy. An exemplary entity hierarchy includes the following organization and inheritance:
Different data handlers serve to process the data in accordance with their respective object(s). In this embodiment, each data handler implements a common interface. The ApprovalManager accesses the data handlers through this common interface.
Some data handlers can share functionality because they process data in a similar way. For example, PurchaseOrder, Requisition, JournalEntry and Voucher share some similar processing. A common class ApprovalFrameworkBase 510 is defined to implement common functionality. In some embodiments, and as shown, ApprovalManager comprises one or more handlers (e.g., AggregationHandler) and an item registry (e.g., ItemRegistry), where the one or more handlers interact with an approval processing module base and/or an expense base (e.g., see ExpenseBase 520). Strictly as an illustrative example, the approval processing module base (e.g., ApprovalFrameworkBase 510) corresponds to transactions for at least one of purchase orders, requisitions, journal entries, and vouchers.
The transaction approval interface 7A00 shows a listing and details for the listed items, as well as a summary. As shown the listed transaction items on the left side include expense report items 702, journal entry items 704, and purchase order items 706. On the right side, a detail screen display 708 of the selected item (e.g. the first Purchase Order) is shown.
In some cases it is convenient to approve many items in a single approval indication. One possible implementation of an interface to facilitate a mass approval is discussed as follows.
As shown, each of the transaction items (e.g., purchase order items 706) is decorated with an approval indication widget (e.g., an interactive check box). Any one or more of the approval indication widgets can be individually controlled (e.g., see selected checkbox 7121, selected checkbox 7122, selected checkbox 7123). The transactions corresponding to a selected checkbox can be grouped so as to facilitate a mass approval of all of the indicated transaction approval items. A transaction approval indication can be sent to a server 118 (e.g., using receiving module 113) and can be forwarded to an approval processing module 107 and/or to any one or more enterprise applications.
Some embodiments of an approval module include the use of a filter configurator 714, which can be used to select transactions that are filtered and/or ordered to facilitate presentation of use-selected transactions. The filer can operate based at least in part on priorities, transaction type, and/or date.
In some cases, the presentation of various transaction items (e.g., expense report items 702, journal entry items 704, and purchase order items 706) includes only a portion of the transaction data and data constituent to transactions. As such, an approvable item detail screen can be provided to the user.
As shown, the approvable item detail interface comprises details of a journal entry transaction and a transaction approval control 802, and a transaction denial control 804. When the approver has selected transactions of other content for approval, the user can interact with an approval submission interface, which approval submission interface is presently discussed.
As shown, the approval submission interface 900 offers the user an option to comment (see comment field 902) and to confirm approval of the selected approvals (see scrolling region 904). The approval submission interface 900 is merely one embodiment, and many variations are possible, for example in a landscape mode, or having additional screen devices, etc.
The shown approach commences by retrieving transactions to be approved (see operation 1002). Transactions can be grouped and ordered (see operation 1004). The approval information pertaining to the transactions is formatted for delivery and display on the screen of a mobile device (see operation 1006). The display screen of the mobile device can be configured depending on device and/or screen size. In some embodiments, the transaction display data is formatted using HTML for rendering using a browser. The transaction display data including approval indication widgets and/or other information pertaining to the transactions is sent to a mobile device (see operation 1008).
Interaction with the display screen of the mobile device allows a user to approve pending transactions from across different transaction types. The user can select transactions to approve (e.g., using a transaction approval interface). The indicated set of approvals can be received (see operation 1010) and verified (see operation 1011) and the transaction records (e.g., transactions 151) that correspond to the approved transactions can be marked in the data store as approved (see operation 1012).
According to one embodiment of the disclosure, computer system 1300 performs specific operations by processor 1307 executing one or more sequences of one or more instructions contained in system memory 1308. Such instructions may be read into system memory 1308 from another computer readable/usable medium, such as a static storage device or a disk drive 1310. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the disclosure. Thus, embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software. In one embodiment, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 1307 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 1310. Volatile media includes dynamic memory, such as system memory 1308.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory medium from which a computer can read data.
In an embodiment of the disclosure, execution of the sequences of instructions to practice the disclosure is performed by a single instance of the computer system 1300. According to certain embodiments of the disclosure, two or more computer systems 1300 coupled by a communications link 1315 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice the disclosure in coordination with one another.
Computer system 1300 may transmit and receive messages, data, and instructions, including programs (e.g., application code), through communications link 1315 and communication interface 1314. Received program code may be executed by processor 1307 as it is received, and/or stored in disk drive 1310 or other non-volatile storage for later execution. Computer system 1300 may communicate through a data interface 1333 to a database 1332 on an external data repository 1331. A module as used herein can be implemented using any mix of any portions of the system memory 1308, and any extent of hard-wired circuitry including hard-wired circuitry embodied as a processor 1307.
In the foregoing specification, the disclosure has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the disclosure. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than restrictive sense.
The present application claims the benefit of priority to U.S. Provisional Patent Application Ser. No. 61/707,272, entitled “METHOD AND SYSTEM FOR IMPLEMENTING MOBILE TRANSACTION APPROVAL” (Attorney Docket No. ORA130349-US-PSP), filed Sep. 28, 2012; and the present application claims the benefit of priority to U.S. Provisional Patent Application Ser. No. 61/780,710, entitled “METHOD AND SYSTEM FOR IMPLEMENTING MOBILE TRANSACTION APPROVAL” (Attorney Docket No. ORA130349-US-PSP-1), filed Mar. 13, 2013, both of which are hereby incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
61707272 | Sep 2012 | US | |
61780710 | Mar 2013 | US |