A quick guideline on referencing web screens in accordance with the 4 layer canvas.

Introduction

If you want to connect to a screen from another eSpace you may not make the screen public and create a reference to it. Doing so would be a violation of the No side references among End-user or Orchestration modules rule as described here: Validating your application architecture. This article gives you a step by step guideline how to make a reference in accordance with the architecture rules.

The picture below illustrates that when A references B, A unnecessarilly inherits the cluster D,E,G

Side reference violation

To illustrate the steps we’ll create a link to the OSMDb Cinemas screen from the HowToLinkToWebScreens eSpace.

Step 1 Create an entry for the screen you want to reference

Open the OSMDb eSpace and open the Mainflow. Drag an entry node to the Mainflow, name it CinemasEntry and connect it to the Cinemas Web Screen. 1-click Publish (F5) the eSpace

Step 2 Create a ServerAction to retrieve the entry url

Open the HowToLinkToWebScreens eSpace and open the Manage dependencies window (Ctrl + Q). Add the HTTPRequestHandler GetEntryUrl dependency.

Create a new server action (Ctrl +N) and name it CinemasGetEntryUrl. Add a output parameter of type text and name it EntryUrl. Set function to Yes.

Step 3 Create the link to the web screen

Open the web screen from where you want to create the link. Add a link widget to the screen and set the destination to ExternalUrl. Set the Url parameter to CinemasGetEntryUrl().

This method can also be applied to screens with parameters. Suppose we have data in our eSpace that contains a CinemaId.

Then we can easily link to the CinemaDetailScreen, it can even be applied to a Pop-Up link and is a great method to create a menu application without references to the web screen modules. In this case we have to add an input parameter to the action and the GetEntryUrl.

Solution Architecture

By applying the steps above we created an architecture where web screens are referenced by other eSpaces without side references in the UI layer: