Inheritance: Guidance on setting up to utilize inheritance [LSA Data Excellence]
What guidance is there on setting up to utilize Inheritance? What are the considerations for choosing one design over the other?
Start with the application needs and map out a class model just as you would for any application - Pega or not. Where your class model dictates that a class needs to inherit from multiple superclasses, refine this such that any class inherits from no more than 2 classes. From there, settle on one which uses Pattern-inheritance and the other needs to use Direct-inheritance. Pattern-inheritance is the default first inheritance path taken, so should be the "more obvious" parent class.
A Car, for example may inherit from both Vehicle and Asset. In the event that a rule is sought via inheritance that exists in both Vehicle and Asset, consider which ones should "win", and make that the Pattern-inheritance superclass. For the most part, "collisions" like this are unlikely.
Directed inheritance is most usually found when a reusable foundation - implemented by a Component, Strategic Application or Industry layer, which mandates a different class - needs to be inherited by a Class you introduce to your application.
Pattern inheritance more typically implements specialization of types within a layer, like the Car and House specializations of Collateral in the webinar.
Discussion on this topic was sought from the LSA Data Excellence (Pega 8.4) webinar conducted in July 2020. The webinar and its full set of discussions that arose from it are available at LSA Data Excellence: Webinar, Questions & Answers.