hands-on with gel scripting, xog and the rest api
TRANSCRIPT
![Page 1: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/1.jpg)
Hands-on with GEL Scripting, XOG and the REST API
![Page 2: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/2.jpg)
IntroductionsLet us introduce ourselves
![Page 3: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/3.jpg)
About Me
KRITIKA RANA2015 - TODAY
Clarity PPM Consultant
Clarity PPM Consultant with experience in implementations, support & Integrating PPM with other systems.
Active Community Member & CA Community Champion.
![Page 4: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/4.jpg)
AgendaHands-on with GEL Scripting, XOG and the REST API
![Page 5: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/5.jpg)
Session AgendaHands-on with GEL Scripting, XOG and the REST API
XOG
REST APIs
GEL Scripting
![Page 6: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/6.jpg)
XOGHands-on with GEL Scripting, XOG and the REST API
![Page 7: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/7.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 8: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/8.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 9: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/9.jpg)
• Supported Web service interface
• Available since Niku6.0 onwards
• Exchange information with other applications using• Extensible Markup Language (XML)
• Simple Object Access Protocol (SOAP)
• Web Services Description Language (WSDL)
What is XOG?Basic Information
![Page 10: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/10.jpg)
• Uses industry standard Web services
• Supported Mechanism
• Capable of moving Data as well as configuration
• Secure and rights-enabled
• Typically upward compatible, making upgrades easier
• Can be used by any programming language that support SOAP
• Extensively used within Clarity workflows to update data
Why XOG?
![Page 11: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/11.jpg)
• Client makes a SOAP call to Clarity Server
• Clarity Server processes the request
• Sends a SOAP response back to the client
How XOG WorksArchitecture diagram
1. Installed Client2. Browser XOG Client3. External Applications4. Programming
Languages
ClientClient
ResponseClarity Server
ClientClarityServer
Request
![Page 12: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/12.jpg)
Sample XOG RequestsRead Request
• Read request gives us filters to be used to get the required data.
![Page 13: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/13.jpg)
Sample XOG RequestsWrite Request
• Write request provide us with the ability to modify the data in Clarity.
![Page 14: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/14.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 15: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/15.jpg)
• Browser XOG
• Command Line XOG• Using XOG commands
• Using Properties file
• From external applications
• Programming Languages• GEL, JAVA, C# etc.
Working with XOGMultiple ways to use XOG
![Page 16: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/16.jpg)
• Navigate to the file path to enable browser XOG
[Clarity-Home]\META-INF\xog\wmd
• Take a backup of existing xog.xml file
• Amend xog.xml as in screen shot
• Flush the caches using security.caches or restart services
• Then try : http://server/niku/nu#action:xog.client
Browser XOGEnabling browser XOG
![Page 17: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/17.jpg)
• Visible at server URL http://server/niku/nu#action:xog.client
• XML field for XOG request
• XML Output is the response from Clarity Server
Browser XOGBrowser Window
![Page 18: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/18.jpg)
• Packaged within Clarity
• Navigate to “Administration” menu > “Client Downloads” • “Windows Installer” for
Windows OS
• “Cross-Platform Zip” for Windows or Linux /UNIX operating systems.
Command Line XOGDownload and Install XOG Client
![Page 19: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/19.jpg)
• Navigate to the Clarity_home\bin folder.
• Type the required XOG command.
• To see the command usage, issue the following command:• bin\xog -?
Command Line XOGUsing Command Line Parameters
![Page 20: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/20.jpg)
• Modify the test.propertiesfile.
• Location: Clarity_Home\xog-unzipped\bin
• Another option is to make your own .properties file and store it in the bin directory.
• At the XOG prompt(Clarity_home\bin) issue the following command• bin\xog -propertyfile
bin/test.properties
• View the output
Command Line XOGUsing Properties File
![Page 21: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/21.jpg)
Command Line XOGSample Properties File
![Page 22: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/22.jpg)
Other ways to use XOGExternal Applications and Programming Languages
External Applications Programming Languages
• Any application that is capable of making a soap call, can use XOG to interact with Clarity Server.
• Various programming languages can be used to form a SOAP request to use XOG.
• Examples:• JAVA• C++• C#• Visual Basic• Perl• GEL(Mostly Used)
![Page 23: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/23.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 24: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/24.jpg)
• Deletion is not possible
• Complete=“true” tags available in some cases, but these are cumbersome
• OBS Associations,
• Skill Associations,
• Group Assignments,
• Global Rights,
• Instance Rights,
• OBS Rights and Rate Matrices
LimitationsData Deletion
![Page 25: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/25.jpg)
• Limited options for granularity• To XOG-out project team, XOG-out of entire project is needed.
• Similarly, To XOG-in a task, it must be part of a project XOG write request.
LimitationsLimited Granularity
![Page 26: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/26.jpg)
• Performance of XOG requests is exponentially affected by data volumes imported or exported• Large XOG requests can take hours to process, and very large requests can time-out the XOG
session.
• Although, XOG in newer versions paginates the number of records processed, reducing the possibility of timing out, but this requires special logic in the code to handle pagination.
LimitationsPerformance
![Page 27: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/27.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 28: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/28.jpg)
• Keep XOG requests as small as possible,• Many smaller requests will usually execute faster than one large request
• XOG-read only what is necessary• Use Filters while querying data
• Remove unnecessary tags while XOG-write
• XOG is very powerful, Be absolutely sure on what you are updating in the system.
Best Practices
Make sure to specify an external ID when defining project tasks. This provides a cleaner project XOG, especially when dealing with assignments.
![Page 29: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/29.jpg)
XML OPEN GATEWAYSession Outline
Introduction01
Working with XOG02
Limitations03
Best Practices04
Hands On Exercise05
![Page 30: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/30.jpg)
Hands on Exercise
![Page 31: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/31.jpg)
Summarize XOGLet’s take a look back on XOG session
IntroductionWhat is XOG
Why XOG
How XOG works
Sample XOG Requests
![Page 32: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/32.jpg)
Summarize XOGLet’s take a look back on XOG session
Working with XOGBrowser XOG
Command Line XOG
Other ways to use XOG
![Page 33: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/33.jpg)
Summarize XOGLet’s take a look back on XOG session
LimitationsData Deletion
Limited Granularity
Performance
![Page 34: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/34.jpg)
Summarize XOGLet’s take a look back on XOG session
Best PracticesSmall requests
XOG-read only what is necessary
Remove unnecessary tags
![Page 35: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/35.jpg)
Summarize XOGLet’s take a look back on XOG session
IntroductionWhat is XOG
Why XOG
How XOG works
Sample XOG Requests
Working with XOGBrowser XOG
Command Line XOG
Other ways to use XOG
LimitationsData Deletion
Limited Granularity
Performance
Best PracticesSmall requests
XOG-read only what is necessary
Remove unnecessary tags
![Page 36: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/36.jpg)
REST APIsHands-on with GEL Scripting, XOG and the REST API
![Page 37: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/37.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 38: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/38.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 39: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/39.jpg)
• API - Application Programming Interface
• A set of functions and procedures allowing the creation of applications
• There are two types of APIs
• SOAP
• REST
What is APIGetting Started
![Page 40: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/40.jpg)
• Based on representational state transfer (REST) technology, an architectural style
• Uses HTTP requests to GET, PUT, POST and DELETE data
• REST leverages less bandwidth, more suitable for internet usage.
• Breaks down a transaction to create a series of small modules
What are Rest APIsRest APIs Explained
The Rest API documentation URL for Clarity can be found in System options → API → API Documentation URL.
![Page 41: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/41.jpg)
• Separation between the client and the server
• Visibility, reliability and scalability
• Platform Independent
• Variety of Data formats
• Superior Performance
Why Rest APIsWhat makes the Rest APIs so popular
![Page 42: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/42.jpg)
How REST API WorksArchitecture diagram
ClientJSON/XML Request
MethodsDelete, put, get, post, patch, http methods
Application ServerResponse
• Client makes a REST call (JSON/XML) to Server.
• Clarity Server processes the request.
• Sends a response back to the client.
• In Clarity PPM, the responses are in JSON format.
![Page 43: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/43.jpg)
Sample REST RequestsGET Request
• GET request is the read request for REST
![Page 44: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/44.jpg)
Sample REST RequestsPATCH Request
• PUT and PATCH requests allow us to modify data in Clarity.
![Page 45: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/45.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 46: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/46.jpg)
• Rest API URL is : https://lab1.pemari.com/niku/rest/describe/index.html
Working with Rest APISDemonstrate Rest APIs
![Page 47: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/47.jpg)
• Authenticate & Connect
• Set headers
• Form and send the request
• Process the Output
Working with Rest APISSteps
![Page 48: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/48.jpg)
• Sample of Authentication• The username & password are the same username and password used for Clarity Login.
• URL for the request can be obtained from the Clarity Rest API Documentation.
Authenticate the user to send a request
STEP ONE Authenticate & Connect
![Page 49: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/49.jpg)
• We can set in the headers the type of request and response
Setting the type of request
STEP TWO Set Headers
![Page 50: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/50.jpg)
• The REST request in JSON format.
Form the Request
STEP THREE Form and Send the Request
![Page 51: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/51.jpg)
• The REST request in JSON format.
Send the Request
STEP THREE Form and Send the Request
![Page 52: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/52.jpg)
• The Response window shows the output for the request sent.
Checking the output for further processing
STEP FOUR Process the Output
![Page 53: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/53.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 54: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/54.jpg)
• Stateless APIs increase the latency in request processing times and bandwidth usage• The reason is that the client is sending all messages with redundant information.
• Limited options for processing the requests• Rest APIs use the HTTP methods for processing data.• Typically, the protocol has a limited number of methods to operate upon the data.
• HTTP combines application-level and transport-level status codes• e.g., 304 Not Modified and 400 Bad Request are the HTTP codes• 407 Proxy Authentication Required and 502 Bad Gateway are transport level
status codes
• Broadcom has not made the REST APIs available yet for public consumption.
Limitations
![Page 55: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/55.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 56: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/56.jpg)
• Keep requests clean by using Nouns• For an easy understanding use this structure for every resource
• Use HATEOAS• Hypermedia As The Engine Of Application State is a principle that hypertext links should be used
to create a better navigation through the API.
Best PracticesClean Request
REST APIs is planned to be available for customer use from the next release 15.6.1.
![Page 57: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/57.jpg)
• Handle errors with HTTP error codes• 200 – OK – Everything is working
• 201 – OK – New resource has been created
• 204 – OK – The resource was successfully deleted
• 304 – Not Modified – The client can use cached data
• 400 – Bad Request – The request was invalid or cannot be served.
• 401 – Unauthorized – The request requires an user authentication
• 403 – Forbidden – The server understood the request, but is refusing it or the access is not allowed.
• 404 – Not found – There is no resource behind the URI.
• 422 – Not Processable Entity – Should be used if the server cannot process the entity
Best PracticesError Handling
![Page 58: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/58.jpg)
• Allow overriding HTTP method• Some proxies support only POST and GET methods. To support a RESTful API with these
limitations, the API needs a way to override the HTTP method.
• Use the custom HTTP Header X-HTTP-Method-Override to override the POST Method.
Best PracticesOverriding Methods
![Page 59: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/59.jpg)
REST APIsSession Outline
Introduction01
Working with REST APIs02
Limitations03
Best Practices04
Hands On Exercise05
01
02
03
04
05
![Page 60: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/60.jpg)
Hands on ExercisePractice makes a man perfect
![Page 61: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/61.jpg)
Summarize RESTLet’s take a look back on Rest APIs session
IntroductionWhat is API
What are Rest APIs
Why Rest APIs
How Rest API Works
Sample Rest Requests
![Page 62: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/62.jpg)
Summarize RESTLet’s take a look back on Rest APIs session
Working with Rest APIs
Authenticate & Connect
Set headers
Form and send the request
Process the Output
![Page 63: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/63.jpg)
Summarize RESTLet’s take a look back on Rest APIs session
LimitationsLatency
Very Few Verbs
Combined Codes are confusing
Unavailability for Public Consumption
![Page 64: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/64.jpg)
Summarize RESTLet’s take a look back on Rest APIs session
Best PracticesClean Request
Error Handling
Overriding Methods
![Page 65: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/65.jpg)
Summarize RESTLet’s take a look back on Rest APIs session
IntroductionWhat is API
What are Rest APIs
Why Rest APIs
How Rest API Works
Sample Rest Requests
Working with Rest APIs
Authenticate & Connect
Set headers
Form and send the request
Process the Output
LimitationsLatency
Very Few Verbs
Combined Codes are confusing
Unavailability for Public Consumption
Best PracticesClean Request
Error Handling
Overriding Methods
![Page 66: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/66.jpg)
GEL ScriptingHands-on with GEL Scripting, XOG and the REST API
![Page 67: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/67.jpg)
GEL ScriptingSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 68: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/68.jpg)
GEL ScriptingSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 69: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/69.jpg)
• Generic Execution Language
• Can be used to turn XML into executable code.
• It is based on Jelly, a jakarta.apache.org Commons project.
• extended and embedded into Clarity PPM
• GEL run-time is packaged with XOG in the XOG client
• Additional references and information can be found in the CA Documentation (Developer Guide) – https://docops.ca.com/ca-ppm/15-6/en
• At the Apache Jelly website at - http://jakarta.apache.org/commons/jelly/index.html
What is GELGetting Started
![Page 70: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/70.jpg)
• GEL can be used in following areas • Web services
• File system
• JDBC
• FTP
Capabilities of GEL
![Page 71: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/71.jpg)
GEL ScriptingSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 72: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/72.jpg)
• A typical GEL script contains• Header
• Namespaces
• Body/Code
• Tags
• Footer
GEL Script Structure
![Page 73: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/73.jpg)
• Header contains the namespaces and the libraries to be used in the script.
GEL Script StructureHeader
![Page 74: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/74.jpg)
• Inclusion of the namespaces for any library gives GEL the ability to perform operations defined in that library.
• Many libraries are contained as Clarity OOTB libraries.• Core• GELTagLibrary
GEL Script StructureNamespaces
![Page 75: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/75.jpg)
• Body includes the queries, XMLs, tags for processing etc.
• Includes the logic to perform certain action using GEL script
GEL Script StructureBody/Code
![Page 76: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/76.jpg)
• A GEL script is an executable XML file that is built from qualified elements bound to Java code called tags.
• Every opening tag contains its corresponding closing tag except for singular tags.
GEL Script StructureTags
Regular Tag
Singular Tag
![Page 77: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/77.jpg)
• Footer marks the end of the GEL Script XML.
GEL Script StructureFooter
An entire script always resides within the GEL script tag.
![Page 78: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/78.jpg)
• Tags can be divided into following categories:• Variables/parameters
• Loops
• Conditionals
GEL Script StructureCommon & Workflow Control Tags
Information contained within GEL tags is case sensitive
![Page 79: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/79.jpg)
• <gel:parameter>• Allows values to be passed
into a GEL script from a Clarity process.
• Inside the GEL script, a parameter can be referred as any other variable using the ${variablename} syntax.
GEL Script StructureVariables/Parameters
The optional attribute secure="true" causes Clarity to hide the actual value in the user interface with asterisks (*).
![Page 80: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/80.jpg)
• <core:set>• Used to set basic java
variables.
• ones those do not need to be extracted from an XML document.
• Refer to the variable using the ${variablename} syntax.
GEL Script StructureVariables/Parameters
![Page 81: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/81.jpg)
• <gel:set>• Used when it is necessary to extract the value of the variable from an XML document. • This tag differs from the <core:set> tag in that it takes a select attribute which in turn
requires an Xpath statement. • If you are unfamiliar with XPath, think of it as a hierarchy mapping of the XML
document.
GEL Script StructureVariables/Parameters
![Page 82: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/82.jpg)
• <gel:persist>• This tag allows you to set
variables with a scope that extends beyond the current script.
• There are three scopes:• Process
• Instance
• Global
GEL Script StructureVariables/Parameters
![Page 83: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/83.jpg)
• <gel:parse>• To create an XML document in memory.
• Used to generate an entire XML document, or specific nodes.
GEL Script StructureVariables/Parameters
![Page 84: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/84.jpg)
• GEL scripts associated with processes have the following parameters available to them:
• Object Instance ID • If no object is associated with the process, the ID is -1.
• Else the ${gel_objectInstanceId} parameter contains the object instance ID.
• Process ID• ${gel_processId} is the process identifier; all instances of a process share this
identifier.
• Process instance ID• ${gel_processInstanceId} is the process instance identifier; all instances have a
unique value.
GEL Script StructureBuilt-In Parameters
![Page 85: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/85.jpg)
GEL Script StructureLoop Tags
<core:forEach> <gel:forEach>
1. The core for-Each loop is used as a simple programming loop whereas the gel-for-each loop is a special loop which is used to loop through tags inside a XML document.
2. In gel-For-each loop the select attribute contains the XPATH string as an input, which in-turn helps to parse the XML document.
![Page 86: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/86.jpg)
• <core:while>• Similar to the while loop in other programming languages like JAVA, C, C++
GEL Script StructureLoop Tags
![Page 87: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/87.jpg)
• <core:if>• Similar to the if loop in
other programming languages like JAVA, C, C++
• <core:choose>• Similar to the if-else loop
in other programming languages like JAVA, C, C++
GEL Script StructureConditional Tags
![Page 88: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/88.jpg)
• <core:switch>• Similar to the switch statement in other programming languages like JAVA, C, C++
GEL Script StructureConditional Tags
![Page 89: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/89.jpg)
GEL ScriptingSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 90: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/90.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 91: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/91.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 92: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/92.jpg)
• There are two ways to connect to the database• <gel:setDataSource>
• <sql:setDataSource/>
Various OperationsConnect to DB
![Page 93: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/93.jpg)
• <gel:setDataSource>• Uses the connection
properties from Clarity PPM’s properties (set in the CSA)
• Var attribute is optional. • If not specified and only one
datasource is set, then all SQL calls will use that
• If a datasource variable is set, it is required to reference it in subsequent tags.
Database OperationsConnect to DB
![Page 94: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/94.jpg)
• <sql:setDataSource>• To use any external
connection, by creating an external connection entry in the NSA
• Value of dbID is name of the connection in NSA.
• To use the external database connection; without having an entry in NSA
Database OperationsConnect to DB
![Page 95: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/95.jpg)
Database OperationsSingle Result Query
• Single Result Query• Given syntax can be
used to extract data from a query which returns single row.
![Page 96: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/96.jpg)
Database OperationsMultiple Result Queries
• Multiple Result Query• Following ways can be used to extract data from multiple result queries
Using Row by IndexUsing Column labels
![Page 97: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/97.jpg)
Database OperationsUpdate Via SQL
• Updates should be done using the transaction tag.
• This ensures that they follow the all or none update.
![Page 98: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/98.jpg)
Database OperationsBinding Variables
• Binding variables help in: • code reusability• prevention of SQL
injection
![Page 99: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/99.jpg)
• Try not to set any unnecessary variables.
• Do not insert using SQL.
• Do not update OOTB tables.
• SQL updates are best suited for Custom objects and custom attributes.
• Do update the 'last_updated_date' and 'last_updated_by' columns when updating audited attributes.
• CDATA tag should be used in all queries to prevent the errors due to (‘<‘, ‘>’) characters in the query.
Database OperationsSQL DOs and DON’Ts
![Page 100: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/100.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 101: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/101.jpg)
• <gel:log> tag is used to add logs in the process and to create the log data in the log tables.
• Logs prove to be useful in debugging and troubleshooting
• Different levels of logging are:• Info
• Warn
• Error
Logging
![Page 102: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/102.jpg)
• In recent Clarity releases, an additional log setting has been introduced to control logging, which can be found at:
<servername>/niku/nu#action:security.loggerConfig
• Its default value after upgrade is set to ‘Error’.
Logging
![Page 103: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/103.jpg)
• Info
• Warning
• Error
LoggingDifferent Levels of Logging
![Page 104: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/104.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 105: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/105.jpg)
• Core library defines the JAVA methods that can be used inside GEL.
• Not all the JAVA methods are available inside the library.
JAVA Operations
![Page 106: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/106.jpg)
• <core:new>• It is used to instantiate Java classes
JAVA OperationsBasic Methods
![Page 107: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/107.jpg)
• <core:invoke>• It is used to call a method on an instantiated object
JAVA OperationsBasic Methods
![Page 108: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/108.jpg)
• <core:expr>• It is used to call a method on an instantiated Java object where the access to the
result of the operation is not required.
JAVA OperationsBasic Methods
![Page 109: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/109.jpg)
• <core:invokeStatic>• It is used to call a static method of a Java class
JAVA OperationsBasic Methods
![Page 110: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/110.jpg)
• To fill the gaps in functionality which cannot be provided by GELTagLibrary• E.g., Moving, copying, and deleting files or directories.
• Making file operations more flexible
• To perform any action which cannot be done using GEL libraries
• Better exception handling (covered in later slides)
JAVA OperationsUsage of JAVA in GEL
![Page 111: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/111.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 112: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/112.jpg)
• There are various operations that GEL can perform for handling files• GEL can open a file• read the file • parse out all the nodes and attributes • write to the file• It can also perform FTP operations on files.
• Following are not allowed• It cannot create a directory • Move files around • Delete files
File OperationsIntroduction to File Operations
JAVA operations can overcome the exceptions for file handling.
![Page 113: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/113.jpg)
• GEL Script code block to read a file
File OperationsRead File
![Page 114: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/114.jpg)
• GEL Script code block to write to a file
File OperationsRead File
![Page 115: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/115.jpg)
• FTPTagLibrary can be used to read or write files on FTP server
• Following tags are available• ftp:open
• ftp:put
• ftp:get
File OperationsFTP
![Page 116: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/116.jpg)
File OperationsFTP
• Following are the sample FTP read & write code blocks
Write OperationRead Operation
![Page 117: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/117.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 118: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/118.jpg)
• To send dynamic emails based on specific events.
• There are two tags for email:• <gel:email> : to send text/html emails
• <email:email> : to send text emails with attachments
EmailsSending emails
Make Sure to choose the right type as per your requirement of content in the email being sent.
![Page 119: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/119.jpg)
File OperationsFTP
• Following are the sample <gel:email> and <email:email> code blocks
<email:email><gel:email>
![Page 120: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/120.jpg)
GEL ScriptingVarious Operations
Database Operations
Logging
JAVA Operations
File Operations
Emails
SOAP & REST in GEL
![Page 121: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/121.jpg)
• SOAP & REST calls can be used to read and write the data in Clarity PPM.
• SOAP calls are generally done by XOG
• REST calls are performed by the REST APIs given by Clarity PPM
SOAP & REST in GELSOAP & Rest requests in GEL
![Page 122: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/122.jpg)
• In order to use a SOAP call via GEL, we need to import respective namespaces.
SOAP in GELNamespaces required for SOAP Call
![Page 123: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/123.jpg)
• Basic soap structure:• Envelope: (Mandatory) - defines the start and the end of the message.
• Header: (Optional) - Contains any optional attributes of the message
• Body: (Mandatory) - Contains the XML data comprising the message being sent.
SOAP in GELBasic SOAP structure
SOAP Message : XML Document
SOAP Envelope
SOAP Body
![Page 124: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/124.jpg)
• Steps:• Login & Authenticate
• Form & Send the Request
• Process the output
• Log out
SOAP in GELSteps
SOAP Message : XML Document
SOAP Envelope
SOAP Body
![Page 125: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/125.jpg)
• Code block for obtaining Session ID for authentication
SOAP in GELLogin & Authenticate using Session ID
SOAP Message : XML Document
SOAP Envelope
SOAP Body
![Page 126: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/126.jpg)
• Code block for forming the request
SOAP in GELForm the request
SOAP Message : XML Document
SOAP Envelope
SOAP Body
![Page 127: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/127.jpg)
• Code block for processing the output
SOAP in GELProcessing the Response
SOAP Message : XML Document
SOAP Envelope
![Page 128: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/128.jpg)
• Code block logging out
SOAP in GELLogging out
SOAP Message : XML Document
SOAP Envelope
![Page 129: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/129.jpg)
• Rest calls can be made using the GEL scripts as well.
• The steps are as following:• Authenticate
• Connect
• Set headers
• Form the request
• Send the request
• Process the Output
REST in GELUsing REST in GEL
SOAP Envelope
![Page 130: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/130.jpg)
• GEL Script Code block to Authenticate
REST in GELAuthenticate
SOAP Message : XML Document
SOAP Envelope
![Page 131: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/131.jpg)
• GEL Script Code block to connect
REST in GELConnect
SOAP Message : XML Document
SOAP Envelope
![Page 132: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/132.jpg)
• GEL Script Code block to Set Headers
REST in GELSet Headers
SOAP Message : XML Document
SOAP Envelope
![Page 133: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/133.jpg)
• Sample Request for Rest call
REST in GELSample Request
SOAP Message : XML Document
SOAP Envelope
![Page 134: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/134.jpg)
• Code block for sending the request
REST in GELSend the request
SOAP Message : XML Document
SOAP Envelope
![Page 135: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/135.jpg)
• Code block for processing the response
REST in GELProcess the output
SOAP Message : XML Document
SOAP Envelope
![Page 136: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/136.jpg)
REST APIsSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 137: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/137.jpg)
• XML is at heart of GEL scripting.
• Following are the possible ways to manipulate an XML in Memory.• Create the complete XML
• Read, Update & Delete a node
• Read & Update an attribute
• Insert smaller XML into Existing XML
• Save & Print the XML
XML ManipulationDifferent ways of Manipulating XML
![Page 138: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/138.jpg)
• Read, Update & Delete a node
• <gel:set> tag is used for xml operations
• Value of a node from XML can be saved in a variable as below:
• Updating Value of a node
XML ManipulationManipulating the Nodes
![Page 139: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/139.jpg)
• Delete a Node
XML ManipulationManipulating the Nodes
![Page 140: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/140.jpg)
• Read & Update an attribute
• <gel:set> tag is used for xml operations
• Value of an attribute can be saved in a variable as below:
• Updating Value of an attribute
XML ManipulationManipulating the Attributes
![Page 141: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/141.jpg)
• Insert smaller XML into Existing XML
XML ManipulationAdd XMLs to make a big one
![Page 142: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/142.jpg)
• Printing the XML• <gel:expr> tag is used for printing the xml by converting that into string.
• <gel:out> tag is used to print the xml in bg-ca logs
XML ManipulationPrint XML
![Page 143: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/143.jpg)
• Saving the XML• <gel:serialize> tag is used to save the XML document
XML ManipulationSave XML
![Page 144: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/144.jpg)
REST APIsSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 145: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/145.jpg)
• <core:catch> tag is used (Replica of try-catch in JAVA)
• Errors/exceptions can occur while doing XOG, SQL query or file related operations.
• Example of SQL exception handling
Exception/Error HandlingCatch & Rectify the Exceptions/Errors
![Page 146: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/146.jpg)
• Java tags also support error handling on that specific tag
Exception/Error HandlingCatch & Rectify the Exceptions/Errors
1. The exception handling of GEL is only meant for handling programming exceptions but if there is an error in your script which is a parsing error then that will not be caught by Catch tag. 2. For example if you use symbols like ‘>’ ‘<’ or ‘&’ in your script which will cause parsing error , then these are these are not caught by catch tag.
![Page 147: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/147.jpg)
REST APIsSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 148: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/148.jpg)
• JAVA method access is restricted by Core library• GEL is dependent on core library.
• If any JAVA method is not included in the core library, that is not accessible using GEL script.
• Casting a data type to another is not supported in Core library• Thus, making it impossible to cast data types
LimitationsLimited Functionality
![Page 149: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/149.jpg)
• GEL script executes code sequentially.• The drawback is loss of modularity.
• Customization is not possible• The code cannot incorporate any custom defined methods, classes etc.
LimitationsSequential Execution and Absence of Customization
This drawback is well handled by the structure of Processes in Clarity PPM
![Page 150: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/150.jpg)
REST APIsSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 151: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/151.jpg)
• GEL is case sensitive. This statement includes variable names.
• All GEL scripts are contained in XML, therefore all XML rules apply to structure, tags, and special characters.
• Use BETWEEN instead of less than and greater than
Best PracticesSyntax Related Practices
![Page 152: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/152.jpg)
• Always make sure to use the proper name spaces and aliases
• Properly indent and format your script, which makes it readable
Best PracticesMake the code Easy to Understand
![Page 153: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/153.jpg)
• Avoid sending emails in non-prod environments • by either disabling mail server or
• masking emails
• Use caution when dealing with large XML files.• GEL XML tags typically load the entire XML document into memory.
Best PracticesAvoid Impacting Business
![Page 154: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/154.jpg)
• When possible, pull server info from properties file on server.
• Dynamic values should be pulled from the gel parameters.
• Make sure you write all your code inside a catch block.
• Put enough comments inside your script, so that the code is readable.
• Avoid excessive logging as it can slow the performance.
• Try to keep the hardcoding as minimum as possible.
Best PracticesBest coding practices
![Page 155: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/155.jpg)
REST APIsSession Outline
GEL Script Structure
Introduction01
02
Operations03
XML Manipulation04
Exception Handling05
Limitations06
Best Practices07
Hands On Exercise08 01
02
03
04
05
06
07
08
![Page 156: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/156.jpg)
Hands on ExercisePractice makes a man perfect
![Page 157: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/157.jpg)
Summarize GEL Scripting
IntroductionWhat is GELCapabilities of GEL
![Page 158: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/158.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
![Page 159: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/159.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
• Operations• DB Operations• Logging• JAVA Operations• File Operations• Emails• SOAP & REST in
GEL
![Page 160: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/160.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
• Operations• DB Operations• Logging• JAVA Operations• File Operations• Emails• SOAP & REST in
GEL
• XML Manipulation
![Page 161: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/161.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
• Operations• DB Operations• Logging• JAVA Operations• File Operations• Emails• SOAP & REST in
GEL
• XML Manipulation
Exception Handling
![Page 162: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/162.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
• Operations• DB Operations• Logging• JAVA Operations• File Operations• Emails• SOAP & REST in
GEL
• XML Manipulation
Exception Handling
Limitations
![Page 163: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/163.jpg)
Summarize GEL Scripting
• IntroductionWhat is GELCapabilities of GEL
• GEL Script Structure
• Most Common & WorkFlow Tags
• Operations• DB Operations• Logging• JAVA Operations• File Operations• Emails• SOAP & REST in
GEL
• XML Manipulation
Exception Handling
Limitations
Best Practices
![Page 164: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/164.jpg)
Questions?Hands-on with GEL Scripting, XOG and the REST API
![Page 165: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/165.jpg)
Thank you for attendingHands-on with GEL Scripting, XOG and the REST API
Phone+44 844 736 2500
Websitewww.pemari.com
Let us know how we can improve!
Don’t forget to fill out the feedback forms!
![Page 166: Hands-on with GEL Scripting, XOG and the REST API](https://reader035.vdocuments.us/reader035/viewer/2022062301/62a4da1b8927a5276e133ea3/html5/thumbnails/166.jpg)
• https://supportcontent.ca.com/
• http://www.gelscripting.com
• https://www.restapitutorial.com/
ReferencesHands-on with GEL Scripting, XOG and the REST API