Calling Other Business Services

A method in one business service can call a method in another business service. For example, SupplierProcessor.addSupplier could call AddressBookProcessor.addAddressBook or AddressBookProcessor.addAddressBook could call PhonesProcessor.addPhones.

In this code sample, the PhonesProcessor.addPhones method takes an internalProcessPhones value object; this object is created and populated before calling the method:

//RI:  Business service call to business service
        //call PhonesProcessor         
        //only call phones processor if phones exist.
        if (internalVO.getInternalPhones() != null) {
        //create new internalVO for phones processor
           InternalProcessPhone phones = new InternalProcessPhone();
           //map data from internalVO to phones processor internalVO
           phones.setMnAddressBookNumber(internalVO.getMnAddressBook
Number());
           phones.setPhones(internalVO.getInternalPhones());
           phones.setSzProgramId(programId);
           //call phones processor to add phones
           E1MessageList phonesMessages = 
           RI_PhonesProcessor.addPhones(context, connection, phones);
           //If errors occur, change the error type to WARNING because 
           //we don't want to stop processing of Address Book record due 
           //to error while adding phones, interpret as warning instead.
           if (phonesMessages.hasErrors()) {
              phonesMessages.changeMessageType(E1Message.ERROR_MSG_TYPE, 
                                               E1Message.WARNING_MSG_TYPE);
              //set list of phones to list w/ only added phones.
              internalVO.setInternalPhones(phones.getPhones());
           }
           //add messages returned from phones processor
            messages.addMessages(phonesMessages);
         }

A business service method can call a business service utility method. For example, PurchaseOrderProcessor. processPurchaseOrder can call ItemProcessor.processItem and EntityProcessor.processEntity.

This code sample shows a business service call to a business service utility:

//RI:  Business service call to business service
    //call business service utility
    //This business service returns a status code, this example will not 
    //use the status code to drive functionality, but
    //could be evaluated to change processing.
    InternalEntityUtility utilityEntity = new InternalEntityUtility();
    utilityEntity.setMnAddressBookNumber(internalVO.getMnAddressBook
Number());
    utilityEntity.setSzLongAddressNumber(internalVO.getSzLongAddress
Number());
    utilityEntity.setSzTaxId(internalVO.getSzTaxId());
    
    E1MessageList entityMessages = EntityProcessor.processEntity(context, 
connection, utilityEntity);
    internalVO.setMnAddressBookNumber(utilityEntity.getMnAddressBook
Number());
    internalVO.setSzLongAddressNumber(utilityEntity.getSzLongAddress
Number());
    internalVO.setSzTaxId(utilityEntity.getSzTaxId());
    //Don't stop processing in case of errors from utility, change type to 
    // warning and add them to error collection.
    if(entityMessages.hasErrors())
      entityMessages.changeMessageType(E1Message.ERROR_MSG_TYPE,E1Message.
WARNING_MSG_TYPE);
    //take messages generated from EntityProcessor and add them to the 
    //high level value object.
     if (retMessages == null)
     {
       retMessages = entityMessages;
     }
     else
     {
       retMessages.addMessages(entityMessages);
     }