- Avoid introducing new functionality in the core module or creating new dependencies on the existing core module code.
- One exception to the previous guideline is that new data import functions should be added to the core module scripts package.
- Do not expand the business module.
- Place all new web API controllers in the web module.
- Make abstract data-driven web controllers part of the default/public interface (tag them with @PublicApi).
- Make Special purpose or visualization-driven web controllers part of the internal interface (tag them with @InternalApi).
- Do not include business logic in the web module handler functions. Limit processing to argument examination and service module method selection.
- Test new data-driven web controllers for proper behavior on a portal deployment which requires user authentication and authorities.
- Do not call persistence module functions directly from the web module. Create pass-through service layer functions instead.
- Locate database query code in the persistence modules, and follow existing patterns.
- Consider the tradeoffs between using database query constructs to accomplish business logic requirements versus writing service layer java code.