Constraints
The LN Studio user interface validates the following:
- BIIs being used as alternative implementations are protected (or private). In other words, the can only be (a maximum of) one public BII for a BID. This restriction is needed because a public implementation will use the BID name for the business object name. If multiple public implementations are made, their business object names will clash.
- Method implementations that refer to an implementation in an alternative BII are only implemented for the top-level component. You can say the method has processing order ‘batch’ in the main BII. This is necessary to avoid that the orchestration when executing a method becomes too complex. The public layer will hardly be able to manage the method as a whole if some components are implemented in the same BII and other components in an alternative BII. An alternative method can only be defined for a complete method. You cannot implement the Change for the Order component in BII X and for the OrderLine component use an alternative BII Y.
- For one method there must not be a loop in the implementations. BIIs must not refer to each other (directly or indirectly) for the same method. For the LN implementation generator it doesn’t matter, but at runtime the method will not respond.
- Alternative BIIs are based on the same BID as the public BII. You cannot use a protected BII from another BID as an alternative BII. (Or at least, if a BII from another BID must be used then the interface in the BIDs must be the same for that method.)
Additionally, the following constraints must be taken into account for LN:
- If the Change method exists in a BII then that BII must have Create and Delete as well, at least, if the BID has more than one component. Additionally, if the Change method implementation does not have an alternative BII then the Create and Delete method implementations must also not have an alternative BII.
- An alternative BII cannot be public. Only the main BII can be public. For a public BII the BID name will be used as the business object name in LN; for protected/private BIIs the BII name will be used.