TIB BW 6.9.1 Rest Reference
TIB BW 6.9.1 Rest Reference
BusinessWorks™
REST Reference
Version 6.9.1
May 2023
Contents
Contents 2
What is REST? 6
What is a Resource? 6
What is an Operation? 7
What is an Endpoint? 7
What is Swagger? 8
The Swagger UI 8
Viewing Multiple REST Services in Swagger UI 8
Parameter Support 9
Conversion between Swagger and XML in TIBCO Business Studio for
BusinessWorks 9
Working with Path and Query Parameters 19
Adding or Editing Path Parameters 21
Adding or Editing Query Parameters 22
Working with Arrays 23
Working with Form Parameters 26
Creating Form Parameters 27
Working with Header Parameters 28
Restrictions 32
Restrictions on JSON 32
Restrictions on XML Schema 33
REST Service 43
REST Service Binding 43
Accept Header Responses 54
Creating a REST Service 56
Using Swagger to Create a REST Service 56
Using the Wizard to Create a REST Service 57
Rest Service Wizard 61
Using JSON Payload or an Existing XSD File 63
REST Service Tutorial 63
Installing PostgreSQL 64
Creating a New Process 65
Building a REST Service 68
Testing the REST Service 74
REST Reference 84
REST Reference Binding 84
Dynamic Invocation of a REST Service 93
Invoke Activity for Rest Reference 93
Creating a REST Reference 100
Using Swagger to Create a REST Reference 100
Using the Wizard to Create a REST Reference 101
REST Reference Wizard 104
Security 141
Overview of Policies 141
Managing Policy Resources 142
Creating a Folder for Policies 142
Creating an Authentication Resource 143
Associating a Policy 143
Removing a Policy 144
HTTP Security 145
Enforcing Basic Authentication 145
Enforcing Basic Credential Mapping 149
What is REST?
Representational State Transfer (REST) is a platform-and-language-independent
architectural style used in building services for distributed systems and networked
applications. REST ignores the details of component implementation and protocol syntax.
It uses HTTP to make calls between the applications.
REST is primarily used to expose resources across networks allowing applications to share
data. REST APIs are used for machine-to-machine communications. REST calls are sent
over the HTTP protocol, hence REST requests are in the form of URLs that point to the
resource(s) on the server. Required parameters are attached to the end of the URL. For
example, in the resource URL http://<some-name>.com/person/1234, person is the
resource and 1234 is the parameter that is passed to the URL of the resource. You can use
any REST client to make REST calls.
The key features of REST architectural style are:
l Client-server architecture: Provides a separation of implementation details between
clients and servers.
l Stateless communication: During a client-server communication, the server does
not store any session information, making the client-server communication stateless.
Every request is complete in itself and must include all the information required to
complete the request.
l Cacheability: Provides an option to the client to cache response data and reuse it
later for equivalent requests; thus partially eliminating some client-server
interactions. This results in improved scalability and performance.
What is a Resource?
REST APIs operate on resources that are defined within a REST interface file such as a
Swagger specification. A resource is a representation of a thing (a noun) on which the REST
APIs (verbs) operate. Some examples of a resource are a user, a book, or a pet. The REST
operations, POST, GET, PUT, PATCH, and DELETE operate on a resource. Individual
instances of a resource are identified by a unique identifier within the resource such as an
ID or name.
What is an Operation?
Operations define the action that can be performed on the resource. REST supports POST,
GET, PUT, PATCH, and DELETE operations that correspond to the CRUD operations.
In TIBCO Business Studio for BusinessWorks, a process implements an operation on a
resource and acts to receive, manipulate, and return resources. You pass information to an
operation by attaching path or query parameters to the URL of the resource. In addition
you can use header parameters to pass or receive information in the HTTP envelope
containing the message body.
What is an Endpoint?
The REST API is exposed through an endpoint. It is the access point of a resource which a
REST service exposes and a REST reference invokes. An endpoint uses the REST operations
to provide access to the resource. An endpoint has a name and is represented by a path
within the resource. It resides at a location specified by the URL of the resource.
What is Swagger?
Swagger is a specification which is used to define a REST interface that has operations and
parameters. Documents used by the REST API to send requests and receive responses are
often written according to the Swagger specification.
For more information about Swagger, see http://swagger.io/.
TIBCO Business Studio for BusinessWorks supports the import of Swagger-compliant files
that were created outside of TIBCO Business Studio for BusinessWorks as well as lets you
generate a Swagger-compliant JSON file when you create a service from an XSD within
TIBCO Business Studio for BusinessWorks.
The Swagger UI
Using the Swagger UI, you can visualize and test RESTful services defined by the Swagger
specification. It specifies the format (URL, method, and representation) to describe the
REST web services.
Parameter Support
REST operations support path, query, form, and header parameters. You can pass path and
query parameters to an operation by appending them to the request URL. Header
parameters are used to pass and receive information in the HTTP envelope containing the
message body.
Path parameters can be applied only at the root level. They apply to all operations and
cannot be defined per operation.
Query parameters can be applied both at the root level when they apply to all operations
or they can be defined per operation too.
Header parameters are defined per operation and per direction. Request headers are
separate from response headers.
Form parameters are applicable to POST, PUT, and PATCH operations only. They must be
defined at the operation level only and cannot be defined at the binding level.
A Swagger file is a contract that must be followed. Only the originator of the Swagger file
can modify it in TIBCO Business Studio for BusinessWorks. If the Swagger file originated in
TIBCO Business Studio for BusinessWorks, then you can modify it in TIBCO Business Studio
for BusinessWorks.
TIBCO Business Studio for BusinessWorks maintains a link between the Swagger file and
its generated .xsd file. Multiple XSD files may be linked to one Swagger file.
Not all artifacts in JSON have a direct equivalent in XML. For example, TIBCO Business
Studio for BusinessWorks handles Swagger to XML conversion of arrays differently than it
handles single elements.
This section explains how TIBCO Business Studio for BusinessWorks models the conversion
of elements from Swagger to XML and vice versa.
long integer
double number
float number
string string
base64Binary string
decimal number
boolean boolean
byte string
date string
dateTime string
binary string
Objects
The following table shows how an object in JSON is converted into an XML schema
element in TIBCO Business Studio for BusinessWorks. In this example, Product is an object
that has three attributes called 'product_id', 'description' and 'dispaly_name' all of which
are of type string.
Since the object has multiple attributes, it is a complex type element in XSD. The
minOccurs="0" indicates that specifying a value for the attribute is optional.
Note: If $ref and type: object are present in the Swagger file, type: object is
ignored, and only $ref is considered.
"description": { type="xs:string"/>
<xs:element minOccurs="0"
"type": "string", name="display_name"
},
type="xs:string"/>
"display_name": { </xs:sequence>
</xs:complexType>
"type": "string",
}
}
}
Arrays
An array is a collection of identically typed elements. The type can be primitive or complex.
For the most part, when TIBCO Business Studio for BusinessWorks converts from JSON to
XSD, you can see a one-to-one correspondence for the objects in Swagger and elements in
the corresponding XSD file. The only exception lies in the handling of arrays.
Note: The word "Array" is a key word in TIBCO Business Studio for
BusinessWorks. Do not use the "array" suffix in an XSD element name.
The example below shows the definition of an array called Products in Swagger and its
corresponding XSD.
In the example above, Products is an array in JSON (denoted by "type": "array") that
contains multiple Product objects (denoted by "items":{ "$ref": Product). The object,
Product, itself is defined in another location in the Swagger file.
The following shows how the Products array defined above is used as a path parameter:
The example above appear as follows in the Schemas folder of TIBCO Business Studio for
BusinessWorks:
Anonymous Arrays
Since XML is a strongly typed language. All elements - arrays and single elements alike, are
named and have a type in XML. In JSON however, arrays can be either structured or
anonymous. A structured array is type-based where a type defines the basic construct and
its elements. An anonymous array is an unnamed construct containing a group of
homogenous objects. Neither the construct nor the elements contained in it have a type.
Anonymous arrays simply contain blocks of data that repeat. JSON uses the concept of
anonymous arrays extensively, but the concept does not exist in XML. In JSON, a parameter
may be of type string, but if you add "type" : "array" to the definition, it becomes a
collection of strings.
The following example shows JSON payload and its equivalent in XSD in TIBCO Business
Studio for BusinessWorks. The wizard prompts you to enter a file name when generating
XSD from a JSON payload. The file name entered was "ClassicNovels" in this example.
[ <complexType name="ClassicNovelsElementType">
{ <sequence>
"id": 1, <element maxOccurs="1" minOccurs="0"
"name": "Great name="id" type="integer"/>
Expectations", <element maxOccurs="1" minOccurs="0"
"author": name="name" type="string"/>
"Charles Dickens", <element maxOccurs="1" minOccurs="0"
"isbn": "13: name="author"
978-0141439563", type="string"/>
"genre": <element maxOccurs="1" minOccurs="0"
"Classic" name="isbn" type="string"/>
}, <element maxOccurs="1" minOccurs="0"
name="genre"
{ type="string"/>
"id": 2, </sequence>
"name": "Jane </complexType>
Austen", <element name="ClassicNovelsElement"
"author": type="tns:ClassicNovelsElementType"/>
"Emma", <complexType
"isbn": "13: name="ClassicNovelsElementArrayType">
978-1493663644", <sequence>
"genre": <element maxOccurs="unbounded"
"Romance" minOccurs="0"
}, ref="tns:ClassicNovelsElement"/>
{ </sequence>
"id": 3, </complexType>
"name": "Jude <element name="ClassicNovelsElementArray"
the Obscure",
"author": type="tns:ClassicNovelsElementArrayType"/>
"Thomas Hardy",
"isbn": "13:
978-0140435382",
"genre":
"Tragedy"
}
]
Forms
TIBCO Business Studio for BusinessWorks supports the use of form parameters as the
media type in REST requests for POST, PUT, and PATCH operations. This is the only media
type that can be used to transmit binary data and files. Form parameters must be defined
at the operation level only and cannot be defined at the binding level.
The following illustrates how form parameters are represented in JSON and XSD:
primitive
{ <xs:element
data types "/person" : { name="personPostForm">
"post" : { <xs:complexType>
"description" : <xs:sequence>
"", <xs:element
"operationId" : maxOccurs="1" minOccurs="1"
"post-person",
"consumes" : [ name="name" type="xs:string"/>
"application/x-www-form- </xs:sequence>
urlencoded" ], </xs:complexType>
"produces" : [ </xs:element>
"application/json" ],
"parameters" : [ {
"name" : "name",
"in" :
"formData",
"description" :
"",
"type" :
"string",
"required" :
true
} ]
binary or
{ <xs:element
file type "/person" : { name="personPostForm">
"post" : { <xs:complexType>
"description" : <xs:sequence>
"", <xs:element
"operationId" : maxOccurs="1" minOccurs="0"
"post-person", name="photo">
"consumes" : [ <xs:complexType>
"multipart/form-data" ], <xs:sequence>
"produces" : [ <xs:element
"application/json" ], maxOccurs="1" minOccurs="0"
"parameters" : [ { name="filename"
"name" :
"photo", type="xs:string"/>
"in" : <xs:element
"formData", maxOccurs="1" minOccurs="0"
"description" : name="content"
"",
"type" : "file", type="xs:base64Binary"/>
"format" : </xs:sequence>
"binary", </xs:complexType>
"required" : </xs:element>
false </xs:sequence>
</xs:complexType>
} ] </xs:element>
/book/{isbn}
In this example, the client would invoke this service using the URL
http:/<host>:<port>/book/<isbn>.
Note: Path parameters that are not immediately enclosed in forward slashes are
supported. For example, the parameter authorName('{isbn}') in the resource
service path /book/authorName('{isbn}')/ is not directly contained by forward
slashes, but still passes successfully.
Insert a question mark (?) after a parameter to add query parameters to a resource. In the
following example, isbn is defined as a query parameter, instead of the path parameter, in
the resource service path:
/book?{isbn}
Insert (&) to use it as a delimiter when defining multiple query parameters. In the following
example, the query parameters isbn and authorName are defined in the resource service
path:
/book?{isbn}&{authorName}
All the parameters defined in the resource service path are made available to the user as
Input for every operation. See the following image for the /book/{isbn} example to see
the Input for the GET operation.
Important: Path parameter names and query parameter names must be unique
in a resource service path. For example, the following path and query
parameters is not supported:
/books/{isbn}?{isbn}
If the Request Format for a REST Binding is Form, the parameter name must be
different from all element names in the referenced schema. For example if a
Books schema contains the element isbn, isbn cannot be used as query or path
parameter name.
Important: Do not use the word "fields" as the name of a query parameter. The
word "fields" is a reserved keyword for internal use. For example, to extract the
author, isbn, and price fields from an instance of a book object with name
Emma:
use: /books/Emma?author,isbn,price
not: /books/Emma?fields=author,isbn,price
Procedure
1. Click Components under the Module Descriptors to open the Component
Configurations page.
2. Expand the Component<application_name> node.
3. Double-click the process name (with the green chevron next to it) to open its
properties.
4. Click the Bindings tab.
5. Append the path parameter to the Resource Service Path. For example, to define
the path parameter isbn for a book resource, specify the resource path as /book/
{isbn}.
6. Click the green check mark button at the end of the text box to save your edits.
The newly created path parameter appears in the Path Parameters table. You can
edit the name of the parameter by clicking on it. You can change its type by clicking
it, and then selecting a new type from its drop-down menu.
Caution: Be aware that these buttons are disabled if you are viewing
operations for an API that was created outside TIBCO Business Studio for
BusinessWorks and imported into TIBCO Business Studio for
BusinessWorks.
Procedure
1. Click Components under the Module Descriptors to open the Component
Configurations page.
2. Expand the Component<application_name> node.
3. Double-click the process name (with the green chevron next to it) to open its
properties in the Properties view.
4. Click the Bindings tab.
5. Click an operation name in the Operations section.
6. Click the Request tab in the Operation Details section.
7. Click the green icon ( ) to add a query parameter. To edit the parameter name
click on the newly created parameter's default name and type in a new name. Be
aware that these buttons are disabled if you are viewing operations in an API that
was created outside TIBCO Business Studio for BusinessWorks and imported into
TIBCO Business Studio for BusinessWorks.
8. You can also edit the existing query parameter to make it required or optional by
clicking in the cell that corresponds to the parameter in the Required column. The
value toggles from Yes to No or vice versa.
Note: Do not edit the .xsd file that is generated by TIBCO Business Studio for
BusinessWorks.
Note: The word "Array" is a key word in TIBCO Business Studio for
BusinessWorks. Do not use the "array" suffix in an XSD element name.
Note: A JSON file is like a contract that must not be broken. Since it is an
imported file, its contents cannot be modified and must be followed exactly.
in your operation. You can send or receive both text and binary files.
When you transmit a file using a form parameter, two elements are created in TIBCO
Business Studio for BusinessWorks:
o name - used to store the name of the file
o content - used to store the actual data within the file
Procedure
1. Click Components under the Module Descriptors of your project to open the
Component Configurations page.
2. Expand the Component<application_name> node.
3. Double-click the process name (with the green chevron next to it) to open its
properties in the Properties view.
4. Click the Bindings tab.
5. Click the post operation under Operations in the left tree.
6. Click the Request tab.
7. Select an encoding for the operation from the Request drop-down menu.
Select either Form Data - Tag/Value (application/x-www-form-urlencoded) or
Form Data - Multipart (application/form-data). The Form Parameters table is
displayed.
8. Click the blue icon ( ) on the right side of the Form Parameters table to create a
new form parameter.
9. Click the name and edit it. To change the type, click the type in the Type column and
select a type from the drop-down list. Similarly, you can specify if this parameter is
required or not by clicking in the Required column.
Note: Header parameters can be defined per operation which means that each
operation in the API can have its own header parameters.
If you created your REST API from an imported Swagger file, the parameters are not
editable in TIBCO Business Studio for BusinessWorks. You cannot modify existing
parameters or create new ones. You can only view the parameters. Any custom header
parameters you create are visible in the Data Source tab of TIBCO Business Studio for
BusinessWorks as follows:
You can view or add header parameters in TIBCO Business Studio for BusinessWorks if the
Swagger file for your project was auto-generated in TIBCO Business Studio for
BusinessWorks by implementing a REST service from XSD.
To add a custom header parameter, follow these steps:
Procedure
1. Click Components under the Module Descriptors to open the Component
Configurations page.
2. Double-click the process name (with the green chevron next to it) to open its
properties in the Properties view.
3. Click the Bindings tab.
4. Click an operation name in the Operations section.
5. Click the Request tab in the Operation Details section.
6. Click the red icon ( ) to add a header parameter. To edit the parameter name
click on the newly created parameter's default name and type in a new name. Be
aware that these buttons are disabled if you are viewing operations for an API that
was created outside TIBCO Business Studio for BusinessWorks and imported into
TIBCO Business Studio for BusinessWorks.
Note: Do not use a space in the HTTP header name. If you do, the
following error is displayed: Bad message- 400 - Illegal character.
You can also edit an existing header parameter to make it required or optional by
clicking in the cell that corresponds to the parameter in the Required column. The
value toggles from Yes to No or vice versa.
7. Use the Response tab to add a header parameter to the operation response.
Schemas folder
The Schemas folder is used to store the XSD definitions that were either generated by
TIBCO Business Studio for BusinessWorks or imported into TIBCO Business Studio for
BusinessWorks from an external source.
Restrictions
There are certain rules to follow when working with JSON and XML Schema.
Restrictions on JSON
JSON files used to create REST services and references have some restrictions.
l Arrays must have homogeneous content.
l Arrays cannot directly contain arrays ( [ [ ... ], [ ... ] ] )
l Null type properties throw the XSD schema conversion error in TIBCO Business
Studio for BusinessWorks. To create a REST Service or REST Binding edit the input
JSON file and change the data type from null to string.
l If a Swagger 3.0 JSON file contains multiple servers URL, then on creating the REST
service or a reference from it, the first URL is picked up to configure the shared
resource's host and port. You can re-configure the host and port based on the server
URL you want to invoke. Change the configurations accordingly in the shared
resource.
l If an operation in Swagger 2.0 JSON file has parameters or responses with embedded
anonymous schema, by default a validation error occurs. In TIBCO Business Studio
for BusinessWorks to turn off the validation error navigate to Preferences >
BusinessWorks > Validation > Swagger with Anonymous schema and select the
Warning or Ignore option.
l If a Swagger JSON file has optional array property with minItems keyword, then it is
treated as a required array property because it gets converted to an array element
which has minOccurs attribute value set as per the minItems value.
l The Swagger 3.0 JSON file containing Open API 3.0 specific features which are not in
parity with Swagger 2.0 JSON file.
General Restrictions
l No wildcards or attribute wildcards. For example, any element and any attribute is
not supported.
l Complex types might not contain both an attribute and a child element with the
same local name.
l Complex types might not contain mixed content.
l Attributes that are not part of the default (empty) namespace, cannot be used for
Complex Elements.
l The 'choice' and 'sequence' compositors might not have maxOccurs > 1 (same as the
restriction on 'all' in the schema specification).
l Substitution groups are not supported.
l Element of simple type with an attribute is not supported.
l The elementFormDefault can only be qualified for schemas used by REST binding
and JSON activities.
l Schemas should not contain cyclic dependencies within same schema, or on the
other schemas.
l Schemas should not have a type that has two child members with the same local
name, but different namespaces.
l For float and double values, XML schema always shows exponential values of type
1.0E0
The definition of each callback starts with the event name. For each event, there exists a
callback URL.
If you drag a callback URL from the tree view to the process editor, you get options
whether to create a REST service or a REST reference.
The callback URL contains methods of the callback message. The method has the message
format and the expected responses that are similar to regular request and response
definitions.
Note: When you create a REST service binding from a runtime-expression based
URL, it does not populate the Resource Service Path with an abstract path but
rather with a concrete path. By default, the Resource Service Path value is set
to /callback.
If you want to change the Resource Service Path, then after creation of REST service from
an external Swagger file, select the Generate Implementation Specification check box on
the General tab for that REST service binding.
The service to be created from the DnD of run time expression based URL should be
created on an independent process so that the generated swagger file has the details of
only that binding specification. To override the same on reference binding use the
dynamicConfigurations URL field in Invoke activity. For more information, see Dynamic
Invocation of a REST Service.
Note: For the REST service binding , which are created using drag and drop of
callback URL node from the tree view, select the Generate Implementation
Specification check box. This creates a new Swagger specification and binds it
to the service binding so that while exporting the application EAR, the
Manifest.json accomodates the details about the service.
Procedure
1. Right-click the Schemas folder in your project in the Project Explorer.
2. Select New > XML Schema File.
3. Enter a file name and click Finish.
The file opens in the XML Schema Editor.
4. Right-click anywhere in this editor and click Add Element to add a new element.
Procedure
1. Right-click on the Schemas folder in your project and select New > XML Schema
2. Enter a name for the schema file and paste the JSON payload into the JSON Sample
text box and click Next.
You can see a message saying that the JSON payload parsed successfully.
3. Click Finish.
A .xsd file with the name that you provided gets created under the Schemas folder.
You can view its contents by opening it in the XML Schema Editor (right-click the
schema file and select Open With > XML Schema Editor).
4. Save the project.
Note: This option is enabled only when the JSON file is any of the Swagger 1.0
file, Swagger 2.0 file, Swagger 3.0 file, and has Swagger Definition.
For Swagger files that do not contain Swagger definition, the Generate XSD
Schema menu option is disabled.
Procedure
1. Right-click the JSON file in the Service Descriptors folder in your project and select
Refactor > Generate XSD Schema.
A .xsd file gets created in the Schemas folder of your project.
2. Save the project.
l To figure out which XML schema is related to the Swagger file, right-click the
Swagger file and select Refactor -> Open XSD Schema.
l If you have multiple Swagger files all of which contain a definition for the same
object, the definition for the object in all the Swagger files must be identical.
l If you have multiple Swagger files with one file (a master file) containing a super set
of definitions contained in the other files, generate an XSD file from the master
Swagger file that contains the super set, and create links to the other files in the
master Swagger file. If you create a link to the super set file in one of the subset files
and then create an XSD from the subset file, then the XSD contains only those
elements that are common to both files. It does not contain elements for definitions
that exist only in the super set file.
Procedure
1. Right-click on one or more API names in the API Explorer and select Import.
The Import API dialog opens.
Every API you selected in the API Explorer is listed in this dialog. If an API has
multiple versions, all versions are listed. By default, all APIs listed here are selected.
You can deselect APIs that you do not want to import by clearing its check box.
2. Select the appropriate action and click Next.
Option Description
Import to project Select the radio button to import the API into an existing
project and browse to the project using the Browse
button.
Create a new project and To create a new project and import the API into that
import API to the new project select the radio button.
project
API list to import Select the API or the appropriate version of the API when
there are multiple versions of the API available.
As an alternative to the above procedure, you can also drag and drop the API from
the API Explorer into the project's Service Descriptors folder.
Note: APIs that were created using a Swagger file must be implemented
exactly as defined by the Swagger file. TIBCO Business Studio for
BusinessWorks allows you to only view the parameters and operations that
are defined in the Swagger file. You cannot create any new parameters or
operations for such applications.
REST Service
The REST service is a server process. When running, it can be invoked by a REST reference.
Binding
This section has the following fields.
Field Description
In this example, the client would invoke this service using the URL
http:/<host>:<port>/book/<isbn>.
If an application contains multiple REST bindings, make sure that the location
of the path parameters is unique for each REST binding.
Field Description
An example is that of one REST binding using the /book/{isbn} path and
another REST binding is using the /book/{authorid} path. Since {isbn} and
{authorid} are defined at the same location in the URI, one of these services
do not function as expected.
In addition to path parameters, the path in a REST binding can also contain
query parameters. For example,
Response The type of response message format. The supported response message
Client formats are:
Format
l JSON
l XML
Enforce BW Select the checkbox to set the response preference to BW Service Response.
Service
By default, the checkbox is not selected, and the response preference is set to
Response
the Accept Header response.
For more information about the REST Service responses based on the Accept
Header settings, see the Accept Header Responses topic.
Start Job on Select the checkbox to start the job when there is a wrong or erroneous input.
Input
Exception
Field Description
Apply Policy Select the checkbox to apply a policy to the sub-paths of a REST service.
to Subpaths When this checkbox is selected for a parent Resource Service Path configured
with policy, the policy is applied to the child paths at runtime. If in case we do
not wish to apply the policy to all the sub-paths but for selective paths, then
do not select this checkbox and add the policy for the required service paths.
Operations
This section shows the following details.
Field Description
Name The name of the HTTP method used, for example, POST, GET, PUT, PATCH,
and DELETE.
Operation Details
This section has the following tabs.
Summary tab
Field Description
HTTP Displays the HTTP Method specified in the Operations section. These are the
Method available HTTP methods:
l POST
l GET
l PUT
l DELETE
l PATCH
Field Description
Request tab
Field Description
Use Null for Select the check box to set NULL values instead of empty values in JSON.
Empty Values That is, use NULL values instead of square brackets ([]).
Ignore Select this check box to ignore additional fields that are generated due to
Additional changes in the external payload when processing the schema.
JSON Fields
By default, the check box is clear.
Field Description
Name of the parameter. Users can edit the parameter name by clicking
on the parameter added.
l Type
Field Description
l Repeating
You can edit this field to provide additional details by clicking on the
parameter added. For newly created services, this field's details reflect
in the Swagger file generated within ActiveMatrix BusinessWorks. For
existing Swagger files with this field, you must create a new service
using the Swagger file.
Response tab
Field Description
Use HTTP Selecting this check box includes the response headers element. Response
Headers headers are not commonly used, so select this check box only when you
need to include response headers.
When you select this check box, you can add custom HTTP fault headers
defined in the Response Status tab.
Use Custom You can specify a custom status line (status code and reason phrase) to the
Status Line outgoing message. The codes used must be defined in the configuration
under the Response Status tab.
Response The operation returns a status code as response, when this check box is
with Status selected. Message body is not required. For example, using a POST operation
Code Only returns a 201 status code which means Created and responds with the
resource URL.
Use Empty Select the check box to set empty values instead of NULL values in JSON.
Values for That is, use square brackets ([]) instead of NULL.
Null
By default, the check box is clear.
Field Description
Note: When you select the Binary check box all other check boxes are
disabled and the JSON Definition Style option is not visible. Instead, the
Media Types field is displayed.
Media Types This field is enabled only when the Binary check box is selected.
To dynamically set a binary media type other than the available options , do
the following:
• Ensure that you have Media Type as application/octet-stream.
• Select the Use HTTP Headers check box and then pass Media Type
value in the Content-Type response header. This media type is not
updated in the Swagger file but is set at run time.
Field Description
Resource Displays the schema selected. This option is not available when the Use
Schema Custom Status Line and Response with Status Code Only check boxes are
selected. The following options are available:
l binary: This option is available only when you select the Binary check
box.
l base64: This option is available only when you select the Binary check
box.
l String
l Integer
l Boolean
l XSD element: Selecting this option to either select the XSD schema
element available under the Schemas folder of your project or a create
new XML schema resource. Click Create New Schema to a create new
XML schema resource using the Simplified Schema Editor wizard.
Note: Ensure that the schema resource you select does not contain
cyclic dependencies on other schemas , or a type that has two child
members with the same local name, but different namespaces.
Header This field is enabled only when Use HTTP Headers check box is selected.
Parameters
You can perform following operations:
l Add Header Parameter
l Remove Parameter
l Scroll Up
l Scroll Down
Name of the parameter. Users can edit the parameter name by clicking
on the parameter added.
l Type
Field Description
You can edit this field to provide additional details by clicking on the
parameter added. For newly created services, this field's details reflect
in the Swagger file generated within ActiveMatrix BusinessWorks. For
existing Swagger files with this field, you must create a new service
using the Swagger file.
Code These are unique numbers. Click on the error code to customize it.
Column Description
Name
Note: Use custom status code 200 only when the response is not defined,
that is, when the Response with status code only check box is selected in
the Response tab.
Restriction: If you select the Response Format as Binary, do not add any
status code.
Type Data type of the error code. Following types are supported:
l XSD Element...
Select this option to either select the XSD schema element available under
the Schemas folder of your project or create a new XML schema resource.
l String
l Integer
l Boolean
Reason Description of the error code. Click on the value to customize the description.
Phrase
Path Parameters
This section shows the following details.
Parameter The parameter You can edit this field to provide additional details by
name of the type. It can be any clicking on the parameter added. For newly created
operation one of the services, this field's details reflect in the Swagger file
used following: generated within ActiveMatrix BusinessWorks. For
existing Swagger files with this field, you must create a
l String
Advanced Configuration
This section has the following field:
Blocking Yes This field sets the number of threads to be created for a REST
Queue Size service. It gives you control over the number of threads that are
created for the REST service. By default, it is set to a large integer
value.
Policies
To associate a new or existing policy with the REST binding, click Policies node under the
RestService tree, then click Add Policy to create a new policy. To edit an existing
policy details, click the policy name and edit any of the following fields.
Field Description
Policy Type The type of policy associated with the binding. The REST binding can support
the Basic Authentication policy. For more information, see "Enforcing Basic
Authentication".
application or XML JSON XML Error: 406 Error: 406 Error: 406
Procedure
1. Create an empty project. For more information, see "Developing a Basic Process" in
Note:
For Swagger 3.0 files with callbacks, to create a REST service for the
callback, drag a callback URL from the tree view in the Project Explorer
pane to the process editor.
Note: When you create a REST service, make sure to edit the Default Host field
in the HTTP Connector Resource to reflect the actual host name. By default,
the Default Host field is set to localhost.
Procedure
1. In the Project Explorer view, select the process to which you want to add the REST
service. There are multiple ways to invoke the wizard to create a REST service.
l From the main menu, select File > New > BusinessWorks Resources >
BusinessWorks REST Resource.
l Right-click the menu, select New > BusinessWorks REST Resource.
l Click on Create REST Service in the process editor area. (Note that REST
services can only be created in stateless ActiveMatrix BusinessWorks™
processes.)
2. In the REST Service Wizard window, configure the REST service implementation by
specifying the values for Resource Service Path, Type of Resource, Operations, and
Implementation Data.
Resource Service Specifies the URI that is used to access the REST service
Path
3. Optionally, click Next to configure the selected operations individually to specify the
nickname for the operation (the default nickname is of the format
5. Add activities to the process and configure them appropriately. For example, update
the POST process to add a Log activity to log the requests and connect the postOut
activity to Log activity.
6. Configure the input and output properties for the activities. For example, select
postOut activity and select Properties > Input. Expand the data tree in the Data
Source tab and map the post element from the left to the post Response element on
the right to echo the element. Similarly, for Log activity, map the post element on
the left to the ActivityInput message element on the right.
7. You can optionally add an operation to the service using the Create REST Operation
wizard. To open this wizard, click on the down arrow and click Create REST
Operation to open the wizard.
Result
The REST service is built and can be tested using the built-in tester Swagger UI.
For more information about the Swagger UI, see "Testing the REST Service" in TIBCO
ActiveMatrix BusinessWorks™ Getting Started.
Field Description
Resource Service The relative path for this REST service resource.
Path
If an application contains multiple REST bindings, ensure that the
location of the path parameters is unique for each REST binding.
For example, one REST binding is using the paths /book/{isbn} and
another REST binding is using the path /book/{authorid}. Since {isbn}
and {authorid} are defined at the same location in the URI , one of
these services do not function correctly.
Field Description
/resource/path/{pathparam}? query={queryparam} or
/resource/path/{pathparam}?{ queryparam}
Resource The XSD schema element to be used for creating the REST resource.
Definition
You can also use this to create the input and output of each operation
defined. You can override this on the next screen if required, for each
operation.
Operations These are the HTTP methods implemented by this REST service.
Currently POST, GET, PUT, PATCH, DELETE, OPTIONS, HEAD, and custom
methods are supported for users to implement.
Note: You can add custom operations by clicking on the Add Custom
Operation button.
Prerequisites
Have the following installed or created on your computer:
l PostgreSQL
l Required database and tables
l Most recent version of Google Chrome web browser
Installing PostgreSQL
This topic explains how to install the PostgreSQL database and create the database and
tables required for the Bookstore tutorial.
Procedure
1. Download and install PostgreSQL from http://www.postgresql.org/download/
Note the superuser password that you create as part of the installation process.
2. Open a terminal window and navigate to the root folder of the PostgreSQL
installation. Open pg-env.bat and verify the path settings. Save the file if you make
changes.
3. Start the server. Navigate to the bin folder of the install directory and type: pg-ctrl
start
Enter the password you created for the superuser.
4. Open another terminal window and navigate to the BW_
HOME\samples\binding\rest\BookStore\scripts folder. Open readme.txt. On Unix
systems, use the first command in the readme to start the script from the psql
window. On Windows, copy the second command to start the script from the
command line.
5. Navigate to the PostgreSQL bin folder and paste the command line into the terminal
window. Modify the command as needed. For Windows, use forward slashes in the
command.
Run the command to create the database, the database tables, and to populate the
database.
6. Open the PostgreSQL pgAdmin UI utility to see the database and tables.
Procedure
1. Open TIBCO Business Studio for BusinessWorks.
9. Expand the folders in the project to see all the project processes and resources. For
more information on folder structure, see TIBCO ActiveMatrix BusinessWorks™
Application Development.
process.
l Each operation is implemented separately.
12. Double-click an operation to display the process for example, BooksPersist >
addBooks.
a. In the addBooks operation, you can see a JDBC activity.
b. The activity is repeated using a ForEach group.
c. addBooksOut represents the Reponse to the web service request.
13. To add a new process package named tibco.bw.sample.rest, right-click on Processes
in the Project Explorer view, and select New > BusinessWorks Package.
14. In the BusinessWorks Package screen, specify tibco.bw.sample.rest in the Name field.
15. Click Finish and verify that the new package tibco.bw.sample.rest has been added
in the Project Explorer view.
Procedure
1. To define a REST Resource named MyBooks, select
The references are added to the process. The purple chevron indicates the service
and its operations that can be referenced by the process.
6. To update the POST process to invoke the appropriate external service operation:
a. Click the addBooks operation.
b. Select and drag the operation to the left of the postOut activity and drop it. An
Invoke process activity is created.
7. Click the newly added activity. Select the icon and connect addBooks to
postOut
8. Click the getAllBooks operation and select, drag, and drop the operation to the left
13. Drag the Book element from the left to the Book* element on the right.
14. In the pop-up window, select Make a Copy of each " Book" and click Finish.
The Input tab looks like this:
20. Click the getOut activity in the Process Editor, and select the Properties > Input
tab. Expand the getAllBooks activity and choose Book* to map the Book* element
from left to right. In the pop-up window, choose Make a Copy of each " Book" and
click Finish. The tab looks similar to this:
Result
Your project is complete without any errors.
Procedure
Note: The Swagger framework used to test the REST service is accessed
using the port specified by the bw.rest.docApi.port property in the
<TIBCO_HOME>\bw\<version>\domains\<domain
name>\appnodes\<appspace name>\<appnode name>\config.ini file. By
default, this property is set to port 7777. If you have multiple REST
applications running on separate AppNodes on a single machine or server,
you must configure these port numbers to be unique for each AppNode.
To do so, edit the bw.rest.docApi.port property in the config.ini file
for each AppNode.
If there are multiple REST applications running within a single AppNode,
there is no need to configure this port.
3. Provide valid values for the application properties including a valid user name,
password, and database URL to connect to your PostgreSQL database if different
from the default setting.
4. Verify your JDBC connection.
a. Expand the Resources folder in the Project Explorer for the
tibco.bw.sample.binding.rest.BookStore process.
b. Double-click JDBCConnectionResource.jdbsResource.
c. In the JDBC Driver section of the window, click Test Connection to verify the
connection. If you change the JDBC driver folder from the default, click Click
Here to Set Preferences and set the JDBC driver folder to the folder where
you downloaded PostgreSQL JDBC Driver.
operations you just added. For more information, see the section Testing the Post
and GET Operations.
15. Expand the Books and Events headers, and test out the operations as listed below.
Result
Click Books or Events in the Swagger UI to view the following operations for Books and
Events:
Books
l Post books
l GET books
l GET book by ISBN
l PUT book by ISBN
Events
l POST Events
l GET Events
l GET Event by EventID
l PUT Event by EventID
l DELETE Event by EventID
{
"Book": [
{
"isbn": "0061122416",
"name": "The Alchemist",
"description": "Every few decades a book is published that changes
the lives of its readers forever. The Alchemist is such a book",
"authorName": "Paul Coelho",
"releaseDate": "2006-04-25",
"vintage": true,
"signed": true,
"price": 11.9
},
{
"isbn": "0071450149",
"name": "The Power to Predict",
"description": "How Real Time Businesses Anticipate Customer
Needs, Create Opportunities, and Beat the Competition",
"authorName": "Vivek Ranadive",
"releaseDate": "2006-01-26",
"vintage": false,
"signed": true,
"price": 15.999
}
]
}
GET books by ISBN returns an output similar to the following for ISBN 0061122416:
{
"isbn": "0061122416",
POST Books------->{"Book":[{"isbn":"1451648537","name":"Steve
Jobs","description":"Biography of Apple Co-Founder Steve
Jobs","authorName":"Walter Isaacson","releaseDate":"2012-10-
24","vintage":false,"signed":false,"price":21},
{"isbn":"0385537859","name":"Inferno","description":"Robert Langdon
returns in Dan Brown's latest fast paced action
thirller","authorName":"Dan Brown","releaseDate":"2013-05-
14","vintage":false,"signed":true,"price":14.09},
{"isbn":"0399103421","name":"The Godfather","description":"The Godfather
is an epic story of a New York's top mafia family, loyalty, and how men
of honor live in their own world, and die by their own
laws.","authorName":"Mario Puzo","releaseDate":"1969-03-
10","vintage":true,"signed":true,"price":5
0}]}**************************************************************
GET Books------->{"Book":[{"isbn":"1451648537","name":"Steve
Jobs","description":"Biography of Apple Co-Founder Steve
Jobs","authorName":"Walter Isaacson","releaseDate":"2012-10-
24+05:30","vintage":false,"signed":false,"price":21},
{"isbn":"0385537859","name":"Inferno","description":"Robert Langdon
returns in Dan Brown's latest fast paced action
thirller","authorName":"Dan Brown","releaseDate":"2013-05-
14+05:30","vintage":false,"signed":true,"price":14.09},
{"isbn":"0399103421","name":"The Godfather","description":"The Godfather
is an epic story of a New York's top mafia family, loyalty, and how men
of honor live in their own world, and die by their own
laws.","authorName":"Mario Puzo","releaseDate":"1969-03-
10+05:30","vintage":true,"signed":true,"price":5
0}]}**************************************************************
24+05:30","vintage":false,"signed":false,"price":2
1}**************************************************************
Procedure
1. Click books.
It expands and displays the POST and GET operations.
8. After you have finished, go back to TIBCO Business Studio™ for BusinessWorks™ and
click in the Console view to stop the process.
Troubleshooting
Your may encounter some errors while executing or running the process. The following are
some of the possible errors you may encounter and their resolutions.
Unable to insert rows into Use the sample JSON payload from the sample json folder to
the database using the post the data.
dbsetup.sql script in the
scripts folder.
The REST Swagger UI page is Verify that the application has started and that you are
not visible. accessing the correct URL. Use the lrestdoc command in the
Console view to get the Swagger UI URL.
Problem markers are visible Clean the project by invoking Project > Clean or by switching
in the project. to a clean new workspace.
Getting the File was not Ensure that the books.json and book_put.json files are
found exception. present at the location described in the Input_File and Input_
File_1 module properties.
The PostgreSQL server does Make sure you are not running as Administrator.
not start.
The database and database Open the readme.txt file for the sample, located in the BW_
tables are not created. HOME\samples\binding\rest\BookStore\scripts folder. Run
the dbsetup.sql script from a command line, not the psql
window.
Getting an unregistered Select all the check boxes in the Role Privileges tab in the
user error message while pgAdmin UI and run the process again. See the image below.
running the process.
REST Reference
A REST reference is a client process that is used to invoke an external REST service. The
service must be running and accessible from the system where the reference resides at the
time of its invocation.
Binding
This section has the following fields.
Field Description
Implementation The Swagger specification in the project that defines the REST endpoint.
Resource This field is visible only when the reference is defined by a Swagger
specification, otherwise this field is replaced by the Resource Service
or
Path, which is the path to the resource.
Resource Service
Path
You can override the resource service path dynamically by using the URL
element under dynamicConfigurations element on the Input tab of the
Field Description
Invoke activity.
Tip: Click on the HTTP Client Name field to display details about the
HTTP Client shared resource.
You can override host and port values dynamically by using the URL
element under dynamicConfigurations element on the Input tab of the
Invoke activity.
Path Parameters If Path parameters are defined in the REST service that the REST
Reference is calling, they appear in the Path Parameters table. However,
you cannot modify the Path parameters since the REST Reference must
adhere to the parameters defined by the service.
Note:
To enforce authentication on the REST Reference Binding, use the
authorization header or associate the binding with a Basic Credential Mapping
policy. For more information, see "Enforcing Basic Credential Mapping"
Summary tab
This tab shows the following details.
Field Description
HTTP A unique identifier for the operation that identifies the operation in the entire
Method API. By default, it is set to <HTTP-Method>-<resource_name>.
Notes A field that can be used to describe the operation. Any text that is entered in
the Notes field appears in the Swagger file.
Request tab
This tab shows the following details.
Field Description
Use Empty Select the check box to set empty values instead of NULL values in JSON. i.e
Values for Null use [] brackets instead of NULL.
Field Description
Style
Name of the parameter. Users can edit the parameter name by clicking
on the parameter added.
Note: Do not use a space in the HTTP header name. If you do, the
following error is displayed: Bad message- 400 - Illegal
character.
l Type
Field Description
o Long
o Float
o Double
o Boolean
o Byte
o Binary
o Date
o Date Time
o Password
l Repeating
Response tab
This tab shows the following details.
Field Description
Use HTTP Select this check box only if you require a service to send back a custom
Headers header, or value or if you need to see the response headers.
When you select this check box, you can add custom HTTP fault headers
defined in the Response Status tab.
Field Description
Use Null for Select the check box to set NULL values instead of empty values in JSON. i.e
Empty values use NULL values instead of [] brackets.
Ignore Select this check box to ignore additional fields that are generated due to
Additional changes in the external payload when processing the schema.
JSON Fields
By default, the check box is clear.
Format Response format requested by the client, can be JSON, XML, Text, or Binary.
The service must support the formats that the client requests for this
operation.
Media Types This field is enabled only when the Binary check box is selected.
Field Description
l XSD element: Selecting this option to either select the XSD schema
element available under the Schemas folder of your project or a create
new XML schema resource. Click Create New Schema to a create new
XML schema resource using the Simplified Schema Editor wizard.
Note: Make sure the schema resource you select does not contain
cyclic dependencies on other schemas , or a type that has two child
members with the same local name, but different namespaces.
Header This field is enabled only when you select the Use HTTP Headers check box.
Parameters
The user can perform following operations:
l Add Header Parameter
l Remove Parameter
l Scroll Up
l Scroll Down
Name of the parameter. Users can edit the parameter name by clicking
on the parameter added.
Note: Do not use a space in the HTTP header name. If you do, the
following error is displayed:Bad message- 400 - Illegal
character.
l Type
Field Description
o Boolean
o Byte
o Binary
o Date
o Date Time
o Password
l Repeating
Field Description
Code These are unique numbers. Click on the error code to customize it.
Note: Use custom status code 200 only when the response is not defined, that
is, when the Response with status code only check box is selected in the
Response tab.
Type Data type of the error code. Following types are supported:
l XSD Element
Select this option to either select the XSD schema element available under
the Schemas folder of your project or create a new XML schema resource.
Field Description
l String
l Integer
l Boolean
Reason Description of the error code. Click on the value to customize the description.
Phrase
Policies
To associate a new or existing policy with the REST Binding, click Policies node under the
Rest Reference tree, then click Add Policy to create a new policy. To edit an existing
policy details, click the policy name and edit any of the following fields.
Field Description
Policy Type The type of policy associated with the binding. The REST reference binding
supports the Basic Credential Mapping policy.
<logger name="org.apache.http">
<level value="DEBUG"/>
</logger>
This field is displayed on the Invoke activity for REST reference binding that is created
using a Swagger file as well as by using the REST Reference Wizard.
The Request and Response schemas must be in-sync with the REST service that is to be
invoked. You can also override the path or query parameters by passing the same in the
endpoint URL, for example :
http://localhost:9678/resource/pathParamValue?query1=queryParamValue.
If the service is configured with HTTPS then the HTTP Client shared resource used on
Reference binding should be configured with corresponding Confidentiality or Default
Confidentiality fields.
For REST service which requires authentication either add the Basic Credential Mapping
policy or pass the Authorization Header.
Note: This field is displayed only for newly created Reference binding and does
not reflect for existing applications.
For deploying application on TIBCO Cloud Integration: If you want to change the dynamic
URL for applications deployed on TCI, select the Default Confidentiality check box on the
HTTP Client shared resource and then deploy the .EAR file on TCI. The TCI endpoint are
https based.
General
The General tab has the following fields
Field Description
Name The name to be displayed as the label for the activity in the process.
Description
Provide a short description for the invoke activity
Advanced
The Advanced tab has the following field
Activity Yes The Invoke activity timeout in seconds. You can either
Timeout select a preset timeout (Default Timeout, 30, 60,or 120
(seconds) seconds) or specify a custom timeout in seconds.
Conversations
You can initiate the conversation here. Click the Add New Conversation button to
initiate multiple conversations.
For more information about conversations, see the TIBCO ActiveMatrix BusinessWorks™
Application Development guide.
Input
The following is the input for the activity
operationRequest simple or This input item has the primitive data type or
complex XSD element defined for the operation. If the
operation is configured with Form Parameters,
it is reflected here.
Output
The following is the output of the activity
OperationResponse simple or This field shows the response schema element for
complex the operation.
Fault
The Fault tab lists the possible exceptions generated by this activity. For more information
about error codes and the corrective actions to take, see the ActiveMatrix BusinessWorks
Error Codes guide.
clientFault The Rest Service responds with a message containing the 4XX
status code.
serverFault The Rest Service responds with a message containing the 5XX
status code.
Note: If the operation is configured with client or server error status codes, then
they are appended to the list.
Swagger files on your local machine you can import them by pointing the File Explorer to
the location of the Swagger file, then dragging and dropping the file from the File Explorer
into the Service Descriptors folder of your project. For Swagger files that reside on the
cloud, you can use the API Explorer view to get the Swagger specifications that were
created in API Modeler. Drag and drop the Swagger file into the Service Descriptors folder.
For more information, see the API Explorer.
To create a REST reference from a Swagger file:
1. Expand the .json file in the Service Descriptors folder in Project Explorer.
2. Drag and drop an endpoint in the API from the Service Descriptors folder to the
right boundary of the Process Editor.
Note:
For Swagger 3.0 files with callbacks, to create a REST reference for the callback,
drag a callback URL from the tree view in the Project Explorer pane to the
process editor.
Note: When invoking external REST services using the REST Reference Wizard,
the Request and Response of the REST method must be configured with the
corresponding XSD schema element used by the invoked service, otherwise the
service is not invoked.
3. Enter the URL for the service in the Service URL text box.
4. Select the operations that you want to implement in your reference by selecting
respective check boxes and click Next.
5. Configure the request and response type for your operations in the Configuring the
Operation screen by selecting the request and response type from their respective
drop-down menus. Click Finish. The wizard creates a REST reference on the extreme
right of your Process Editor.
6. Open the Reference properties view by clicking on the reference name.
7. Click the HTTP Client link to open the HTTP Client Shared Resource configuration
page and verify that the Default Host has been set to the host where the service
resides.
On the Create new REST Operations page, select the operation you want to
create and click Next. Configure the Request and Response for the operation if
need be and click Finish. You have the option to configure your request and
response for the operation at a later time too from the Reference properties
view.
You can now invoke any operation by dragging and dropping it in the process editor.
Field Description
Operations These are the HTTP methods implemented by the REST Reference process to
access the REST service.
Currently only POST, GET, PUT, PATCH, and DELETE methods are supported.
Procedure
1. Right-click the Swagger file under Service Descriptors in the Project Explorer.
2. Select Remote Interface.
The Check for Differences menu option checks for differences between the imported
copy and its original.
The Compare Differences menu option first checks for differences between the
imported copy of the Swagger file and its original. If there is a difference, the file
appears in the Synchronize tab and if you double-click it there it displays the two
files side by side with the differences highlighted.
The Update Local Copy menu item updates the copy of the file in your workspace to
match its original. It also regenerates the schema.
Note: No changes are performed for processes that have already been
created.
Procedure
1. Run the service using the Run BusinessWorks Application from the right-click
context menu.
2. Type lrestdoc in the Console once the service is running.
3. You can use the Try it out! button to verify that the service is running.
4. Copy the Discovery URL and paste it into a browser address bar and press Enter. The
Swagger page in the browser displays the path to the Swagger file of the running
service.
5. Copy the Swagger file URL and paste it into another browser tab address bar and
press Enter. The browser displays the contents of the Swagger file.
Now that you have the Swagger file for the service you can create a reference using
it. The reference can reside on a machine other than the machine where the service
is running. The Swagger file that you just obtained from the running service contains
all the information such as the hostname or the machine where the service is
running, the port number and the base path for the service. The reference you create
reaches out to the service using this information from the Swagger file.
Procedure
1. Right-click the Service Descriptors folder of the process and select New > File.
2. Enter a name for the .json file and click Finish.
3. Right-click the newly created .json file in the Service Descriptors folder and select
Open With > Text Editor.
4. Paste the JSON code that you copied from the Swagger file into the Text Editor and
save the project.
5. Expand the .json file in the Service Descriptors folder to expose the paths.
6. Drag a path from the Service Descriptors folder to the right boundary of the Process
Editor to create a reference.
Procedure
1. Click on the reference name in the Process Editor to open its properties.
2. Click the Bindings tab.
3. Click the HTTP Client link in the Bindings tab.
4. In the HTTP Client section, click the Choose the field value type button next to the
Default Host field text box and select Module Property.
5. Enter host <IP address of machine on which the service is running> in the Default
Host text box and click .
It creates a module property called host and gives it the value of the service machine
hostname that you provided.
22. In the HTTP Client section, change the Default Host and Default Port to the values in
the Books.json file and select the Default Confidentiality check box.
In the above example, GET operation when responding with 200 status code can provide a
reply with application/json, application/xml or text/plain content-type based on the Accept
header sent in the request.
In a similar way if an operation is responding with Fault status codes, then it can also be
configured with multiple media types.
For more information to create REST Reference from a Swagger file, see Using Swagger to
Create a REST Reference
a. In the Service Binding section, the Response tab for the operation displays only
the following check boxes :
Use HTTP Headers
Use Custom Status Line
Respone with Status Code Only (By default, this field is disabled)
Use Empty Values for Null
b. In the Reference Binding section, the Response tab for the operation displays
only the following check boxes:
Use HTTP Headers
Use Null for Empty values
Ignore Additional JSON Fields.
The descriptions for these fields can be found in the corresponding REST Service
and Reference Binding sections.
2. Response Status tab
For multiple response based service, the Response Status tab shows all the status
codes (including success and error codes), in the same tab.
This tab shows the following details:
a. Status Code - This field shows the HTTP status codes defined in the Swagger file
for the particular operation.
b. Media Type - This field displays the content-types defined for the particular
operation. The content-types which we already support, like JSON, XML, Text
and Binary media types would work.
c. Type - Data type of the status code, for example XSD Element, String, Integer or
Boolean.
d. Reason Phrase - Description of the status code defined in the Swagger file.
3. Reply activity on REST Service:
On the General section, select the following available options from the Reply With
field to send the reply message:
• Output Message
• Fault Message - This field does not appear when the fault status code is not
provided for the operation.
Input Tab
This specifies the response to be sent to the client. The response schema depends
on the output message of the operation for this reply. If the operation is replying
with various media types, the input structure contains the item appended with
corresponding media type. For example, item-application-xml.
Similar behavior is seen when the service is replying with fault.
value in the Input tab of the Invoke activity, based on the expected response
content-type. For example, if we want the response in image/jpeg format, then we
can pass the same in the Accept Header.
Procedure
1. Right-click the Swagger file under Service Descriptors in the Project Explorer.
2. Select Remote Interface.
Check for Differences checks for differences between the imported copy and its
original.
Compare Differences first checks for differences between the imported copy of the
Swagger file and its original. If there is a difference, the file appears in the
Synchronize tab and if you double click it, it displays the two files side by side with
the differences highlighted.
Update Local Copy updates the copy of the file in your workspace to match the
source. It also regenerates the schema. It updates it in both the service and
reference.
Note: Nothing changes for processes that have already been created.
Updating Configuration
You can edit the configuration for a REST service or a reference that was created from
scratch without a Swagger file. You cannot edit the configuration for a service or reference
that was created using a Swagger file.
View or edit the configuration for a REST service or reference by following these steps:
Procedure
1. Click the service or reference in the Process Editor.
2. In the General tab of the Properties view, click the link for the service or reference
binding.
3. In the Components properties, click the Bindings tab.
4. Click an operation under Operations in the RestService or RestReference tree to
edit the configuration of the operation.
The Summary page for that operation opens on the right. To edit the request,
response or response status for the operation, click the respective tabs.
Adding an Operation
For REST services and references that were created without a Swagger file, you can edit
their configuration to add or delete operations.
To add an operation after a REST service was created, do the following:
Procedure
1. Click the down arrow to the right of the service and select Create REST Operation.
2. In the REST Service Wizard, select a schema for the operation using the Browse
button for Resource Definition.
3. Select the operation check box.
4. Optionally, click Next to configure the operation. You can configure the operation
after you have added it from the Components page. For more information, see
Updating Configuration.
5. Click Finish.
Procedure
1. Hover your mouse next to the reference name.
2. Click the Create REST Operation icon.
Procedure
1. Click the service or reference in the Process Editor.
2. In the General tab of the Properties view, click the link for the service or reference
binding.
3. In the Components properties, click the Bindings tab.
4. Click an operation under Operations in the RestService or RestReference tree to
edit the configuration of the operation.
The Summary page for that operation opens on the right. To edit a parameter in the
request or response for the operation, click the respective tabs.
<>@BWEclipseAppNode> lrestdoc
[Application Name]: tibco.bw.sample.binding.rest.BookStore.application
[Discovery Url]
<>@BWEclipseAppNode> lendpoints
[Application Name] : tibco.bw.sample.binding.rest.BookStore.application
[Endpoint Type] : REST
[Endpoint URL] : http://localhost:8123
[CLIENT FORMAT ] : JSON
[RESOURCE PATH ] : /book/{ISBN}
[HTTP METHODS] : GET, PUT, DELETE
[Endpoint Type] : REST
[Endpoint URL] : http://localhost:8123
[CLIENT FORMAT ] : JSON
[RESOURCE PATH ] : /books
[HTTP METHODS] : POST, GET
[Endpoint Type] : REST
[Endpoint URL] : http://localhost:8123
[CLIENT FORMAT ] : JSON
[RESOURCE PATH ] : /book/{ISBN}/events
[HTTP METHODS] : GET
[Endpoint Type] : REST
[Endpoint URL] : http://localhost:8123
[CLIENT FORMAT ] : JSON
[RESOURCE PATH ] : /event/{EventID}
[HTTP METHODS] : GET, PUT, DELETE
[Endpoint Type] : REST
[Endpoint URL] : http://localhost:8123
[CLIENT FORMAT ] : JSON
[RESOURCE PATH ] : /events
[HTTP METHODS] : POST, GET
Exception Handling
Errors (or faults) can occur when executing a process. Using fault handlers you can catch
faults or exceptions and create fault-handling procedures to deal with potential runtime
errors in your process definitions.
Fault handlers are the recommended way to catch faults or exceptions in a process. Two
types of fault handlers are available: Catch Specific Fault and Catch All Faults.
Fault handlers are defined at the scope level, as a result you can catch faults or exceptions
thrown by activities within a scope. To catch faults or exceptions specific to an individual
activity, you need to define a new scope for that individual activity and attach a fault
handler to the new scope.
At runtime, once a fault handler is executed, the associated scope does not complete due
to the error thrown. If a fault is not thrown in the fault handler, the process execution
continues with the first activity that follows the scope. If a fault is thrown in the fault
handler, then the engine checks for an enclosing scope that is designed to handle the fault.
If one is found, the engine executes it. Once the enclosing fault handler finishes its
execution, the engine executes the next activity following the scope. If no fault handlers are
found in the enclosing scopes, then the job terminates with a fault.
Creating Faults
Fault handlers are used to catch faults or exceptions and create fault-handling procedures
to deal with potential errors.
Fault handlers are defined at the scope level, as a result you can catch faults or exceptions
thrown by activities within a scope. There are two types of fault handlers: Catch Specific
Fault and Catch All Faults.
Fault handlers can be defined at the process level, or at a scope level within a process. The
diagram below shows two fault handlers - one defined at the process level and the other
defined at an inner scope level.
Procedure
1. Select the activities inside the process where the exception is expected to occur and
select Create Scope > Scope from the right-click menu.
2. Move the cursor right underneath the scope's lower border to view the icons to
create fault handlers.
The Catch block can specify the type of exception that should be caught. A list of
exceptions that can be raised in the current scope are available on the General tab of the
Catch block. Rethrow activity rethrows an exception but to catch it your second catch
block, Rethrow activity should be in a group. Any exceptions that are not already handled
by an error transition or Catch block can be handled by a Catch block that specifies the
Catch All option on the General tab.
Using the Rethrow activity, you can throw the exception currently being handled by a
Catch path. This is useful if you wish to perform some error processing, but then propagate
the error up to the next level.
For more information about the Catch and Rethrow activities, see the ActiveMatrix
BusinessWorks Bindings and Palettes Reference guide.
allows you to add more details to the description of an error code that might help in
debugging the error.
Error codes are defined per operation. If the same error code is defined in multiple
operations, you can define the error details that are specific to the operation within each
operation.
Note: You can edit error codes only in projects that were created ground up in
TIBCO Business Studio for BusinessWorks . In projects that were created using
an imported Swagger file, you can only view the error code details.
To add an error code to an operation or to edit the error code description, follow these
steps:
Procedure
1. In the Bindings tab of the process, expand the Operations tree in the left pane.
2. Click the operation for which you want to add an error code or modify an existing
error code description.
3. Click the Response Status tab in the right pane.
Result
The newly added error code is available for you to select.
Procedure
1. Click the service or reference in the Process Editor.
2. In the General tab of the Properties view, click the link for the service or reference
binding.
3. In the Components properties, click the Bindings tab.
4. Click an operation under Operations in the RestService or RestReference tree to
edit the configuration of the operation.
The Summary page for that operation opens on the right. To view the error codes,
click the Response Status for the operation.
200 OK
201 Created
202 Accepted
204 No Content
401 Unauthorized
403 Forbidden
409 Conflict
410 Gone
For more information, see Status Code and Reason Phrase at w3.org.
API Explorer
Displays a connected view of the ActiveMatrix BusinessWorks API Modeler residing in the
cloud. This view shows abstract APIs that were created in API Modeler. You can also view
the APIs residing on your local machine from the API Explorer.
When you open TIBCO Business Studio for BusinessWorks for the very first time, enter your
credentials for the registry site by opening the Settings dialog box and double-clicking on
the registry name and entering your username and password for the site in the resulting
dialog box. To open the Settings dialog, click the ( ) button on the upper right corner of
the API Explorer view and click Settings. This populates the API Explorer view with the
APIs that are available in the registry.
By default, the Settings dialog box is configured with a Cloud registry which is set to the
URL for the API Modeler.
To create a new registry:
Select a specific registry entry check box to display the registry in the API Explorer view.
For more information, see Filtering the APIs in the API Explorer view.
l
Group by API Registry
l
API Presentation
l
API Registries. Selecting a registry from this drop-down list toggles between
displaying and hiding the registry in the API Explorer.
Settings
The Settings dialog is configured by default to access the TIBCO ActiveMatrix
BusinessWorks™ site. You can configure additional registries that you might need to access
using this dialog.
URL If you selected Cloud as your registry type, you must enter the site's URL
in this text box.
Authentication When creating a new API registry, enter your user name and password for
the registry that exists on the Cloud.
API Presentation
Configure how you want your API to appear in this view. The three types of presentations
available are:
l Flat - Displays the APIs as a flat list with each API's version number displayed next to
its name in parenthesis. If there are multiple versions of the same API, each version is
shown as a separate API, hence multiple APIs with the same name but different
version numbers.
l Hierarchical - Displays every API as a hierarchy of API name label with version
number folder under it and the actual API under the version folder. If there are
multiple versions for an API, each version is listed in its own separate folder under
the API name label.
l Latest Version - If one or more APIs in your registry has multiple versions, selecting
this option shows only the latest version of the API and hides the older versions.
Other Configurations
Group by API registry - Groups the APIs according to the registry from which they were
discovered.
Show API Registry URL - Displays the URL of the APIs next to the registry name.
Group apps by sandbox - If you have multiple sandboxes that contain apps, the Cloud
Applications view displays the sandboxes and groups the apps under their respective
sandbox.
Check Supported Plug-ins - This button refreshes the supported list of plug-ins from
TIBCO ActiveMatrix BusinessWorks™. When you import an existing project that uses plug-
ins, you can validate that the plug-ins used in the project are supported in ActiveMatrix
BusinessWorks™ by clicking this button. A message is displayed indicating that the
supported plug-ins are synchronized. The read-only list of supported plug-ins shows up in
the Supported Plug-ins tab of the Properties dialog that you can access from the right-
click menu as shown below. You can verify that you have the latest list from the
synchronization timestamp at the bottom of the Properties dialog. You can also access the
Check Supported Plug-ins option by right-clicking in the API registry that you want to
connect to and selecting it from the resulting context menu.
This list represents the plug-ins that is available to your projects in ActiveMatrix
BusinessWorks during runtime. In order to use a plug-in during design time, you must have
the plug-in installed locally on your machine. If your project uses a plug-in that is not
supported in ActiveMatrix BusinessWorks, an error message is displayed while pushing the
project to the cloud.
Properties - The Properties context menu item opens a dialog which provides information
about the registry from which you selected Properties in its General tab. The Supported
Plug-ins tab provides a read-only list of plug-ins that are supported in ActiveMatrix
BusinessWorks.
Security
ActiveMatrix BusinessWorks provides basic authentication and HTTPS support on REST
services.
The Basic Authentication policy secures the HTTP layer of REST, SOAP, and pure HTTP
services by validating user name and password credentials stored in HTTP headers. User
name and password credentials can be authenticated against an XML File Authentication
provider.
Overview of Policies
Policies are categorized under the following policy types:
HTTP Security
l Basic Authentication
The Basic Authentication policy secures the HTTP layer of REST, SOAP, and pure
HTTP services by validating user name and password credentials stored in HTTP
headers. User name and password credentials can be authenticated against an XML
File Authentication provider or an LDAP Authentication provider.
l Basic Credential Mapping
The Basic Credential Mapping policy enables authentication for specified users by
automatically attaching appropriate credentials to request messages before they
reach services. You can choose to enforce Fixed or Conditional credential mapping.
SOAP Security
l WSS Provider
Configure the WSS Provider policy to enforce and validate authentication,
confidentiality, integrity, and time stamping of service-side messages.
l WSS Consumer
Configure the WSS Consumer policy to enforce and validate confidentiality, integrity,
time stamping, and credential mapping of response messages.
Procedure
1. In the Project Explorer pane, right-click the application module and select New >
Folder to launch the BusinessWorks Application Folder wizard.
The Folder wizard opens.
2. Specify the following values in the New Folder window:
l Enter or select the parent folder: Type the name of the parent folder, or
select an existing folder to be the parent folder.
l Folder name: Type Policies.
3. Click Finish to create the Policies folder.
The new folder displays in the Project Explorer pane.
4. Right-click the Policies folder, and select Special Folders > Use as Policies Folder.
Result
The folder can now store policies.
Procedure
1. In the Project Explorer, right-click the Resources Folder, and select a new shared
resource. For example, select New > XML Authentication.
2. Edit the following fields:
l Resource Folder: Name of the folder where the resource is located.
l Package: Name of the package in the module where the new resource is
added. Accept the default package, or browse to select a different package
name.
l Resource Name: Name of the resource. Accept the default name, or type a new
name.
3. Click Finish.
Result
The authentication resource displays under the Resources folder in the Project Explorer.
Associating a Policy
Enforce security on your ActiveMatrix BusinessWorks™ application, by associating a policy
with an existing activity or binding.
4. From the Select Policy window, perform one of the following actions:
l Click Create a New Policy to set up a new policy with resources. Policies you
can add to the activity are listed under Select the type of policy.
For more information about setting up policies and resources from the policy
wizard, see appropriate sections under HTTP Security and SOAP Security.
Click Finish to create the new policy.
l Select an existing policy under Matching Items and click OK.
Removing a Policy
Follow these steps to remove a policy from an activity or a binding.
3. Select the policy to remove, and click the Delete the selected policy icon.
HTTP Security
Apply security to the HTTP layer of REST, SOAP, and pure HTTP services.
1. In the Project Explorer, right-click the Policies folder and select New > Policy.
Note: The Policy Defaults menu offers a list of commonly used policy
configurations to choose from. After you select a Policy Default, a policy
with preconfigured settings and related resources is created. If resources
already exist in the module, the newly created policy automatically refers
them. However, if no resources exist, new resources with default settings
are created and referred to by the policy. To view policy configurations
and new resources that might be created, see the Default description at
the bottom of the Policy Wizard.
6. Optional. Select Create module properties for common fields to override default
properties in newly created resources with module properties. Resources with
module properties for common fields are generated after you select this option.
7. Select Finish to create the policy.
For policy configuration details, see the topic "Basic Authentication", under "Policy
Resources" in the TIBCO Cloud™ Integration Bindings and Palettes Reference guide.
First, create and configure new policy. Next, associate the policy, with an activity or a
binding in your application.
1. In the Project Explorer, right-click the Policies folder and select New > Policy.
Note: The Policy Defaults menu offers a list of commonly used policy
configurations to choose from. After you select a Policy Default, a policy
with preconfigured settings and related resources is created. If resources
already exist in the module, the newly created policy automatically refers
them. However, if no resources exist, new resources with default settings
are created and referred to by the policy. To view policy configurations
and new resources that might be created, see the Default description at
the bottom of the Policy Wizard.
l Fixed Credentials: Select this option to ensure a fixed set of credentials are
mapped for all users. A new Basic Credential Mapping policy configured for
Fixed Basic Credential Mapping and the following resource is produced in your
workspace:
o An Identity Provider resource with the default file name
BasicCredentialMapping_FixedIdentityProvider.userIdResource
l Authenticated & Anonymous Users : Select this option to enforce Basic
Credential Mapping for authenticated users and anonymous users. A new Basic
Credential Mapping policy configured for conditional basic credential mapping
and the following resources are produced in your workspace:
o An Identity Provider resource for authenticated users with the default
file name BasicCredentialMapping_AuthIdentityProvider.userIdResource
o An Identity Provider resource for anonymous users with the default file
name BasicCredentialMapping_AnonIdentityProvider.userIdResource
l Role Based Credentials: Select this option to enforce basic credential mapping
for authenticated users with roles. A new Basic Credential Mapping policy
configured for conditional basic credential mapping and the following
resources are produced in your workspace:
o An Identity Provider resource for authenticated users with the default
file name BasicCredentialMapping_AuthIdentityProvider.userIdResource
o Two separate Identity Provider resources for authenticated users with
roles. The default file names of the resources are
BasicCredentialMapping_RoleIdentityProvider.userIdResource and
BasicCredentialMapping_RoleIdentityProvider1.userIdResource
l Empty Policy (No Default) : Select this option to create a new Basic
Authentication policy with no preselected options and no resources.
5. Optional. Select Always create new shared resources to ensure new resources are
generated for the policy and referred to by the policy.
6. Optional. Select Create module properties for common fields to override default
properties in newly created resources with module properties. Resources with
module properties for common fields are generated after you select this option.
7. Select Finish to create the policy.
For instructions about enforcing a policy on an activity or binding in your application, see
Associating Policies.
Product-Specific Documentation
The following documentation for this product is available on the TIBCO ActiveMatrix
BusinessWorks™ page:
l TIBCO ActiveMatrix BusinessWorks™ Release Notes
l TIBCO ActiveMatrix BusinessWorks™ Installation
l TIBCO ActiveMatrix BusinessWorks™ Application Development
l TIBCO ActiveMatrix BusinessWorks™ Bindings and Palettes Reference
l TIBCO ActiveMatrix BusinessWorks™ Concepts
l TIBCO ActiveMatrix BusinessWorks™ Error Codes
l TIBCO ActiveMatrix BusinessWorks™ Getting Started
l TIBCO ActiveMatrix BusinessWorks™ Migration
l TIBCO ActiveMatrix BusinessWorks™ Performance Benchmarking and Tuning
l TIBCO ActiveMatrix BusinessWorks™ REST Implementation
l TIBCO ActiveMatrix BusinessWorks™ Refactoring Best Practices
l TIBCO ActiveMatrix BusinessWorks™ Samples
USE OF TIBCO SOFTWARE AND THIS DOCUMENT IS SUBJECT TO THE TERMS AND CONDITIONS OF A
LICENSE AGREEMENT FOUND IN EITHER A SEPARATELY EXECUTED SOFTWARE LICENSE AGREEMENT,
OR, IF THERE IS NO SUCH SEPARATE AGREEMENT, THE CLICKWRAP END USER LICENSE AGREEMENT
WHICH IS DISPLAYED DURING DOWNLOAD OR INSTALLATION OF THE SOFTWARE (AND WHICH IS
DUPLICATED IN THE LICENSE FILE) OR IF THERE IS NO SUCH SOFTWARE LICENSE AGREEMENT OR
CLICKWRAP END USER LICENSE AGREEMENT, THE LICENSE(S) LOCATED IN THE “LICENSE” FILE(S) OF
THE SOFTWARE. USE OF THIS DOCUMENT IS SUBJECT TO THOSE TERMS AND CONDITIONS, AND
YOUR USE HEREOF SHALL CONSTITUTE ACCEPTANCE OF AND AN AGREEMENT TO BE BOUND BY THE
SAME.
This document is subject to U.S. and international copyright laws and treaties. No part of this
document may be reproduced in any form without the written authorization of Cloud Software
Group, Inc.
TIBCO, the TIBCO logo, the TIBCO O logo, ActiveMatrix BusinessWorks, ActiveSpaces, Business Studio,
TIBCO Business Studio, TIBCO Designer, TIBCO Enterprise Administrator, Enterprise Message Service,
Rendezvous, and TIBCO Runtime Agent are either registered trademarks or trademarks of Cloud
Software Group, Inc. in the United States and/or other countries.
Java and all Java based trademarks and logos are trademarks or registered trademarks of Oracle
and/or its affiliates.
This document includes fonts that are licensed under the SIL Open Font License, Version 1.1, which is
available at: https://scripts.sil.org/OFL
Copyright (c) Paul D. Hunt, with Reserved Font Name Source Sans Pro and Source Code Pro.
All other product and company names and marks mentioned in this document are the property of
their respective owners and are mentioned for identification purposes only.
This software may be available on multiple operating systems. However, not all operating system
platforms for a specific software version are released at the same time. See the readme file for the
availability of this software version on a specific operating system platform.
THIS DOCUMENT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
This and other products of Cloud Software Group, Inc. may be covered by registered patents. Please
refer to TIBCO's Virtual Patent Marking document (https://www.tibco.com/patents) for details.