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.
// 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); } }
// 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]; } }
// 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 } }