No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Newer Version Available
Flow
Represents the metadata associated with a flow. With Flow, you can create an application that navigates users through a series of screens to query and update records in the database. You can also execute logic and provide branching capability based on user input to build dynamic applications. For information about the corresponding UI-based flow building tool, see “Flow Designer Overview” in the Salesforce online help.
- You can’t use Metadata API to access a flow installed from a managed package.
- Flow filenames shouldn’t contain spaces, which can cause errors at deployment. Heading and tailing spaces are allowed, but are trimmed during deployment.
- You can’t overwrite an active flow or one that was once active when deploying a flow using Metadata API.
- You can create a new version of a flow by giving the file a new version number and deploying it.
Declarative Metadata File Suffix and Directory Location
Flows are stored in the Flow directory of the corresponding package directory. The file name matches the flow’s unique full name, and the extension is .flow.
Version
The flow Metadata API is available in API version 24.0 and later.
Flow
This metadata type represents a valid definition of a flow. It extends the Metadata metadata type and inherits its fullName field.
| Field Name | Field Type | Description |
|---|---|---|
| apexPluginCalls | FlowApexPluginCall[] | An array of nodes that define calls to Apex plug-ins. |
| assignments | FlowAssignment[] | An array of assignment nodes. |
| choices | FlowChoice[] | An array of static choice options. |
| constants | FlowConstant[] | An array of constants. |
| decisions | FlowDecision[] | An array of decision nodes. |
| description | string | Description of the flow. |
| dynamicChoiceSets | FlowDynamicChoiceSet[] | An array that constructs a set of choice options based on a database lookup. |
| formulas | FlowFormula[] | An array of formulas. |
| fullName | string | Required; inherited from the Metadata component. Name of the
file in Metadata API. The fullName consists of two parts, separated by a hyphen:
For example, “sampleFlow-3” specifies version 3 of the flow whose unique name is sampleFlow. |
| label | string | Required. Label for the flow. |
| loops | FlowLoop[] | An array of nodes for iterating through collections. This field is available in API version 30.0 and later. |
| recordCreates | FlowRecordCreate[] | An array of nodes for creating records in the database. |
| recordDeletes | FlowRecordDelete[] | An array of nodes for deleting records in the database. |
| recordLookups | FlowRecordLookup[] | An array of nodes for looking up records in the database. |
| recordUpdates | FlowRecordUpdate[] | An array of nodes for updating records in the database. |
| screens | FlowScreen[] | An array of screen nodes. |
| startElementReference | string | Specifies which node or element is the starting point in the flow. |
| steps | FlowStep[] | An array of step nodes. |
| subflows | FlowSubflow[] | An array of subflows. This field is available in API version 25.0 and later. |
| textTemplates | FlowTextTemplate[] | An array of text templates. |
| variables | FlowVariable[] | An array of variable definitions. |
FlowApexPluginCall
Defines a call to an Apex plug-in from the flow. It extends FlowNode and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| apexClass | string | Required. The name of the Apex class. |
| connector | FlowConnector | Specifies which node to execute after this Apex plug-in call. |
| faultConnector | FlowConnector | Specifies which node to execute if the Apex plug-in call results in an error. |
| inputParameters | FlowApexPluginCallInputParameter[] | An array of input parameters from the flow to the Apex plug-in. |
| outputParameters | FlowApexPluginCallOutputParameter[] | An array of output parameters from the Apex plug-in to the flow. |
FlowApexPluginCallInputParameter
Defines an input parameter from the flow to the Apex plug-in.
| Field Name | Field Type | Description |
|---|---|---|
| name | string | Required. Unique name for the input parameter. |
| value | FlowElementReferenceOrValue | Defines the value of the input parameter. |
FlowApexPluginCallOutputParameter
Defines an output parameter from the Apex plug-in to the flow.
| Field Name | Field Type | Description |
|---|---|---|
| assignToReference | string | Required. Specifies the variable to which you want to assign the output parameter value. |
| name | string | Required. Unique name for the output parameter. |
FlowAssignment
Defines an assignment node that can dynamically change the value of a variable in the flow. It extends FlowNode and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| assignmentItems | FlowAssignmentItem[] | An array of assignment operations that will be executed in the given order, starting from the index 0. |
| connector | FlowConnector | Specifies which node to execute after this assignment node. |
FlowAssignmentItem
Defines an operation to apply to a variable.
| Field Name | Field Type | Description |
|---|---|---|
| assignToReference | string | Required. Reference to the variable to which you want to apply the specified operator. |
| operator | FlowAssignmentOperator (enumeration of type string) | Required. Operation to apply to the variable reference in the
assignToReference field. Valid values are:
|
| value | FlowElementReferenceOrValue | Defines the value that you want the operator to apply to the variable reference in the assignToReference field. |
FlowChoice
A choice resource is a standalone choice option that you can reference or reuse throughout the flow. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| choiceText | string | Required. Choice label to display in the screen. |
| dataType | FlowDataType (enumeration of type string) | Required. Valid types are:
|
| userInput | FlowChoiceUserInput | Enables the choice to allow user input when the choice is selected. Not supported for choices in multi-select fields. |
| value | FlowElementReferenceOrValue | Actual value that will be used during flow execution, for example, in assignments, calls to Apex plug-ins, and record elements. If null, this choice will always have the value of null. |
FlowChoiceUserInput
Allows the choice to include a user input field that appears when the choice is selected by the user. User input isn’t supported for choices in multi-select fields.
| Field Name | Field Type | Description |
|---|---|---|
| isRequired | boolean | Indicates whether users are required to enter something into the field when they select the choice. |
| promptText | string | Text that is displayed to prompt the user for input at runtime. Supports merge fields. |
| validationRule | FlowInputValidationRule | Rule used at runtime to validate the user input. |
FlowCondition
Defines a condition for a rule.
| Field Name | Field Type | Description |
|---|---|---|
| leftValueReference | string | Required. Unique name of the element that serves as the left side of the condition expression. |
| operator | FlowComparisonOperator (enumeration of type string) | Required. Valid values are:
|
| rightValue | FlowElementReferenceOrValue | Unique name of an element or the actual value (such as text or a number) for the right side of the condition expression. |
FlowConnector
Connectors determine the order in which the nodes of the flow are executed. A connector defines and links to the subsequent node.
| Field Name | Field Type | Description |
|---|---|---|
| targetReference | string | Required. Which node to execute after completing the current node. |
FlowConstant
A constant resource defines a fixed value that can be used throughout your flow. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| dataType | FlowDataType (enumeration of type string) | Required. Valid types are:
|
| value | FlowElementReferenceOrValue | Default value of the constant. This field can't have merge fields, nor can it reference another sObject. |
FlowDecision
Decision node that evaluates a set of rules and routes the flow execution based on the first rule that evaluates to true. It extends FlowNode and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| defaultConnector | FlowConnector | Specifies which node to execute if none of the rules evaluate to true. |
| defaultConnectorLabel | string | Label for the default connector. |
| rules | FlowRule[] | An array of rules for the decision. The rules are evaluated in the order they're listed, and the connector of the first true rule is used. If no rules are true, then the default connector is used. In the Cloud Flow Designer, rules are referred to as “outcomes.” |
FlowDynamicChoiceSet
Looks up data from an sObject and dynamically generates a set of choices at runtime. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| dataType | FlowDataType (enumeration of type string) | Required. Valid types are:
|
| displayField | string | Required. Which field from the sObject to display to the user as choice labels. For example, for an account sObject, use the DisplayField “Name” if you want the dynamically generated choices to be displayed as the account names from the records that are retrieved from the database. |
| filters | FlowRecordFilter[] | An array of filters to apply to the records that are retrieved from the database. For example, you may want to filter accounts to include only those that were created since a specified date. |
| limit | int | Maximum number of choices to include
in the generated set of choices. Maximum and default: 200. If sortField and sortOrder are also specified, the records are sorted before the limit takes effect. This field is available in API version 25.0 and later. |
| object | string | Required. The sObject whose field information you want to retrieve from the database and use for the generated set of choices. For example, use “Account” to dynamically generate choices from the information in account records in the database. |
| outputAssignments | FlowOutputFieldAssignment[] | An array that assigns fields from the user-selected record to variables that can be used elsewhere in the flow. For example, when the user selects an account name from the dynamically generated list of choice options, outputAssignments can assign the Id and AnnualRevenue from the user-selected account to variables that you specify. |
| sortField | string | Field that is used for sorting
the records that meet the filter criteria. If this field isn’t
specified then the returned records are not sorted. You can only sort records by fields that have the Sort API field property, as specified in SOAP API. This field is available in API version 25.0 and later. |
| sortOrder | SortOrder (enumeration of type string) | Order in which to sort the records.
If this field isn’t specified, then the results are not sorted.
This field is available in API version 25.0 and later. |
| valueField | string | Stored value for the choice, which may differ from what is displayed to the user as the choice options (DisplayField). For example, the DisplayField may be the account “Name” while the valueField is the account “Id.” |
FlowElement
Base class for all flow elements. This is an abstract class.
| Field Name | Field Type | Description |
|---|---|---|
| description | string | Description of the flow element. |
| name | string | Required. Unique name of the flow element. |
FlowElementReferenceOrValue
Defines a reference to an existing element or a particular value that you specify. Make sure that you specify only one of the fields.
| Field Name | Field Type | Description |
|---|---|---|
| booleanValue | boolean | Use this field to specify a boolean value. Do not use this field if you want to specify a different data type or an element reference. |
| dateTimeValue | dateTime | Use this field to specify a dateTime value. Do not use this field if you want to specify a different data type or an element reference. This field is available in API version 30.0 and later. |
| dateValue | date | Use this field to specify a date value. Do not use this field if you want to specify a different data type or an element reference. |
| elementReference | string | Use this field to specify the name of an existing element. Do not use this field if you want to specify a value instead of an element reference. |
| numberValue | double | Use this field to specify a double value. Do not use this field if you want to specify a different data type or an element reference. |
| stringValue | string | Use this field to specify a string value. Do not use this field if you want to specify a different data type or an element reference. |
FlowFormula
Calculates a numeric value using functions and elements in the flow. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| expression | string | Required. Salesforce formula expression. The return value must be numeric. See “Flow Formulas Overview” in the Salesforce online help. |
| scale | int | Scale of the return value, specifically, the number of digits to the right of the decimal point. |
FlowInputFieldAssignment
Assigns a field’s value from a record to an sObject.
| Field Name | Field Type | Description |
|---|---|---|
| field | string | Required. Name of the sObject field that is to be assigned a value while a record is being created or updated. |
| value | FlowElementReferenceOrValue | Value that is to be assigned to the sObject field. |
FlowInputValidationRule
Validation rules verify that the data entered by the user meets the specified requirements. If the validation rule evaluates to false, then the specified error message is displayed.
FlowLoop
A construct for iterating through a collection. It extends FlowNode and inherits all of its fields. FlowLoop is available in API version 30.0 and later.
| Field Name | Field Type | Description |
|---|---|---|
| nextValueConnector | FlowConnector | Points to the element that the flow navigates to for each of the entries in the collection. This is where the flow goes for the next value in the collection. |
| noMoreValuesConnector | FlowConnector | Points to the element to navigate to when all entries in the collection have been looped through. |
| collectionReference | string | Required. The collection being looped through. |
| assignNextValueToReference | string | Required. The variable to which the current value in the collection will be assigned before navigating to the target of nextValueConnector. |
| iterationOrder | iterationOrder (enumeration of type string) | Valid values are:
|
FlowNode
A node is a type of element that is visible in the flow diagram. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| label | string | Required. Name of the node. This non-unique label is different from the unique name of the node, which is inherited from FlowElement. |
| locationX | int | Required. Horizontal location of the node, in pixels from the left. |
| locationY | int | Required. Vertical location of the node, in pixels from the top. |
FlowOutputFieldAssignment
Assigns an sObject field’s value from a record to a variable that can be used elsewhere in the flow. The record may be selected by a record lookup or via a user selection for a choice.
| Field Name | Field Type | Description |
|---|---|---|
| assignToReference | string | Required. Reference to the variable where you want to store the value of the sObject field. |
| field | string | Required. Name of the sObject field whose value is to be assigned after a record lookup. |
FlowRecordCreate
| Field Name | Field Type | Description |
|---|---|---|
| assignRecordIdToReference | string | Reference to the variable where you want to store the ID after the record is created. |
| connector | FlowConnector | Specifies which node to execute after creating the record. |
| faultConnector | FlowConnector | Specifies which node to execute if the attempt to create a record results in an error. |
| inputAssignments | FlowInputFieldAssignment[] | An array that assigns values to the specified sObject fields of the record being created. |
| object | string | Required. Name of the sObject to be created by this element |
| sObjectInputReference | string | Reserved for future use. |
FlowRecordDelete
| Field Name | Field Type | Description |
|---|---|---|
| connector | FlowConnector | Specifies which node to execute after deleting the record. |
| faultConnector | FlowConnector | Specifies which node to execute if the attempt to delete a record results in an error. |
| filters | FlowRecordFilter[] | An array that specifies the criteria used to select which records to delete from the database. For example, you may want to delete accounts whose last activity was older than a specified date. |
| object | string | Required. The name of the sObject whose records will be deleted. |
| sObjectInputReference | string | Reserved for future use. |
FlowRecordFilter
Sets the criteria for searching records in the database.
| Field Name | Field Type | Description |
|---|---|---|
| field | string | Required. The sObject field to be used for filtering records. |
| operator | FlowRecordFilterOperator (enumeration of type string) | Required. Valid values are:
|
| value | FlowElementReferenceOrValue | Reference or value to be used together with the sObject field and operator to filter records. |
FlowRecordLookup
| Field Name | Field Type | Description |
|---|---|---|
| assignNullValuesIfNoRecordFound | boolean | Specifies that all values will be set to null if the record is not found. This field is available in API version 30.0 and later. |
| connector | FlowConnector | Specifies which node to execute after completing the record lookup. |
| faultConnector | FlowConnector | Specifies which node to execute if the attempt to look up a record results in an error. |
| filters | FlowRecordFilter[] | An array that specifies the criteria used to select the record
from the database. If the filters return more than one record, they are sorted according to the specified sortField and sortOrder. The first record in the sorted list is then selected. If either the sortField or sortOrder is not specified, then the first record returned will be selected. Note, however, that records are not returned in any particular order. |
| limit | int | The maximum number of records to return, to limit the amount of data received. This field is available in API version 30.0 and later. |
| object | string | Required. Name of the sObject from which to select the record. |
| outputAssignments | FlowOutputFieldAssignment[] | An array that assigns fields from the selected record to variables that can be used elsewhere in the flow. |
| outputReference | string | Reserved for future use. |
| queriedFields | string[] | Reserved for future use. |
| sortField | string | Field that is used for sorting
the records that meet the filter criteria. If this field isn’t
specified then the returned records are not sorted. You can only sort records by fields that have the Sort API field property, as specified in SOAP API. This field is available in API version 25.0 and later. |
| sortOrder | SortOrder (enumeration of type string) | Order in which to sort the records.
If this field isn’t specified, then the results are not sorted. Valid values are:
This field is available in API version 25.0 and later. |
FlowRecordUpdate
| Field Name | Field Type | Description |
|---|---|---|
| connector | FlowConnector | Specifies which node to execute after completing the record update. |
| faultConnector | FlowConnector | Specifies which node to execute if the attempt to update a record results in an error. |
| filters | FlowRecordFilter[] | An array that specifies the criteria used to select the records to update in the database. |
| inputAssignments | FlowInputFieldAssignment[] | An array that assigns values to the specified fields of the record being updated. |
| object | string | Required. Name of the sObject whose records will be updated. |
| sObjectInputReference | string | Reserved for future use. |
FlowRule
Defines the conditions and logic that would enable a rule to evaluate to true. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| conditionLogic | string | Value can either be “and” or “or”. When set to “and”, the rule evaluates to true only if all of its conditions evaluate to true. When set to “or”, the rule evaluates to true if any of its conditions evaluate to true. |
| conditions | FlowCondition[] | An array of conditions for the rule. |
| connector | FlowConnector | Specifies which node to execute if this is the first rule that evaluates to true in a decision. |
| label | string | Required. Label for the connector. |
FlowScreen
Screens provide the ability to capture information from users and display information to users. It extends FlowNode and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| allowBack | boolean | Indicates whether to show (true) or hide (false) the Previous button on the screen at runtime. When true,
the Previous button appears only if the user
visited a previous screen in the flow path. Set this to false when
revisiting the previous screen would trigger an action that should
not be repeated, such as a credit card transaction. This field is available in API version 26.0 and later. Default: true You can set either allowBack or allowFinish to false, but not both. |
| allowFinish | boolean | Indicates whether to show (true) or hide (false) the Finish button on the screen at runtime. When true, the Finish button appears only if the screen element is the
end of a flow path. Set this to false if you need the user to go back
to a previous screen to continue or complete the flow. For example,
you wouldn’t want to offer a Finish button
on a screen that tells the user to go back and make corrections on
a previous screen. This field is available in API version 26.0 and later. Default: true You can set either allowBack or allowFinish to false, but not both. |
| connector | FlowConnector | Specifies which node to execute after the screen node. |
| fields | FlowScreenField[] | An array of fields to display on the screen. |
| helpText | string | Text that appears if the end user clicks the “Help for
this form” link. Supports merge fields in API version 26.0 and later. |
FlowScreenField
Configurable field on a screen. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| choiceReferences | string[] | An array of references to FlowChoices or FlowDynamicChoiceSets.
The resulting choice options will appear in the order specified in
this array, where the element at index 0 provides the topmost choice
option. Supported for the following screen field types:
Multi-select checkboxes and multi-select picklist fields are available in API version 26.0 and later. |
| dataType | FlowDataType (enumeration of type string) | Required. Data type of this screen field. Only supported for
the InputField, RadioButtons, and DropdownBox screen field types.
Valid types are:
A boolean InputField appears as a checkbox field at runtime. Checkbox input fields are available in API version 26.0 and later. Only the string data type is supported for multi-select checkboxes and multi-select picklist fields. Multi-select fields are available in API version 26.0 and later. |
| defaultSelectedChoiceReference | string | The name of the FlowChoice element to use as the default value
for the screen field. Supported for the following screen field types:
For DropdownBox field types only, if the defaultSelectedChoiceReference is empty or null, the reference at index 0 of choiceReferences will be used as the default value. You can specify only one FlowChoice element as the default value for multi-select checkboxes and multi-select picklist fields. Multi-select fields are available in API version 26.0 and later. |
| defaultValue | FlowElementReferenceOrValue | The value that will be used by default when this screen field requires users to provide input. Only supported for InputField, LargeTextArea, and PasswordField. |
| fieldText | string | Field label that is displayed on the screen. Supports merge fields. |
| fieldType | FlowScreenFieldType (enumeration of type string) | Required. Valid values are:
At runtime, each multi-select field stores its field value as a concatenation of the user-selected choice values, separated by semicolons. Any semicolons in the selected choice values are removed when added to the multi-select field value. Multi-select checkboxes and multi-select picklist fields are available in API version 26.0 and later. |
| helpText | string | Required. Text that appears if the end user clicks the help
icon ( ) for the screen field.Supports merge fields in API version 26.0 and later. |
| isRequired | boolean | Indicates whether the user must select a choice or provide input. Not supported for DisplayText or boolean inputField. |
| scale | int | The scale of this screen field if its data type is number or currency. The scale sets the number of digits to the right of the decimal point. |
| validationRule | FlowInputValidationRule | Rule used to validate the user input when this screen field is of type InputField, LargeTextArea, or PasswordField. |
FlowStep
Steps function as placeholders when you're building a flow. It extends FlowNode and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| connectors | FlowConnector[] | Specifies which node to execute after the step node. |
FlowSubflow
A subflow element references another flow, which it calls at runtime. The flow that contains the subflow element is referred to as the master flow. FlowSubflow extends FlowNode and inherits all of its fields. It is available in API version 25.0 and later.
| Field Name | Field Type | Description |
|---|---|---|
| connector | FlowConnector | Specifies which node to execute after the subflow. |
| flowName | string | References the flow to call at runtime. The value must be a unique name of a flow and can’t contain an appended hyphen and version number. The referenced flow must have been created in the Cloud Flow Designer. |
| inputAssignments | FlowSubflowInputAssignment[] | An array of input variable assignments that are set at the start of the referenced flow. |
| outputAssignments | FlowSubflowOutputAssignment[] | An array of output variable assignments that are set at the end of the referenced flow. |
FlowSubflowInputAssignment
Assigns an element or value from the master flow to a variable in the referenced flow. Input assignments occur when the subflow calls the referenced flow. It is available in API version 25.0 and later.
| Field Name | Field Type | Description |
|---|---|---|
| name | string | Required. Unique name for the variable in the referenced flow. |
| value | FlowElementReferenceOrValue | Defines the value to assign to the variable. |
FlowSubflowOutputAssignment
Assigns the value of a variable from the referenced flow to a variable in the master flow. Output assignments occur when the referenced flow is finished running. It is available in API version 25.0 and later.
| Field Name | Field Type | Description |
|---|---|---|
| assignToReference | string | Required. Unique name for the variable in the master flow. |
| name | string | Required. Unique name for the variable in the referenced flow. |
FlowTextTemplate
Defines a text template that can be used throughout the flow. It extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| text | string | Actual text of the template. Supports merge fields. |
FlowVariable
Variables allow you to create updatable values to use in the flow. FlowVariable extends FlowElement and inherits all of its fields.
| Field Name | Field Type | Description |
|---|---|---|
| dataType | FlowDataType (enumeration of type string) | Required. Valid types are:
|
| isCollection | boolean | Indicates whether the variable is a collection of objects. This field is available in API version 30.0 and later. Default value is False. |
| isInput | boolean | Indicates whether the variable can be set at the start of the flow using URL parameters, Visualforce controllers, or subflow inputs. This field is available in API version 25.0 and later. |
| isOutput | boolean | Indicates whether the variable’s value can be accessed from Visualforce controllers and other flows. This field is available in API version 25.0 and later. |
| objectType | string | Reserved for future use. |
| scale | int | The scale of this variable if its data type is number or currency. |
| value | FlowElementReferenceOrValue | Default value of this variable. |
Declarative Metadata Sample Definition
A sample XML definition of a flow is shown below.
1<?xml version="1.0" encoding="UTF-8"?>
2<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
3 <choices>
4 <name>Bad</name>
5 <choiceText>Bad</choiceText>
6 <dataType>Number</dataType>
7 <value>
8 <numberValue>0.0</numberValue>
9 </value>
10 </choices>
11 <choices>
12 <name>Excellent</name>
13 <choiceText>Excellent</choiceText>
14 <dataType>Number</dataType>
15 <value>
16 <numberValue>20.0</numberValue>
17 </value>
18 </choices>
19 <choices>
20 <name>Fair</name>
21 <choiceText>Fair</choiceText>
22 <dataType>Number</dataType>
23 <value>
24 <numberValue>10.0</numberValue>
25 </value>
26 </choices>
27 <choices>
28 <name>Good</name>
29 <choiceText>Good</choiceText>
30 <dataType>Number</dataType>
31 <value>
32 <numberValue>15.0</numberValue>
33 </value>
34 </choices>
35 <description>Simple Flow app to calculate a Tip according to corporate
36 policies</description>
37 <formulas>
38 <name>fTipAmount</name>
39 <expression>{!Bill_Amount} * {!Service_Quality} / 100</expression>
40 <scale>0</scale>
41 </formulas>
42 <formulas>
43 <name>fTotalAmount</name>
44 <expression>{!fTipAmount} + {!Bill_Amount}</expression>
45 <scale>0</scale>
46 </formulas>
47 <label>Tip Calculator App</label>
48 <screens>
49 <name>Simple_Tip_Calculator</name>
50 <label>Simple Tip Calculator</label>
51 <locationX>513</locationX>
52 <locationY>112</locationY>
53 <connector>
54 <targetReference>TipAmount</targetReference>
55 </connector>
56 <fields>
57 <name>Bill_Amount</name>
58 <dataType>Currency</dataType>
59 <fieldText>Bill Amount</fieldText>
60 <fieldType>InputField</fieldType>
61 <isRequired>false</isRequired>
62 <scale>2</scale>
63 </fields>
64 <fields>
65 <name>Service_Quality</name>
66 <choiceReferences>Excellent</choiceReferences>
67 <choiceReferences>Good</choiceReferences>
68 <choiceReferences>Fair</choiceReferences>
69 <choiceReferences>Bad</choiceReferences>
70 <dataType>Number</dataType>
71 <fieldText>Service Quality</fieldText>
72 <fieldType>RadioButtons</fieldType>
73 <isRequired>false</isRequired>
74 <scale>2</scale>
75 </fields>
76 </screens>
77 <screens>
78 <name>TipAmount</name>
79 <label>Tip Amount</label>
80 <locationX>518</locationX>
81 <locationY>266</locationY>
82 <fields>
83 <name>TipSUmmary</name>
84 <fieldText><TEXTFORMAT
85 LEADING="2"><P
86 ALIGN="LEFT"><FONT
87 FACE="Arial"
88 STYLE="font-size:12px"
89 COLOR="#000000"
90 LETTERSPACING="0"
91 KERNING="0">If you think the quality of
92 service is <FONT
93 KERNING="1">{!Service_Quality},
94 </FONT>for a meal of {!Bill_Amount} you should tip
95 {!fTipAmount}, so the total recommended amount should be
96 {!fTotalAmount}</FONT></P></TEXTFORMAT></fieldText>
97 <fieldType>DisplayText</fieldType>
98 </fields>
99 </screens>
100 <startElementReference>Simple_Tip_Calculator</startElementReference>
101</Flow>
) for the screen field.