Versions Compared

Key

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

Insert excerpt
_Banners
_Banners
nameactionflow
nopaneltrue

By the end of this chapter you will understand what a Calculate action is and how to use them, and you will have created three Calculate Actionflows in your application.

What is a Calculate Action?

The 

Insert excerpt
_action_calculate
_action_calculate
nopaneltrue
 action manipulates and processes data. Calculate nodes have their own attributes, which can reference incoming data via expressions, using one or more of the 135+ Functions available in PhixFlow.

Creating Calculate Actions

  1. Click and drag the 
    Insert excerpt
    _action_calculate
    _action_calculate
    nopaneltrue
     icon from the toolbar onto the canvas
  2. Enter a name for the Calculate action, then select Create Action
  3. In the Calculate Action 
    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
     on the right, click the 
    Insert excerpt
    _add_icon
    _add_icon
    nopaneltrue
     icon in the Output Attributes section to add new attributes
HTML Comment
hiddentrue

Insert excerpt
Calculate Node Properties
Calculate Node Properties
nopaneltrue


Tip

Calculate actions and their connection points, can have an attribute type of Structured Data. Use this if you need the Actionflow to pass a list (an array of values).

Example Uses

Worked Example

Calculate Action

  • insert Static text - "new" - needs a simple example
  • have a example with a function
  • example Use cases: insert static text (include worked example), perform a calculate (include worked example), performing lookups

Actions can be used for: 

  • Inserting static text strings, e.g. when inserting a new record set a value of "New" in a status field
  • Calculating values using Functions, e.g. Calculating the amount of VAT on a customer invoice  
  • Performing lookups against a View action node or lookup connection point, e.g. counting records in a grid or retrieving details of all students on a course

Worked Examples

Here's a worked example using the School Data (available from the Learning Centre). 

In this example, we are using:

  • Course Management screen containing a grid of the School Courses data - this screen was created using the Tile with Buttons template
  • Course Form screen containing form fields and associated with School Courses data by a background filter - this screen was created using the Edit Form template
Tip

If you are completing this chapter as part of the Actionflow course and using a training instance, this data has already been pre-loaded into the Actionflow Foundation Application. For this example, we'll be working on buttons on the Course Management screen and the Course Form screen.

Example 1: Use a Calculate Action to Add Static Text

We want to be able to filter the records that can be seen in our School Courses gridadd a message, "Create New Course", to the Course Form header that shows only when a new course is being created. To do this, we will create three Calculate Actionflows. Each Actionflow will populate a string field with a string of text. That text will then be interpreted by a background filter to see if it matches any records for the specified attributes, and will filter the grid accordingly.

Calculate Actions to Initiate Filters

Open the Course Management

we will add a Calculate Action to the Open Screen Actionflow for adding a new course.

Image Added

  1. On the screen where the Actionflow will be initiated from
  2. The Filters panel on the left of the screen contains a number of buttons which we will set up so when they are pressed, the School Courses grid is filtered:
    1. Image Removed: This will reset the grid to show all records
    2. Image Removed: This will show only records where the department name is Mathematics
    3. Image Removed: This will show only records where the department name is English

Reset Filter

  1. Right, Course Management, right-click on the Image RemovedImage Added button on the School Courses grid and choose 
    Insert excerpt
    _actionflow_adddisplay
    _actionflow_adddisplay
    nopaneltrue
  2. Enter a name for the Actionflow:
    1. Name: All Filter
  3. Connect the filter button by selecting Click to Connect
    1. For the input, choose the On Click Action Event, then select Connect InputIf there is no Actionflow to display, see 1.07 Open Screen Action Configuration
  4. Click and drag the 
    Insert excerpt
    _action_calculate
    _action_calculate
    nopaneltrue
     icon from the toolbar onto the canvas
  5. Enter a name for the Calculate actionAction:
    1. Name: Reset Filter Course Header
    2. Select Create Action
    Click and drag the 
    1. Action 
  6. The 
    Insert excerpt
    _driving_interface_connection_pointproperty_tabs
    _driving_interface_connection_point
    nameicon
    property_tabs
    nopaneltrue
     icon onto the  Insert excerpt_action_calculate_action_calculatenopaneltrue Reset Filter node to connect the input to the actionClick on the Reset Filter node to open its  for the Calculate Action will open on the right
    1. If the 
      Insert excerpt
      _property_tabs
      _property_tabs
      nopaneltrue
     on the right
    1. is not open, click the Calculate Action node on the canvas 
  7. In the Output Attributes section, click the 
    Insert excerpt
    _add_icon
    _add_icon
    nopaneltrue
     icon
  8. Enter the following details for the new Output Attribute:
    1. Name: pfDept NewCourse
    2. Type: choose String
    3. Expression: 

      "All
      Code Block
      themeEmacs
      "Create New Course"


    4. Then 
      Insert excerpt
      _finish
      _finish
      nopaneltrue
    Under Connections, click  Insert excerpt_addIcon_addIconnopaneltrue Add
  9. In the Add Connection Point window, enter:
    1. Name: Out
    2. Type: choose Output
    3. Select Create Connection Point
  10. Click on Click to Connect
  11. In the Connect Output window, choose the Course Management form and select Connect Output
  12. Close the Mappings window that opens
  13. Hover over the Reset Filter calculate node on the canvas and select out
  14. A red arrow will attach to your mouse, click on the  Insert excerpt_output_outputnameiconnopaneltrue icon under Connections
  15. The Mappings window will open:
    1. Drag across the Output Attribute, pfDept, into the area on the right to create a corresponding attribute on the output connection point
    2. Press Save
  16. Right-click the Out wire, under Connections, Drag and drop the Course Header Calculate Action onto the connector between the input node and the Open Course Form Action
    1. Image Added
  17. Right-click on the connector between the Course Header Calculate Action and the Open Course Form Open Screen Action and choose
    Insert excerpt
    _actionopen_mapmappings
    _actionopen_mapmappings
    nopaneltrue
  18. The Mappings window will open:
  19. Select Map by Name
  20. Press SaveOn the Mappings window, drag the NewCourse attribute onto the Header1Dynamic attribute to create the mapping
    1. Press Save
    2. Image Added
  21. Close the Actionflow to return to the Course Management screen
  22. Insert excerpt
    _lock
    _lock
    nopaneltrue
     the screen and press the Image Removed button Image Added button to see the Actionflow in action
    1. We can see that the Actionflow is working because it displays the string, All, in the pfDept String field and all records display in the grid
Tip
titleDid you know?

There are also Background Filters working in tandem with the string field to filter the results in the grid.

The Actionflow we created above populates the string field, pfDept.

The Background Filters that have already been set up on the grid look inside the string field, then change the records you can see on the grid according to what it finds in the string field.

This important to know for debugging, as if the spelling of the string in the expression of the Output Attribute in the Actionflow does not match the string in the background filter, the filter button will not work.  

To see the setup of the Background Filters, click on the School Courses grid, then in the Properties tab on the right there is a Background Filters section. Double-click on the filters to open them and spend some time looking at these to understand how they work.

Maths Filter

Have a go at creating the Actionflow for the Image Removed button, with some guidance below.
    1. Create New Course, in place of the original heading on the Course Form 

Example 2: Use a Calculate Action to Perform a Function 

In this example, we will add a Calculate Action that performs the function, toUpper, to a Save Actionflow. This function will format the course name on the Course Management screen into upper case, when the course is added/edited. 

Image Added

Setup the Input 

  1. On the Course Management screen, click the Image Added or Image Added button to open the Course Form
  2. Right-click on the Image RemovedImage Added button and choose select 
    Insert excerpt
    _actionflow_adddisplay
    _actionflow_add_display
    nopaneltrue
  3. Click and drag the 
    Insert excerpt
    _action_calculate
    _action_calculate
    nopaneltrue
     icon from the toolbar onto the canvas
  4. Enter a name for the ActionflowCalculate Action:
    1. Name: Maths Filter
    Repeat the same steps as with the All Filter, but make the following changes:
    1. Name the Calculate Action: Maths Filter
    2. When creating a new Output Attribute, the following expression should be used:

      Code Block
      "Mathematics"
      Tip
      titleWhy do we use "Mathematics" and not "Maths"?
      We use "Mathematics" because this is the spelling of the Department Name in our data (you can see this on the School Courses grid), therefore the Background Filter is looking to match up the text in the string field with the data name. Where it gets a match, it will filter the grid accordingly. If we use a different spelling or shortening, the filter will not work as expected.  UppercaseName
    3. Select Create Action
  5. Right-click on the input connection point under Connections and choose 
    Insert excerpt
    _mappings_configure
    _mappings_configure
    nopaneltrue
  6. On the Mappings window, drag the attribute, Name, from the left (Course Form) into the Drag and Drop space on the right (input connection point) 
    1. Select Save
  7. On the canvas, drag the UppercaseName Calculate Action node onto the in connector between the 
    Insert excerpt
    _input
    _input
    nopaneltrue
     
    node and the 
    Insert excerpt
    _save_icon
    _save_icon
    nopaneltrue
     SaveCourse
    node and drop it when the 
    Insert excerpt
    _add_icon
    _add_icon
    nopaneltrue
     icon appears
  8. Right-click on the in connector between the 
    Insert excerpt
    _input
    _input
    nopaneltrue
     
    node and the 
    Insert excerpt
    _actionflow_calculate
    _actionflow_calculate
    nopaneltrue
     and select 
    Insert excerpt
    _open_mappings
    _open_mappings
    nopaneltrue
  9. On the Mappings window, drag the Name attribute from the left to the right (calculate action)

    Tip

    We only need to map the Name attribute here because it is used within the Calculate Action.

    The CourseID attribute will pass through the Calculate Action and can be used later on in the Actionflow.


    1. Select Save


Expand
titleCheckpoint

Image Added

Setup the Calculate Action 

  1. Select the Calculate Action, UppercaseName, to open its 
    Insert excerpt
    _property_settings
    _property_settings
    nopaneltrue
  2. In the Output Attributes section, click the 
    Insert excerpt
    _addIcon
    _addIcon
    nopaneltrue
     to create a new attribute:
    1. Name: UpperName
    2. Type: choose String
    3. Expression:

      Code Block
      themeEmacs
      toUpper(in.Name)



    4. Click 

      Insert excerpt
      _finish
      _finish
      nopaneltrue

  3. Right-click on the in connector between the 
    Insert excerpt
    _actionflow_calculate
    _actionflow_calculate
    nopaneltrue
     
    action node and the 
    Insert excerpt
    _action_save
    _action_save
    nopaneltrue
     action node, and select 
    Insert excerpt
    _open_mappings
    _open_mappings
    nopaneltrue
  4. On the Mappings window, drag the attribute, UpperName, from the Calculate Action (left) onto the Name attribute on the Save Action (right)
    1. Press Save

      Expand
      titleCheckpoint

      Image Added


  5. Close the Actionflow to return to the Course Management screenLock the screen and press the Image Removed button Form
  6. Ensure the screen is 
    Insert excerpt
    _lock
    _lock
    nopaneltrue
    ed, then add or edit the course details and press the Image Added button to see the Actionflow in action
    1. We You can see that the Actionflow is working because it displays the string, Mathematics, in the pfDept String field and just the matching records display in the grid

English Filter

Use the knowledge you have acquired throughout this chapter to independently create the Actionflow for the Image Removed filter button.

Expand
titleFeeling stuck?
Repeat the same steps as you did to set up the All and Maths filters, but swap in "English" instead.
    1. the Name for the course you just added/edited is now in capital letters on the Course Management screen


Image Modified