Contents

What's New
Installation
Installing TIBCO Flogo® Enterprise Monitoring Application
Installing TIBCO Flogo Flow State Manager
Quick Start
Quick Start
Step 1: Create a Flogo app and rename it
Step 2: Create a flow in the app
Step 3: Add a trigger to the flow
Step 4: Map trigger output to flow input
Step 5: Map flow output to trigger reply
Step 6: Add invoke REST Service and Log Message Activity to the flow
Step 7: Configure a Return Activity to display the status of the trigger
Step 8: Validate and test the app
Step 9: Build the App Binary or Push the app to the TIBCO Cloud
User Guide
Introduction
Concepts
Creating your First REST API
App Development
Creating and Managing a Flogo App Using the UI
Creating an App
Creating an App from a Saved Specification
Creating a New App Using an OpenAPI Specification
Creating a New App Using GraphQL Schema
Validating your App
Editing an App
Auto-Upgrade of Activities, Triggers, and Connections
Renaming an App
Editing the Version of an App
Using App Tags
Using Notes
Switching Between Display Views On the App Page
Deleting an App
Exporting and Importing an App
Exporting an App
Exporting an App's JSON File
Importing an App
Importing Your App to a New App
Importing Your App to an Existing App
Changes in Suffixes Used in the Mapper
Resolving Missing Activities and Triggers
App File Persistence
Creating Flows and Triggers
Flows
Creating a Flow
Selecting a Trigger When Creating a New Flow
Starting with a Trigger
Creating a Flow Attached to a REST (Receive HTTP Message) Trigger
Creating a Flow attached to the GraphQL Trigger
Creating a Flow Attached to Other Triggers
Creating a Blank Flow (Flow without a Trigger)
Flow Input & Output Tab
Attaching a Flow to One or More Triggers
Catching Errors
Creating An Error Handler Flow
Viewing Errors and Warnings
Using Subflows
Creating Subflows
Creating a Flow Execution Branch
Types of Branch Conditions
Order in which Branches Get Executed
Setting Branch Conditions
Deleting a Branch
Duplicating a Flow
Editing a Flow
Switching Between Flows in an App
Deleting a Flow
Adding an Activity
Searching for a Category or Activity
Configuring an Activity
Duplicating an Activity
Using the Loop Feature in an Activity
Accumulating the Activity Output for All Iterations
Accessing the Activity Outputs in Repeat While True Loop
Using the Retry On Error Feature in an Activity
Deleting an Activity
Triggers
Creating a Trigger without a Flow
Deleting a Trigger
Synchronizing Schema Between Trigger and Flow
Data Mappings
Data Mappings Interface
Mapping Data from the Data Mappings Interface
Scopes in Data Mappings
Data Types
Reserved Keywords to be Avoided in Schemas
Mapping Different Types of Data
Mapping an ENUM value
Mapping a Single Element of Primitive Data Type
Mapping an Object
Mapping Arrays
Mapping an Array of Primitive Data Types
Mapping Complex Arrays
Mapping of unmapped arrays
Add Items to Array
Mapping Identical Arrays of Objects
Mapping Array Child Elements to Non-Array Elements or to an Element in a Non-Matching Array
Mapping Nested Arrays
Mapping Child Elements within a Nested Array Scope
Mapping a Nested Array Child Element outside the Nested Array Scope
Mapping an Element from a Parent Array to a Child Element in a Nested Array within the Parent
Filtering Array Elements to Map Based on a Condition
Mapping JSON Data with json.path() Function
Constructing the any, param, or object Data Type in Mapper
Coercing of Activity Input, Output, and Trigger Reply Fields
Clear Mapping of Child Elements in Objects and Arrays
Ignoring Missing Object Properties when Mapping Objects
Mapping Data by Using if/else Conditions
Using Functions
Using Expressions
Supported Operators
Combining Schemas Using Keywords
Developing APIs
Using an OpenAPI Specification
Configuring the REST Reply
Testing the Deployed App
Downloading the API Specification Used
Using GraphQL Schema
Using App Properties and Schemas
App Properties
Creating App Properties
App Properties Dialog Box Views
Creating a Standalone App Property
Creating a Group
Deleting a Group or Property
Using App Properties in a Flow
Using App Properties in the Mapper
Unlinking an App Property from a Field Value
Using App Properties in Connections
Editing an App Property
Changing the Default Value of a Property from the App Properties Dialog Box
Changing the Name or Data Type of an App Property after Using It
When Importing an App
Overriding an App Property Value While Testing a Flow
App Schemas
Defining an App-Level Schema
Editing an App-Level Schema
Deleting an App-Level Schema
Using an App-Level Schema
Flow Input & Output Tab
Input or Output Settings Tab of an Activity
Output or Reply Settings Tab of a Trigger
Using Connectors
Creating Connections
Editing Connections
Deleting Connections
Using Extensions
Creating Extensions
Uploading Extensions
Pulling Extensions from an Open Source Public Git Repository
Deleting Extensions or Extension Categories
Flow Tester
Using the Flow Tester Testing Flows from the UI
What is a Launch Configuration?
Creating and Using a Launch Configuration
Creating Subsequent Launch Configurations
What can you do using the Flow Tester?
Configuring a Launch Configuration
Exporting a Launch Configuration
Importing a Launch Configuration
Cloning a Launch Configuration
Deleting a Launch Configuration
Testing Flows from the CLI
The test Command
Unit Testing
Creating and Running a Test Case
Configuring Unit Test Data
Unit Testing Modes
Creating a Test Case
Defining Flow Input
Creating Assertions
Creating Assertions for Flow Output
Creating Assertions for the Error Handler
Using Mock Data
Test Case Validation
Running a Test case
Creating and Running a Test Suite
Creating a Test Suite
Running a Test Suite
Exporting and Importing a Unit Test
Exporting a Unit Test
Importing a Unit Test
Enabling On-premises Services in Unit Testing
Unit Testing for the CI/CD
The Test Commands
Deployment and Configuration
Building an App Executable
Building the App
Considerations
Exporting App JSON from an Executable
Overriding an App's JSON File in the App Binary
Changing the Log Level of a Running App Instance
App Configuration Management
Consul
Using Consul
Consul Connection Parameters
Setting the Consul Connection Parameters
Overriding an App Property at Runtime
AWS Systems Manager Parameter Store
Using the Parameter Store
Parameter Store Connection Parameters
Setting the Parameter Store Connection Parameters
AWS AppConfig
Using the AppConfig
AppConfig Client Configuration
Environment Variables
Exporting App Properties to a File
Using a JSON File to Override App Property Values
Overriding Security Certificate Values
Encrypting Password Values
Container Deployments
Kubernetes
Deploying Flogo Apps to Kubernetes
Using ConfigMaps with a Flogo App
Managing Sensitive Information Using Kubernetes Secrets
Configuring the Secrets
Specifying the Path of the Volume Where the Secrets are Mounted
Sample YAML File
Amazon Elastic Container Service (ECS) and Fargate
Deploying a Flogo App to Amazon ECS and Fargate
Pivotal Cloud Foundry
Deploying a Flogo App to Pivotal Application Service
Using Spring Cloud Configuration to Override App Properties
Microsoft Azure Container Instances
Deploying a Flogo App to a Microsoft Azure Container Instance
Deploying a Flogo App to a Microsoft Azure Container Instance Using a YAML File
Google Cloud Run
Deploying a Flogo App to Google Cloud Run
Red Hat OpenShift
Deploying a Flogo App to Red Hat OpenShift
Sample YAML File: Red Hat OpenShift
Serverless Deployments
Developing for Lambda
Creating a Connection with the AWS Connector
AWS Connection Details
Creating a Flow with Receive Lambda Invocation Trigger
Deploying a Flow as a Lambda Function on AWS
Creating a Flow with AWS API Gateway Lambda Trigger
Creating a Flow with S3 Bucket Event Lambda Trigger
S3 Bucket Event Lambda Trigger
Deploying a Flogo App to Microsoft Azure Functions
Deploying a Flogo App in Knative
Troubleshooting Tips
Monitoring
About the TIBCO Flogo® Enterprise Monitoring App
Using the Flogo Enterprise Monitoring App
Running Flogo Enterprise Monitoring As a Standalone App
Running the Flogo Enterprise Monitoring App on Docker
Running the Flogo Enterprise Monitoring Application on Kubernetes
Granting Access Using ClusterRole
Configuring the Service Account
Linking the ServiceAccount to the ClusterRole
Linking the Flogo App to the Flogo Enterprise Monitoring Application
Configurations in the Flogo App’s YAML File
Configuring the Flogo Enterprise Monitoring App
Registering a Flogo App with the Flogo Enterprise Monitoring App
About TIBCO Flogo® Flow State Manager
Using Flogo Flow State Manager
Configuring the PostgreSQL Database
Running Flogo Flow State Manager as a Standalone App
Running Flogo Flow State Manager on Docker
Running Flogo Flow State Manager on Kubernetes
Configuring Flogo Flow State Manager
Starting Flogo Enterprise Monitoring with Details of Flogo Flow State Manager
Starting the App Binary
Viewing Statistics by Using Flogo Enterprise Monitoring app
Apps Page
Metrics Page
Executions Page
App Metrics
Enabling App Metrics
Logging App Metrics
Fields returned in the response
Prometheus
Using Prometheus to Analyze Flogo App Metrics
Often-Used Queries
OpenTelemetry Collector
App Tracing
Jaeger
Tracing Apps by Using AWS X-Ray
Tracing Apps by Using OpenTelemetry Collector
Enabling Tracing for OpenTelemetry Collector
Tracing With OpenTelemetry Collector
Flogo Related Attributes in OpenTelemetry Collector
Using APIs
Healthcheck API
Go Language Runtime Statistics and Profiling
CPU and Memory Profiling
Monitoring and Managing Enterprise Apps in TIBCO Cloud Integration
Environment Variables
Pushing Apps to TIBCO Cloud
Best Practices
Performance Tuning
Tuning Environment Variables
FLOGO_RUNNER_TYPE
FLOGO_LOG_LEVEL
GOGC
Flow Limit
CPU and Memory Monitoring
Runtime Statistics and Profiling
Samples
Activities, Triggers, and Connections
General Category Triggers, Activities, and Connections
Triggers
Timer Trigger
REST Trigger - ReceiveHTTPMessage
GraphQL Trigger
Receive Lambda Invocation
AWS API Gateway Lambda Trigger
S3 Bucket Event Lambda Trigger
App Startup Trigger
App Shutdown Trigger
Activities
ConfigureHTTPResponse
Run JavaScript
GRPC Invoke
InvokeLambdaFunction
InvokeRESTService
Using SSL
LogMessage
Mapper
ParseJSON
ReplyToTrigger
ProtobufToJSON
No-Op
ReplyToHTTPMessage
SendMail
SharedData
Sleep
JSON to XML
XML to JSON
Connections
HTTP Client Authorization Configuration
Mapper Functions Guide
Overview of Mapper Functions
Using Functions
Array Functions
array.append
array.contains
array.count
array.create
array.delete
array.flatten
array.forEach
array.get
array.merge
array.reverse
array.slice
array.sum
Boolean Functions
boolean.false
boolean.not
boolean.true
Coerce Functions
coerce.toArray
coerce.toBool
coerce.toBytes
Coerce.toFloat32
Coerce.toFloat64
coerce.toInt
Coerce.toInt32
Coerce.toInt64
coerce.toObject
coerce.toParams
coerce.toString
coerce.toType
Compression Functions
compression.gzipCompress
compression.gzipUncompress
Data Functions
data.GetValue
data.isDefined
Datetime Functions
datetime.add
datetime.addHours
datetime.addMins
datetime.addSeconds
datetime.create
datetime.current
datetime.currentDate
datetime.currentDatetime
datetime.currentTime
datetime.diff
datetime.format
datetime.formatDate
datetime.formatDatetime
datetime.formatTime
datetime.now
datetime.parse
Datetime.sub
datetime.subHours
datetime.subMins
Datetime.subSeconds
Float Functions
float.float64
JSON Functions
json.exists
json.get
json.length
json.numbersToString
json.objKeys
json.objValues
json.path
json.jq
json.set
Math Functions
math.ceil
math.floor
math.isNaN
math.mod
math.round
math.roundToEven
math.trunc
Number Functions
number.int64
number.len
number.random
String Functions
String.base64ToString
string.concat
string.contains
string.containsAny
string.count
string.dateFormat
string.lastIndex
string.datetimeFormat
string.endsWith
string.equals
string.equalsIgnoreCase
string.float
string.index
string.indexAny
string.integer
string.join
string.len
string.length
string.lowerCase
string.matchRegEx
string.regex
string.repeat
string.replace
string.replaceAll
string.replaceRegEx
string.split
string.startsWith
String.stringToBase64
string.substring
string.substringAfter
string.substringBefore
string.timeFormat
string.toLower
string.toTitleCase
string.toUpper
string.tostring
string.trim
string.trimLeft
string.trimPrefix
string.trimRight
string.trimSuffix
string.upperCase
URL Functions
url.encode
url.escapedPath
url.hostname
url.path
url.pathEscape
url.port
url.query
url.queryEscape
url.scheme
Utility Functions
utility.renderJSON
Utils Functions
Utils.decodeBase64
Utils.encodeBase64
utils.uuid
Security Guide
Security Features
Security Vulnerabilities
Product Connectivity
Developing Secure Applications
Transition Guide
Getting Started
Activating Your TIBCO Cloud Integration Account
Requesting a New Activation Link
Resetting the Password
TIBCO Password Policy
Signing in for Existing Users
Getting Familiar With TIBCO Cloud Integration
About TIBCO Cloud
About TIBCO Cloud Integration
TIBCO Cloud Integration Terminology
About Region Instances for TIBCO Cloud Integration
Organizations
Managing Your Organization
Managing Child Organizations
Child Organization Tags
Sharing Assets Across Organizations
Roles
Organization Owner
Member
Team Administrator
Administrator
Roles Offered by Domain Capabilities
User Roles Permissions Matrix
Your Account
Managing Your Account
Service Accounts
Managing Team Members
Inviting Members and Assigning Seats and Roles
Resending or Canceling Invitation to Join a Domain Capability
Removing Members
Managing Roles and Team Administrator Status
TIBCO Cloud Federated Authentication
Creating an App
Migrating an Existing App to TIBCO Cloud Integration
Exporting an App From TIBCO Flogo Enterprise
Exporting a Launch Configuration From TIBCO Flogo Enterprise
Importing an App
Importing Your App to a New App
Importing Your App to an Existing App
Building the App in TIBCO Cloud Integration
Considerations
Build the App Docker Image
Useful Resources
TIBCO Documentation and Support Services
Legal and Third-Party Notices