title: DROOLS Rule Engine : Making network calls within Drools
body: <p>One of the transactional systems i work upon deals with <strong>data-gathering</strong> from multiple external systems, and making some business decision based upon the (transactional entity + gathered-data). </p>
  
  <p>Currently , we follow the following steps:</p>
  
  <ol>
  <li><p>Gathering data from multiple sub-systems.</p></li>
  <li><p>Using (Gathered data + transactional entity) as an input to drools, and deriving a business decision out of it.</p></li>
  </ol>
  
  <p><strong>One major cons</strong> of the above approach is that i have to gather all the data beforehand (expensive network calls) without even bothering about the usefulness of the data.</p>
  
  <p>What i am trying to do is to delay the service calls by moving it to the rule execution layer. 
  The intention is to leverage the drools decision tree to avoid making a service call if i can take a decision on some already available data (within my transactional entity itself).</p>
  
  <p>Just want to get the thought process validated (i.e, making a service call as part of the rules execution would be a good practice or not.). </p>
  
  <p>Can anybody please share the pros/cons around the same. Any leads would be appreciated</p>