1. A method for carrying out a negotiation between a plurality of participants, comprising: defining an invocation pattern for each participant; each invocation pattern being a tuple having at least a name and a set of parameters; attaching a set of coordinator parameters to each invocation pattern; the set of coordinator parameters defining interdependencies between parameters of the plurality of participants that are shared across their invocation patterns; constructing a graph to negotiate a set of actions to be performed by selected ones of the plurality of participants; the graph being constructed with nodes of one of a first node type representing a negotiating context and a second node type representing a decision point; wherein the graph is constructed by the participants with primitives instantiated by the invocation patterns that are used to negotiate values of parameters; and wherein at least one node in the graph is a decision point that merges two or more negotiation contexts into a single decision point; the single decision point combining values of the parameters from the two or more negotiation contexts.