Training Exercise
You have now learnt how to create and configure Actionflows requiring advanced business logic and can competently use all Actionflow features. To reinforce the techniques you have learnt, complete these assignments.
Don't worry, this is not an exam. You can use the Help to broaden your understanding and assimilate knowledge. A number of hints have been provided; use these if you are struggling as each hint gives you more information on the solution.
.Remember to close and reopen your screen if you do not see the changes you expect.
Assignment Hints
- You may find it useful to use the debug function within your Expressions to add messages to the System Console
countElements(in.Colours)
do(
debug("This is a count of colours: " + in.Colours),
countElements(in.Colours)
)
- For each task, one solution is provided. It is important to note that this is just one solution and there may be others
Assignment 1
Difficulty Level:
Task 1
When deleting rejected companies in bulk, we need to also delete all employees associated with that company from the application.
- On the Company Rejected Companies screen, modify the Actionflow that you created in 3.01 Bulk Delete Action Configuration on the Delete All button to also delete all employees associated with the rejected companies
Hint - Setting up Bulk Delete Action
Remember to set a filter on the Bulk Delete action containing the criteria of the records to be deleted.
Hint - Bulk Delete Filter
As the Company ID is in the Employees data, this can be used to delete the related employees.
.
Solution
Step 1: Mappings - Calculate to Bulk Delete
Step 2: Bulk Delete Employees Setup
Task 2
On the Company Approval Review screen, the area holding the icon requires setup to allow companies to be dragged and dropped onto this area and then subsequently rejected.
The Actionflow must:
- Set the Company's Status to
Rejected
- Update the Company's UpdatedByName attribute, using the same syntax as can be seen in the existing data
- Update the Company's UpdatedTime attribute
Hint - Not sure where to start?
Revisit the worked example on 3.04 Drag and Drop Configuration to familiarise yourself with the drop target and Actionflow setup.
Solution
Drop Target Setup
Mappings - Drag Type to Input
Mappings - Input to Calculate
Calculate Setup
Mappings - Calculate to Save
Save Setup
Assignment 2
Difficulty Level:
Task 1
When deleting rejected companies in bulk, we need to provide the user with more details, such as counts of the companies, orders and employees that will be affected by the deletion. In addition, we should give the user the ability to cancel or confirm the deletion using this information.
- Add the confirmation screen, Company Bulk Delete Confirmation, to the Actionflow on the Delete All button on the Company Rejected Companies screen
- In the Actionflow, create counts of the affected companies, orders and employees, and map these onto the screen
Hint - Not sure where to start?
Add a Confirmation Phase before the Processing Phase on the BulkDeleteRejectedCompanies Actionflow.
Hint - How to get the records to perform the count
In the Confirmation Phase, use Lookup View actions to retrieve the records for the rejected companies.
Hint - How to perform the count
Use a Calculate to perform the counts.
Hint - How to use the records from a lookup to filter another lookup
Use a Calculate to create an array (Structured Data) of the rejected Company IDs, which can then be used in the Lookup View action filters to retrieve the orders and employees for the rejected companies only.
Solution
Actionflow Overview and Calculate Action Setup
Rejected Companies - Lookup View Setup
Rejected Orders - Lookup View Setup
Rejected Employees - Lookup View Setup
Mappings - Calculate to Open Screen
Task 2
A number of companies have created webpages on their company website for their employees. The website for the employees is the company website followed by "/employeeportal" .
- On the Company Management screen, expand the AdditionalDetails area on the Employees card and find the dynamic text component, Website
- This component is backed by the attribute, Website, which is currently empty
- On the Company Form screen, add an Actionflow to the Update Employee Website button that updates the Website attribute on the Employee table using a Bulk Update action
- Every employee for the selected company should be updated
- The syntax for the employee website is CompanyWebsite/employeeportal, e.g. www.phixflow.com/employeeportal
Hint - How to generate the website
Use a Calculate action to generate the website.
Hint - How to configure the Bulk Update action
Remember to set a filter on the Bulk Update action containing the criteria of the records to be updated.
.
Solution
Actionflow Setup
Mappings - Screen to Input
Mappings - Input to Calculate
Mappings - Calculate to Bulk Update
Bulk Update Setup
Company Management - Screen Setup
.
Assignment 3
Difficulty Level:
Task 1
We need a way to quickly create a number of companies where we have limited information about them, e.g. just their name.
- On the Company Management screen, click the Quick Add button to open the Company Quick Add screen
- On this screen, add an Actionflow to the Save button, using a For Each action, that allows new companies to be added to the Companies table using just their name
- Users should be able to enter a list of company names, separated by a comma
- When a record for each company is created, a unique ID number should be generated
- Each company's Status should be set to "New" so that they populate the Company Approval Review screen
Hint - How to split the list
Use a Calculate action to split in the incoming list, by the comma separator, into an array.
Hint - How to remove white space in the array
Use the trim function to trim white space on the array values being mapped out of the For Each action. Remember values returned by the Input Expression are available in the Output Attribute's expressions as _result.value.
Solution
Actionflow Setup
Mappings - Screen to Input
Calculate Setup
Mappings - Calculate to For Each
For Each Setup
Mappings - For Each to Save
Save Setup
Task 2
Additional information about all employees has been made available. We need to make sure it is available across all applications and can be called by external systems as an API.
Set up an API Endpoint that returns all the data from the table, EmployeesAdditionalInformation in JSON format. This table can be found in your application under Tables in the Repository.
On the Company Employee Extra Information screen, create a button that calls the API. The Response from URL can be seen in the System Console.
Optional: If you wish, you can create a screen to display the results.
Hint - How to use the toJson Function
On the API Endpoint, use the toJson function in a Calculate action to convert the data returned from the lookup to JSON. The syntax is toJson(lookupConnector)
.
Hint - Tips for the Lookup
On the API Endpoint, remember to configure the Output Attributes and the Return (Outgoing) Mappings for the lookup. Also, no filter is needed on the lookup as we want to return all data.
Hint - Tips for API Endpoint Mappings
On the API Endpoint, remember to map the JSON attribute from the Calculate to the body attribute on the output.
Hint - How to ensure the URL Response is logged in the System Console
On the Actionflow calling the API, ensure Log Traffic to enabled on the HTTP action so that the Response from URL is logged.
Testing Tip
In the System Console, find the Completed Task for the Actionflow calling the API and click on it to view the Messages. Double-click on the Response from URL, then click on Message Detail tab to see the JSON returned.
.
Solution
API Endpoint Setup
API Endpoint Setup - Mappings - Input to Calculate
API Endpoint Setup - Lookup View Setup
API Endpoint Setup - Calculate Setup - Constructed JSON
API Endpoint Setup - Calculate to View - Request (Incoming) Mappings
API Endpoint Setup - View to Calculate - Return (Outgoing) Mappings
API Endpoint Setup - Mappings - Calculate to Output
Actionflow Setup
Actionflow Setup - Including Optional Screen Display
System Console - Response from URL
Task 3
We need to call the API containing the additional information about employees to obtain their start dates.
On the Company Employee Extra Information screen, add an Actionflow to the Run button that displays Employees from the Employees Additional Information API you set up in Assignment 3, Task 2 above, with a start date between the two set parameters as shown in the drop down fields on the Company Employee Extra Information screen.
For this task, you can either create a new Actionflow or modify to the one you made in the task above.
Requirements:
- Your Actionflow must contain a Loop and loop through each year parameter
- Set up a JSON action on the API endpoint to receive the incoming parameters
Optional Task: For the purposes of this example we save the data to the table Employee Start Date Analysis but you can use the Employee ID to merge the Start Dates into the Employees table.
Hint - How to filter the data being returned from the lookup
On the API endpoint, use the incoming parameters to filter the data being returned from the lookup.
Hint - How to perform a type conversion
Use a Calculate to convert the data entering the Actionflow into an integer.
Hint - Renaming Attributes Tip
Rename the From attribute going into the HTTP action to make it easier to distinguish it from the From attribute elsewhere in the Actionflow.
Hint - HTTP Syntax Help
On the HTTP action, pass in parameters using curly { } brackets.
Hint - Tips on setting the Max Loops
On the End Loop action, set the Max Loops to be a sensible number. In this example, the maximum number of loops that can occur is 4 as a loop is processed for each date in the drop down field on the Company Employee Extra Information screen (2018-2021).
Solution
The API Endpoint (setup in Task 2) requires a JSON action to allow it to receive parameters that can be used in the lookup filter.
API Endpoint Setup - JSON
API Endpoint Setup - Mappings - Input to JSON
API Endpoint Setup - Mappings - JSON to Calculate
API Endpoint Setup - Calculate to View - Request (Incoming) Mappings
API Endpoint Setup - View/Lookup
Actionflow Setup
Actionflow Setup - Mappings - Screen to Input
Actionflow Setup - Mappings - Input to 'Convert to Integer' Calculate
Actionflow Setup - 'Convert to Integer' Calculate
Actionflow Setup - Mappings - 'Convert to Integer' Calculate to Loop Start
Actionflow Setup - Mappings - Loop Start to HTTP
The attribute has been renamed on the HTTP side of the Mappings by right-clicking and clicking Edit.
Actionflow Setup - HTTP
Actionflow Setup - Mappings - HTTP to JSON
Actionflow Setup - JSON
Actionflow Setup - Mappings - JSON to Save
Actionflow Setup - Save
Actionflow Setup - Mappings - Save to 'Increment By 1' Calculate
Actionflow Setup - 'Increment By 1' Calculate
Actionflow Setup - Mappings - 'Increment By 1' Calculate to End Loop
Actionflow Setup - End Loop
Actionflow Setup - Mappings - End Loop to Start Loop
Testing
Ensure you test your Actionflows are working, and where relevant, test for both a positive and negative result.
Once you have verified your Actionflows are working, the screens and data can be modified in any way you wish. For example, you may wish to add additional screens to process the Employees data and practice some of the techniques you have learnt using that data.