Entities, in Evoke, are the data structures (data objects) used by the User Interface that you define in your App. Each entity is sub-divided into Properties and Entities and Properties may be linked to data/fields in your backend database or used only in the App UI. In the Entities section of Evoke you can set up and manage the following for the selected App:
  • Properties

  • Calculated Properties

  • Entity Selections

  • Data Validation

  • Classifications

Each Entity is made up of Properties. Properties are set up with a Data Type of:
  • AlphaNumeric

  • Boolean

  • Currency

  • Date

  • DateTime

  • Decimal

  • ImagePath

  • Integer

  • Time

  • Classification

  • Entity

As you can see Entities can have properties that are entities, so that related entities with local or remote keys can be defined. In addition each Property can be defined to be singular or holding a list of properties. Properties may also be set to hold an initial value.

Calculated Properties
Properties can also be set to be "Calculated" and when this checkbox is checked you are given the option of defining the calculation for the property. A very common use for this would be a database that has a first name field and a surname field, these would be properties in Evoke (linked to the database fields in data mappings) and then a further "User Interface Only" Property would be defined that is "calculated" as Firstname + Space + Surname
However, there are many other uses for Calculated Properties and Properties can can be calculated using one or more of the following types:
  • Arithmetic Expression - calculates a numeric value based on 2 or more Properties using "sum", "divide", "multiply", calculate the "difference" of all the values in the Properties provided or calculate the value of one property as a "Percentage" based on a percentage value (i.e. 50%) in a second value. Evoke will offer all the possible numeric Properties available e.g. Currency, Integer, Decimal, etc. You can select two values for the divide option; as many of the values as required for the sum or multiplication options; and add a sequence for the "difference" option by either selecting the options in a certain order or changing the sequence number.

  • Boolean Expression - this sets a boolean to true or false based on other properties or static values. For example new boolean property is true is "Sales price" is less than 50 OR boolean property set to true if multiple comments are added in a related property.

  • Casing Conversion - this alters the case of a specified Alpha property value e.g. a name could be set to a) all lower case, b) First Letter Of All Words Is Uppercased or c) All Upper Case.

  • Collection Expression - this allows for a collection (multiple) properties to be a) averaged b) concatenated c) counted to return the number of values d) return the Highest of all the values e) return the lowest of all the values or f) summed. Evoke will ask you to select a source property , this will be a list of Entities (e.g. sales), then you select the related property, for example the sales price, which can be any property designated as a Currency, Integer, Decimal, etc numeric property.

  • Concatenate Properties - this allows multiple values to be concatenated (joined), in any order you specify, with or without a) separators (as for the Full Name giving in the example above) b) changing the the case (as above) and c) being trimmed (removing initial, trailing or intermediate spaces).

  • Conditional Value - this allows the returned value to be based on a conditional test of another property value.

  • Custom Code - this will add software "hooks" to allow you to simply and easily add some specific custom code into your Visual Studio project to calculate the value of the Property

  • Related Data Property - allows the value of a related data item property to be represented directly as a property to this Entity.

  • Static Value - allows a static or predefined property value to be specified i.e. setting a boolean to true/false, a date to todays date, an alphanumeric field to a text string, etc

  • String Expression - formats the string based on the expression specified. Allows you to join together several property values. The "Add to String expression" adds the selected property to the string expression being built e.g. {propertyname1}*in*({propertyCountry1}) could result in Paul*in*(USA).

  • Value Conversion

    A Date property can be converted to a date, day name, Short day name, Day of week number, full date, full year ISO date or Long date. A Time property can be converted to a hours, minutes, seconds, 12 Hour Time, 24 hour time (both with and without seconds), UTC Hours, UTC Minutes, UTC Seconds. An example from the Example app is shown on the right.

    A Numeric property value can have zeros converted to blanks and blanks to be converted to zeros.

    An Alphanumeric property can be converted with:
    • Field extract - this allows you to extract the first part of a property, up to a field separator, into one property and the second part of a field into another (the field index is 0 for the first part and 1 for the second, etc). There is an example of this in the image on the right.

    • Key Value - contains/displays the key value of an entity only if a key has been assigned.

    • MultipleLineToSingle - converts a string value holding CRLF characters to a single line display field.

    • SingleLineToMultiple - converts a single line value to multiple lines using CRCF characters to replace a specified separator.

    • SubString - Returns a sub-string based on a start and end index position (the ability to extract characters e.g. 10-16 of a 16 character field or 4-7 of another 18 character field and put them in this calculated property )

    • Trim - allows selective removal of spaces from the source value

    • PrivacyMask - This allows you to replace certain sections of a property value with a specified alternative character in order to hide sensitive data. The replacement of characters can be done in one of 2 ways - either character-by-character or by groups of characters. Both styles allow you to enter a mask string which defines how character replacement is to be performed - this mask takes the form of a series of space separated patterns as described below.

Entity Selections
When the Entities are used to structure Data Sources, these Data Sources will often need to be populated with data from the back end databases. In order to do this the App (created by Evoke) will, depending on the database selected, invoke "Selections" or call Stored Procedures.
Against each Entity you can identify the different Selections that you may want to use within your App and define any parameters that you might want to pass to these.

Data Validation
You are able to specify any data validation that you wish to be performed on the Entity property. For example, if an entry field is mandatory then you simply check the "is required" checkbox for the property. You can also select "remote validation" that will add software "hooks" to allow you to simply and easily add some specific validation into your Visual Studio project if you wish.

It is probable that you will want some of your data entry/lookup/selection properties to be populated by the user of your app selecting from a drop-down list of options. In Evoke these are "Classifications". Classifications are defined in the Evoke Classifications menu option and each Classification group is populated either from a) a Classification table in your backend database b) via a selection from multiple tables in your backend database or c) a fixed list that you define in your database.