Hi Everybody,

I was planning creating an application using the 4LC but I don't think I fully understand the End-User Module Layer and don't know what's most correct.

I was thinking to separate the most between several modules, but in the other hand, the screens have strong relation between them in terms of navigation. Most of the screens will need to know how to navigate to a different End-User Module (for example in a button).

What is the best approach? Should it be in one single module? Or separate in some modules but not as much?


Best Regards,

Cláudio Rodrigues

Hello Claúdio, 

Maybe you can check this video: https://www.youtube.com/watch?v=n7AZxuRzgpc and this https://www.youtube.com/watch?v=uODQNxRTMDw

Hope it helps. 

Hi ,Cláudio.


The best way in the EndUsers, is to use URL for not having a side reference in the EndUser. You can use like ReplaceURLDomain("https://"+ GetServerName()+"/NewPage/") if you gonna homolog the application.

If is like a "menu" you can create a WebBlock in the core and reeuse that in the EndUsers.

Or if a Enduser have to acess many other EndUsers, might be a Orchestration.


Have this article that might help you:

https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Designing_the_architecture_of_your_OutSystems_applications/01_The_4_Layer_Canvas


I recommend to use discorvery to verify the architecture.

Hi Cláudio,

Starting from OS 11, screen references between end-user modules are "weak" references, and no longer constitute a violation of the 4 Layer Canvas. So this means that you can freely reference screens between different modules.

Thank you all for the responses.

I'll evaluate all the possibilities and try different things to understand what fits best.

Aurelio Junior wrote:

Hi Cláudio,

Starting from OS 11, screen references between end-user modules are "weak" references, and no longer constitute a violation of the 4 Layer Canvas. So this means that you can freely reference screens between different modules.

Hi Aurelio,

I'm trying to use Reactive to build the application and there is something I noticed when trying different things.

For example. I create one Orchestration Module (e.g. Portal) , and two End-User Module (e.g. Customer and Orders). Basically the Orchestration Module have a link for the Customer. At some point in the navigation between pages on the Customer Module there is a link for a screen in Order Module. 

The navigation inside the Customer Module is smooth as it would be expected in reactive, but when we navigate to a different Module, a white page appears before the final page is rendered. (We are using the same template for both Modules).

Is this behavior expected? If so, there is any way to make the transition between module smooth? Or for the best UX and since it's reactive we should create our application in one module?

Solution

Cláudio Rodrigues wrote:

Aurelio Junior wrote:

Hi Cláudio,

Starting from OS 11, screen references between end-user modules are "weak" references, and no longer constitute a violation of the 4 Layer Canvas. So this means that you can freely reference screens between different modules.

Hi Aurelio,

I'm trying to use Reactive to build the application and there is something I noticed when trying different things.

For example. I create one Orchestration Module (e.g. Portal) , and two End-User Module (e.g. Customer and Orders). Basically the Orchestration Module have a link for the Customer. At some point in the navigation between pages on the Customer Module there is a link for a screen in Order Module. 

The navigation inside the Customer Module is smooth as it would be expected in reactive, but when we navigate to a different Module, a white page appears before the final page is rendered. (We are using the same template for both Modules).

Is this behavior expected? If so, there is any way to make the transition between module smooth? Or for the best UX and since it's reactive we should create our application in one module?

Hi Cláudio,

That behavior is expected. Every module currently behaves as an SPA (single page application). OutSystems might change this in the future. If it is reasonable in your project, you can keep all screens in a module, but be aware of the tradeoff with maintainability. Regarding experience, even transitions between modules in reactive are faster than screen transitions inside a module in traditional web. Future versions of chrome are also being done to minimize that flicker when navigating between pages with similar layouts.

Cheers,

Tiago Simões 


Solution