Inheritance

You can use inheritance wherever you see a repeating pattern.

The most common use cases are:

Data Model Inheritance

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.

Sequential Workflows Inheritance

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 Inheritable to True. Then you create a new workflow and it as an ancestor. Suddenly your workflow has all the required context stores or even tasks.