1. A method for associating applications in a complex network at a computer-based intelligent flow engine comprising a processor and a memory, the method comprising: registering a first set of components of the complex network to obtain state information of each of the first set of components, the state information comprising information indicating applications that are provided by a respective component, information indicating whether the respective component is operational, and functionality provided by the applications that are provided by the respective component; receiving, from other intelligent flow engines in the complex network, state information of a second set of components of the complex network; maintaining a database of complete state information of all components in the complex network, the complete state information comprising the state information of the first set of components and the state information of the second set of components; receiving, by the processor of the intelligent flow engine, from a first application associated with a first component, a request for a service; identifying, by the processor of the intelligent flow engine, a second application associated with a second component that has available capacity and functionality to provide the service based on the complete state information; binding, by the processor of the intelligent flow engine, the second application to the first application; and in response to determining that the second component is offline due to maintenance: un-registering the second component, identifying a third application associated with a third component that has available capacity and functionality to provide the service based on the complete state information, and binding the third application to the first application.