Skip to content

Layers

Base procedural code is auto-generated to achieve a layered architecture. Client developers can then override or overtake the base implementation to do their own logic. There is no need to redefine the parameters. The parameters from the base procedure are used.

Example: Entity Update

// Base  
procedure EntityUpdate<WorkOrder> {  

   parameter Record Structure(WorkOrder);  

   execute {  
      saveAndSend Record;  
   }  
}  

@Override   
procedure EntityUpdate<WorkOrder> {  

   variable WoAddr Structure(WorkOrderAddress);  

   execute {  
      fetch Record.AddressRef into WoAddr;  
      set Record.AddressDetail = [WoAddr.AddressLine1 + WoAddr.AddressLine2];  
      super(Record);  
   }  
}  

Example: Function

// Base  
procedure Function<GetWoAddress> Text {  
   parameter WoNo Number;  
}  

@Overtake   
procedure Function<GetWoAddress> Text {  

   variable Wo Structure(WorkOrder);  

   execute {  
      fetch WorkOrder i where [ i.WoNo = WoNo ] into Wo;   
      return [Wo.AddressLine1 + Wo.AddressLine2];  
   }  
}  

Example: Action

// Base  
procedure Action<ChangeWoAddress> {  
   parameter WoNo Number;  
   parameter NewAddress Text;  
   execute {  
      performAction;  
   }  
}  

@Override  
procedure Action<ChangeWoAddress> {  

   variable Wo Structure(WorkOrder);  

   execute {  
      super(WoNo, NewAddress);  

      fetch WorkOrder i where [ iWoNo = WoNo ] into Wo;  
      set Wo.AddressDetail = NewAddress;  
      saveLocal Wo  
   }  
}