Web screen as public and shared among modules

What is your opinion about web screen as public and shared among modules/apps?

What are the cons?


Unless you have a very particular scenario, this is a pattern that should be avoided in most situations. 

If you follow a 4LC architecture (hint: you should :)), you'll have End User modules and applications, and your typical screens will be here. But you're not supposed to have side references in this layer, and the reason is explained here

«End-user or Orchestration modules should not provide reusable services. This ensures that they are correctly isolated, allowing them to have different lifecycles - different versioning paces due to different sponsors or project teams.

This isolation is critical since End-users and Orchestrations are at the top of the hierarchy. A reference to such modules tends to bring along a huge set of indirect dependencies from lower layers.

Hi Eric,

I agreed with Paulo you should avoid to side by side reference because at the time of maintenance it is tough.

Example: If you are having side by side references in your End User layer and if you want fix some changes in single eSpace and directly want to upload it to UAT/Production then you need to update all reference in UAT/Production.



Hi Eric,

Besides the explanations already given, let me add a little more.

If you feel the need to share screens among modules/applications, you are doing this for a single reason, mainly.

You need to "link" to that screen.

But, a best approach, in order to ensure a good archtecture (as exposed above), is to follow two simple principles.

1. Your application should be User Story driven
2. Related user stories should be Together.

When you separate user stories, you guarantee that do not matter the role of the user. If 2 roles can do the same thing, this "thing", being a user story, can be isolated without problems (than the why we should avoid to think only by "roles" when design the archtecture. 

And, if more than one user story is related, dealing with the same entities and associated business logic, they should be put together (trying to not create super sized modules, of course). Because they will share resources, common screens/web blocks, entities, server actions, etc.

BUT... (There is always a "but, not?)

Sometime, for many different reasons, you really need to share a screen between modules/applications.

In this case, what you do is to use External URLs for the links/buttons. This way, you are doing a "soft" dependence. It is still a "dependence", like if the other screen is deleted, your application/module that depends on it will break. And if something changes in the other screen, like input parameters, you have to keep track of this manually. But on the other side, it will have a lower impact on the applications/modules lifecycle, while the interface do not change.

Hope to have helped cast some more light on the subject :)


Thank you for your explanation will surely consider every aspect for the good. Thanks again.