Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Overview

On this lesson, we will explain Actions in Wayfast. This are events that allow us to trigger application interactions including communicating with a database, an API or executing a DLL. In this example Wayfast Actions allow executing process or communicating with external systems incluiding databases, APIs or executing DLL methods. In this lesson we will review how to create an action to store information save data in a database.

How to create a Table and Stored Procedure in Project DB?

It’s important to reinforce the idea that all the Project’s information come from the database through Stored Procedures (SP) and these data is readable in the Application through the Controls. This document will show that there’s another way to interact with the DB information creating Actions that can modified the information in our database.

As precondition, we need to create a new table in SQL to verify the interaction between Dataset, Controls and Actionstable with a Stored Procedure.

Preconditions

Step 1: Create a Table

Open SQL Server Management Studio and run the following script:

Code Block
languagesql
CREATE TABLE HWDHelloWorld_RolesUsersDemo (
NameFirstName    nvarchar(50), [Role]  nvarchar(50),
Email   nvarcharNVARCHAR(50120),
)
GO

This table has 3 columns “Name”, “Role” and “Email”. Then we can proceed to create a Stored Procedure related to “HWD_Roles” that will insert new values and consequently will select and display the new input information.

Code Block
languagesql
CREATE PROCEDURE spHWD_Roles_InsertLastName      @Name    nvarcharNVARCHAR(50120),
DomainDescription NVARCHAR(128),
UserDescription  @Role    nvarchar(50NVARCHAR(128),
Email    @Email   nvarchar(50) AS   BEGIN   INSERT HWD_Roles(Name, [Role], Email)
  SELECT @Name, @Role, @Email
  END
GO

...

NVARCHAR(128),
)
GO

One of the best Wayfast features is its Database framework which takes care of repetitive tasks to make Dev’s life easier and make development process super fast.

When a table is created Wayfast adds an ID attribute to make sure that consistency in the database can be enforced. At the same time it will create three stored procedures to manage classic CRUD operations: CREATE, REMOVE, UPDATE AND DELETE. After creating the aforementioned table you can see the following stored procedures in your DB:

  • spWF_HelloWorld_UsersDemo_CreateOrUpdate

  • spWF_HelloWorld_UsersDemo_Delete

  • spWF_HelloWorld_UsersDemo_Get

For this exercise we will use “spWF_HelloWorld_UsersDemo_CreateOrUpdate”.

Info

NOTE: Keep in mind that if you alter these stored procedures and then alter the table structure these SPs will be generated again and you will loose your changes.

Let’s go back to Wayfast Editor and Update Wayfast DB Model.

Click on “End Task” button related next to Project’s our active requirement.

...

This step is only needed for synchronization of the new Table and Stored Procedure generated in DB.

...

A popup is displayed, click on “Synchronize” button. Now the stored procedure created in database will be available to connect with dataset.

How to create Controls to interact with Application?

 Preconditions

Let’s review what are the necessary controls to make the interaction between the app and a database:

...

...

Step 2: Setup the page

Let’s create a page called “HelloWorldUsers” before creating an action.

Click on “New Page” button at Project Pages like we learn in previous lessons

...

Click on “Submit” button and we are now ready to create the structure.

Step 3: Setup the Dataset & Controls

Our page should get the information from the table HelloWorld_UsersDemo using a dataset like we learnt in the latest lesson.

...

Click on “New Dataset” button and complete the required fields.

...

Navigate to “Data Binding” tab and point the Dataset to spWF_HelloWorld_UsersDemo_Get. This information will let the page to display automatically the information that we will insert using an action.

...

Click on “Submit” button

...

Let’s move to the controls that we need on this page to display and insert new users. We are thinking on the following structure according to the table that we created in the database:

  1. LABEL: This control will display our header title

  2. INPUTBOX: This control will allow us to insert data into our database

...

  1. . In this example, we are going to create

...

  1. 5 controls, 1 per each attribute in our HelloWorld_Users database table (FirstName, LastName, DomainDescription, UserDescription and EmailDescription)

  2. GRID_COLUMN: This control will display the values that we have stored into our database. Again, we repeat 1 per each attribute in our HelloWorld_Users database

...

  1. table (FirstName, LastName, DomainDescription, UserDescription and EmailDescription)

  2. BUTTON: This control will trigger the new user created and it should be connected to the “Insert” action that we are looking in the example

We can create one inputbox control for reference and then we can repeat the steps for the others needed. Select the “Inputbox” control and click on “New” button

...

. A popup will be displayed to fill the information related to new control. Complete the “Field” with the fieldname that we are going to identify the control in our page.

...

Turn to “Layout” tab and establish the place in Application’s page that this new input box will be displayed. In the example, the alignment is next to the previous control created and we define the length that user can input for this field.

...

At this point, it’s important to follow the structure that we previously defined in “HWD_Roles” database table. In this case, we are going to create 3 inputbox controls for “Name”, “Role” and “Email”. “ID” column table will be logged at the moment that we insert the value in database, so we won’t need to create an inputbox for this value.

Click on “Accept” button in popup to create the “Name” inputbox control and repeat the same step for the other mentioned columns.

...

Controls section now display the 3 input fields that user can add through the page and also there are 3 “Grid_Column” controls. This

...

In each entry, we need to include the “HelloWorldUsersDemo” dataset and layout details where we can display the fields on page.

...

Click on “Submit” button and the control will be created. Repeat this step for each inputbox required.

...

Let’s add 1 grid column example to complete the page’s structure.

Select the “Grid Column” control and click on “New” button

...

Again we need to include the “HelloWorldUsersDemo” dataset. These columns are going to retrieve the readable information from DB. Keep in mind that we created the Stored Procedure for this purpose in previous lesson.Database.

...

Info

You We can find the relationship between Controls & Dataset explained in the previous lessons.

Finally, we need to create a new “Button” control to trigger the insert value Now let’s add a button to save this new data on HelloWorld_Users table in database.

...

Select the “Button” control and click on “New” button

...

This button will be named as “Create”“Add New User”. In the example, everytime every time that user input the “Name”, “Role” “FirstName”, “LastName”, “Domain”, “UserName” and “Email” inputboxes data and then click on “Create” this button, the new value are going to data will be added in “HWDHelloWorld_Roles” UsersDemo table.

...

We can identify the “Link to Page” option in case we want to redirect the application to another screen or keep it open, in this example, we are going to continue showing the same page.

Turn to Layout tab and establish the order to display this control. We are going to place it next to the inputboxes. Click on “Submit” button

...

Finally we have the structure finished, click on “Preview” button

...

and check what we created so far

...

How to

...

include Actions in Controls?

Wayfast allow us to create a new action at the same time that we create the control. Now that we have “Create” We did a lot of work so far, now we are ready to learn the impact functionality that “Actions” feature make on the controls that we generated and how interact with our application.

In the last step from the Precondition, we added the “Add New User” button, let’s edit the this control and create a new action. In the “Edit Control” popup, click Click on the control to edit the details and focus on “Actions” tab

...

Click on “New Action” button

...

It’s very important to choose “Stored Procedure as the “Action Group” type since Wayfast already generated the stored procedure automatically. It’s a really good way to start using this functionality or we can create a new object with custom statements.

After we select the option, Wayfast will display 2 options on “Action” field:

  • FORM is used in Wayfast as unique execution in the whole page. 

  • LIST is an action that can be executed as many times that it’s requested. Mostly this is needed when the page has multiple registries in grid views.

Search the “SPfor spWF_HWDHelloWorld_Roles_Insert” Stored Procedure UsersDemo_CreateOrUpdate in the “Stored Procedure” search field. Remember that this was created in database at the beginning of this lesson. Add the parameters “&InpName”FirstName”, “&LastName”, “&DomainDescription”, “&InpRole” UserDescription” and “&InpEmail” EmailDescription” parameters that are connected to the Column’s table “Name”, “Role” and “Email”. In Wayfast, we database HelloWorld_UsersDemo table . One important thing to notice, Wayfast associate the entry parameters using an “&” sign instead “@” sign.   

NOTE: “Return value” field has a complexity and depends on the type of logic that we created in our Stored Procedure. If certain information is needed after executing the SP, we can return a value as a variable and this value is available for next action created.

 

After  After completing the required fields, clicks click on “Submit” button, the new action is linked to the “Button” control.

...

.

...

Let’s check how the application works after the connection between Controls & Actions. Click on “Preview” button

...

Complete the inputbox fields and click “Add New User” button to insert the new data on the HelloWorld_Users table.

Let’s see what we can do in this case to make the inserted values on the page.

How to update Database with an Action?

One of the common scenarios in the interaction between dataset and actions is the one where the database is updated with new input values but it's not reflected on screen at the moment that was triggered. Let’s analyze what we need to check and how the new action is connected to the Dataset.

...

Focus on “Dataset Refresh Binding” field and search by the “Button” “Add New User” button control that trigger the insert into our HelloWorld_Users database table. Then click on “Add Relationship” button. This interaction will update the input data on page in real time.  

...

Let’s check the results in the example.

...

Let’s test the app

Now that the page is setup with Dataset, Controls and Actions, we can verify that the interaction is working as expected. Wayfast allow us to make a preview by click on “Preview” button at the top right corner

...

Layout is displayed on screen with the input fields created and the button to add the new values in “HWD“HelloWorld_Roles” UsersDemo” table on database.

Following this the instructions, we can easily build and connect any form page to fill information in minutes.

Click on “Preview” button to verify how the application is depicted in developer environment.  

...

@Name, @Role and @Email are connected to the inputbox controls and the grid_column controls previously created in Wayfast.

Let’s   Let’s try this interaction, fill the input fields available

...

Click on “Create” “Add New User” button.

...

Notice that the entry is displayed on screen after clicking on “Create” “Add New User” button. This is possible due to the “Dataset Refresh Binding” setting that was added in Dataset to post the information written in DB. This setting make a post-back that execute again the dataset to retrieve the new entry.

...

Info

In case we want to verify that the functionality is working as expected in database, open the SQL Server Manager and check if the table has the new input values inserted through the app.

Recap

In the first part, we revised the preconditions to create pages with a basic structure (dataset and controls) and then we learnt how to create new actions that can be related to these Controls previously added. In the second part, we verified how the interaction is executed in the application and how this can be edited to adjust the interaction regarding what we display and what we insert in the database.