Project Multiple Inheritance

While Ignition only allows for single-inheritance, there is nothing stopping you from chaining inheritance into a sort of ancestry structure.

ProjectA:
includes resources which EVERY project should have access to.

ProjectB:
inherits from ProjectA.
is intended for use by projects for CustomerA, and so has its default database set to CustomerA's database.
contains resources like Views and scripts which are specific to only CustomerA.

ProjectC:
inherits from ProjectB.
is a front-end/runnable project which manages the warehouse operations for CustomerA.
Contains everything from ProjectA AND ProjectB.

ProjectD:
inherits from ProjectA.
is a front-end/runnable project for CustomerB.
contains everything in projectA, and nothing from ProjectB/C.

While it is fair to say that inheriting from ProjectX and ProjectY, where X and Y are not descendants of one another could be useful, it's also an absolute nightmare to implement/troubleshoot/utilize/maintain not only from a product development point of view, but an integration/design point-of-view as well. How would you clarify to a user where resources are coming from? How do you resolve resource name contention? What happens when script events call out to handlers which exist in both parent projects? ProjectX requires authentication, while projectY does not, so does the child project require authentication?

Chaos.

1 Like