From GeneXus Evolution 2 Upgrade 3 the generation of system Prompts, support of the Prompt rule and NoPrompt rule to the Smart Devices Apps have been added.
So, from now on, GX00nnSd panels for smart devices will be automatically generated for Primary Keys referenced by Foreing Keys into WW objects (similarly the automatical creation of GX00nn web panels in Web generators).
In order to migrate to this version without problems it is recommended to read the following document to see if you experience any of the scenarios described bellow.
To illustrate the concepts of this article the example that is going to be used is the CRM example.
Customer
{
CustomerId*
CustomerName // Description Attribute - DA
CustomerAddress
}
Contact
{
ContactId*
ContactName // Description Attribute
ContactEmail
CustomerID // Foreing Key - FK
CustomerName // Description Attribute of FK - Inferred
CustomerAddress // Inferred
}
And also the WW applied to both of this Transaction objects. This will generate: WorkWithDevicesCustomer and WorkWithDevicesContact.
Context
From GeneXus Evolution 2 Release version until GeneXus Evolution 2 Upgrade 2 there were no system prompts. There was a link from the edit screen of a WorkWithDevices Section general to the WorkWithDevices List node of the Foreing Key (FK) this helped the user choose a value for the FK.
In our example when we were editing on the WorkWithDevicesContact a link was added to help us choose a valid CustomerId, this link invoked the WorkWithDevicesCustomer List node.
How did this work?
-
An icon was put at the right of the Description Attribute of the FK.
-
This icon when it was tapped called the Work With Devices List associated to the table of the FK, if this existed.
-
If the Description Attribute is not present the prompt is put on the FK itself.
In our example the icon picker would be placed on the CustomerName on the Edit Layout of the WorkWithDevicesContact Section General, this would link the WorkWithDevicesCustomer list node.
If the CustomerName was not present on the Edit Layout of the WorkWithDevices Contact Section General, the picker would be placed on CustomerId.
Known issues about that implementation
-
The inferred attributes were not shown in runtime, only the Primary Key (PK) and the Description Attribute. In our example CustomerAddress was left empty on runtime.
-
Did not work in some cases with FK referring Composite PKs.
-
Did not work in some cases with subtypes groups as FK.
-
The User Interface (UI) of the prompt was defined from the list. So the Look & Feel of the prompt and list were the same and there was no way to change that. In our example the look & feel would be the same of WorkWithDevicesCustomer List node.
-
An application couldn t have prompt over variables
-
Prompts over other controls was not enabled (textblocks, images,etc)
All this limitations pushed the users to manually do Prompts using the WebSession and other tricks. This required much more work, as explained on this article (deprecated for Upgrade 3)
The implementation of system prompts allows users to overcome the above limitations and also provides much more flexibility when developing Smart Devices Apps.
Compatibility
Problems that can appear when migrating to GeneXus Evolution 2 Upgrade 3 from prior versions of Evolution 2
1. "The Look & Feel of the prompts start looking default"
The prompts now are generated so they will be generated with the Uset Interface default. Also the organization of the grid is going to change because, the heuristic to decide which fields are shown on the Grid is: Image Attribute + Description Attribute of the target Transaction of the FK.
The solution of this problem is to manually change which columns and the Look & Feel of the prompt on the system prompt.
Take into consideration that once you change the system prompt it will change to user prompt, more information.
In our example the prompt will have the CustomerName only, this is because we dont have an image Attribute on our Customer transaction.
2. "The location of the prompt changed or the prompt dissapeared"
This may happen if the attributes needed to automatically put the prompt were not found on the edit layout. take into consideration that by default the prompts are located at the right of the FK.
The solution to this issue is to use the prompt rule to put the prompt on the field the user needs. To know about the syntax and power of this rule please read this article
In our CRM case, if our edit layout of the WorkWithDevices Contact Section General, did not have the CustomerID attribute no prompt will be visible by default.
So the user have to explicitly put the following rule to locate the prompt on the CustomerName.
prompt(GX0020sd, CustomerId) on CustomerName;
Also another solution would be to add the CutomerId attribute to the layout.
3. "I don't want the Prompts for Smart Devices to be generated"
To avoid this objects to be generated the property Generate Prompt Programs Property is considered.
Take into consideration that not generating the prompts will not restore de Link behavior. So to solve the prompt the user will have to create them from scratch, like shown above.
Bonus
In addition to the prompt feature the possibility there was another feature added which is the ability of Smart Devices Panels to have return values. This features makes the process of doing a user prompt from scratch much easier.
So from Genexus Evolution 2 Upgrade 3 the way to do a User prompt from scratch is HowTo: Create a User Prompt from scratch in Smart Devices
Note: This panels can be invoked by the user with a user Action or also by the prompt rule.