Patent Publication Number: US-9900380-B2

Title: Common function modules for use with multiple applications

Description:
TECHNICAL FIELD 
     This disclosure relates generally to computer applications, and more particularly to a system for utilizing remote common function modules to perform similar functions across different applications. 
     BACKGROUND 
     Enterprise application systems may utilize a number of applications that include common functionalities. Despite this, however, each application may include its own separate method for accomplishing a common functionality, creating unnecessary redundancies. 
     SUMMARY OF THE DISCLOSURE 
     In accordance with the present disclosure, disadvantages and problems associated with performing functions common to multiple applications may be reduced or eliminated. 
     According to one embodiment, an apparatus is provided that includes a memory comprising instructions, an interface, and a processor communicatively coupled to the memory and the interface. The processor is configured, when executing the instructions, to receive a request to perform a first function of an application and a second function of the application and transmit the portion of the request to perform the first function to a remotely-located first common function module and the portion of the request to perform the second function to a remotely-located second common function module. The processor is further configured, when executing the instructions, to receive, in response to transmitting the respective portions of the request to the remotely-located common function modules, first information from the first common function module and second information from the second common function module, and aggregate, based on the received request, the received first information and second information. 
     According to one embodiment, a method is provided that comprises the steps of receiving a request to perform a first function of an application and a second function of the application, transmitting the portion of the request to perform the first function to a remotely-located first common function module and the portion of the request to perform the second function to a remotely-located second common function module, receiving in response to transmitting the respective portions of the request to the remotely-located common function modules, first information from the first common function module and second information from the second common function module, and aggregating, based on the received request, the received first information and second information. 
     According to one embodiment, a computer-readable medium comprising instructions is provided. The instructions are configured when executed to receive a request to perform a first function of an application and a second function of the application, transmit the portion of the request to perform the first function to a remotely-located first common function module and the portion of the request to perform the second function to a remotely-located second common function module, receive in response to transmitting the respective portions of the request to the remotely-located common function modules, first information from the first common function module and second information from the second common function module, and aggregate, based on the received request, the received first information and second information. 
     Technical advantages of certain embodiments of the present disclosure include providing a common application function to a number of different applications using a single common function module, which may avoid duplicate developmental and maintenance costs. Other technical advantages will be readily apparent to one skilled in the art from the following figures, descriptions, and claims. Moreover, while specific advantages have been enumerated above, various embodiments may include all, some, or none of the enumerated advantages. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention and for further features and advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings, in which: 
         FIG. 1  illustrates an example enterprise application system, in accordance with embodiments of the present disclosure; 
         FIGS. 2A-2B  illustrate example architectures of enterprise application systems, in accordance with embodiments of the present disclosure; 
         FIG. 3  illustrates an example detailed architecture of an enterprise application system, in accordance with embodiments of the present disclosure; 
         FIG. 4  illustrates an example user interface of an enterprise application system, in accordance with embodiments of the present disclosure; 
         FIG. 5  illustrates example method for utilizing common function application modules of an enterprise application system, in accordance with embodiments of the present disclosure; and 
         FIG. 6  illustrates an example computer system, in accordance with embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     The present disclosure describes an enterprise application system that incorporates common function modules that may be used with any number of different applications. These common function modules may be reusable by many different applications and may be independent from one another, allowing for their integration at an end device to create higher level applications. For instance, an application container at an end device may facilitate the integration of one or more functionalities performed by common function modules along with one or more other functionalities in performing the overall functionality of a higher level application. The application container may also allow for communication between each respective common function module and the other local or remote functions of the application. Accordingly, common functionalities may be centralized, avoiding potential redundancies in development and/or maintenance. 
     For example, in current enterprise systems, a number of different applications may include common functionalities. Each of these applications and their respective functionalities (including those common with one another) may be developed separately, creating unnecessary redundancies and associated development and maintenance costs. As one example, certain banking systems may utilize a number of different applications for various use instances that each display similar information to the user, such as account holder information, account balances, and transaction information. Each of these applications may be designed to access, determine, gather, and/or display information from the same back-end system. However, each of the applications may be developed independently from one another with different modules for performing the same or similar functions using the same back-end system, increasing development costs. Furthermore, to modify common functionality between the applications, each of the separate applications must be modified, creating additional unnecessary application maintenance costs. 
     Accordingly, aspects of the present disclosure may include centralized and application-independent common function modules that may be utilized by many different applications. Because such common function modules are centralized and application-independent, development and maintenance of each module may be transferrable to each of the different applications that may utilize it. These common function modules may be located among any number of different servers and/or enterprise systems. Furthermore, applications utilizing these common function modules may be associated with the same or different back-end systems, and may be associated with the same or different businesses. Accordingly, each application, enterprise system, or business utilizing the common function module may be able to customize its functionality according to the particular needs of the respective consumer. 
     Utilizing aspects of the present disclosure, therefore, functionality that may be common to multiple separate applications may be consolidated into a single common function module with which each of the separate applications may communicate and interact. Systems utilizing these common function modules may decrease the complexity of the various applications running thereon, and may accordingly decrease costs associated with developing or maintaining functions in the different applications that are separate, but common. 
     To facilitate a better understanding of the present disclosure, the following examples of certain embodiments are given. In no way should the following examples be read to limit, or define, the scope of the disclosure. Embodiments of the present disclosure and its advantages may be best understood by referring to  FIGS. 1-6 , where like numbers are used to indicate like and corresponding parts. 
       FIG. 1  illustrates an example enterprise application system  100 , in accordance with embodiments of the present disclosure. System  100  includes employee devices  110  that utilize employee-side applications  111 , and customer devices  120  that utilize customer-side applications  121 . Examples of employee-side applications  111  can include customer service or call center interfaces, and examples of customer-side applications  121  can include mobile or desktop applications. In particular embodiments, system  100  may be associated with a banking system, and employee-side applications  111  may be utilized by bankers, tellers, call center operators, or back office employees (e.g., fraud agents) using employee devices  110 . Further, customer-side applications  111  may be utilized by customers operating customer devices  120  that may include ATM machines, online banking interfaces on a computer, or mobile devices. 
     Employee-side applications  111  and customer-side applications  121  each may connect and interact with the same back-end  130 , which includes one or more servers  131  and one or more databases  132 . Accordingly, employee-side applications  111  may incorporate the same or similar functionality as customer-side applications  121 . For example, in banking system embodiments, an employee-side application  111  (e.g., a customer service agent user interface) may access similar account information (e.g., balance information) or implement similar functions (e.g., money transfers) as a customer-side application  121  (e.g., a mobile banking application). The account information and functions may thus be accessed or implemented at the same back-end  130  by each of employee-side applications  111  and customer-side applications  121 . However, in current systems, each employee-side application  111  and customer-side application  121  may be developed independently from one another such that common functions are developed, implemented, and maintained separately. This may cause duplication of certain costs and efforts, as described below with respect to  FIGS. 2A-2B . 
       FIGS. 2A-2B  illustrate example architectures of enterprise application systems  200 , in accordance with embodiments of the present disclosure. In particular  FIG. 2A  illustrates an enterprise application system  200   a  with devices  210  that utilize separate applications  220 ,  230 , and  240  with contained services and user interface functions  225 ,  235 , and  245 , respectively, similar to system  100  of  FIG. 1 . In certain embodiments, each service/UI function  225 ,  235 , and  245  may implement similar functionalities for their respective applications (e.g., display balance information), as described above. However, this may lead to increased costs for the enterprise, as each service/UI function  225 ,  235 , and  245  must be developed and maintained separately from one another. As an example, implementation of a change in the interfacing with back-end  250  must be done to each service/UI function  225 ,  235 , and  245  in system  200   a.  In contrast,  FIG. 2B  illustrates an enterprise application system  200   b  that utilizes common or shared application services and UI modules  260  in accordance with embodiments of the present disclosure. By moving the common functionality of service/UI functions  225 ,  235 , and  245  to common service/UI function  260 , development and servicing of the functionality may be centralized. Further, new applications being developed may take advantage of existing functionality without requiring additional development costs. 
       FIG. 3  illustrates an example detailed architecture of an enterprise application system  300 , in accordance with embodiments of the present disclosure. System  300  includes a computing device  310  running an application container  320  utilizing application functions  321 - 323 . Computing device  310  may be, for example, any one of employee devices  110  or customer devices  120  of  FIG. 1 , or one of devices  210  in  FIG. 2B . Application container  320  may be employee-side or customer-side as described with respect to  FIG. 1 , and may be configured to aggregate output of application functions  321 - 323 . In particular, application container  320  may be configured to aggregate the output of common function modules  341  and  342  for functions  321  and  322 , respectively, with the output of locally-executed function  323 . Common function modules  341  and  342  are located remotely on server  330 , which may access or utilize data in back-end data  350 . In addition to aggregating the output of application functions  321 - 323 , application container may also facilitate communication between such functions (e.g., passing data between function  321  and function  323 ). 
     In particular embodiments, to perform functions  321  and  322 , requests may be formatted in a web programming language format (e.g., JAVASCRIPT, HTML, or CSS) and transmitted to common function modules  341  and  342 , respectively, on server  330 . The requests may be formatted using application programming interfaces APIs associated with the particular web programming language. In certain embodiments, gateway  340  may receive the requests from computing device  310  and determine which common function module may perform each request. For instance, gateway  340  may determine that common function module  341  may process the request to perform function  321  and that common function module  342  may process the request to perform function  322 . Although illustrated as being integrated with server  330 , it will be understood that gateway  340  may be located in any suitable location (e.g., on a different server than server  330  hosting common function modules  341  and  342 ). During processing, common function modules  341  and  342  may access or utilize certain aspects of back-end data  350  in order to provide output information. After processing the respective requests, the information output from common function modules  341  and  342  (i.e., the output of the request processing) may be transmitted back to application container  320  of computing device  310 . 
     Once received, application container  320  may aggregate the output of the common function modules  341  and  342  for application functions  321  and  322 , respectively, with the output of application function  323  (which was run locally on computing device  310 ). In addition, application container  320  may format the aggregated information from application functions  321 - 323  for display to a user of computing device  310 . Accordingly, while function processing for application functions  321  and  322  had been offloaded to common function modules  341  and  342  on server  330 , the data aggregation and formatting for each of application functions  321 - 323  may still be performed on computing device  310  using application container  320 . As such, the application container  320  may be developed and customized for its particular use instance without the need for duplicative function development. 
     In certain embodiments, application container  320  may be able to pass information, such as the information received from common function modules  341  and  342  on server  330 , to and from native functions  315  of device  310  (e.g., configuration files, a card reader, or a camera). Furthermore, in certain embodiments, application container  320  may be able to pass information between local application functions, such as application function  323 , and functions run remotely, such as application functions  321  and  322 . In addition, although not illustrated, application container  320  may be able to pass information to and from other application containers running on computing device  310 . 
     Server  330  may further include a manager module  345  that may include one or more rules for determining how the output of common function modules may be handled by application container  320 . For instance, based on information in a request from computing device  310  (e.g., credentials of a user of computing device  310  or information associated with the type of application container  320  running on computing device  310 ) manager module  345  may be operable to determine how the information output from common function modules  341  and  342  may be formatted for display to a user of computing device  310 . The information from manager module  345  may thus be transmitted back to application container  320  along with the output from common function modules  341  and  342 . Application container  320  may then aggregate the information from common function modules  341  and  342  along with the information from manager module  345  and from locally-run application function  323  and format the aggregated information for display to or interaction by a user of computing device  310 . 
     Modifications, additions, or omissions may be made to  FIG. 3  without departing from the scope of the present disclosure. For example, although not illustrated, other computing devices running application containers for different applications may also utilize one or more of the common function modules  341  or  342  on server  330 , as described below with respect to  FIG. 4 . Such application containers may implement different aspects of common function modules  341  or  342 , in particular embodiments. As another example, any suitable number of common function modules may be included on server  330  beyond common function modules  341  and  342 . Additionally, although illustrated as a single server, it will be understood that server  330  may include any suitable number of servers running common function modules similar to common function modules  341  and  342 . Moreover, although illustrated as part of server  330 , it will be understood that back-end data  350  may be remote from server  330  running common function modules  341  and  342 , and may comprise any suitable number of servers and/or storage systems. 
       FIG. 4  illustrates example user interfaces  410 ,  420 , and  430  of an enterprise application system incorporating common function modules, in accordance with embodiments of the present disclosure. In particular, interface  410  illustrates an example application interface of an enterprise banking system that displays account balance information  411 , balance history information  412 , and transaction information  413  along with miscellaneous other information. Interface  420  illustrates an example application interface of an enterprise banking system that displays customer information  421  and account balance information  422  along with miscellaneous other information. Interface  430  illustrates an example application interface of an enterprise banking system that displays transaction information  431  and customer information  432  along with miscellaneous other information. In particular embodiments, interface  410  may be an interface of a customer-facing application such as a mobile banking application, while interfaces  420  and  430  may be interfaces of employee-facing applications such as those for customer service agents or fraud prevention agents. 
     As will be understood by those of skill in the art, each of the applications with interfaces  410 ,  420 , and  430  utilize similar functionality. For instance, interface  410  and  420  each display some amount of account balance information, interface  410  and  430  each display some amount of transaction information, and interface  420  and  430  each display some amount of customer information. The portions of account balance information displayed between interfaces  410  and  420  may be different, depending on the application being used. Similarly, the portions of transaction information and customer information displayed in the different interfaces may differ as well. While the information displayed in different application interfaces may differ, the underlying functionality for gathering the information for display may be implemented using similar methods (e.g., the methods for gathering account balance information for each of interfaces  410  and  420  may be similar). In current systems, the functionality would be implemented by the respective applications independently. In other words, each application would include its own respective module for performing the functionality. Such modules would thus be developed and maintained independently. However, in embodiments of the present disclosure, common functionality may be provided by common function modules (e.g., common function modules  341  and  342  of  FIG. 3 ) located on remote servers. The information provided by the common function modules may then be sent to and aggregated by application containers located on the devices running the applications. Such methods are described above with respect to  FIG. 3  and below with respect to  FIG. 5 . 
       FIG. 5  illustrates example method  500  for utilizing common function application modules of an enterprise application system, in accordance with embodiments of the present disclosure. The method begins at step  510 , where requests are received at a server from remote applications. For instance, referring to  FIG. 3 , step  510  may include receiving a request from application container  320  of a remote computing device  310 . The requests may be formatted according to a web programming language, such as JAVASCRIPT, HTML, or CSS, and may utilize one or more APIs. 
     At step  520 , the requests are transmitted to and processed by one or more common function modules. The common function modules may process different portions of each request. Referring again to  FIG. 3 , this may include processing a portion of a request to perform function  321  of application container  320  using common function module  341 , and processing another portion of a request to perform function  322  of application container  320  using common function module  342 . In certain embodiments, the requests transmitted to the common functions modules may use APIs that are based on the particular common function modules of the server that will process the request. For instance, referring to  FIG. 3 , a request originating from application container  320  may include multiple APIs, including a first API that calls a function performed by common function module  341  and a second API that calls a function performed by common function module  342 . In certain embodiments, a gateway (e.g., gateway  340  of  FIG. 3 ) may determine which modules may process the different portions of each request, and, based on the determination, may then communicate each portion of the request to a particular common function module for processing. For instance, referring to  FIG. 3 , gateway  340  may, based on an API in a request, determine which common function module  341  or  342  on server  330  may process the portion of the request associated with the API. 
     At step  530 , the output of the common function modules may be communicated back to the remote application for aggregation and formatting. Referring again to  FIG. 3 , this step may include transmitting first information from common function module  341  and second information from common function module  342  back to application container  320  on remote computing device  310  for aggregation and formatting (e.g., aggregating and formatting the received information for display to a user of computing device  310 ). In addition, in certain embodiments, this step may include transmitting information from a manager module (e.g., manager module  345  of  FIG. 3 ) that is associated with the aggregation and formatting of the first information from common function module  340  and the second information from common function module  342 . Such information may include, for example, instructions for how application container  320  may format the first information and second information for display to a user of computing device  310 . In certain embodiments, the information from the manager module may be based on user credentials or the type of application on computing device  310  (e.g., whether the application is a mobile banking application, customer service application, or some other type of application). 
     In particular embodiments, method  500  may be repeated for other requests received from other devices utilizing the common function modules. For instance, the method may continue from step  530  and may include receiving a second request from a second application of a second remote device may be received. The method may further include processing at least a portion of the second request using the first module, and processing at least a portion of the second request using a third module. The method may also include transmitting, to the second remote device for aggregation and formatting by the second application, third information from the first module and fourth information from the second module. Because the first application and second application utilized the same common function module (i.e., the first module), at least a portion of the first information may be the same as at least a portion of the third information. 
     Modifications, additions, or omissions may be made to method  500  without departing from the scope of the present disclosure. For example, the order of the steps may be performed in a different manner than that described and some steps may be performed at the same time. Additionally, each individual step may include additional steps without departing from the scope of the present disclosure. 
       FIG. 6  illustrates an example computer system  600 , in accordance with embodiments of the present disclosure. One or more aspects of computer system  600  may be used in employee devices  110 , customer devices  120 , and back-end  130  of  FIG. 1 , devices  210  and/or back-end  250  of  FIGS. 2A-2B , and computing device  310  and/or in server  330  of  FIG. 3 . 
     Computer system  600  may include a processor  610 , memory  620  comprising instructions  630 , storage  640 , interface  650 , and bus  660 . These components may work together to perform one or more steps of one or more methods (e.g. method  500  of  FIG. 5 ) and provide the functionality described herein. For example, in particular embodiments, instructions  630  in memory  620  may be executed on processor  610  in order to process requests received by interface  650  using common function modules. In certain embodiments, instructions  630  may reside in storage  640  instead of, or in addition to, memory  620 . 
     Processor  610  may be a microprocessor, controller, application specific integrated circuit (ASIC), or any other suitable device or logic operable to provide, either alone or in conjunction with other components (e.g., memory  620  and instructions  630 ) functionality according to the present disclosure. Such functionality may include processing application functions using remotely-located common function modules, as discussed herein. In particular embodiments, processor  610  may include hardware for executing instructions  630 , such as those making up a computer program or application. As an example and not by way of limitation, to execute instructions  630 , processor  610  may retrieve (or fetch) instructions  630  from an internal register, an internal cache, memory  620 , or storage  640 ; decode and execute them; and then write one or more results of the execution to an internal register, an internal cache, memory  620 , or storage  640 . 
     Memory  620  may be any form of volatile or non-volatile memory including, without limitation, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), flash memory, removable media, or any other suitable local or remote memory component or components. Memory  620  may store any suitable data or information utilized by computer system  600 , including software (e.g., instructions  630 ) embedded in a computer readable medium, and/or encoded logic incorporated in hardware or otherwise stored (e.g., firmware). In particular embodiments, memory  620  may include main memory for storing instructions  630  for processor  610  to execute or data for processor  610  to operate on. In particular embodiments, one or more memory management units (MMUs) may reside between processor  610  and memory  620  and facilitate accesses to memory  620  requested by processor  610 . 
     Storage  640  may include mass storage for data or instructions (e.g., instructions  630 ). As an example and not by way of limitation, storage  640  may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, a Universal Serial Bus (USB) drive, a combination of two or more of these, or any suitable computer readable medium. Storage  640  may include removable or non-removable (or fixed) media, where appropriate. Storage  640  may be internal or external to computer system  600 , where appropriate. In some embodiments, instructions  630  may be encoded in storage  640  in addition to, in lieu of, memory  620 . 
     Interface  650  may include hardware, encoded software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer systems on a network (e.g., between employee devices  110  and back-end  130  of  FIG. 1 ). As an example, and not by way of limitation, interface  650  may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network and/or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network. Interface  650  may include one or more connectors for communicating traffic (e.g., IP packets) via a bridge card. Depending on the embodiment, interface  650  may be any type of interface suitable for any type of network in which computer system  600  is used. In some embodiments, interface  650  may include one or more interfaces for one or more I/O devices. One or more of these I/O devices may enable communication between a person and computer system  600 . As an example, and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touchscreen, trackball, video camera, another suitable I/O device or a combination of two or more of these. 
     Bus  660  may include any combination of hardware, software embedded in a computer readable medium, and/or encoded logic incorporated in hardware or otherwise stored (e.g., firmware) to communicably couple components of computer system  600  to each other. As an example and not by way of limitation, bus  660  may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a 
     Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCI-X) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or any other suitable bus or a combination of two or more of these. Bus  660  may include any number, type, and/or configuration of buses  660 , where appropriate. In particular embodiments, one or more buses  660  (which may each include an address bus and a data bus) may couple processor  610  to memory  620 . Bus  660  may include one or more memory buses. 
     Modifications, additions, or omissions may be made to  FIG. 6  without departing from the scope of the present disclosure. For example,  FIG. 6  illustrates components of computer system  600  in a particular configuration. However, any configuration of processor  610 , memory  620 , instructions  630 , storage  640 , interface  650 , and bus  660  may be used, including the use of multiple processors  610  and/or buses  660 . In addition, computer system  600  may be physical or virtual. 
     Although the present disclosure includes several embodiments, changes, substitutions, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present disclosure encompass such changes, substitutions, variations, alterations, transformations, and modifications as fall within the spirit and scope of the appended claims.