You can use inheritance wherever you see a repeating pattern.
The most common use cases are:
IOrigamEntity2 is a predefined entity that already contains a number of fields and filters, that when inherited, give you all the basic fields present in your entities.
So whenever you see repeating columns, you can create an inheritable entity (by setting the
Inheritable attribute to
True ) and inherit from it, rather than repeatedly defining the fields over and over again.
One thing to remember is that you cannot change the inherited fields in any way. For example, you cannot change the caption of an inherited column in the context of the entity that inherits it. Similarly, whatever you change in the inherited entity will change all the places where it is inherited.
Note: Currently when an ancestor (e.g. entity B) is removed from entity A, than there is no check whether fields from B are used somewhere within context of A. So thit it can lead to inconsistent model.
Another place where inheritance is being used is a sequential workflow model. Sometimes you want to standardise what a workflow looks like, e.g. what context stores it has.
So you can define a workflow that has all the context stores you want and set
True. Then you create a new workflow and it as an ancestor. Suddenly your workflow has all the required context stores or even tasks.