Versatas focus on product leadership, customer success and continuous improvement produces
significant innovation. The U.S. patents granted to Versata for its product and service developments provide examples
of this innovation. Versata's US patents as of July 1, 2006, are listed below. Please follow the links to the US Patent
and Trademark Office to review a full copy of each patent.
Method and apparatus for goal processing memory managementThe present invention is a method and apparatus for managing memory in goal processing. The present invention creates search states that contain an alternative subgoal (i.e., subgoal with alternatives) and non-alternative subgoals. Problem state modifications associated with the goals contained in a search state are associated with a search state object. A search state object contains information about the search process and the goals included in the search state, and a pointer to previous search state objects. Processed goals are kept on a goal stack, and the search state object points to the first and last goal stack entry included in the search state object. A search state object includes a list of alternatives available in the search state. When a goal processing failure occurs, an alternative solution search begins with the latest search state object until an alternative is found, or a determination is made that no alternatives exist and the goal cannot be satisfied. When a goal processing failure occurs, an alternative subgoal is directly accessible without visiting each subgoal individually. Goals included in the failed processing may be collectively popped from the goal stack. Problem state modifications associated with the failed processing may be collectively undone from the problem state. Goal processing reverts to a state prior to the failed state without examining each goal within the failed state, individually removing the failed state's modifications, and individually releasing the memory used by the failed state.
top Method and apparatus for configuring systemsThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system.
top Method and apparatus for configuring systemsThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system.
top Automated client/server development tool using drag-and-drop metaphorA tool for the development of multiple-table database applications for client/server environments automates both capture of system requirements and code production. A client portion of a multiple-table, client/server database application for processing requests against a server database, is developed by first storing in a repository a description of the server database describing database entities within the server database and relationships between those database entities. Representations of the database entities are displayed, and an application drawing window is provided. The user drags and drops within the application drawing window one of said representations that represents a particular database entity. The tool then creates within the repository an entry for the particular database entity, and draws within the drawing window a representation of the particular database entity. For each database entity for which an entry within the repository has been created, the tool checks the description of the server database stored in the repository to determine whether a relationship exists between the particular database entity and the database entity being checked. If a relationship does exist between the particular database entity and the database entity being checked, the tool then creates within the repository an entry for that relationship, and draws within the drawing window a connector representing that relationship. The foregoing drag-and-drop sequence is repeated multiple times. When the design is complete, the tool, using information stored in the repository, automatically generates the client portion of the multiple-table, client/server database application.
top Method and apparatus for maintaining and configuring systemsThe invention provides the ability to interactively select and configure a product among a set of related products based on availability and compatibility of features and options. It does not impose an order in the selection of products, features or options; only valid selections can be made at any time. To create an electronic representation of the product information to achieve the above goal, the invention provides a framework for defining a systems by defining the components of the system using elements contained in a parts catalog and defining relationships between the components of a system. A configuration system validates a configuration using the system definition, the current state of the configuration and user input.
top Method and apparatus for pricing products in multi-level product and organizational groupsThe invention organizes various pricing tables and price adjustment tables and various products and purchasing organizations based on "who" (i.e. which purchasing organization) is purchasing "what" (i.e. which product). The invention utilizes a denormalized table to relate the "who" to the "what" using denormalized numbers. The invention further organizes various purchasing organizations and products into hierarchical tables. These hierarchical tables are called organizational groups and product groups. Various price adjustments may be specified for each level of the organizational groups and product groups hierarchies. The price adjustments for a particular purchasing organization are determined by retrieving the price adjustments for that particular purchasing organization as well as the price adjustments for organizational groups above the particular purchasing organization in the organizational groups hierarchy. Likewise, the price adjustments for a particular product are determined by retrieving the price adjustments for that particular product as well as the price adjustments for product groups above the particular product in the product groups hierarchy. The invention sorts the various pricing adjustments applicable to a particular product offered to a particular purchasing group based on several criteria. After the sorting is accomplished the pricing adjustments are applied in sequence to arrive at a final price at which a particular product can be sold to a particular purchasing organization.
top Method and apparatus for configuring systemsThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system.
top Flash configuration cacheThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system. In one embodiment, a flash configuration cache is utilized to speed up the process of configuring an end product, such as a user computer. In another embodiment, a bundling cache is used to speed up the process of bundling.
top Method and apparatus for transparent backtrackingA technique is used in embodiments of the invention such that backtracking programs can be written in a general purpose computer language (e.g., C++ or Java) without requiring the control structure of the program to reflect the structure of the decision tree. A data state and a control state are restored during backtracking. For restoring the data state, embodiments of the invention keep track of the changes made to variables and the point in execution at which the changes are made. When backtracking occurs, the data state can be restored by undoing the changes to the desired point in execution. For restoring the control state, the method of the invention provides a "failure" exception state that is invoked upon failure in the program (e.g., a failure to find a solution in a search program).. The failure exception is "caught" by catch points established in the execution stack. The failure exception is passed up the execution stack until a point is reached prior to the failure at which execution should be re-initiated. Since the control structure of the search program need not have the same form as the decision tree, part of the control state for the desired decision point may no longer exist on the execution stack, so the catch point may not be directly associated with the desired point but merely preceed it. The remaining part of the control state is restored by re-executing the program in a special re-execution mode until the desired state is achieved and another alternative may be chosen.
top Method and apparatus for maintaining and configuring systemsThe invention provides the ability to interactively select and configure a product among a set of related products based on availability and compatibility of features and options. It does not impose an order in the selection of products, features or options; only valid selections can be made at any time. To create an electronic representation of the product information to achieve the above goal, the invention provides a framework for defining a systems by defining the components of the system using elements contained in a parts catalog and defining relationships between the components of a system. A configuration system validates a configuration using the system definition, the current state of the configuration and user input.
top Flash configuration cacheThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system. In one embodiment, a flash configuration cache is utilized to speed up the process of configuring an end product, such as a user computer. In another embodiment, a bundling cache is used to speed up the process of bundling.
top Method and apparatus for transparent backtrackingA technique is used in embodiments of the invention such that backtracking programs can be written in a general purpose computer language (e.g., C++ or Java) without requiring the control structure of the program to reflect the structure of the decision tree. A data state and a control state are restored during backtracking. For restoring the data state, embodiments of the invention keep track of the changes made to variables and the point in execution at which the changes are made. When backtracking occurs, the data state can be restored by undoing the changes to the desired point in execution. For restoring the control state, the method of the invention provides a "failure" exception state that is invoked upon failure in the program (e.g., a failure to find a solution in a search program). The failure exception is "caught" by catch points established in the execution stack. The failure exception is passed up the execution stack until a point is reached prior to the failure at which execution should be re-initiated. Since the control structure of the search program need not have the same form as the decision tree, part of the control state for the desired decision point may no longer exist on the execution stack, so the catch point may not be directly associated with the desired point but merely preceed it. The remaining part of the control state is restored by re-executing the program in a special re-execution mode until the desired state is achieved and another alternative may be chosen.
top Method for compiling and selecting data attributesA system and method for compiling data defining objects such as, but not necessarily limited to, components to be configured into a personal computer system. With respect to such components, a predetermined array of attributes is established to characterize particular components. At least two operators, or agents, independently acquire, from a global source of relevant data, values for the attributes. In a preferred embodiment, the agents are provided with a finite set of predetermined values, or ranges of values, that is deemed to include a value that is accurate for the attribute under consideration. The agents then respectively select values for the attribute, with the selection based on the acquired values considered with respect to the predetermined values. The respective values are error checked and then compared for equality. If the values selected by the agents are equal, a value for the attribute is written into an attribute database. If the values are not equal, the discrepancy is resolved empirically. A compilation of data defining the component is then extracted from the attribute database. In order to enhance accuracy, the global source of relevant data is regularly analyzed to, for example, identify updated attribute values.
top Method and apparatus for pricing products in multi-level product and organizational groupsThe system organize various pricing tables and price adjustment tables and various products and purchasing organizations based on "who" (i.e. which purchasing organization) is purchasing "what" (i.e. which product). The system and method utilizes a denormalized table to relate the "who" to the "what" using denormalized numbers. The system and method organizes various purchasing organizations and products into hierarchical tables. These hierarchical tables are called organizational groups and product groups. Various price adjustments may be specified for each level of the organizational groups and product groups hierarchies. The price adjustments for a particular purchasing organization are determined by retrieving the price adjustments for that particular purchasing organization as well as the price adjustments for organizational groups above the particular purchasing organization in the organizational groups hierarchy. Likewise, the price adjustments for a particular product are determined by retrieving the price adjustments for that particular product as well as the price adjustments for product groups above the particular product in the product groups hierarchy. The system and method the various pricing adjustments applicable to a particular product offered to a particular purchasing group based on several criteria. After the sorting is accomplished the pricing adjustments are applied in sequence to arrive at a final price at which a particular product can be sold to a particular purchasing organization.
top Method and apparatus for providing peer ownership of shared objectsA method and apparatus for providing peer ownership of shared objects. In the invention, shared objects are implemented as a shell object with shared object state stored in shared memory. Each process that shares the object is granted a shell object within their process space which points to the object state in shared memory. All processes share equal access to the shared object, with no single process determining the lifetime of the shared object. The shutdown of any single process results in the termination of that process's respective shell object, without the necessary termination of the shared object state in shared memory. There is therefore no shutdown problem. Further, performance is enhanced because all processes access the shared object state in shared memory in what is essentially an in-process call. In an embodiment of the invention, a peer ownership manager acts as the object server for all shared objects whose object state resides in shared memory. A global table is maintained within the peer ownership manager which contains the shared memory offset location of each object's state referenced by the GID (global identifier number) of the object. Also, for each process, a shell table is maintained in which existing shell objects for a given process are referenced by the offset value for the object's state in shared memory. Methods are provided for supporting object webs in shared memory, and for putting dynamically sized data and standard non-peer objects into shared objects in shared memory.
top Classification based content management systemA classification based content management system provides a content management system in which large amounts of content may be quickly and easily managed. More specifically, the classification based content management system of the present invention uses metadata to classify the content in such a way that the content may be quickly and easily managed. The classification based content management system provides advantages in a variety of aspects of the operation of the system. The aspects of the operation of the system include storage, retrieval, access control and workflow management.
top Method and apparatus for determining commissionThe invention provides for a method and apparatus for determining the commission to be paid to a sales representative or sales team. Whenever a sale occurs, a Transaction describing the sale is created and inputted into the Commission system of one embodiment of the invention. Based on a set of Allocation Rules that specify the credit an individual is to receive from a Transaction, the Transactions are converted into several Allocations for individual Sales Representatives or Sales Teams. One or more Quotas specify a target or goal that must be reached to earn commission for each Sales Team. A Quota State indicates the current performance of a Sales Representative with respect to a particular Quota within a particular time frame. The Quotas are used to convert the Allocations/Transactions into Quota Details that specify how to increment or decrement the Quota State. A Promotion specifies the reward or commission that is received upon attaining a desired level of performance. Once a Quota State reaches a level necessary to receive a Commission or reward as set by a specific Promotion, a ledger item indicating the amount to be paid to a particular Sales Team is created. A user interface may be used to create Allocation Rules, Quotas, and Promotions that are awarded for performance over a specified time period. In this manner, a business may set up incentive plans and determine commissions easily and accurately.
top Interactive data-bound controlA computer system including a server computer system and a client computer system connected to one another over a computer network, such as the Internet, so that graphical controls displayed and able to be manipulated by a user on the client computer system correspond to data stored on the server computer system. When the user makes changes to the graphical controls, the corresponding data is changed on the server computer system. The interactive graphical control binds the data on the server computer system to the graphic controls displayed on the client computer system without use of additional plug-in or other compiled code on the client computer system other than standard browser software such as Microsoft Explorer or Netscape Navigator.
top Method and apparatus for maintaining and configuring systemsThe invention provides the ability to interactively select and configure a product among a set of related products based on availability and compatibility of features and options. It does not impose an order in the selection of products, features or options; only valid selections can be made at any time. To create an electronic representation of the product information to achieve the above goal, the invention provides a framework for defining a systems by defining the components of the system using elements contained in a parts catalog and defining relationships between the components of a system. A configuration system validates a configuration using the system definition, the current state of the configuration and user input.
top Master data maintenance tool for single source dataA maintenance tool is used to import and centrally maintain the data and metadata representing catalog items in a catalog database. The maintenance tool is further used to create and maintain constraint-based rule sets defining custom catalogs that are subsets of the items in the database, constraint-based pricing profiles that define custom pricing schemes to be applied by the items in the database, and a primary browse hierarchy that represents the items in the database. The maintenance tool is used to create and maintain accounts for organizations and to assign to each organization a custom catalog and a pricing profile. The maintenance tool republishes the data on a periodic basis to update the custom catalogs and pricing profiles based on additions and modifications to the database, the rule sets, and the pricing profiles, and to generate new custom browse hierarchies from the primary hierarchy. The maintenance tool may be used to generate physical manifestations of the custom catalogs, pricing information and browse hierarchies for exportation to organizations not directly coupled to the catalog database through a network.
top System and method for extracting knowledge from documentsA program product characterizes a set of information to determine common characteristics among subsets of the set of information. The program product includes computer instructions which obtain characteristic data that describe characteristics of an entity. For example, the characteristic data may include titles of individuals within an organization. The computer instructions also obtain a set of information associated with the entity (e.g. a set of e-mail messages, Web pages, business memoranda, etc.) The computer instructions identify key terms within the set of information and classify the set of information into at least first and second subsets. In addition, the computer instructions characterize the first subset as more important than the second subset, based on the key terms and the characteristic data. For example, a subset of documents associated with officers of a company may be characterized as more important than a subset of documents associated with temporary employees.
top Logical and constraint based browse hierarchy with propagation featuresA logical and constraint-based hierarchical approach provides a highly flexible and expressive way in which to browse items stored in a database. The logical and constraint-based approach permits a user to create an arbitrary number of hierarchical representations of the items in a database. The approach permits items to be logically grouped on one level and grouped based on attribute/value constraints on the next. The hierarchical representation consists of nodes that are related to one another in a tree-like structure starting with a root node. Each node has a unique label, preferably indicative of the items in the database that it represents. Each node has a list of the labels of the nodes that are its children. Each node can only be the child of one parent node. Nodes may optionally express constraints based on attributes and their values that serve to define the scope of database items that fall under the node in the hierarchy. Each node inherits the constraints of its ancestors and therefore the scope of items in a database that that fall underneath a given node are defined by the aggregation of the constraints from the given node up to and including the root. A node that does not specify constraints instead specifies a logical grouping of items that cannot be specified by one or more constraints. The constraints are implicitly ANDed together in the aggregate. A logical grouping represents the equivalent of a logical ORing of constraints, but without the need for specifying attribute values or performing the function. A user browsing a database using the hierarchy triggers a search of the database by selecting one of the leaf nodes in the hierarchy. The constraints are aggregated and a rule is established that includes all of the database items that meet the aggregation of constraints. A database query is derived from the rule, and the database is searched for all items that meet the aggregated constraints. A set of items is returned and displayed for the user.
top Classification engine for managing attribute-based dataA classification engine provides flexible support for manipulation of attribute-based data by dynamic generation of SQL with classifiers constructed from different schema objects representing different database schemas. The classifiers may be constructed by defining classifiers corresponding to the database schema, and mapping the classifiers to columns on tables in the database. The invention also allows a classification system to modify the database structure and easily conform the classification engine to the modified structure without recompiling the engine or rewriting the application that use the classification system. The engine is conformed to the new structure by constructing a second schema object for the modified database. The schema objects are preferably defined using a field-based language such as extensible markup language (XML).
top Rule based configuration engine for a databaseThe invention provides the ability to test rules in a rule-based system for configuring a product. The configuration system defines the components of a product using elements contained in a parts catalog and rules that define relationships between the components of a product. The user provides test cases that select at least one part to include in the product configuration, and the configuration tester processes the rule to determine whether the at least one part selected in the test case conflicts with the plurality of parts previously included in the product configuration.
top Method and apparatus for attribute selectionThe invention provides a method and apparatus for selecting desired attributes for system configuration. The invention uses one or more rule sets to define rules that are met when a configuration is valid. A rule set may specify the interrelation of attribute values within a product or between two or more products. If the combination of attribute values that specify a product conform to at least one rule in each of the rule sets that apply to that product, that combination of attribute values is considered to specify a valid product. If the combination of attribute values that specify all of the products of an assembly conform to at least one rule in each of the rule sets that apply to that assembly, that combination of attribute values is considered to specify a valid assembly.
top Hierarchical interface to attribute based databaseThe present invention provides a hierarchical interface to an attribute based database. The method includes organizing a number of classifiers of data into a hierarchical structure and organizing the data into the hierarchical data structure according to the classifiers to which the data is linked. The hierarchical data structure can be a file system directory tree structure. The files system directory tree structure can be according to the NFS protocol. A request is received from a client, the request formatted according to the NFS protocol. The request is translated into a database query. A result is produced which is formatted according to the NFS protocol and the result is sent to the client. The present invention allows data to be presented in rearrange-able order based on a client view and classifiers, bound and unbound. The present invention also restricts access to files in a flexible manner.
top Distributed secrets for validation of gaming transactionsNested commit/reveal sequences using randomized inputs from each participant in a gaming transaction (e.g., the house and each player) may be employed to provide a selection of outcome or outcomes that can be verified by each participant as free from cheating. In general, techniques may be employed in a variety of distributed gaming transaction environments and as a verification facility for any of a wide variety of games in which the risk of player collusion can be eliminated. Nonetheless, several variations on a distributed card dealing method are illustrative and will be appreciated by persons of ordinary skill in the art as applicable in other gaming environments, including games employing outcomes denominated in die (or dice) rolls, coin toss, wheel spins, blind selection or other ostensibly random selection of an outcome from a predefined set thereof.
top Rules based custom catalogs generated from a central catalog database for multiple entitiesAn arbitrary number of custom catalogs for an arbitrary number of customers can be published from a centrally maintained database of seller catalog data. The custom catalogs are subsets of the catalog database, and are generated in accordance with a set of rules that defines the scope of the content of the custom catalog. The rule sets define a series of sequential searches by which a subset of the item SKUs contained in the database are returned. For extranet buyers, the subsets for each rule set are maintained in a subset table. Whenever a user authorized by a particular buyer wishes to browse the unique catalog subset assigned to that buyer, any queries regarding the catalog will result first in a search of the full catalog database, and the results from the full search are pared down to only those items the SKUs for which have entries in the subset table associated with the buyer's assigned subset. A buyer-authorized user browses the catalog using a standard PC and browser, and SKUs returned to the user based on the user's query will include descriptive information such as descriptive text, pictures etc., which are displayed by the browser. Buyers who are not coupled to the seller via an extranet connection can have customized subsets of the total catalog database produced in accordance with their own rule sets, and formatted and delivered off-line for incorporation into their web sites and procurement networks.
top System and method for product configuration using numerical clauses and inference proceduresA system and method for product configuration represents a product using a configuration model having numerical clauses. Features of the product are associated with literals in the numerical clauses. The numerical clauses may specify a number of literals to determine whether the numerical clause is satisfied, satisfiable, or unsatisfiable. Numerical clauses represent constraints that govern the configuration of the product. Resolving numerical clauses and user choices involves one or more inference procedures. In one embodiment, unit clauses represent user choices, and a configuration engine asserts the unit clause and performs numerical unit resolution between the unit clause and all numerical clauses containing the complement (generally a negation) of the unit clause. Complementary literals are eliminated from the current state of the configuration model. In one embodiment, if the uneliminated literals in a numerical clause causes the clause to be satisfied, the uneliminated literals are recursively asserted. The configuration engine then performs numerical unit resolution between the recursively asserted, uneliminated literals and numerical clauses containing the complements of the uneliminated literals. Numerical clauses may also function as literals. Numerical clauses may include negations of consumer literals and positive provider literals. If a user chooses a consumer feature, by knowing the consumer and provider weights, the configuration engine can determine which provider literals should be included, excluded, or remain selectable. Embodiments of the invention can implement a logic-based truth maintenance system and numerical unit resolution.
top Method and apparatus for configuring systemsThe present invention employs a generative approach for configuring systems such that a system may be configured based on component or resource requests, or input in the form of need. The present invention provides a constraint-based configuration system using a structural model hierarchy. The structural aspects of the model provide the ability to define a model element as being contained in, or by, another model element. In addition, the structural model provides the ability to identify logical datatype and physical interconnections between elements and establish connections between elements. To configure a system, the present invention accepts input in the form of requests (e.g., component or resource) or needs, such as an expression of a need for a desktop computer system to be used in a CAD (i.e., computer-aided design) environment. Using this information, the present invention configures a system by identifying the resource and component needs, constraints imposed on or by the resources or components identified, and the structural aspects of the system.
top Efficient technique for matching hierarchies of arbitrary size and structure without regard to ordering of elementsAn element order independent comparison of hierarchically organized data structures may be performed efficiently using a transformation operation that orthogonally and recursively encodes child node information. In some implementations, a hash table is defined for which values are encoded as powers of two. Each value is therefore orthogonal when combined using simple binary addition. At any particular node, a concatenation of node-specific information with a sum of child-node hashes is, itself, hashed and associated with the node. Orthogonal encodings ensure that a combination (e.g., an additive combination) of values corresponding to elements of a sub-hierarchy is insensitive to ordering of the elements. Recursion can be employed to fold in information contributions at successive layers of an information hierarchy.
|