Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
Summary by NHIP
Context-based transaction switching
The gateway receives transactions from merchant devices and determines rules based on application level information to select services across multiple networks. It applies these dynamic and static conditions to translate the transaction from a first format into a second format specified by the chosen service provider.
Claim Score by NHIP
Abstract
Application level switching of transactions at a gateway is provided. The gateway is configured to switch the transaction based on the application level content, a current state of a transport environment, and/or dynamic rules for switching transactions. For example, several possible service providers can be selected for the type of transaction, and the gateway can monitor not only the round-trip time through the network(s) to different possible service providers, but also the time required to complete the transaction at the application level and return a response. The application is chosen on the sending side of the network, and application level formatting is done on the sending side as well. The gateway uses modular code and data, and separate instances of processing code to allow dynamic updating. Rules for application service selection can be selectively uploaded to the gateway from a client. The rules for different available application services can be distributed across different gateways.

Term
Term ended
Expired 29 June 2025, 1.2 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
18 claims: 2 independent, 16 dependent
- 1Broadest claimClaim Score 36, narrow(NHIP)A method comprising:receiving a transaction in a first format from a merchant point of sale device at a gateway;determining application level information for the transaction, wherein the application level information comprises information used in processing the transaction;determining a rule based on the application level information, wherein determining the rule comprises determining the merchant point of sale device from the application level information and determining merchant point of sale device-specific rules for processing the transaction in a database or based on one or more merchant point of sale device subscriptions to services provided by a service provider, and wherein the merchant point of sale device-specific rules include one or more dynamic and static conditions for switching the transaction across a plurality of networks, wherein different service providers are accessible through the plurality of networks;applying the rule to the application level information;determining a service for the transaction based on the application of the rule to the application level information, wherein rules for the different service providers are stored at the gateway;based on a set of service provider rules associated with the service provider for the determined service: translating the transaction from the first format into a second format specified by the service provider for the determined service, and processing the transaction in the second format;and sending the processed transaction to the merchant point of sale device.
- 12A gateway comprising:a request handler connected to a merchant point of sale device to receive a transaction comprising application level information from the merchant point of sale device in a first format, wherein the application level information comprises information used by a service provider in processing the transaction;an adaptive route handler connected to a message stream parser to determine application level data from the transaction in a second format;a rules database connected to the adaptive route handler;wherein the adaptive route handler accesses the rules database to determine rules specified by the merchant point of sale device for processing the transaction and to determine a service for the transaction based on an application of the determined rules to the application level information, wherein rules for different service providers are stored at the gateway, and further to route the transaction to a service provider that can provide the determined service, and wherein the rules specified by the merchant point of sale device for processing the transaction include one or more dynamic and static conditions for switching the transaction across a plurality of networks, wherein the different service providers are accessible through the plurality of networks;the message stream parser connected to the request handler to convert the transaction in the first format to the second format specified by the service provider that can provide the determined service;and a flow handler connected to the adaptive route handler to send the transaction in the second format to the service provider.
Independent claims2
190 paragraphs in 5 sections, as filed
CROSS-REFERENCES TO RELATED APPLICATIONS
0001This patent application claims priority from and is a non-provisional continuation application of U.S. patent application Ser. No. 11/171,516, entitled, “ADAPTIVE GATEWAY FOR WITCHING TRANSACTIONS AND DATA ON UNRELIABLE NETWORKS USING CONTEXT-BASED RULES,” filed Jun. 29, 2005, issued as U.S. Pat. No. 7,774,402 on Aug. 10, 2010, the entire contents of which are herein incorporated by reference for all purposes. This patent application is also related to U.S. patent application Ser. No. 11/172,397, entitled “SCHEMA-BASED DYNAMIC PARSE/BUILD ENGINE FOR PARSING MULTI-FORMAT MESSAGES”, filed Jun. 29, 2005, issued as U.S. Pat. No. 7,694,287 on Apr. 6, 2010, the entire contents of which are herein incorporated by reference for all purposes.
BACKGROUND OF THE INVENTION
0002The present invention generally relates to telecommunications and more specifically to techniques for intelligently switching transactions at the application level based on content of the transaction, dynamic context information for a transport environment, and/or dynamic rules for switching transactions.
0003When transactions, such as credit card authorizations, debit card transactions, electronic check transactions, etc., are performed at a client, the clients send transactions to a service provider. The service provider provides services to the client, such as credit card authorizations, settlement of transactions, etc. Typically, clients have the transaction routed to a transaction processor of the service provider for processing. The transaction may be routed though various networks. The various networks may be disparate networks that may or may not be reliable.
0004Typically, the transaction requires a rapid response and high reliability. For example, a user may be performing a credit card transaction with a client. In this transaction, a credit card authorization request may be needed to be sent for processing to the transaction processor, which can facilitate the authorization of the transaction. The transaction may fail or be delayed because one of the various networks the transaction is sent through or the transaction processor that is used to process the transaction for the client has failed. If any failures occur, a client is in danger of losing the transaction and any benefits gained from consummating the transaction.
0005Conventionally, a transaction may be broken down into a series of packets. Embodiments of the present invention operate on transactions, at the application level, while much of the prior art is directed to routing at the network level, operating on packets. Each individual packet may be routed at the packet level, or routed based on information in the packet, such as information in the header. The following patents describe network-level routing of packets (as opposed to the application level switching of embodiments of the present invention). IBM U.S. Pat. No. 5,974,460 describes selecting one of a number of mirror sites on the interne for downloading data by first determining which of the sites exhibits the best transfer rates at the time of the site selection. DEC U.S. Pat. No. 5,341,477 is similar. Alcatel U.S. Pat. No. 5,754,543 describes routing across a network taking into account the transmission costs. Other patents taking into account transmission costs are U.S. Pat. No. 6,535,488 and Nortel U.S. Pat. No. 6,487,286. DEC U.S. Pat. No. 5,459,837 shows a system for monitoring the performance of servers across a network and for determining which server has the most bandwidth to handle the request. Cabletron Systems U.S. Pat. No. 5,521,910 shows packets in canonical frame format, and determining a best path through a network using various metrics. U.S. Pat. No. 6,839,700 describes load balancing of content requests based on document generation costs. U.S. Pat. No. 6,754,188 describes routing packets based on packet content—whether it is voice, video, or file transfer.
0006IBM U.S. Pat. No. 6,460,120 shows a network processor that with the first three layers of the OSI model. A processor, which accesses layers <b>4</b> and above for flow control, to make routing decisions based on quality of service, is shown in Top Layer Networks U.S. Pat. No. 6,430,184. This allows distinguishing between priority-based email and bandwidth—guarantee-based multimedia.
0007Intel U.S. Pat. No. 6,732,175 shows switching in a network based on examining the content of a packet to determine the type of business transaction (e.g., purchase order) and forwarding it to an appropriate server for handling that type of service. This is done after the message is sent over a network to a web site destination, not before it is sent across a network. There are many examples of systems at a destination server that route messages based on content, such as intelligent load balancers. Diebold U.S. Pat. No. 6,302,326 shows converting financial messages into a common format, then routing them to an appropriate program in a system. EDS U.S. Pat. No. 5,805,798 describes network nodes that monitor the status of financial processing servers, and route messages to a backup in the event of unavailability.
0008The above patents are focused either on routing the individual packets at the packet level or routing data based on static rules. This may provide efficient routing of the packet; however, switching of the transaction at the application level based on dynamic context of the transport environment and dynamic rules is not addressed. In addition, where choosing between processors is done, this is typically at a node, such as a load balancer, between the network and the destination. Accordingly, it is desirable to provide techniques for intelligently switching a transaction at the application level.
0009Current technologies at the application level require a client to handle the application level interaction. The client is required to change its software systems in response to changes at a transaction processor, and also is required to support the different message formats expected by the different transaction processors. Client also need to handle failures on server systems and networks, and failover to alternate server processors so as to provide a continuous operation to the client's users.
BRIEF SUMMARY OF THE INVENTION
0010Embodiments of the present invention generally relate to switching transactions at the application level based on application level content of the transaction, dynamic context information of a transport environment and/or dynamic rules for switching transactions. An application router can be provided at the client edge of a network to (1) provide intelligent routing based on application level information, (2) perform preprocessing services before forwarding to a server, or (3) perform offloaded services without routing to the server, and returning a reply to the client.
0011In one embodiment, intelligent switching of transactions is provided. A client sends a transaction to a gateway, which is then configured to intelligently switch the transaction to a transaction processor. The gateway is configured to switch the transaction based on the application level content, a current state of a transport environment, and/or dynamic rules for switching transactions. For example, several possible service providers can be selected for the type of transaction, and the gateway can monitor not only the round-trip time through the network(s) to different possible service providers, but also the time required by the service provider to complete the transaction at the application level and return a response.
0012The switching according to embodiments of the present invention is done on the sending side of the network, not the receiving side. Transactions are not only formatted for routing across a particular network, they are formatted for processing by the particular processor at the destination end of the network, rather than doing such formatting at the receiving node. Thus, the node on the sending side of the network(s) includes information on the workflow of the processors on the receiving side of the network(s). In one embodiment, this is possible and practical by working with only a limited number of fields in a particular format, such as the limited number of fields needed for a financial transaction approval. In one embodiment, the routing chooses between Internet and a private financial network for routing financial transactions for approval. However, embodiments of the present invention can be applied to any type of transactions or content, such as ordering and distributing music, video, etc.
0013In one embodiment, application level service providers can publish, advertise or register their service across the network(s). A gateway according to embodiments of the present invention can receive and store all or selected ones of these published services. The gateway can verify that the publisher is a trusted entity (such as a registered bank or merchant), and determine if the publisher's service is relevant to the transactions of the gateway's client(s). The services can be registered and updated dynamically, without the need to wait until the end of the day or for a human operator to intervene.
0014In one embodiment, using the stored details of services provided by service providers, the gateway can not only choose which service to send a transaction to, but can format the transaction appropriately for the service provider at the application level. In addition, certain pre-processing or conditioning steps could be performed at the gateway before sending the transaction across a network to the service provider. Alternately, in some or all cases, all the transaction processing could be done at the gateway according to rules received from the service provider. For example, credit card transactions less than a threshold amount could be approved, not only without having to go to the bank for approval, but also without even having to go over a network to the credit card company.
0015In one embodiment, a client can specify rules or criteria for determining which service provider to select. These rules or criteria can be stored in the gateway. These client criteria can be loaded in advance of a transaction, or loaded immediately before or after a transaction message is sent.
0016In one embodiment, the capabilities of a gateway according to the present invention are distributed across a number of gateways. Each gateway is physically positioned at the edge of a network, at a point of client access, and may even be on the physical premise of a client. The gateway stores the information regarding the client(s) it is connected to, and relies on other gateways to provide information about services the other gateways are connected to. This is somewhat analogous to a router getting table information from other routers it is connected to for network packet transmissions, except embodiments of the present invention deal with application level services. Each gateway need only store broadcast service provider information that it or its clients are interested in, and only need store the address of the other gateways through which it makes that connection, although other connections beyond that may be needed.
0017A 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.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> depicts a system for processing transactions according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 2</figref> depicts a more detailed embodiment of a gateway according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 3</figref> depicts a simplified flowchart of a method for processing a transaction according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 4</figref> depicts a simplified flowchart for generating configuration information for a service offered by a transaction processor according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 5</figref> depicts a simplified flowchart of a method for subscribing to a service according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> depicts a decentralized system of a plurality of gateways according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 7</figref> depicts a system that shows the gateway as a front-end gateway according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 8</figref> depicts a system where the gateway is an Internet gateway according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 9</figref> depicts a system where the gateway is used as a wireless gateway according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 10</figref> depicts a system for processing ISO 8583 transactions according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 11</figref> depicts a system for parsing messages according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 12</figref> discloses an embodiment of a gateway according to embodiments of the present invention.
<figref idref="DRAWINGS">FIG. 13A</figref> depicts a structure for an IMF object according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 13B</figref> depicts attributes for a message definition according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIGS. 14A</figref>, <b>14</b>B, and <b>14</b>C depict a possible message, a hierarchical format with object ID codes, and an IMF object for the message according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 15</figref> depicts a simplified flowchart of a method for initializing the parse/build engine to process a message stream according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 16</figref> depicts a simplified flowchart of a method for dynamically adding or updating a schema in the parse/build engine according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 17</figref> depicts a simplified flowchart of a method for parsing an input message according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 18</figref> depicts a simplified flowchart of a method for building an output message from an IMF object according to one embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
0000Processing Overview
0037In one embodiment, intelligent switching of transactions is provided. A transaction may be a credit card authorization, debit card transaction or an electronic check transaction. Other examples of transactions include awarding of points or other rewards in an awards program, checking a password for a Verified by Visa authentication, doing a money transfer, deducting a payment from a prepaid card, such as a Visa Buxx card or a salary card, handling a proximity payment from a cell phone, pager, PDA, etc., determining coverage under health, auto, or other insurance, etc. A client sends a transaction to a gateway, which is then configured to intelligently switch the transaction to a transaction processor of a service provider. The client could be a POS, a merchant computer networked to POS devices or ECRs (electronic cash registers), a kiosk (such as for coupons or money transfer), an Internet web site server, etc.
0038The gateway is configured to make switching decisions at the application level based on the application level content of the transaction, a current state of a transport environment, and/or dynamic rules. The application level content may be information that is processed or used by a transaction processor in processing the transaction. In one embodiment, the information may be OSI layer 7 information. This layer directly serves the transaction processor or end user. It includes applications such as credit card authorization, debit card transaction applications, etc. Example application layer protocols are FTP (File Transfer Protocol), NFS (Network File System), CIFS (Common Internet File System), HTTP (Hyper Text Transfer Protocol), database query, SQL (Standard Query Language), and XML (Extensible Markup Language). For example, in a credit card authorization, application level content may include the credit card number, personal account number (PAN), a customer account number, a total amount for the transaction, etc. The transaction processor may use this information in order to process the transaction.
0039The current state of the transport environment includes real-time information associated with networks that can transport the transaction and transaction processors that may process the transaction. The real-time information may include the health of a network or transaction processor, the availability of a network or transaction processor, the application processing speed of a transaction processor, etc.
0040The dynamic rules may be information that is used to decide how to intelligently switch the transaction. The rules are used to switch the transaction according to the application level content and the current state of the transport environment. For example, the rules may specify that, depending on certain application level content and the current state of the transport environment, a certain service offered by a service provider should be selected. Further, the rules may be used to select a transaction processor for the service provider to process the transaction. For example, certain countries may require local processing for domestic transactions, thus requiring routing to a regional processing center. These rules may also factor in static information, such as network costs, service costs, etc. in order to make a selection. The rules may be dynamically changed without taking down a gateway.
0041The gateway may also perform services on the transaction according to the rules. The services may include processing the application level content. For example, transaction processors may be configured to process a transaction in different formats. A selected transaction processor may be configured to process application level content in a different format from the application level content currently in the transaction. Thus, the gateway may change the application level content to the new format so the selected transaction processor can process it. Accordingly, the gateway may change information in a transaction at the application level. This is different from reviewing information at the packet level. Conventionally, a transaction may be broken up into packets. A router may look at information in the packet and route the packet accordingly. Looking at information at the packet level, however, does not allow the router to perform services using the application level content for the transaction. For example, by looking at the application level content for the full transaction, the transaction may be intelligently routed with appropriate services applied to the transaction. If individual packets carrying information for the transaction are processed individually, the application level content of the transaction as a whole is not processed.
0042Accordingly, a gateway is provided that intelligently switches a transaction at the application level based on the application level content, current state of a transport environment, and/or dynamic rules. The gateway may also provide services that are applied based on the switching decision.
0000System Overview
0043<figref idref="DRAWINGS">FIG. 1</figref> depicts a system <b>100</b> for processing transactions according to one embodiment of the present invention. As shown, system <b>100</b> includes one or more clients <b>102</b>, one or more gateways <b>104</b>, one or more networks <b>106</b>, and one or more transaction processors <b>108</b>. The following description will be described with respect to a single gateway <b>104</b>, but it will be understood that multiple gateways <b>104</b> may be provided to perform any functions described below. Also, although the gateways are shown adjacent the clients, gateways may also be deployed adjacent the transaction processors, between the transaction processors and the networks <b>106</b>.
0044Clients <b>102</b> include any system configured to send a transaction. For example, clients <b>102</b> may include a system of computing devices that perform transactions with users. In one example, clients <b>102</b> may include a point of sale (POS) device that receives user information, such as credit card information, a pin number, name, etc., for a credit card authorization, check card transaction, etc. A client could also be a kiosk in a store for checking points or coupon information, or a kiosk for money transfer, or a node for receiving wireless user input from a cell phone or other device, or a web site server, etc. The client could also be a merchant server through which POS devices are networked.
0045The client (e.g., POS device) may then send a transaction that requests a transaction service from a transaction processor <b>108</b>. A transaction service may be any actions that may be performed by a transaction processor <b>108</b>. In one embodiment, these transaction services add value for transactions being performed by clients <b>102</b>. Examples of transaction services include facilitating credit card authorizations, debit card transactions, electronic check transactions, etc. A transaction service may also include processing a transaction or exchanging data.
0046Gateway <b>104</b> includes a system configured to receive transactions from clients <b>102</b> and to route the transactions to transaction processors <b>108</b> through networks <b>106</b>. In one embodiment, gateway <b>104</b> is situated on the edge of a network <b>106</b>. For example, gateway <b>104</b> may be at the point of access for client <b>102</b> or be on the premises of client <b>102</b>. The edge of network <b>106</b> may be a point where transactions may be configured for routing through network <b>106</b>. For example, gateway <b>104</b> may select a transaction processor <b>108</b> and send the request to a router of network <b>106</b>. The transaction may be broken up into a number of packets. The router would then route the packets for the transaction through network <b>106</b> to transaction processor <b>106</b>.
0047Networks <b>106</b> may be any network configured to transfer data. For example, networks <b>106</b> may include any packet-based networks, public switched telephone networks (PSTNs), wireless networks, the Internet, private financial networks, etc.
0048In one embodiment, networks <b>106</b> may be disparate and/or unreliable networks. The networks are disparate in that they may be controlled by different entities, may route data using different protocols and formats, may route data using different transport methods, etc. For example, networks <b>106</b> may be controlled by different entities. In one example, a first Internet Service Provider (ISP) may maintain a network <b>106</b>-<b>1</b> and a second Internet Service Provider may maintain a network <b>106</b>-<b>2</b>. Transactions may be routed through either network <b>106</b>-<b>1</b> or network <b>106</b>-<b>2</b> in one embodiment.
0049Also, networks <b>106</b> may be of different types. For example, a network <b>106</b>-<b>1</b> may be an asynchronous transfer mode (ATM) network that routes packets of data. Another network <b>106</b>-<b>2</b> may be a wireless network that transmits data wirelessly. Further, another network <b>106</b> may be a private network for an entity, such as the VisaNet network. Although only two networks <b>106</b> are shown, it will be understood that many more networks <b>106</b> may be provided. Also, it will be understood that transactions may be routed through multiple networks <b>106</b>. For example, transactions may be routed through network <b>106</b>-<b>1</b>, then network <b>106</b>-<b>2</b>, and then to a transaction processor <b>108</b>.
0050Networks <b>106</b> may also be unreliable. Because of the nature of networks, they may fail at any time. Thus, failover processing is needed to avoid disruptions in transaction processing.
0051Service providers may register and publish services that can be offered to clients <b>102</b>. Clients <b>102</b> may register for the services and have transactions switched to the service providers. Service providers may have any number of transaction processors <b>108</b> that are configured to provide the services to clients <b>102</b>. In one embodiment, transaction processors <b>108</b> process financial transactions. For example, transaction processors <b>108</b> may be associated with issuers, acquirers, merchants, or any other service provider. In one example, transaction processors <b>108</b> facilitate the authorization of credit card transactions.
0052A service may be provided by more than one transaction processor <b>108</b>. For example, a service provider may have many data centers that can provide a service to a client <b>102</b>. Thus, a transaction for the service may be switched to any of the transaction processors <b>108</b> that can provide the service. The transaction processor <b>108</b> may be selected by gateway <b>104</b> based on application level content, context information for a transport environment, and/or dynamic rules, all of which may be dynamically changing.
0053The application level services may be dynamically changed. Services available may be modified, moved to another processor, be unavailable due to maintenance or failure, etc.
0054The context information for the transport environment may also be dynamically changing. Gateway <b>104</b> thus determines the context information for the transport environment when determining how to switch a transaction. For example, a current state of the health of a network <b>106</b>, the availability of a network <b>106</b>, the availability of a transaction processor <b>108</b>, the speed that data is being transferred through a network <b>106</b>, the cost of transferring a transaction through a network <b>106</b>, the cost of processing a transaction, how long an application is taking to process a transaction at the application level, etc. may be determined.
0055In addition to the dynamic information for the context information for the transport environment, certain relatively static information may be determined. For example, static information may be the cost of a transaction, the format needed in order for a transaction processor <b>108</b> to process a transaction, etc. Gateway <b>106</b> may use the dynamic and static information in determining how to route a transaction.
0056The dynamic rules may be information that is used to decide how to intelligently switch the transaction. The rules may be dynamically loaded. For example, a service provider may register rules for a service, which be dynamically loaded onto gateway <b>104</b>. Also, a client may subscribe to the service and provider rules for switching its transactions to the service provider. These rules may also be dynamically loaded onto gateway <b>104</b>.
0057Accordingly, gateway <b>104</b> can dynamically select a transaction processor <b>108</b> for a service that can process a transaction. Business services particular to a selected transaction processor may also be performed on the transaction, such as the transaction may be formatted such that the selected transaction processor <b>108</b> can process it. The transaction can then be sent through a selected network <b>106</b> to the selected transaction processor <b>108</b>. By dynamically selecting transaction processors <b>108</b> and/or networks <b>106</b>, gateway <b>104</b> insulates clients <b>102</b> from any failures of transaction processors <b>108</b> and/or networks <b>106</b>. Accordingly, this provides extremely high service availability. Gateway <b>104</b> insulates a client <b>102</b> from any changes that need to be made that may cause downtime for a transaction processor <b>108</b>.
0000Overview of Gateway <b>104</b>
0058<figref idref="DRAWINGS">FIG. 2</figref> depicts a more detailed description of gateway <b>104</b> according to one embodiment of the present invention. As shown, gateway <b>104</b> includes one or more request handlers <b>202</b>, an inbound message stream parser <b>204</b>, a security manager <b>206</b>, an adaptive route selector <b>208</b>, a flow handler <b>210</b>, an outbound message stream builder <b>212</b>, a message dispatcher <b>214</b>, a coordinator <b>216</b>, an administration module <b>218</b>, a configuration loader <b>220</b>, a rules database <b>222</b>, a context information database <b>224</b>, and a dynamic information monitor <b>226</b>.
0059Request handlers <b>202</b> are configured to receive transactions from clients <b>102</b>. Clients <b>102</b> may send transactions in different protocols and formats, such as hypertext transfer protocol (HTTP), file transfer protocol (FTP), extensive markup language (XML), ISO 8583 standards, etc. Request handlers <b>202</b> provide an interface for transactions sent in various protocols and formats, and provide the transactions to inbound message stream parser <b>204</b>. For example, an ISO message handler is configured to receive ISO 8583 requests from clients <b>102</b> and pass them to inbound message stream parser <b>204</b>. Also, an XML message handler, an HTTP request handler, and an FTP request handler can handle XML, HTTP, and FTP messages and/or requests. Accordingly, request handlers <b>202</b> allow gateway <b>104</b> to receive messages in different protocols and formats. Although the above formats and protocols are described, it will be understood that a person skilled in the art will appreciate other formats and protocols that request handlers <b>202</b> may process.
0060Inbound message stream parser <b>204</b> is configured to receive a transaction from request handlers <b>202</b> and convert the request into a canonical form. Inbound message stream parser <b>204</b> can receive messages in different formats and process those requests into a canonical format that can then be processed by other components of gateway <b>104</b>. Accordingly, transaction requests in many different formats may be processed by gateway <b>104</b>. Inbound message stream parser <b>204</b> also provides an extensible architecture in that new formats that may be processed by gateway <b>104</b> may be enabled. If a new format is added, the translation from the new format to the canonical format is added to inbound message stream processor <b>104</b>. Thus, because the canonical format is used, changes to all components in gateway <b>104</b> are not needed when new formats are added. Rather, inbound message stream parser <b>204</b> is configured to parse a request into a canonical format that can be processed by other components of gateway <b>104</b>. Further details of inbound message stream processor <b>204</b> can be found below.
0061Security manager <b>206</b> is configured to provide security features for the transactions. For example, security features such as pluggable authentication and authorization, role-based access control (RBAC), encryption, file integrity, etc. may be provided. The pluggable authentication and authorization feature provides a standard interface for authentication and authorization and hence allows newer methods of authentication and access control to be added without impacting existing methods. A person skilled in the art will appreciate other security features that may be added to transactions.
0062An adaptive route selector <b>208</b> is configured to switch a transaction to a transaction processor <b>108</b> through a network <b>106</b>. Adaptive route selector <b>208</b> switches the transaction based on application level content, the current state of a transport environment, and/or dynamic rules.
0063Adaptive route selector <b>208</b> uses rules found in rules database <b>222</b> and dynamic context information found in context information database <b>224</b> to route a transaction. As mentioned above, context information may be stored in context information database <b>224</b>. In one embodiment, the context information may be dynamic. A dynamic information monitor <b>226</b> may monitor and determine context information. The dynamic information is then stored in context information database <b>224</b>. Examples of context information include the availability of networks <b>106</b>, the health of transaction processors <b>108</b>, a cost per transaction, time taken for an application to process previous transaction at the application level, etc. In one embodiment, dynamic information monitor <b>226</b> may determine dynamic context information at run-time when a transaction is received. In another embodiment, dynamic information monitor <b>226</b> may determine dynamic context information at certain intervals.
0064Each different service performed by transactions processors <b>108</b> may specify probes that can be performed by dynamic information monitor <b>226</b>. The probes are sent and allow information to be collected based on the status of a transaction processor <b>108</b> and/or network <b>106</b>. For example, dynamic information monitor <b>226</b> may ping a network in order to determine if the network is available. If the transaction processor <b>108</b> or network <b>106</b> cannot be reached, it may be considered unavailable and status information is reflected in context information database <b>224</b>. If all transaction processors <b>108</b> for a service cannot be reached, then the service may be considered unavailable. Gateway <b>104</b> may determine another service provider that provides the service in this case. Also, the time it takes an application on a transaction processor <b>108</b> to process a transaction may be measured. For example, how long the application takes to authorize a credit card authorization is measured. This measurement provides application level context that can be used to switch a transaction.
0065Rules database <b>222</b> includes rules for determining a service for a transaction in addition to a network <b>106</b> and processor <b>108</b> to process the transaction. The rules may also express criteria for a client. For example, in order for a service to be selected, certain context information and application level content should be satisfied for the rules. Clients may provide client-specific rules that may be used to select a service for the transaction. In one example, when a transaction is received for a client <b>102</b>, adaptive route selector <b>208</b> may determine a client's specified selection rules and determine a service that can handle the transaction. In order to switch the transaction to a service provider that provides the service, application level content is determined from the transaction and/or dynamic context information is determined from context information database <b>224</b>. The application level content and/or context information is applied to the rules to determine a service provider that can process the transaction according to the rules. For example, based on certain factors, such as costs, clients <b>102</b> may specify that the cheapest service should be selected first, but if not available, a second more expensive service should be selected. Also, based on application level content, such as account numbers, transactions may be switched to a certain credit card service. For example, certain account numbers may indicate a credit vs. debit card, or that a particular points or awards system applies. Other account numbers or fields could indicate a need for other services, such as money transfer or password verification (e.g., Verified by Visa). Also, the application level content may include the location of the client and any regional or country-specific regulations that dictate if the transaction needs to be processed locally or sent to a processor <b>108</b> in a different country.
0066The services may also include a service specification that specifies rules for the service. For example, the rules may specify the message format required for transactions, the network addresses of transaction processors <b>108</b> that provide the service, preferences for switching transactions to transaction processors <b>108</b>, the range of account numbers that qualify for the service, etc. These rules are provided by a service provider upon registration, as discussed in more detail below. The service provider may directly load the rules on gateway <b>104</b>, which would then publish the rules to other interested gateways.
0067The rules may specify flows that can process the transaction. The flows handle processing of the transaction for sending to a transaction processor <b>108</b>. The message is then sent to a selected flow handler <b>210</b>. After the transaction processor <b>108</b> and network <b>106</b> are selected, flow handler <b>210</b> may perform business services on the transaction. For example, different transaction processors <b>108</b> may process transactions in different formats. Flow handler <b>210</b> may determine the appropriate format for the selected transaction processor <b>108</b> and format the transaction in that format. Other business services may include currency-conversions, encrypting sensitive fields, client side stand-in processing for transaction values below a certain threshold, etc.
0068Flow handler <b>210</b> may include a plurality of flows. Each flow may handle a set of business services that process a class of messages. Each flow includes a flow handler that coordinates all the business services in the flow. A sequence of services within a flow is specified by a flow specification, which can be loaded at run time using configuration loader <b>220</b>. The flow specification is the sequence of services that determines how the incoming message is handled. Each service is a software application code that performs a specific function. New services and flow specifications can be loaded dynamically to gateway <b>104</b>.
0069After flow handler <b>210</b> processes the transaction in a flow, the message is sent to an outbound message stream builder <b>212</b>. Builder <b>212</b> is configured to build an outbound message from a canonical format based on a message form expected by the determined transaction processor <b>108</b>. Builder <b>212</b> is thus configured to generate a message in any message format based on the canonical message format. Outbound message stream builder <b>212</b> is described in more detail below.
0070Message dispatcher <b>212</b> is configured to send a transaction to a transaction processor <b>108</b>. Dispatcher <b>214</b> may ensure that a transaction reaches the selected transaction processor <b>108</b>. It may manage connections to various transaction processors <b>108</b>, attempt to reconnect to failed transaction processors <b>108</b>, and also provide the status of transaction processors <b>108</b> and networks <b>106</b> to dynamic information monitor <b>226</b>. In one embodiment, the transaction may be packetized, i.e., broken up into a series of packets and sent to a router. The router may route the packets through network <b>106</b> to the transaction processor <b>108</b>.
0071A coordinator <b>216</b> is provided to coordinate the processes of gateway <b>104</b> and to ensure transactions are properly processed. Also, coordinator <b>216</b> provides services for application management, software distribution, system monitoring and failover capabilities to gateway <b>104</b>. Application management supports starting and stopping of applications and services locally and remotely. It also allows new applications and services to be added to gateway <b>104</b>. Software distribution enables software updates to be installed on gateway <b>104</b>, and includes support for rolling back updates if necessary. System monitoring service monitors key parameters of system components such as memory, CPU, network interfaces, and processes, and generates alerts if the configured parameters deviate from threshold values. It also restarts a process if it detects a process failure. Coordinator <b>216</b> also monitors the health of a peer gateway <b>104</b> using a heart-beat mechanism (in case of a multi-gateway cluster deployment), and takes over the processing load of the peer gateway <b>104</b> if the peer gateway <b>104</b> fails.
0000Dynamic Loading of Rules
0072After initial registration of a service (described below), the rules and business services performed by gateway <b>104</b> may be dynamically changed. Administration module <b>218</b> and configuration loader <b>220</b> are configured to dynamically load changes to rules database <b>222</b> and flow handler <b>210</b>.
0073Configuration loader <b>220</b> is configured to load a configuration changes, routing rules, new flow specifications, etc. into rules database <b>222</b> at run time. Accordingly, configuration loader <b>220</b> allows the dynamic reconfiguration of routing rules in rules database <b>222</b>. The rule-base maintains multiple versions of the rule-objects and has a synchronized reference to the current version of the rule-base. Before configuration loader <b>220</b> loads updates to the rule-base, it creates a shadow copy of the active rule-base and versions it. Then, for every object that is updated, it creates a new instance of the object and updates the reference in the new version of the rule-base. When all the updates are completed, it changes the reference to point to the new version of the rule-base.
0074Administration module <b>218</b> is configured to allow for administrative actions to be performed. Administration module <b>218</b> may be used by a user agent to administer one or more gateways <b>104</b>. For example, administration module <b>218</b> may be used to define new rules into rule database <b>222</b> or change routing rules dynamically. Also, administration module <b>218</b> may also be used to load and unload new flow specifications for flow handler <b>210</b>, start and stop business services, and load and unload configurations. Configuration loader <b>220</b> is then configured to perform the changes.
0075The dynamic changes of embodiments of the invention are made possible by the combination of modularization of services and the run-time invocation of services for processing messages through a flow (e.g., see description of flows above). When a new transaction is received by adaptive route selector <b>208</b>, it reads the current version of the rule-base and applies the rules to select the appropriate flow. Since the flow handler <b>210</b> uses a specific version of a flow for the entire life of the transaction, and each flow specification refers to a specific versions of services, flows and rules. Thus, they can be updated without interfering with an existing transaction at that time because the updates are effected in a different version than the version being currently used by existing transactions.
0000Processing of a Transaction
0076<figref idref="DRAWINGS">FIG. 3</figref> depicts a simplified flowchart <b>300</b> of a method for processing a transaction according to one embodiment of the present invention. In step <b>302</b>, a transaction is received from a client <b>102</b>. The transaction may be any type of transaction such as credit card authorization, check card transaction, etc.
0077In step <b>304</b>, application level content is determined for the transaction. As mentioned above, the application level content is used to process the transaction. For example, the application level content may be credit card number, PIN, the name of a member bank (enquirer or issuer), etc. The application level content may be considered as a whole. For example, if the transaction was packetized into a number of packets, the application level content may be found in a payload of multiple packets. This information may be reassembled into the application level content for the transaction.
0078In step <b>306</b>, the current state of the transport environment is determined. For example, the health of a transaction processor that can provide the services determined. Further, the network health for networks <b>106</b> that can route the transaction may also be determined. This information may be determined in real-time to provide the current state of the transport environment.
0079In step <b>308</b>, rules are applied to the application level information and/or current state of the transport environment to determine a service. For example, certain clients <b>102</b> may be associated with certain services. A processor host such as Visa may desire that its transactions be switched to transaction processors <b>108</b> that are owned by Visa. Further, other processor hosts may desire that their transactions be switched to a secondary transaction processor, such as Vital.
0080In step <b>310</b>, rules are applied to determine a transaction processor and/or network <b>106</b> in which to switch the transaction for the service. This decision may be determined based on the application level content and/or the current state on the transport environment as applied to the rules. For example, a service to process the transaction is determined. Then, an applicable transaction processor <b>108</b> is determined based on network availability.
0081Also, a service may also be associated with various transaction processors <b>108</b> and networks <b>106</b>. For example, credit card authorizations may be configured to be sent to certain transaction processors <b>108</b>. Further, check card transactions may be configured to be sent to a second set of transaction processors <b>108</b>. These rules are determined for the client and/or transaction service.
0082In step <b>312</b>, any business services may be performed at the application level on the transaction as required. For example, a transaction may be formatted into a format expected by the selected transaction processor <b>108</b>, any information at the application level may be added to the transaction, or any other business services may be performed.
0083In step <b>314</b>, the transaction may be switched to the selected transaction processor <b>108</b> through network <b>106</b>.
0084Alternatively, in another embodiment, gateway <b>104</b> is configured to process the transaction without switching the transaction to a service provider. A service provider may specify rules that state gateway <b>104</b> can process transactions if certain criteria are met. For example, if the transaction is lower than a certain amount. In one example, credit card transactions less than a threshold amount could be approved, not only without having to go to the bank for approval, but also without having to go over network <b>106</b> to a credit card company. This offers many advantages as transactions can be processed at the edge of the network. This eliminates network bottlenecks and provides a decentralized processing system.
0000Service Creation and Subscription
0085As mentioned above, rules may be dynamically loaded into rules database <b>222</b>. <figref idref="DRAWINGS">FIG. 4</figref> depicts a simplified flowchart <b>400</b> for loading rules in gateway <b>104</b> for a service offered by transaction processor <b>108</b> according to one embodiment of the present invention. In step <b>402</b>, a service creation request is received. For example, a service provider may try to register a service by sending a service creation request that specifies a service that is being offered by the service provider. Alternately, a gateway <b>104</b> associated with a transaction processor or other service provider may dynamically advertise new services, and a gateway associated with a client can determine whether to initiate a registration for those new services. A new service might be a money transfer service, a new points program, etc.
0086In step <b>404</b>, rules for the service are received. For example, the rules may specify addresses for transaction processors <b>108</b> that can process the service. The network addresses may be IP addresses or any other identifiers that can be used to route transactions to transaction processors <b>108</b>. Additionally, information for networks <b>106</b> that can be used to route the request to the transaction processors <b>108</b> may also be received. The rules may also specify criteria for using the service. For example, criteria specifying the format messages are expected to be received in, the costs of using the service (both fixed and per-transaction costs), and any other criteria for using the service may be received. The rules could specify which types of cards, or types of accounts or account number ranges qualify or are registered for the service.
0087In step <b>406</b>, rules for the service are dynamically loaded into rules database <b>222</b> by administration module <b>218</b> using configuration loader <b>220</b>. Further, any flow specifications that are needed to process transactions for the service may be loaded into flow handler <b>202</b>.
0088Accordingly, when the service has been created and published, clients <b>108</b> may subscribe to the services. <figref idref="DRAWINGS">FIG. 5</figref> depicts a simplified flowchart <b>500</b> of a method for subscribing to a service according to one embodiment of the present invention. In step <b>502</b>, a request is received from a client <b>108</b> to subscribe to a created service. The request may be received through a web portal or by any other methods. Clients <b>102</b> may contact and access gateway <b>104</b> directly.
0089In step <b>504</b>, a specification for rules or criteria for using a service is received from client <b>108</b>. This specification may indicate criteria that are needed to select the service for a transaction received from client <b>108</b>. The criteria may be client-specific or may be uniform across many clients <b>108</b> (e.g., for all POS devices for an entity). Also, the specification may be in the form of a priority for each service subscribed to by the client <b>108</b>. For example, a client may specify that, for a transaction, a first service is selected, but, if that service is not working, then a second service should be selected, etc. The criteria may also be more complicated and include more complex rules that factor in the network costs, service costs, etc.
0090In step <b>506</b>, rules for routing the requests for the service are generated. These rules may specify criteria that need to be satisfied based on application level content and/or the current state of the network transport environment in order for the service to be selected.
0091In step <b>508</b>, these rules may be dynamically loaded into rules database <b>222</b>. Accordingly, a service may be immediately available to a client <b>108</b> that subscribes to the service.
0092In step <b>510</b>, flow definitions for the service are generated. Flow definitions may be configured to support the service. In one embodiment, flow definitions for the service may have already existed and may not need to be generated. However, if the specialized business services need to be performed for client <b>108</b>, new flow definitions may be generated.
0093In step <b>512</b>, the flow definitions generated in step <b>510</b> may be dynamically loaded by configuration loader <b>220</b>.
0094In one embodiment, the rules may be received from a client <b>102</b> before a transaction is sent. For example, client <b>102</b> may subscribe to a service and provide rules for using the service. In another embodiment, the rules may be sent immediately before or after a transaction is sent. For example, client <b>102</b> may specify rules to use in a message sent before or after the transaction. The rules are then dynamically loaded onto gateway <b>104</b>. This allows a client <b>102</b> to dynamically configure gateway <b>104</b> at run-time.
0000Decentralization of Rules for Services
0095A plurality of gateways <b>104</b> may be deployed in a system. Each gateway <b>104</b> can provide its own services to clients <b>102</b> it is coupled to. Gateway <b>104</b> may be positioned at the edge of network <b>106</b>, at a point of client access, and possibly on the physical premise of a client <b>102</b>. In one embodiment, gateways <b>104</b> only store information for services offered by the gateway <b>104</b>. Different gateways <b>104</b> may have information for a different set of services. Accordingly, the information for providing various services registered by service providers or subscribed to by clients <b>102</b> may be distributed across gateways <b>104</b> or is decentralized. Because of the decentralization of information, gateways <b>104</b> are configured to contact other gateways <b>104</b> to either query for information for a service or to provide information for a service.
0096<figref idref="DRAWINGS">FIG. 6</figref> depicts a system <b>550</b> showing the decentralized system of gateways <b>104</b> according to one embodiment of the present invention. As shown a plurality of clients <b>102</b> and gateways <b>104</b> are shown. Gateways <b>104</b> are located on the edge of one or more networks <b>106</b>.
0097Each gateway <b>104</b> may be coupled to one or more clients <b>102</b>. For discussion purposes, a single client <b>102</b> is shown coupled to a gateway <b>104</b> but it will be understood that many clients <b>102</b> may be coupled to a gateway <b>104</b>. Also, it will be understood that gateways <b>104</b> may be coupled to transaction processors <b>108</b> instead of clients <b>102</b>.
0098Gateway <b>104</b> is configured to process transactions for the clients <b>102</b> it is coupled to at the edge of network <b>106</b>. For example, gateway <b>104</b>-<b>1</b> is configured to process transactions for client <b>102</b>-<b>1</b> and gateway <b>104</b>-<b>2</b> is configured to process transactions for client <b>104</b>-<b>2</b>. Gateway <b>104</b>-<b>1</b> stores information for services offered to client <b>102</b>-<b>1</b> and also information regarding preferences for client <b>102</b>-<b>1</b>. The same is true for other gateways <b>104</b> and clients <b>102</b>.
0099Gateways <b>104</b> maintain contact information for other gateways <b>104</b> to facilitate distribution of information for services. For example, when a first gateway <b>104</b> needs information for a service not currently offered by the first gateway <b>104</b>, it can contact a second gateway <b>104</b> that offers the service to have information, such as the rules for the service, sent to it. In another embodiment, the first gateway <b>104</b> may send a transaction for the service to the second gateway <b>104</b> where the second gateway <b>104</b> can process the transaction. In this case, the second gateway <b>104</b> can switch the transaction to a transaction processor <b>108</b>, receive a response, and then send the response back to the first gateway <b>104</b>.
0100The contact information may also be used to distribute information for services to other gateways <b>104</b>. For example, a service provider may upload a new service on a first gateway <b>104</b>. The rules for the service may then be distributed to other gateways <b>104</b>. For example, gateways that are coupled to clients <b>102</b> at the edge are sent the rules if the clients <b>102</b> are interested in the service. Clients <b>102</b> can also upload their own rules.
0101Each client may load only the rules for services it desires, reducing the memory and updating needed, and improving the speed of the gateway processing. For example, a hotel client may want a points or rewards service, but not a money transfer service. By only loading desired services, the hotel could get more information on its gateway without impacting performance. For example, the account numbers, or ranges of account numbers, that are in a points program can be stored on the gateway, so the processing to determine if a user qualifies for points can be done locally. A web site client, on the other hand, might be more interested in the Verified by Visa service. Similarly, information and rules particular to Verified by Visa could be stored locally, such as whether a card member subscribed and has a password, allowing prompting for the password without going out over the network to determine if the user is a subscriber. Certain merchants that do a lot of business with certain corporations may be more interested in the Visa business card, and want local listings of purchase card account numbers that are approved for purchases at that particular merchant.
0102In this way, clients <b>102</b> and service providers may interact directly with gateways <b>104</b> to load or request services. This may be advantageous for clients <b>102</b> because gateways may be tailored to that client's needs. Further, because a gateway <b>104</b> may be maintained at a client's site, the gateway <b>104</b> may be accessed easily and without delay.
0103Accordingly, a decentralized set of services is provided by system <b>550</b>. Instead of having a central processor, the processing is distributed to the edge of the network. This eliminates bottlenecks and provides failover protection. For example, conventionally, if a central processor is used and it goes down, then transaction processing for the whole system may be affected. However, if a gateway <b>104</b> goes down, processing for the whole system <b>550</b> is not affected and transactions may be rerouted to other gateways <b>104</b>.
0000Deployment Scenarios
0104Gateway <b>104</b> may be deployed in many different scenarios. For example, gateway <b>104</b> may be deployed as a front-end gateway on a private network, as an Internet gateway, and/or as a wireless gateway. <figref idref="DRAWINGS">FIG. 7</figref> depicts a system <b>600</b> that shows gateway <b>104</b> as a front-end gateway according to one embodiment of the present invention. System <b>600</b> connects one or more clients <b>102</b> to one or more transaction processors <b>108</b> across disparate networks <b>106</b>. Transaction processors <b>108</b> may be any system that can process a transaction from client <b>102</b>. For example, Visa, MasterCard, etc. may own transaction processors for credit card and debit card transactions, and a member bank (acquirer/issuer) may be a client <b>102</b>.
0105A client data center <b>602</b> may receive transactions from client <b>102</b>. The transactions may be credit card authorizations or debit card transactions. The data center may be a central computer connected via a client's private network to multiple POS devices, for example. Gateway <b>104</b> processes the transactions and intelligently switches the transactions to a transaction processor data center <b>108</b>. For example, if the transaction is a Visa transaction, transaction processor data centers A and B may be associated with Visa. If the transaction is a MasterCard transaction, processor data centers C may be selected because they are associated with MasterCard.
0106Gateway <b>104</b> determines an appropriate transaction processor <b>108</b> and network <b>106</b> in which to route the transaction. The transaction is then sent to a router <b>604</b> which can then route the transaction. In one embodiment, router <b>604</b> may route packets to the selected transaction processor <b>108</b> through a network <b>106</b>.
0107<figref idref="DRAWINGS">FIG. 8</figref> depicts a system <b>700</b> where gateway <b>104</b> is an Internet gateway according to one embodiment of the present invention. An Internet client <b>702</b> includes a client <b>102</b>. Client <b>102</b> may send transactions to gateway <b>104</b> through the Internet <b>704</b>. Gateway <b>104</b> may be configured for particular services needed for on-line shopping, such as normal credit card authorization, password authentication (Verified by Visa), rewards or points processing, etc.
0108Gateway <b>104</b> provides connectivity to different transaction processors <b>108</b> for client <b>102</b>. Gateway <b>104</b> may accept HTTP(s) and other XML-based requests. Based on application level content and the current state of a transport environment, a service and transaction processor <b>108</b> may be selected. Because the transaction may have been sent in HTTP or any other XML-based request, gateway <b>104</b> may translate the message to a format expected by transaction processor <b>108</b> before switching the transaction. For example, transaction processor <b>108</b> may require that a message be processed in an ISO 8583 format. Typically, when a POS device processes a transaction, the transaction may be sent in the ISO 8583 format. However, when a transaction is processed by an Internet gateway, an Internet client <b>702</b> may not be configured to send an ISO 8583 message. Thus, gateway <b>104</b> is configured to format the message into the ISO 8583 format required by transaction processor <b>108</b>.
0109In one example, gateway <b>104</b> may process Internet transactions from an Internet client <b>702</b>. Internet client <b>702</b> sends an HTTP(s) request to gateway <b>104</b>. Gateway <b>104</b> translates the HTTP(s) request into a canonical internal message format. Any business services may then be performed on the transaction. In one example, application level data may be changed in order to conform to a format required by transaction processor <b>108</b>. For example, an XML transaction may be converted into an ISO 8583 format. Gateway <b>104</b> then intelligently switches the transaction to a transaction processor <b>108</b>.
0110Transaction processor <b>108</b> processes the transaction and sends a response back to gateway <b>104</b>. This response may be in a transaction processor-specific format. Gateway <b>104</b> then builds an HTTP(s) response and sends it to Internet client <b>702</b>. Accordingly, a transaction through the Internet can be processed using gateway <b>104</b>.
0111<figref idref="DRAWINGS">FIG. 9</figref> depicts a system <b>800</b> where gateway <b>104</b> is used as a wireless gateway according to one embodiment of the present invention. The gateway may receive wireless messages from a user's mobile phone, PDA, pager, etc. Gateway <b>104</b> may be configured to support different wireless formats, such as wireless application protocol (WAP), mobile information device protocol (MIDP), JQME, etc. A MIDlet sends XML format requests over networks such as the global system for mobile communication (GSM) or general packet radio services (GPRS). Gateway <b>104</b> may convert inbound request payloads into a canonical internal message format. The internal message format (IMF) may then be processed by business services. The outbound message stream builder <b>212</b> converts the IMF to a response payload for sending to a transaction processor <b>108</b>. Accordingly, wireless transactions may be processed by gateway <b>104</b>.
0112A wireless transaction will now be described. In one embodiment, a wireless client <b>808</b> initiates a wireless payment transaction by sending an XML request over HTTP(s)/GSM/GPRS. Gateway <b>104</b> receives the XML request and converts it into a canonical internal message format before processing the request. Application level content in the transaction is used in addition to a current state of the transport environment to switch a transaction to a transaction processor <b>108</b>. Depending on the transaction processor <b>108</b> selected, flow handler <b>210</b> may perform business services on the transaction. The transaction is then sent to a transaction processor <b>108</b>.
0113Transaction processor <b>108</b> determines a client bank (or issuer) <b>802</b> and routes a message to the issuer <b>802</b>. Issuer <b>802</b> processes the request and sends a response back to transaction processor <b>108</b>. Transaction processor <b>108</b> then sends a response (in a transaction processor-specific format) back to acquirer <b>804</b>. Gateway <b>104</b> receives the response, translates it into an XML format, and sends it to wireless client <b>808</b>. Accordingly, gateway <b>104</b> is configured to route wireless transaction payments.
0114<figref idref="DRAWINGS">FIG. 10</figref> depicts a system <b>900</b> for processing ISO 8583 transactions according to one embodiment of the present invention. As shown, an issuer bank <b>902</b> and an acquirer bank <b>904</b> participate in the transaction. A client computer <b>102</b> at an acquirer bank <b>904</b> sends an ISO 8583 request to gateway <b>104</b>. Gateway <b>104</b> uses application level content and the current state of the transport environment in order to select a transaction processor <b>108</b> to handle the request. The message is then sent to the selected transaction processor <b>108</b> after any business services are performed on the request.
0115Transaction processor <b>108</b> processes the transaction and switches it to the appropriate issuer <b>902</b> for authorization. The issuer sends an ISO 8583 back to transaction processor <b>108</b>. Transaction processor <b>108</b> then sends a response to gateway <b>104</b>, which then is sent to client <b>102</b> of acquirer bank <b>102</b>.
0116In one example, a transaction processor <b>108</b> may not be available. In this case, for example, Processor A, data center <b>01</b> may not be available. This may be the preferred processor for a client <b>102</b> for the service. Gateway <b>104</b> then sends the transaction to a second processor, Processor A, data center <b>02</b>. Gateway <b>104</b> may keep checking for the availability of the primary data center and, once it becomes available, may start routing messages to the primary data center. The re-routing of transactions is done in a manner that is transparent to client <b>102</b>. Accordingly, down time for any transaction processors <b>108</b> is avoided using the intelligent switching of gateway <b>104</b>.
0117In another embodiment, the data centers for Processor A may be down and other data centers for other processors, such as Processors B and C, may need to be used. Processors B and C may process transactions in a different format than that of Processor A. In this case, gateway <b>104</b> may convert the format of the transaction to a format that corresponds to a format for processor B or processor C. The formatted transaction is then sent to processor B or processor C. Accordingly, different processors can be used in a way that is transparent to clients <b>102</b>. Even if processors use different formats, gateway <b>104</b> is configured to still route the transaction in that format.
0000Parse/Build of Messages
0000Overview of Parse Build Engine
0118<figref idref="DRAWINGS">FIG. 11</figref> depicts a system <b>1000</b> for parsing messages according to one embodiment of the present invention. System <b>1000</b> is configured to parse multi-format message streams, such as ISO 8583 messages into a canonical message format referred to as an internal message format (IMF) and build multi-format message streams, such as ISO 8583 message streams, from the IMF. Although financial message streams are described, it will be understood that any multi-format message streams may be parsed and built using system <b>1000</b>.
0119Parse/build engine <b>1004</b> corresponds to inbound message stream parser <b>204</b> and outbound message stream builder <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>. Although all the components as shown in <figref idref="DRAWINGS">FIG. 2</figref> are not shown in <figref idref="DRAWINGS">FIG. 11</figref>, it will be understood that those components may also be included in system <b>1000</b>. Additionally, parse/build engine <b>1004</b> may be included in gateway <b>104</b>, but may also be included in other components. For example, parse/build engine <b>1004</b> may be compatible with any software applications that processes data in a data format different from other heterogeneous systems.
0120Parse/build engine <b>1004</b> is configured to receive an input message stream <b>1010</b> from a system <b>1006</b> and parse the message into an internal message format. The internal message format (IMF) may then be processed by other components, such as a business services application shown in gateway <b>104</b>. After components in gateway <b>104</b> process the message in the IMF, parse/build engine <b>1004</b> builds an output message stream <b>1012</b> from the processed IMF. The output message stream <b>1012</b> may then be sent to a system <b>1008</b>, or returned to originating system <b>1006</b>.
0121Systems <b>1006</b> and <b>1008</b> may be any system that is configured to send messages <b>1010</b> and/or receive messages <b>1012</b> from parse/build engine <b>1004</b> (or gateway <b>104</b>). In one embodiment, systems <b>1006</b> and <b>1008</b> may be point of sale devices, smart card devices, transaction processors <b>108</b>, any system configured to process transactions, such as an acquirer, issuer, a service provider, a transaction authenticator, etc. Systems <b>1006</b> and <b>1008</b> may send/receive messages in many different formats such as ISO 8583 messages, extensible mark-up language (XML), HTML, etc. The input message stream may also be in any of multiple encoding schemes, such as ASCII, EBCDIC, BCD, etc., and have different data types, such as numeric, string, byte-array etc.
0122The parse/build engine of <figref idref="DRAWINGS">FIG. 11</figref> uses a schema table <b>1028</b>. Each schema is a data structure that provides metadata, including a grammar structure for the received format as well as pointers to handlers in handler table <b>1030</b>. The handlers correspond to particular fields in the message and convert the different fields of the message into the internal message format using the grammar structure. The handlers are code that is individually compiled. Thus, rather than compiling the overall system, the handlers are separately compiled, giving the speed of compiled software while retaining a modular system that can be easily upgraded without disturbing other elements of the engine.
0123Parse/build engine <b>1004</b> loads the identified schema and invokes the functionality of handlers associated with the schema. The handlers then parse the fields of a message into an IMF object
0124The schemas and any associated handlers not already loaded, may be loaded from schema definition file <b>1026</b> into schema table <b>1028</b> and handler table <b>1030</b> using the schema loader <b>1024</b>. Schema table <b>1026</b> includes various schemas, labeled schema name <b>1</b>, name <b>2</b>, . . . , name N. For each message format that may be parsed and built by parse/build engine <b>1004</b>, a corresponding schema may be provided. Each schema name is associated with a schema object that defines the “grammar,” the composition of a message stream in the external format. The composition may include a field sequence, field type, length, character encoding, and other fields that are optional or required. The new schema and compiled handlers may be loaded and used by parse/build engine <b>1004</b> without recompiling parse/build engine <b>1004</b>.
0000Parse/Build Flow
0125An example flow will now be described. As shown in <figref idref="DRAWINGS">FIG. 11</figref>, when a message is received, a business services program calls the parse/build engine <b>1004</b>. The message <b>1010</b> (a message stream in wire format) is sent to the parse/build engine, where it is first received by parser component <b>1016</b>. The business services application also provides the schema name <b>1011</b> to parser component <b>1016</b>. The parser component creates an internal message format (IMF) object in which to store the values from the message fields once they are translated into the IMF. In one embodiment, parser component <b>1016</b> recognizes the origin of message <b>1010</b> and determines which schema is needed for messages <b>1010</b> sent from the origin. In another embodiment, information in message <b>1010</b> may be parsed to determine the data format and thus a corresponding schema that should be used. Further, message <b>1010</b> may indicate which schema corresponds to the data format.
0126In one example, the parser component <b>1016</b> first looks up a root schema corresponding to the format of message detected, such as an ISO 8583 financial message. Such an ISO message may have a bitmap at the beginning which identifies which fields are present. The root schema would point to a handler, which is called and parses a type field to determine what type of message has been received (e.g., authorization message, reconciliation message, etc.). The parser component then looks up the schema for the message type identified, which in turn provides the particular grammar and points to handlers for that message type. Schema and handlers are looked up and called only for the fields actually present in the message. As new fields are identified or pointed to, new schema can be looked up and the corresponding handlers can be called. A particular field could be a composite field with one or more conditions, and the translating or parsing of the conditions can point to additional schema and associated handlers needed, depending on the outcome of the condition.
0127The IMF object <b>1018</b> (described in more detail below) is populated by the called handlers. The only fields populated are the fields corresponding to the fields included in the incoming message.
0128IMF object <b>1018</b> may then be processed by the business software application of gateway <b>104</b>. After being processed, IMF object <b>1018</b> is sent to build component <b>1020</b> along with a schema name for the outbound message stream. Because processing of the processed IMF object <b>1018</b> may be performed in a different data format, builder component <b>1020</b> is configured to build an output message stream <b>1012</b> from the processed IMF object <b>1018</b>. The process described above is repeated in reverse, with builder component <b>1020</b> looking up a root schema, calling the handler pointed to in order to build the type information in a process that can be reiterated many times. The called handlers build values found in IMF object <b>1018</b> into the fields that should be included in output message stream <b>1012</b>. Output message stream <b>1012</b> may then be sent to system <b>1008</b>, which can process the output message stream <b>1012</b>.
0129<figref idref="DRAWINGS">FIG. 12</figref> illustrates a business services application <b>1102</b> that uses the IMF object <b>1018</b> to perform any services provided by gateway <b>104</b>. Business services application <b>1102</b> operates on IMF object <b>1018</b>. The operations could include application layer routing, such as determining an issuer bank or processing center to send the message to. Additionally, services may be performed on a message, such as application level formatting of the message stream, logging, time-stamping, creating new fields needed for a reply or further processing, etc. The business services application could do pre-processing for an issuer or financial network, or it could perform local processing that has been offloaded. For example, authorization messages for purchases less than $50 may be approved, and a reply message sent without needing to forward the message to a financial institution for approval. Business services application <b>1102</b> is configured to process data in internal message format and not the external formats. Accordingly, business services application <b>1102</b> is insulated from any external formats that are used by other systems by parsing the message into the IMF.
0000IMF Structure
0130<figref idref="DRAWINGS">FIG. 13A</figref> depicts a structure for the IMF <b>1018</b> according to one embodiment of the present invention. As shown, N fields are provided in IMF <b>1018</b>. The fields may be an array of fields where each field can also include any number of child fields, which in turn can include grandchild fields, etc. in a hierarchical structure. For example, Field <b>1</b> includes child Fields <b>1</b>.<b>1</b>, <b>1</b>.<b>2</b>, . . . <b>1</b>.N. Fields <b>1</b>.<b>2</b>, . . . <b>1</b>.N may also include any number of child fields (not shown). When a message if received, only the fields actually used are populated with data.
0131<figref idref="DRAWINGS">FIG. 14B</figref> shows the hierarchical format with object ID codes, indices to the field definitions for the fields shown in <figref idref="DRAWINGS">FIG. 13A</figref>. The OID allows the indexing for various fields in an IMF object <b>1018</b>. Field definitions are accessed for fields in IMF object <b>1018</b> using the OID. In one embodiment, the OID is an eight-byte number that is represented by the dotted decimal representation shown. The OID for the first field is encoded as 1.0.0. Any subfields are encoded as 1.1.0, 1.2.0, and so on. The second field is encoded as 2.0.0, with any subfields encoded as 2.1.0, 2.2.0, and so on.
0000Schema Structure
0132<figref idref="DRAWINGS">FIG. 13B</figref> shows an example schema. The address of the schema is the first line, the message definition (MessageDef). The schema includes grammar and pointers to handlers for each of the fields in the message. In the example shown, the first field of the message is identified by a Field Definition Object (FieldDef) <b>1202</b> with index 1.0.0. This is also referred to as an OID attribute <b>1202</b>. Following the index for this field is the identification of the handler <b>1204</b> to be called (HDR). The rest of the elements on that line are the definitions of the grammar for that particular field. These field definitions describe the properties of the field, such as field sequence, field type, length, character encoding, the names of the hander needed, etc. The field definitions may be used to parse/build fields encoded in different encodings like ASCII, EBCDIC, BCD etc., and different data types like numeric, string, byte-array etc. Thus, multi-format message streams may be processed using the message definition. In one embodiment, the schema is metadata in the form of an XML schema.
0133The field definitions may include a number of attributes. It will be recognized that the attributes depicted in <figref idref="DRAWINGS">FIG. 13B</figref> are not exhaustive and a person skilled in the art may appreciate that other attributes may be used.
0134A handler attribute <b>1204</b> is the name of the field. A required/optional attribute <b>1206</b> indicates whether the field is required or optional in a message. A first data format attribute <b>1208</b> is the data format for the value of the field as found in the external format (also referred to as the wire-format). A second data format attribute <b>1210</b> is the internal format in which the field is stored in the IMF and processed by the business services.
0135A custom/not custom attribute <b>1212</b> indicates whether the field uses a custom handler or a generic handler to the parsing and building of the field.
0136A seventh attribute <b>1214</b> indicates the handler name that is needed to process the value in the field of the message. The handler takes the value in the identified field in the received message and either parses it into the IMF (for a parser schema) or builds the value from the IMF to an external format (for a builder schema).
0137An eighth attribute <b>1216</b> indicates the number of sub-fields within the field.
0000Example Message Fields Used in IMF (Internal Message Format)
0138<figref idref="DRAWINGS">FIG. 14A</figref> depicts an example of the fields used for a particular message object <b>1010</b> which includes a number of object IDs (OIDs) for different fields, OIDs 1.0.0, 1.1.0, 1.1.1, 2.0.0, 2.2.0, 4.0.0, and 4.1.0. These are the fields pointed to by the schema of <figref idref="DRAWINGS">FIG. 13B</figref>. Thus, for this example message, only the fields identified in <figref idref="DRAWINGS">FIG. 14C</figref> would be populated in the message object, which is shown in <figref idref="DRAWINGS">FIG. 13A</figref>. <figref idref="DRAWINGS">FIG. 14B</figref> shows a portion of the total hierarchical object IDs for the complete set of fields in the internal message format. As can be seen, message <b>1010</b> only includes the portion of these fields that it needs. For example, object IDs 1.2.0, 3.0.0 and 4.2.0 are not used. Note that these fields may have any number of child fields.
0139The object IDs provide a fast indexing system into the hierarchical internal message format of the message object shown in <figref idref="DRAWINGS">FIG. 13A</figref>. This indexing system uses the encoded object IDs (1.0.0, etc.), which, for each field used in the received format, index into (point to) the corresponding field of the internal message format. The indices can point directly to fields that are several layers down in a hierarchical structure.
0140When components of gateway <b>104</b> process IMF object <b>1018</b>, processing of the unnecessary fields is not performed. Thus, processing speed is increased.
0141Required fields may also be added to IMF object <b>1018</b>. Some fields may be required by business services module <b>1102</b> or transaction processors <b>108</b>. If it is determined that a field that is necessary to be used is not included in a received message <b>1010</b>, the field may be populated by the business services module for inclusion in the message to be built for retransmission. Thus, the “required” fields in the schema of <figref idref="DRAWINGS">FIG. 13B</figref> may be added to an IMF object <b>1018</b> if not included in message <b>1010</b>.
0000Initializing Parse/Build Engine
0142<figref idref="DRAWINGS">FIG. 15</figref> depicts a simplified flowchart <b>1400</b> of a method for initializing parse/build engine <b>1004</b> upon the start-up of the business services application. In step <b>1402</b>, an initialization request is received from the application. The request includes the location of one or more schema definition files <b>1026</b>.
0143In step <b>1404</b>, the schemas found in schema definition files <b>1026</b> are validated. The schemas are validated by a number of procedures, such as verifying that the correct type of data is referred to, that the handlers identified by the schema actually exist, etc.
0144In step <b>1406</b>, the schemas in schema definition files <b>1026</b> are loaded into registry <b>1022</b> from disk or other storage repository into DRAM memory using schema loader <b>1024</b>.
0145In step <b>1408</b>, any handlers specified in the schema are loaded into registry <b>1022</b>. For example, handlers specified by the field definitions in the message definition object are loaded into handler table <b>1030</b>. In one embodiment, handlers are stored as objects keyed by the handler name.
0146In step <b>1410</b>, the handlers are bound to the respective message definition objects. For example, all handlers that are specified by field definitions in a message definition object are bound to that message definition object.
0147Parse/build engine <b>1004</b> has now been initialized for the schema. In one embodiment, compiling of parse/build engine <b>1004</b> is not necessary. This is because of the use of compiled handlers that are used to parse/build field values.
0148During run-time, schemas may be dynamically updated and added to parse/build engine <b>1004</b>. The schemas may be updated by changing message definition objects or may be added by adding new message definition objects. If new handlers are needed, they may also be dynamically added to parse/build engine <b>1004</b> as compiled objects.
0149The schemas may be added without recompiling parse/build engine <b>1004</b> and without bringing it down. Thus, parse/build engine <b>1004</b> may continue to parse/build messages even as schemas are updated.
0000Adding or Updating Schema
0150<figref idref="DRAWINGS">FIG. 16</figref> depicts a simplified flowchart <b>1500</b> of a method for dynamically adding or updating a schema in parse/build engine <b>1004</b> according to one embodiment of the present invention. In step <b>1502</b>, a request to dynamically add or update a schema is received from an application. The request includes the location of one or more schema definition files <b>1026</b> that include the new or updated schema.
0151In step <b>1504</b>, the schemas found in schema definition files <b>1026</b> are validated.
0152In step <b>1506</b>, the schemas in schema definition files <b>1026</b> are loaded into registry <b>1022</b>. If an updated schema is provided with a set of new field definitions or changed field definitions, only the new or changed field definitions may be loaded into registry <b>1022</b>. While adding or updating the schema, the appropriate data structures are write-locked to ensure that in-flight messages being processed are not corrupted as a result of schema change. The in-flight messages continue to use the previous version of the schema while the Schema Loader <b>1024</b> loads the updated version of the schema.
0153In step <b>1508</b>, any handlers specified in the message definition object are loaded into registry <b>1022</b>. Parse/build engine <b>1004</b> may check to determine if any handlers are already present in registry <b>1022</b> and may not reload those handlers into registry <b>1022</b>. However, if any handlers were changed, the changed handlers are loaded.
0154In step <b>1510</b>, the handlers are bound to the respective message definition objects. In one embodiment, only the new or changed handlers are bound to a message definition object that has been updated. Parse/build engine <b>1004</b> has now been dynamically updated.
0000Flowchart of Parse Process
0155<figref idref="DRAWINGS">FIG. 17</figref> depicts a simplified flowchart <b>1600</b> of a method for parsing an input message stream <b>1010</b> according to one embodiment of the present invention. In step <b>1602</b>, a schema for the message is determined. The schema corresponds to a data format that the input message stream <b>1010</b> is composed in.
0156In step <b>1604</b>, any handlers for the message definition object are determined from the pointers in the schema.
0157In step <b>1606</b>, the handlers for each field are attached to the field.
0158In step <b>1608</b>, the handler translates the fields of the message. A handler for each field is invoked. The handlers use the field definitions in the schema to translate values of the fields into the IMF. The OID for the field points to both the field definitions in the schema for that field and also points to the corresponding field in the IMF object <b>1018</b>.
0159In one embodiment, parser component <b>1016</b> maintains an offset for the fields read in message <b>1010</b>. For example, the number of bytes read is stored as an offset. The parser component decrements this offset as each handler is called. When the handlers reach the end of message <b>1010</b> (e.g., when the offset equals a certain length), or the last field definition in the message definition object, the parser component knows the translation is complete.
0160In step <b>1610</b>, the translated fields are stored in the corresponding hierarchy of IMF object <b>1018</b>. An OID for the field may be used to store the translated values into corresponding positions in a hierarchy in IMF object <b>1018</b>.
0161If the translation above fails at any point, an error may be returned to gateway <b>104</b>. The parsing may continue and an IMF object <b>1018</b> may be returned. Error flags, however, may be noted in IMF object <b>1018</b>.
0000Flowchart of Build Process
0162The build process will now be described with respect to <figref idref="DRAWINGS">FIG. 18</figref>. <figref idref="DRAWINGS">FIG. 18</figref> depicts a simplified flowchart <b>1700</b> of a method for building an output message stream <b>1012</b> from an IMF object <b>1018</b> according to one embodiment of the present invention. In step <b>1702</b>, a schema name and IMF object <b>1018</b> are determined. In one embodiment, IMF object <b>1018</b> is first determined. The schema name may be determined based on information in IMF object <b>1018</b>. For example, the schema name may be stored in information in IMF object <b>1018</b>. Also, the schema name may be determined by the channel or destination system in which information in the IMF object <b>1018</b> will be sent to.
0163In step <b>1704</b>, a message definition object is used to address the schema in registry <b>1022</b>. In step <b>1706</b>, any handlers needed for the schema are also determined.
0164In step <b>1708</b>, for each field found in IMF object <b>1018</b>, the value from a corresponding field in the hierarchy in the IMF object <b>1018</b> is loaded. OIDs for the field are used to access the field definitions.
0165In step <b>1710</b>, the value is translated from the field in IMF object <b>1018</b> according to the attributes of the field definition for the field. Accordingly, a value found in the IMF format is translated into a format compatible with another system.
0166In step <b>1712</b>, the built values are composed in corresponding fields of a generated output message stream <b>1012</b>.
0167If a value for a field in an IMF object <b>1018</b> is not found for a field required for the external forma, the value for that field in the external message may be set to null or the message generated may simply not have this field in the message. Further, if it is determined that IMF object <b>1018</b> should have had this field, then an error may be returned indicating that a field was not found in IMF object <b>1018</b>.
0168Embodiments of the present invention provide many advantages. For example, the combination of application level content, current state of a network transport environment, and/or configuration information may be used to intelligently switch a transaction. This adds value to any transactions that are sent by a client. For example, if there are any failures in the network or transaction processors, the transactions may be routed to other transaction processors through other networks. This avoids down time and any loss of transactions.
0169Further, business services may be applied to application level content. This allows increased flexibility for the gateway <b>104</b> to intelligently route transactions. For example, the data processors <b>108</b> may process transactions in different formats. Gateway <b>104</b> may be configured to change the format of the application level content based on the format required by a transaction processor. Further, the business services that can be applied to a transaction may allow a gateway <b>104</b> to receive transactions in multiple formats or protocols. For example, wireless transaction payments, Internet transactions, POS transactions, etc. may be processed. This allows increased flexibility in the processing transactions.
0170While embodiments of the present invention have been described as processing transactions and in some cases financial transactions, it will be understood that transactions may be processed for a variety of areas. For example, transactions may be processed for a music sharing service. The transactions may include download requests for music, which gateway <b>104</b> subsequently provides intelligent switching of the request to a service provider and routes the content requested back to the client. Also, a video service may be provided. Video requests, whether on-demand or pay-per-view, may be received and processed by gateway <b>104</b>. The request and subsequent downloads may be intelligently switched according to embodiments of the present invention.
0171The present invention can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in embodiment of the present invention. 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 present invention.
0172The above description is illustrative but not restrictive. Many variations of the invention will become apparent to those skilled in the art upon review of the disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the pending claims along with their full scope or equivalents.
Contents5
20 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11663568B1 | Cited by | United States of America | Search report |
| US2017278085A1 | Cited by | United States of America | Search report |
| US12321911B2 | Cited by | United States of America | Applicant |
| US10949822B2 | Cited by | United States of America | Search report |
| US10977639B2 | Cited by | United States of America | Applicant |
| US12354099B2 | Cited by | United States of America | Applicant |
| US10528937B2 | Cited by | United States of America | Search report |
| US2016019520A1 | Cited by | United States of America | Search report |
| US2001056401A1 | Cites | United States of America | Applicant |
| US2002016769A1 | Cites | United States of America | Applicant |
| US2002065774A1 | Cites | United States of America | Applicant |
| US2002083210A1 | Cites | United States of America | Applicant |
| US2002091844A1 | Cites | United States of America | Applicant |
| US2002099562A1 | Cites | United States of America | Applicant |
| US2002116530A1 | Cites | United States of America | Applicant |
| US2002128917A1 | Cites | United States of America | Search report |
| US2002133412A1 | Cites | United States of America | Applicant |
| US2002141449A1 | Cites | United States of America | Applicant |
| US2002174030A1 | Cites | United States of America | Search report |
| US2002174069A1 | Cites | United States of America | Applicant |
| US2002178112A1 | Cites | United States of America | Applicant |
| US2003004894A1 | Cites | United States of America | Applicant |
| US2003009382A1 | Cites | United States of America | Search report |
| US2003018579A1 | Cites | United States of America | Applicant |
| US2003061404A1 | Cites | United States of America | Applicant |
| US2003065623A1 | Cites | United States of America | Applicant |
| US2003093479A1 | Cites | United States of America | Applicant |
| US2003153338A1 | Cites | United States of America | Applicant |
| US2003158951A1 | Cites | United States of America | Applicant |
| US2003163585A1 | Cites | United States of America | Applicant |
| US2003169749A1 | Cites | United States of America | Applicant |
| US2003210694A1 | Cites | United States of America | Applicant |
| US2003221000A1 | Cites | United States of America | Applicant |
| US2003223408A1 | Cites | United States of America | Applicant |
| US2004015511A1 | Cites | United States of America | Applicant |
| US2004039693A1 | Cites | United States of America | Applicant |
| US2004153511A1 | Cites | United States of America | Applicant |
| US2004172254A1 | Cites | United States of America | Applicant |
| US2004267660A1 | Cites | United States of America | Search report |
| US2005005306A1 | Cites | United States of America | Applicant |
| US2005015336A1 | Cites | United States of America | Search report |
| US2005027610A1 | Cites | United States of America | Applicant |
| US2005049974A1 | Cites | United States of America | Search report |
| US2005065881A1 | Cites | United States of America | Applicant |
| US2005071235A1 | Cites | United States of America | Applicant |
| US2005080850A1 | Cites | United States of America | Applicant |
| US2005177515A1 | Cites | United States of America | Applicant |
| US2005193078A1 | Cites | United States of America | Applicant |
| US2005251469A1 | Cites | United States of America | Applicant |
| US2005256802A1 | Cites | United States of America | Applicant |
| US2005278270A1 | Cites | United States of America | Applicant |
| US2006030313A1 | Cites | United States of America | Search report |
| US2006080120A1 | Cites | United States of America | Applicant |
| US2006288394A1 | Cites | United States of America | Search report |
| US2007223444A1 | Cites | United States of America | Search report |
| US2008146201A1 | Cites | United States of America | Search report |
| US2011035676A1 | Cites | United States of America | Search report |
| US5341477A | Cites | United States of America | Applicant |
| US5453601A | Cites | United States of America | Applicant |
| US5459837A | Cites | United States of America | Applicant |
| US5484988A | Cites | United States of America | Applicant |
| US5521910A | Cites | United States of America | Applicant |
| US5655008A | Cites | United States of America | Applicant |
| US5754543A | Cites | United States of America | Applicant |
| US5805798A | Cites | United States of America | Applicant |
| US5850446A | Cites | United States of America | Applicant |
| US5974460A | Cites | United States of America | Applicant |
| US5978840A | Cites | United States of America | Applicant |
| US5983208A | Cites | United States of America | Applicant |
| US5987132A | Cites | United States of America | Applicant |
| US6000832A | Cites | United States of America | Applicant |
| US6006264A | Cites | United States of America | Applicant |
| US6016307A | Cites | United States of America | Applicant |
| US6023684A | Cites | United States of America | Applicant |
| US6039245A | Cites | United States of America | Applicant |
| US6091724A | Cites | United States of America | Applicant |
| US6134598A | Cites | United States of America | Applicant |
| US6144641A | Cites | United States of America | Applicant |
| US6160874A | Cites | United States of America | Applicant |
| US6163772A | Cites | United States of America | Applicant |
| US6230201B1 | Cites | United States of America | Applicant |
| US6302326B1 | Cites | United States of America | Applicant |
| US6304915B1 | Cites | United States of America | Applicant |
| US6317438B1 | Cites | United States of America | Applicant |
| US6389479B1 | Cites | United States of America | Applicant |
| US6430184B1 | Cites | United States of America | Applicant |
| US6456594B1 | Cites | United States of America | Applicant |
| US6460120B1 | Cites | United States of America | Applicant |
| US6473404B1 | Cites | United States of America | Applicant |
| US6473740B2 | Cites | United States of America | Applicant |
| US6487286B1 | Cites | United States of America | Applicant |
| US6535488B1 | Cites | United States of America | Applicant |
| US6644546B2 | Cites | United States of America | Applicant |
| US6647376B1 | Cites | United States of America | Applicant |
| US6732175B1 | Cites | United States of America | Applicant |
| US6754188B1 | Cites | United States of America | Applicant |
| US6788688B2 | Cites | United States of America | Applicant |
| US6802067B1 | Cites | United States of America | Applicant |
| US6807410B1 | Cites | United States of America | Applicant |
| US6839700B2 | Cites | United States of America | Applicant |
20 members in 10 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 17151605 | United States of America | A | |
| 17151605 | United States of America | A | |
| 82286610 | United States of America | A | |
| 11171516 | – | – | – |
| US20050171516 | – | – | – |
| US20100822866 | – | – | – |
Members20
| Document | Office | Kind | |
|---|---|---|---|
| AU2006263434A1 | Australia | A1 | |
| CA2613295A1 | Canada | A1 | |
| US2007005774A1 | United States of America | A1 | |
| WO2007002932A2 | World Intellectual Property Organization (WIPO) | A2 | |
| EP1910934A2 | European Patent Office (EPO) | A2 | |
| KR20080038140A | Republic of Korea | A | |
| JP2009500731A | Japan | A | |
| WO2007002932A3 | World Intellectual Property Organization (WIPO) | A3 | |
| RU2008103283A | Russian Federation | A | |
| CN101535975A | China | A | |
| US7774402B2 | United States of America | B2 | |
| US2011047294A1 | United States of America | A1 | |
| BRPI0612847A2 | Brazil | A2 | |
| RU2436148C2 | Russian Federation | C2 | |
| EP1910934A4 | European Patent Office (EPO) | A4 | |
| AU2006263434B2 | Australia | B2 | |
| JP4934670B2 | Japan | B2 | |
| KR20130066709A | Republic of Korea | A | |
| US8639846B2This record | United States of America | B2 | |
| KR101362469B1 | Republic of Korea | B1 |
115 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 2 RCEs.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 2
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Interview Summary - Examiner InitiatedEXIE | EXIE | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Notice of Informal or Non-Responsive AmendmentNINA | NINA | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Informal or Non-Responsive Amendment after Examiner ActionA.I. | A.I. | |
| Response after Non-Final ActionA... | A... | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Notice of Informal or Non-Responsive AmendmentNINA | NINA | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Informal or Non-Responsive Amendment after Examiner ActionA.I. | A.I. | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Response after Non-Final ActionA... | A... | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response to Election / Restriction FiledELC. | ELC. | |
| Mail Restriction RequirementMCTRS | MCTRS | |
| Restriction/Election RequirementCTRS | CTRS | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Publication
- 08639846
- Publication, DOCDB
- 8639846
- Publication, EPODOC
- US8639846
- Application
- 12822866
- Application, DOCDB
- 82286610
- Application, EPODOC
- US20100822866
Titles
- English
- Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
Patent term adjustment
- A delay
- +6 daysthe office missed an examination deadline
- Applicant delay
- −232 days
- Net adjustment
- 0 days
Classification
- CPC, 7
- H04L63/0263
- H04L12/28
- H04L63/20
- H04L67/565
- H04L67/56
- H04L67/63
- G06F15/16
- IPC, 1
- G06F15 16
- USPC, 1
- 709246000