1. A method of applying a rule to a data object using a computing device having at least a processor, a computer-readable memory, a display device and an input device, the method comprising: providing in the computer-readable memory a rule template having attributes corresponding to attributes of at least one type of data object; providing in the computer-readable memory a rule template icon associated with the rule template and a data object icon associated with a data object having corresponding attributes; allowing a developer of an application to associate the rule template icon with the data object icon; as a result of the association of the rule template icon with the data object icon, at the processor instantiating the rule template with the data object; and prior to instantiating the rule template with the data object, confirming that the rule template can be instantiated with the data object, by performing the steps of: generating a call tree using the rule template and the data object, the call tree having a plurality of nodes and a root node; instantiating an input path of the rule template with the data object and, in event that the input path cannot be instantiated with the data object, returning a result that the rule template cannot be instantiated with the data object; expanding the call tree from the root node and marking all nodes as non-visited; creating in a computer-readable memory an empty set R; returning a result that the rule template can be instantiated with the data object in the event that there are no non-visited nodes; selecting a non-visited node and mark it as visited; in the event that the selected node corresponds to a rule template that does not call a further rule, returning to the step of returning a result that the rule template can be instantiated with the data object in the event that there are no non-visited nodes; determining a recursion offset for the node and, in the event that the recursion offset is negative, returning a result that the rule template cannot be instantiated with the data object; determining that the rule template is being processed for the first time, and in the event that rule template is being processed for the first time, inserting the instantiated rule into set R; calculating a rule context segment for the selected node and, in the event that the rule has not yet been processed for the given context, inserting the instantiated rule into set R; expanding the call tree from the selected node and, in the event that the input path cannot be instantiated with an expanded node, returning a result that the rule template cannot be instantiated with the data object; and returning to the step of returning a result that the rule template can be instantiated with the data object in the event that there are no non-visited nodes.