1460926379-12952e2c-4478-4c04-a1f2-1b5e91b4eddc

1. A computer-implemented method of operating a product configurator that comprises a constraint network having a plurality of nodes, the method comprising:
receiving a first user choice during an interactive configuration session with the product configurator;
retracting one or more default decisions, wherein the default decisions were automatically asserted by the product configurator before receiving the first user choice and wherein a retracting of a default decision comprises restoring a prior state of one or more affected nodes that were changed when the default decision was asserted and propagated through the constraint network;
asserting the first user choice after retracting the default decisions;
reasserting the default decisions after asserting the first user choice;
for each default decision being reasserted, determining if there is a conflict in the constraint network; and
if there is the conflict, generating and propagating a negated default decision instead of the default decision, wherein the negated default decision is a constraint that is a negation of the corresponding default decision that caused the conflict and prevents the corresponding default decision from being propagated during the interactive configuration session;
wherein asserting the first user choice comprises determining one or more affected nodes of the plurality of nodes that are changed by the first user choice propagating through the constraint network; and
for each affected node, storing a first prior domain state of the node and associating the first stored prior domain state with the first user choice.
2. The method of claim 1, further comprising:
asserting a first default decision;
determining one or more affected nodes of the plurality of nodes that are changed by the first default decision propagated through the constraint network;
for each affected node, storing a prior domain state of the node and associating the stored prior domain state with the first default decision.
3. The method of claim 1, wherein the default decisions comprise Boolean operands.
4. The method of claim 1, wherein the default decisions comprise numeric operands.
5. The method of claim 3, wherein the default decisions are received via a user interface that includes an option of defining a decision as a rule or a constraint.
6. The method of claim 1, further comprising:
assigning an order of priority to the default decisions.
7. A non-transitory computer readable medium having instructions stored thereon that, when executed by a processor, causes the processor to function as an interactive product configurator, the configurator comprising:
receiving a first user choice during an interactive configuration session with the product configurator;
retracting one or more default decisions, wherein the default decisions were automatically asserted by the product configurator before receiving the first user choice and wherein a retracting of a default decision comprises restoring a prior state of one or more affected nodes that were changed when the default decision was asserted and propagated through the constraint network;
asserting the first user choice after retracting the default decisions; and
reasserting the default decisions after asserting the first user choice;
for each default decision being reasserted, determining if there is a conflict in the constraint network; and
if there is the conflict, generating and propagating a negated default decision instead of the default decision, wherein the negated default decision is a constraint that is a negation of the corresponding default decision that caused the conflict and prevents the corresponding default decision from being propagated during the interactive configuration session;
wherein asserting the first user choice comprises determining one or more affected nodes of the plurality of nodes that are changed by the first user choice propagating through the constraint network; and
for each affected node, storing a first prior domain state of the node and associating the first stored prior domain state with the first user choice.
8. The computer readable medium of claim 7, wherein the default decisions comprise Boolean operands.
9. The computer readable medium of claim 8, wherein the default decisions are received via a user interface that includes an option of defining a decision as a rule or a constraint.
10. The computer readable medium of claim 7, wherein the default decisions comprise numeric operands.
11. The computer readable medium of claim 7, further comprising:
assigning an order of priority to the default decisions.
12. A product configurator that comprises a constraint network having a plurality of nodes, the product configurator comprising:
a processor;
a non-transitory computer readable medium coupled to the processor and storing instructions that when executed by the processor comprises:
receiving a first user choice during an interactive configuration session with the product configurator;
retracting one or more default decisions, wherein the default decisions were automatically asserted by the product configurator before receiving the first user choice and wherein a retracting of a default decision comprises restoring a prior state of one or more affected nodes that were changed when the default decision was asserted and propagated through the constraint network;
asserting the first user choice after retracting the default decisions;
reasserting the default decisions after asserting the first user choice;
for each default decision being reasserted, determining if there is a conflict in the constraint network; and
if there is the conflict, generating and propagating a negated default decision instead of the default decision, wherein the negated default decision is a constraint that is a negation of the corresponding default decision that caused the conflict and prevents the corresponding default decision from being propagated during the interactive configuration session;
wherein asserting the first user choice comprises determining one or more affected nodes of the plurality of nodes that are changed by the first user choice propagating through the constraint network; and
for each affected node, storing a first prior domain state of the node and associating the first stored prior domain state with the first user choice.
13. The product configurator of claim 12, further comprising:
assigning an order of priority to the default decisions.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A system for load balancing resource requests among a plurality of servers, the system comprising:
a processor-based enterprise content management (ECM) system executed on a computer coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the ECM system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of requests to a processing server for processing, wherein each resource request includes a resource identifier and an action; and
a processor-based request manager component executed on the computer and configured to record performance statistics for each of the first plurality of resource request when each request is processed by a processing server, to identify a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type, and to generate, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type,
wherein when a second resource request of a second plurality of resource requests is received, the load manager component is configured to assign the second resource request to a processing server based on the weighting factor for the request type with which the second resource request is associated.
2. The system of claim 1 wherein the processor-based request manager component is configured to generate the weighting factor for a request type by:
collecting the performance statistics for each resource request associated with the request type, wherein the performance statistics for a resource request includes a processing time to process the request;
calculating an average processing time for the request type; and
determining the weighting factor for the request type based on the average processing time for the request type.
3. The system of claim 2 wherein the request manager component is further configured for storing the weighting factor for each of the plurality of request types in a request weighting log.
4. The system of claim 3 wherein when the second resource request of the second plurality of resource requests is received, the load manager component is configured to assign the second resource request to a server by:
determining the request type with which the second resource request is associated based on the second request’s resource identifier and action;
identifying the weighting factor for the request type using the request weighting log;
determining that a first server of the plurality of servers is available to process the second resource request based on the weighting factor and on a current workload associated with the first server; and
assigning the second resource request to the first server for processing.
5. The system of claim 2 wherein when the second resource request is processed by the server, the processor-based request manager component is further configured to record performance statistics for the second resource request and to regenerate the weighting factor for the request type associated with the second resource request based on the performance statistics for the second resource request.
6. The system of claim 5 wherein the request manager component is configured to regenerate the weighting factor for a request type by:
collecting the performance statistics for the second resource request;
recalculating the average processing time for the request; and
updating the weighting factor for the request type based on the recalculated average processing time.
7. The system of claim 1 wherein the performance statistics for a resource request includes a time to process the request.
8. The system of claim 1 wherein a resource is an addressable object, and the resource identifier comprises a resource type and an object identifier, and wherein a first request type is associated with a first resource type and a first action, and each resource request associated with the first request type includes the first resource type and the first action.
9. The system of claim 1 wherein the ECM system is a representational state transfer (REST) service implemented using HTTP, and wherein the resource identifier in each resource request is a uniform resource identifier (URI) and the action is an HTTP method.
10. The method of claim 1 wherein the ECM system is a representational state transfer (REST) service and wherein the resource identifier in each resource request is a uniform resource identifier (URI) and the action is an HTTP method.
11. A computer program product, comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein for load balancing resource requests among a plurality of servers, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
providing an enterprise content management (ECM) system coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the enterprise content management system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of resource requests to a processing server for processing, wherein each resource request includes a resource identifier and an action;
recording performance statistics for each of the first plurality of resource requests when each request is processed by a processing server;
identifying a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type;
generating, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type; and
assigning a second resource request of a second plurality of resource requests to a processing server based on the weighting factor for the request type with which the second resource request is associated.
12. A method for load balancing resource requests among a plurality of servers, the method comprising:
providing, by a server, an enterprise content management (ECM) system coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the enterprise content management system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of requests to a processing server for processing, wherein each resource request includes a resource identifier and an action;
recording, by the server, performance statistics for each of the first plurality of resource requests when each request is processed by a processing server;
identifying, by the server, a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type;
generating, by the server, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type; and
assigning a second resource request of a second plurality of resource requests to a processing server based on the weighting factor for the request type with which the second resource request is associated.
13. The method of claim 12 wherein generating the weighting factor for a request type comprises:
collecting the performance statistics for each resource request associated with the request type, wherein the performance statistics for a resource request includes a processing time to process the request;
calculating an average processing time for the request type; and
determining the weighting factor for the request type based on the average processing time for the request type.
14. The method of claim 13 wherein when the second resource request is processed by the server, the method further includes recording performance statistics for the second resource request.
15. The method of claim 14 further comprising regenerating the weighting factor for the request type associated with the second resource request based on the performance statistics for the second resource request.
16. The system of claim 15 wherein regenerating the weighting factor for the request type comprises:
collecting the performance statistics for the second resource request;
recalculating the average processing time for the request type; and
updating the weighting factor for the request type based on the recalculated average processing time.
17. The method of claim 13 further comprising storing the weighting factor for each of the plurality of request types in a request weighting log.
18. The method of claim 17 wherein assigning the second resource request to a server comprises:
determining the request type with which the second resource request is associated based on the second request’s resource identifier and action;
identifying the weighting factor for the request type using the request weighting log;
determining that a first server of the plurality of servers is available to process the second resource request based on the weighting factor and on a current workload associated with the first server; and
assigning the second resource request to the first server for processing.
19. The method of claim 12 wherein the performance statistics for a resource request includes at least one of a time to process the request, and a cost to process the request.
20. The method of claim 12 wherein a resource is an addressable object, and the resource identifier comprises a resource type and an object identifier, and wherein a first request type is associated with a first resource type and a first action, and each resource request associated with the first request type includes the first resource type and the first action.