DevEX - reference for building teams, processes, and platforms
Collaborate 18 presentation by Dayalan Punniyamoorthy
1. Introduction to Oracle PBC REST API With Groovy
Scripting
Dayalan Punniyamoorthy
31st May 2018
2. 22
WHO WE ARE
Providing exceptional quality and value, while imparting a customer-focused approach.
Vertical Edge Consulting Group is your trusted partner for business consulting and technology solutions, ensuring reliability and scalability for your growing company.
2010
Year Founded
35
Employees
3
National Practices
2
Locations
1
Inspired Vision for Success
Our Company
Exceptional values, passion for
success, and dedicated commitment
drive our success.
Oracle Platinum Partner
Consultants average 12-15 years of
industry and Big 4 consulting experience
Technology focus on EPM, BI and Cloud
solutions, integrating with leading Tier 1
and 2 ERP systems
IT Strategy & Advisory Practice with CIO
and Fortune 500 leadership experience
In-depth understanding of Cloud
Technology & Solutions, driving today’s
strategic technology decisions
Strong dedication to customer success
and uncompromising values
3. 33
OUR SERVICES
Technology
Enterprise Performance
Management (EPM)
- Oracle Hyperion Financial Management
- Oracle Hyperion Planning
- Oracle Hyperion Planning & Budgeting
Cloud Service (PBCS)
- Oracle Hyperion Essbase
- Oracle Hyperion FDM/FDMEE
- Oracle Hyperion DRM
- Oracle Hyperion Reporting & Analysis
- Oracle Hyperion SmartView
Business Intelligence (BI)
- Oracle Business Intelligence Enterprise
Edition (OBIEE)
- Oracle Business Intelligence Foundation
Suite (BIFS)
- Oracle Business Intelligence Cloud Service
(BICS)
- Oracle Business Intelligence for
Applications (OBIA)
Advisory Services
- CIO Advisory
- IT Strategy
- Cloud Advisory
- Project Management Oversight (PMO)
- Enterprise Resource Planning Advisory
(ERP)
- Enterprise Architecture
Trusted Advisory
Technology Expertise
4. 44
ORACLE EPM EXPERIENCE
Oracle® Certified Platinum Partner
One of the nation’s leading Oracle EPM strategy & implementation firms
Successfully implemented Oracle EPM solutions for dozens of clients in the US, and abroad
Oracle EPM professional average 15 years of hands-on experience
Focused on Fortune 500 companies & large scale, enterprise-wide implementations
Deep expertise from process design to technology implementation
Proven functional and industry templates to leverage best practices
Hyperion Essbase, Planning and HFM certified professionals
Enterprise Planning
& Forecasting
•Planning, Budget & Forecasting
•Workforce & Capital Expenditure
Planning
•Planning System Design &
Implementation
•Balanced Scorecard
•Hyperion Planning™, Workforce
Planning™, Capital Expense
Planning™
Financial
Consolidation
•Financial Close Process Design
•Consolidation System Design &
Implementation
•Financial Reporting & Analysis
•Financial Management™, Financial
Data Quality Management™
Reporting &
Analytics
•Management Dashboards
•Profitability Analysis
•Human Resource Analysis
•Sales & Procurement Analytics
•Essbase™ Solutions, SmartView™,
and reporting tools
Business
Intelligence
•Data Management & Integration
•Content Management
•BI Enterprise Edition™, Data
Relationship Management™ and
integration tools
5. Agenda for Today!
• Overview of REST API and Groovy Program
REST API for Oracle PBC/EPC
A Simple REST API request & response
Authentication into Oracle PBC/EPC
REST API Methods
REST API Resource View
• Lifecycle Management
• Planning
• Interop
• Data Management
• Introduction to Groovy
• Managing & administering Hyperion Application using Groovy program to invoke the REST API related to
Oracle PBC/EPC
• Managing & administering Migration using Groovy program to invoke the REST API related to Oracle
PBC/EPC Migration
• Managing & administering Data Management jobs using Groovy program to invoke the REST API related to
Oracle PBC/EPC Data Management
• Demo
6. Overview of REST API
REpresentational State Transfer (REST)
An architecture for client-server web communication
Application Programming lnterface (API)
Lets products and services communicate with each other
REST describes any simple interface that transmits data over a standardized interface (such as HTTP).
REST provides a set of design rules for creating stateless services that are viewed as resources can be
identified by their unique Uniform Resource Identifier (URIs).
7. REST API for Oracle PBC/EPBC
You can integrate EPM Cloud environments using:
oA set of REST APIs
oThe EPM Automate Utility, a command line tool that is implemented on top of the
REST APIs
Audience
The REST API for Oracle PBC/EPC is intended primarily as a tool for
infrastructure consultants and administrators
Prerequisites
o Access as a service administrator to the cloud service
o Technical and functional knowledge to understand and execute the EPM
Automate & REST APIs, and to administer the product.
o Knowledge of Java, cURL, Groovy, and REST programming.
8. A Simple REST API request & response
https://vecghypdemo-
test.PBCS.us2.oraclecloud.com/HyperionPlanning/rest/v3/ap
plications
Request
JSON
Response
9. Authentication into Oracle PBC/EPBC
These REST APIs support basic authentication (name and password) in the
format identitydomain.username for this release.
Every HTTP request to EPM Cloud should supply HTTP Basic Authentication
credentials through the Authorization header.
10. REST API Methods
You can create, view, update, or delete Oracle Enterprise Performance Management
Cloud resources using standard HTTP method requests
• GET Retrieve information about the REST API resource (e.g.: Retrieve Job Status Details)
• POST Create a REST API resource (e.g.: Execute a Job)
• PUT Update a REST API resource (e.g.: Setting Daily maintenance Window Time)
• DELETE Delete a REST API resource or related component (e.g.: Delete Files)
11. REST API Resource View – Oracle PBC (Some of them not all )
REST Resource -/interop/rest/
REST API version {api_version} for Lifecycle
Management is 11.1.2.3.600.
Request More Information
/interop/rest/ GET Get REST API Versions for Migration
/interop/rest/{api_version} GET Get Information about a Specific Version
of Migration
/interop/rest/{api_version}/applicationsnapshots/
{SnapshotName}/contents
GET Download
/interop/rest/{api_version}/Applicationsnapshots GET List Files
/interop/rest/{api_version}/applicationsnapshots/
{nSnapshotName}
DELETE Delete Files
/interop/rest/{api_version}/services GET Get Information About All Services
12. REST API Resource View – Oracle PBC (Some of them not all )
REST Resource -/HyperionPlanning/rest/
Current REST API {api_version} version for Planning is
v3.
Request More Information
/HyperionPlanning/rest/ GET Getting REST API Versions for Planning
/HyperionPlanning/rest/{api_version} GET Get Information about a Specific REST
API Version for Planning
/HyperionPlanning/rest/{api_version}/applications/{app}/jobd
efinitions
GET Get Job Definitions
/HyperionPlanning/rest/{api_version}/applications/{app}/dime
nsions/{dimname}/members
POST Add Member
/HyperionPlanning/rest/{api_version}/applications/{applicatio
n}/subvar
GET Get All Substitution Variables Defined for
the
Application
/HyperionPlanning/rest/{api_version}/applications/{applicatio
n}/plantypes/{plantype}/subvar
GET Get Substitution Variables Defined at the
Plan
Type Level
13. REST Resource -//interop/rest/
REST API version {api_version} is v1 (interop)
REST API version {api_version} is V1 (aif)
Request More Information
/interop/rest/{api_version}/reports?
q={type:userauditreport,fileName:useraudit.csv,since=2015-
12-10,until=2016-06-10}/interop/rest/{api_version}
POST User Audit Report
/interop/rest/{api_version}/reports?q={type:provisionreport,fil
eName:ProvRep.csv} POST
User Provisioning Report
/interop/rest/{api_version}/dailymaintenance?StartTime={N}
PUT
Setting the Daily Maintenance Window
Time
/aif/rest/{api_version}
/aif/rest/{api_version}/jobs
GET
GET
Get Information about a Specific API
Version for Data Management APIs
Running Data Rules
REST API Resource View – Oracle PBC (Some of them not all )
14. What is Groovy?
Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static
compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a
concise, familiar and easy to learn syntax.
It integrates smoothly with any Java program, and immediately delivers to your application powerful features,
including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-
programming and functional programming.
Install groovy from http://groovy-lang.org/download.html
Default install location "C:Program Files (x86)GroovyGroovy-2.4.7bin“
15. A Simple Groovy Program to access Oracle PBC/EPC
REST API//Importing JSON package for JSONObject & JsonSlurper
import org.json.JSONObject
import groovy.json.JsonSlurper
//Modify as needed before executing
apiVersion="v3"
appName="EPBCS"
//Reading the Values from the Properties File
Properties props = new Properties()
File propsFile = new File('C:/Users/DPunniamoorthy/Documents/RESTAPI-
Webinar/Groovy/PBCSDetails.properties')
props.load(propsFile.newDataInputStream())
serverUrl=props.getProperty('serverUrl')
domain=props.getProperty('domain')
username=props.getProperty('username')
password=props.getProperty('password')
// Setup User Credentials and Authorization Header
userCredentials = domain + "." + username + ":" + password
basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes())
16. // Setup User Credentials and Authorization Header
userCredentials = domain + "." + username + ":" + password
basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes())
println ('*****Starting of REST API Program******');
// Fetch Response Function
def fetchResponse(is) {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"n");
}
br.close();
return sb.toString();
}
17. // Execute Request Function for Authentication & Authorization
def executeRequest(url, requestType, payload, contentType) {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true); connection.setUseCaches(false);
connection.setDoInput(true); connection.setRequestMethod(requestType);
connection.setRequestProperty("Content-Type", contentType);
connection.setRequestProperty("Authorization", basicAuth);
if (payload != null) { OutputStreamWriter writer = new
OutputStreamWriter(connection.getOutputStream()); writer.write(payload);
writer.flush();
} int statusCode try { statusCode = connection.responseCode;
} catch (all) { println "Error connecting to the URL"
System.exit(0); } def response if (statusCode == 200 || statusCode == 201) {
if (connection.getContentType() != null &&
!connection.getContentType().startsWith("application/json")) {
println "Error occurred in server" InputStream is = connection.getInputStream();
if (is != null) response = fetchResponse(is) } else { println "Error
occurred while executing request" println "Response error code : " + statusCode
InputStream is = connection.getErrorStream(); if (is != null &&
connection.getContentType() != null && connection.getContentType().startsWith("application/json"))
println fetchJobStatusFromResponse(fetchResponse(is))
} connection.disconnect(); return response;}
18. //Function to get the Application Details
def getApplications() {
def url;try {url = new URL(serverUrl + "/HyperionPlanning/rest/" + apiVersion + "/applications/")
} catch (MalformedURLException e) {
println "Malformed URL. Please pass valid URL“ System.exit(0);
}response = executeRequest(url, "GET", null, "application/x-www-form-urlencoded");
def object = new JsonSlurper().parseText(response)
def status = object.status
def items = object.items
println "Application Details:"
println "******************"
items.each{
println "Application Name : " +items. name
println "Application Supports decision packages : " + items.dpEnabled
println "Is it Unicode : " + items.unicode
println "Applciation Storage : " + items.appStorage
println "Product Type : " + items.type
if (object.details != null)
println "Error details: " + object.details
} }
getApplications();
println('*********End of REST API Program******');
Our 3 National practices are EPM (all things hyperion)
BI (OBIEE, BICS, OBIA)
Advisory services
Oracle Platinum Partner
Experience and knowledge across all EPM platforms
Consultants hold Oracle certifications on the products they support
Flat learning curve
Concise, readable and expressive syntax, easy to learn for Java developers
Smooth Java integration
Seamlessly and transparently integrates and interoperates with Java and any third-party libraries
Vibrant and rich ecosystem
Web development, reactive applications, concurrency / asynchronous / parallelism library, test frameworks, build tools, code analysis, GUI building
Powerful features
Closures, builders, runtime & compile-time meta-programming, functional programming, type inference, and static compilation
Domain-Specific Languages
Flexible & malleable syntax, advanced integration & customization mechanisms, to integrate readable business rules in your applications
Scripting and testing glue
Great for writing concise and maintainable tests, and for all your build and automation tasks