Service-oriented architectures based on software components and services have fundamentally changed the software industry. Service-based software platforms provide the functionality to build and interact with distributed applications by sending extensible markup language (XML) messages. Services represent a further architectural shift away from traditional monolithic applications (where the code that implements the business rules, data access, and user interface are all tightly coupled together as part of a single, large computer program). Services, such as web services or other software components, implement capabilities that are available to other applications (or even other web services, components, etc.) via industry standard network and application interfaces and protocols (e.g., XML, Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), Universal Description, Discovery, and Integration (UDDI), etc.).
A client application may use the capabilities of a service by invoking it across a network without having to integrate the code. In other words, services expose their capabilities to client applications, rather than their implementations. This allows services to be implemented in any language and on any platform and still be compatible with all client applications.
Services represent reusable software building blocks. Each building block, service, component, etc. is self-contained and describes its own capabilities, publishes its own programmatic interface, and implements its own functionality that is available as a hosted service. The business logic of the service runs on a remote machine that is accessible by other applications through the network. The client application invokes the functionality of a service by sending it messages, receiving return messages from the service, and then using the results within the application.
The modular, distributed, service-oriented architecture of services provides various benefits for software and IT professionals. For instance, this approach dramatically decreases application development costs by enabling developers to focus on their own value-added propositions. This approach also reduces many errors associated with complex and large monolithic applications. Furthermore, the services-oriented architecture simplifies applications maintenance and customization by segmenting an application into the client application and each of its consumed services or components.
As will be appreciated with reference to the description below, however, existing services, components, etc. have various limitations in the multi-channel enterprise environment. Therefore, there is a need in the art for systems, methods, computer programs, services, software components, etc. for providing channel-aware enterprise services.
Various embodiments of systems, methods, computer programs, services, software components, etc. are provided. One embodiment comprises an enterprise platform for providing banking solutions to financial service providers. One such enterprise platform comprises: at least one channel-aware service for providing a fundamental business process to enterprise applications across multiple channels, the at least one channel-aware service comprising: business logic associated with the fundamental business process; and channel-specific logic configured to modify the business logic based on a channel requesting the at least one channel-aware service.
Another embodiment comprises a method for providing a service to a multi-channel enterprise. One such method comprises: receiving a service request from an application via one of a plurality of channels in an enterprise; determining the one of the plurality of channels associated with the service request; and providing a service to the application with channel-specific business logic corresponding to the one of the plurality of channels.
Yet another embodiment comprises an enterprise service for providing a fundamental business process to enterprise applications across multiple channels in an enterprise. One such enterprise service comprises: means for receiving a request for a service from an application in an enterprise; means for determining a type of channel through which the service request is made; and means for modifying fundamental business logic based on the type of channel.
Other aspects, advantages and novel features of the invention will become more apparent from the following detailed description of exemplary embodiments of the invention when considered in conjunction with the following drawings.
Various embodiments of systems, methods, computer programs, services, software components, etc. for providing channel-aware enterprise services are provided. Various embodiments are described below with respect to
The enterprise platform may support various types of channels of-communication, conduits of interaction, etc. with the system. The channels may be characterized by applications, technologies, presentation logic requirements, business endpoints, consumer interactions, employee interactions, etc. In the example of a financial services provider, the enterprise may support full-service channels (e.g., bank branch, call center, etc.) for human-to-human interactions, self-service channels (e.g., Internet, interactive voice response (IVR) system, automated teller machine (ATM), etc.) for human-to-machine interactions, and automated channels (e.g., open financial exchange (OFX) transactions, web services, etc.) for machine-to-machine interactions.
To meet the demands of the enterprise, various applications may be employed across the various channels and which are supported by the enterprise platform. In accordance with the service-oriented architecture, the applications may be configured using a set of underlying building blocks, services, etc. These individual services are components that are put together in a flexible manner to deliver the desired business logic. The building blocks (e.g., web services) are provided by the enterprise platform and accessed by the applications. As known in the art, software services implement capabilities that are available to other applications (or even other services or software components) via industry standard network and application interfaces and protocols. An application can use the capabilities of a service (e.g., functions, data, business processes, etc.) by simply invoking it across a network without having to integrate it. In other words, services expose their capabilities to client applications—not their implementations. Therefore, services represent reusable software building blocks. This allows services to be implemented in any language and on any platform and still be compatible with client applications.
Each building block (service) is self-contained, and describes its own capabilities, publishes its own programmatic interface, and implements its own functionality that is available as a hosted service via the enterprise platform. The business logic of the service runs on a remote machine that is accessible by the enterprise applications through multiple channels. The enterprise applications invoke the functionality of the service by sending messages/requests to the service provided by enterprise platform, receiving return messages from the service, and using the results within the application. Because there is no need to integrate the services within the enterprise applications into a single, monolithic block, development and testing times, maintenance costs, etc. may be reduced. A more detailed description of services in the form of web-based services is included in Developing Enterprise Web Services: An Architect's Guide, Chatterjee, S. and Webber, J., Prentice Hall PTR, 2004, which is hereby incorporated by reference in its entirety.
Having described the general enterprise platform environment, the architecture, operation, and/or functionality of the exemplary CAES will be briefly described. The CAES comprises a service, software component(s), etc. for providing a fundamental business process to enterprise applications across multiple channels in an enterprise. As mentioned above, the fundamental business process may be configured as one of the underlying building blocks provided by the enterprise platform. In addition to the fundamental business logic, the CAES comprises a flexible mechanism for modifying the business logic based on the type of channel through which the service request is made. For example, one of the enterprise applications may make a request to the enterprise platform for the CAES. The CAES is configured to determine the channel sending the request and, if channel-specific business logic is required, to modify the business logic based on the channel. In this manner, the CAES may implement various channel-specific business processes using the underlying building blocks, components, etc. of the service-oriented architecture. This adaptive mechanism also eliminates the need to code channel-specific behavior within the enterprise applications.
The overall SOA promotes reuse within applications 104 as well as without. Because these services are accessible via industry-standard services interfaces, these building blocks can be reused by the enterprise applications 104 to form a more seamless solution for the customer. CAES 102 (and other services provided by enterprise platform 100) are configured to conform to two philosophies: channel neutrality and channel awareness.
With regard to channel neutrality, the services (and other components) are built to work across any enterprise channel 106. Channel neutrality makes it easier to reuse components, manage them, configure them, and extend them centrally. This reuse and centralization is, of course, a fundamental driver for lowering the total cost of ownership (TCO) of the overall system to enterprises (e.g., financial service providers, etc.).
Channel awareness extends the concepts of channel neutrality. Individual services as well as overall business processes can modify their own behavior based on the enterprise channel 106 that made the request. This eliminates the need to code channel-specific behavior within enterprise applications 104, yet allow fundamental building blocks to automatically adjust based on the most basic of contexts: the access channel.
As illustrated in the embodiment of
Channel-specific rule(s) 112 determine the channel-specific business logic for one or more enterprise channels 106. In other words, channel-specific rule(s) 112 define deviations from the underlying business logic 110 for a particular enterprise channel 106. It should be appreciated that channel-specific rule(s) 112 may be implemented in various ways. In one embodiment, channel-specific rule(s) 112 are stored as the logic for modifying business logic 110 for a particular enterprise channel 106. In alternative embodiments, channel-specific rule(s) 112 may be stored as rules, tables, or any other information that may be used to modify the underlying business logic 110.
As further illustrated in
Enterprise platform 302 includes a data store 316 for storing core data model 330, extensions 332, and application/transaction data model(s) 334. Enterprise platform 302 also includes analytics datamart 324 and business process repository 326. Data store 316 may comprise a collection of business processes and services that fulfil the business and technical requirements of the system. Analytics datamart 324 may comprise a collection of historical information used to analyze behaviors, events, trends, etc. Business process repository 326 may comprise a collection of executable business processes that reflect the business practices of a customer of a financial service provider 306. For instance, these business practices may include decision matrices, actions, utility processes, etc.
Core data model 330 may comprise a database management system (DBMS) model that captures people, organizations, their relationships, products, marketing campaigns, customer interactions, authorization information, etc. Core data model 330 may provides a customer-centric model with a complete and consistent view of customers across all channels. Core data model 330 also enables customers to have a consistent view of financial service provider 306 across all channels. Core data model 330 may be application neutral, flexible, open, and extensible.
Extensions 332 and application/transaction data model(s) 334 contain application-specific data that may include transactional information for financial transactions (e.g., transfers, stop payments, check inquiries, etc.).
As further illustrated in
As mentioned above, CAES 102 may be configured to provide any desirable channel-aware service.
CAES 102 may also be configured to provide an authorization/entitlements service.
Referring to the embodiment illustrated in
Another example of a CAES 102 is illustrated in
Referring to the embodiment of
CAES 102 may also be configured to support a new account opening service. This is an example of channel neutrality and channel awareness manifested at the process level rather than the service level. Processes are defined as a series of steps that may call one or more services each. A new account opening process might include calling a customer profile service, an account service, a transfer service, and a fulfillment sub-process. A bank that decides to offer its customers the ability to open an account over the Internet channel will invariably deploy a different process for that channel compared to the call center or the branch. The types of products offered will be different, as banks will reserve the more complex products for the branch and limit the type of products they offer through the Internet. The number of steps, the flow of the screen, and the number of options offered might also be very different based on the channel. The process is very much channel-aware. However, some aspects of the channel might be channel neutral. The fulfillment sub-process, for example, which might include ordering the debit card, the check book, and the welcome letter, could be the same used across all channels.
Another channel-aware enterprise service for managing enterprise incidents is illustrated in
One of ordinary skill in the art will appreciate that the channel-aware enterprise services may be implemented using various technologies, including but not limited to, XML, SOAP, WSDL, UDDI, etc. It should be further appreciated, however, that alternative embodiments may include other technologies. Furthermore, the channel-aware enterprise services may be implemented as services (e.g., web services) or any other software component(s) in a service-oriented architecture.
Although this disclosure describes various embodiments, the invention is not limited to those embodiments. Rather, a person skilled in the art will construe the appended claims broadly, to include other variants and embodiments of the invention, which those skilled in the art may make or use without departing from the scope and range of equivalents of the invention.