I've been working with Outsystems for around 5 months now.   The training we received was great for understanding the basics but now I'm trying to get a grasp on the proper way to do things.   For example, our support partner suggested that we use a home module that contains the theme/css/ and common items  (menus and login/logout logic).

What I'm struggling with is how to link this home module with the other UI modules.   For example I have a module that contains web screens for case information, a module for user management screens and a module containing report screens.

The home module will have the common menu bar that navigates to screens in all of these different modules, but I can't find any training documentation that explains the proper way to do this.   Is anyone aware of a small example application that I could download that shows how to connect these things?   Or do I just set all of the web screens in the case/user/reports modules to public and add them as dependencies of the home module?   (It seems highly unlikely that this is the case)

Josh, you have two options to choose from

1. Do exactly what you suggested: set the screens as public, add reference to them and build your menu using those references

2. Build your menu using an External URL, and hardcode the URL of your screens in the menu.


Second option does not require to add references, and was actually a best-practice to keep your menu module small. Since OutSystems 11, screen dependencies do not increase the size of your module that much, and there's no downsides to using them as far as I know.

leonardo.fernandes wrote:

Josh, you have two options to choose from

1. Do exactly what you suggested: set the screens as public, add reference to them and build your menu using those references

2. Build your menu using an External URL, and hardcode the URL of your screens in the menu.


Second option does not require to add references, and was actually a best-practice to keep your menu module small. Since OutSystems 11, screen dependencies do not increase the size of your module that much, and there's no downsides to using them as far as I know.

If I go with option 1  (which on the surface seems like the most straight forward option)  wouldn't this end up being a circular reference?   The home module knows about the web screen modules because I have to route to those web screens.   The UI modules know about the home module because it is inheriting the common objects/css and theme.

I guess I'm just trying to establish good habits so I don't have to re-learn the proper way to do things.   



Yes, it will be a circular reference. However, it won't have the problems associated with circular references, because you're not depending on functionality (only on a URL).

Both LifeTime and Discovery were updated in OutSystems 11 to have better support for screen references. In LifeTime, deploying a module that exposes public screens won't force to redeploy the consumers. And in Discovery, screen dependencies do not cause violations.

leonardo.fernandes wrote:

Yes, it will be a circular reference. However, it won't have the problems associated with circular references, because you're not depending on functionality (only on a URL).

Both LifeTime and Discovery were updated in OutSystems 11 to have better support for screen references. In LifeTime, deploying a module that exposes public screens won't force to redeploy the consumers. And in Discovery, screen dependencies do not cause violations.

Okay this is good to know.  Thanks