SlideShare uma empresa Scribd logo
1 de 33
APEX connects Jira
Oliver Lemm
APEX World
07.03.2016
Facts & Figures
Independent Technology House
with Cross-Industry Expertise
Headquarter
Ratingen
(North Rhine – Westphalia)
240
Employees
Founded
1994
Branches
Dortmund, Cologne,
Frankfurt
Top Company
for Trainees &
Students
Privately-
Owned
Corporation
Oracle
Platinum
Partner
24 Mio. Euro
Revenue
2
about me
 Oliver Lemm
 since february 2007 working for MT AG in Ratingen
 Junior Consultant > Consultant > Senior Consultant
> Competence Center Leader APEX & Service Center Leader APEX
 Diploma applied computer science at the university of Duisburg-Essen
 Projectleader, IT-Architect and Developer
 working with Oracle Databases and Oracle Application Express since 2007
 Blog http://oliverlemm.blogspot.de
 Twitter https://twitter.com/OliverLemm
3
APEX Connect
26th – 28th April 2016 in Berlin
Get your early-bird ticket now!
APEX.DOAG.ORG#APEXCONN16
Agenda
1. Motivation
2. Jira
3. Webservices
4. JSON
5. Livedemo
5
Motivation
„Working with one tool to handle the developing process,
controlling and all other processes in one project“
„Calculating key figures based on Jira values which are not delivered by Jira itself.“
„Using integrated Jira Plugins and adding additional
functionality by using APEX as known technology“
6
requirements
Jira
 https://www.atlassian.com/JIRA
 Issue tracking and code integration
 Supporting Dashboards & Plugins
 perfect integration from Confluence (wiki)
and Subversion (versioning)
 supporting complex workflows
 Issue import from Bugzilla, Mantis, GitHub, …
 Supporting von REST-Webservices
7
8
Jira
9
Workflow
Jira
 supporting a huge number of attributes
 time tracking (estimated, time spent, remaining)
 Components (can be used for APEX pages and database objects)
 versions
 fields and screens adjustable per project
 external issue numbers, date of commision, date of payment
 Supporting own workflows
 Describing a whole process, usable for non developing processes
 Every step can be defined by user rights or issue dependencies
 Using „JIRA Timesheet Reports and Gadgets Plugin“
10
Integrated features
Jira
 key figures not in desired aggregation
 time per year/month
 no further support for SOAP Webservices in Jira
 SOAP Interface doesn‘t return all values
 Using Jira-Plugins
 Listed Plugins not fullfilling all requiremends
 Developing own Jira-Plugins is complex and time consuming
11
lack of features
Jira
 API documentation for Jira REST-Webservices
https://docs.atlassian.com/jira/REST/latest/
 URL structure
 http://host:port/context/rest/api-name/api-version/resource-name
 Using an issue identfiied by the key JRA-9 would be like:
 https://jira.atlassian.com/rest/api/latest/issue/JRA-9
 Using JQL Language (syntax)
https://jira.mt-ag.com/rest/api/2/search?jql=project=BP
 Returning values in JSON Format (testable also in browser)
12
REST-Webservice
Jira
13
JQL
https://jira.mt-ag.com/rest/api/2/search?jql=project=BP
Jira
 addional information when getting REST-Webservice Result
 Default max 50 entries
 1. solution: add parameter &maxResults=XXX
 2. solution: add Parameter &startAt=50
 Sort the results
 If no Authentication needed, don‘t submit username/password -> you get Unauthorized (401)
14
REST-Webservice
"expand":"schema,names","startAt":0,"maxResults":50,"total":827,"issues":[….]}
https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP&maxResults=1000
https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP&startAt=50
https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP+order+by+duedate
Webservices
 getting Error:
 Example: https://jira.atlassian.com/rest/api/latest/issue/JRA-9
15
ACL
ORA-29273: HTTP request failed
ORA-24247: network access denied by access control list (ACL)
begin
dbms_network_acl_admin.create_acl(acl => 'jira.atlassian.com.xml'
,description => 'An ACL for Calling REST Webservices.'
,principal => l_principal
,is_grant => true
,privilege => 'connect'
,start_date => systimestamp
,end_date => null);
dbms_network_acl_admin.assign_acl(acl => 'jira.atlassian.com.xml'
,host => 'jira.atlassian.com'
,lower_port => 443
,upper_port => 443);
commit;
end;
Webservices
 Getting existing ACL Entries
 Important for ACL
 Using Web Service References (shared
components or the APEX_WEB_SERVICE
(package)
 principal = APEX_050000
 using utl_http or other packages calling
external resources
 principal = my_schema_name
16
ACL select a.acl
,a.host
,a.lower_port
,a.upper_port
,p.principal
,p.privilege
,p.is_grant
,to_char(p.start_date
,'DD-MON-YYYY') as start_date
,to_char(p.end_date
,'DD-MON-YYYY') as end_date
from dba_network_acl_privileges p
left join dba_network_acls a on a.acl = p.acl
Webservices
17
exporting certificate
Webservices
 calling https:
 To solve this problem, you have to get the certificates which are used by the server which
runs Jira
 Getting certificate
 use your browser and call the URL from the REST-Webservice or even from Jira
 click on the lock symbol
 click show certificate
18
exporting certificate
ORA-29273: HTTP request failed
ORA-29024: Certificate validation failure
Webservices
19
importing certificate
Webservices
 use the Oracle Wallet Manager (OWM) to import the certificate
 run ORACLE_HOMEbinowm.cl (on windows a link is created)
 Import of the certificate is also possible using the command line
 create a wallet for the certificate using a path like this
ORACLE_BASEadmin<SID><name_wallet>
 Use automatic login for your wallet (otherwise you have to use the wallet always with your
password in your plsql code)
20
importing certificate
Webservice
 APEX documentation
http://docs.oracle.com/cd/E59726_01/doc.50/e39151/adm_wrkspc002.htm#BABHEHAG
 Login into your INTERNAL Workspace
Manage Instance
Instance Settings
Wallet
21
certificate in APEX
Webservices
 Shared Components
 Web Service References
 Create
 Problems
 based on single items
 authentification
 result as CLOB
only in Collection.
No support in
 apex_items
 report columns
 JSON Format
23
Web Service Reference
Webservices
24
Web Service Reference
Webservice
 Call REST
 p_http_method GET, HEAD, POST, PUT, DELETE
 Username & Password supporting Basic Authentication
 Parameter if parameter beside the URL itself are needed
25
APEX_WEB_SERVICE
l_clob := apex_web_service.make_rest_request(
p_url => 'https://jira.atlassian.com/rest/api/latest/issue/JRA-9'
,p_http_method => 'GET'
,p_wallet_path => 'file:C:oracleadminorclmein_wallet'
,p_username => 'lemmo'
,p_password => '123456 '‚
,p_parm_name => apex_util.string_to_table('param1:param2'),
,p_parm_value => apex_util.string_to_table('val1:val2')
);
JSON
 Datentypen
 String
 "QS - Demo Feature"
 "2015-11-03T13:48:16.630+0100"
 Number
 20
 Boolean
 true / false
 Null
 null
 Array
 [ {…}, {…}]
26
format
{
"id": "17149",
"self": "https://jira.mt-ag.com/rest/api/latest/issue/17149",
"key": "BP-7",
"fields":
{
“summary": "QS - Demo Feature",
"progress":
{
"progress": ​19800,
"total": ​19800,
"percent": ​100
},
"created": "2015-11-03T13:48:16.630+0100",
worklog": {
"startAt": ​0,
"maxResults": ​20,
"total": ​2,
"worklogs": [
{ ... },
{ ... }
]
}
}
}
JSON
 convert clob
to JSON object
 looping entries
 get value
27
processing
l_values apex_json.t_values;
….
apex_json.parse(p_values => l_values
,p_source => l_clob);
for i in 1 .. apex_json.get_count(p_values => l_values
,p_path => '.')
loop … end loop
l_jira_issue.key := apex_json.get_varchar2(p_values => pi_json_issue
,p_path => 'key');
l_jira_issue.timespent := apex_json.get_number(p_values => pi_json_issue
,p_path => 'fields.timespent');
JSON
 Number as String
 you have to convert
 Datetime as String
 Converting with
apex_json.get_date
doesn‘t work because
of format
 custom fields
in Jira are named like
customfield_xxxxx
28
special cases
"id": "17149"
"created": "2015-11-03T13:48:16.630+0100"
l_timestamp := to_timestamp_tz(pi_string
,'YYYY-MM-DD"T"hh24:mi:ss.FF3TZHTZM');
l_string := to_char(l_timestamp
,'yyyy.mm.dd hh24:mi:ss');
l_date := to_date(l_string
,'yyyy.mm.dd hh24:mi:ss');
apex_json.get_varchar2(p_values => pi_json_issue
,p_path => 'fields.customfield_10000');
JSON
 Time worked / Worklog not with information by day encapsuleted in issue
 you have call the worklog for every single ticket by one REST Call
29
special cases
for i in 1 .. apex_json.get_count(p_values => l_values, p_path => 'issues')
loop
l_rest_response := make_rest_request(pi_url => pi_jira_base_url || c_jira_rest_base_path || '/issue/' ||
apex_json.get_varchar2(p_values => l_values, p_path => 'issues[' || i || '].key'
,pi_username => pi_username
,pi_password => pi_password);
apex_json.parse(p_values => l_values_issue, p_source => l_rest_response);
l_jira_issue := get_issue_from_json(pi_json_issue => l_values_issue);
for j in 1 .. apex_json.get_count(p_values => l_values_issue
,p_path => 'fields.worklog.worklogs')
loop
l_jira_issue_worklog := get_issue_worklog_from_json(pi_json_issue_worklog => l_values_issue
,pi_path => 'fields.worklog.worklogs[' || j || '].'
,pi_jira_issue_id => l_jira_issue.id
,pi_jira_issue_key => l_jira_issue.key);
pipe row(l_jira_issue_worklog);
JSON
 transform JSON into type
 easier to use
 Transformation in package instead APEX
 testing possible by using sql
 Entities defined as column names
 documentation von
CollectionSpalte – JSON – Spaltenname im Type
 using table function based on defined types
30
processing create or replace type t_jira_issue force as object
(
-- { id: "16276"
-- c001
id number, -- Jira Issue ID
-- { self: https://jira.mt-
ag.com/rest/api/2/issue/16276
-- c003
url_json varchar2(32767), -- c003 - JSON URL
-- { key: "UITFPP-1057„
-- c001
key varchar2(32767), -- Issue Key
select *
from table(jira_rest_ws_pkg.get_projects(pi_base_url => 'https://jira.atlassian.com'))
APEX
 using APEX_COLLECTIONS
 not every search means new webservice call
 loading page doesn‘t call a webservice
 APEX itself relies also on collections when working with Web Service References
 problem authentication for webservice call
 every call needs a username & password
 using Web Service Reference it‘s inconvenient
 using Application Items instead
 when logging into the apex application password is saved on server-side by application item
 attention the password value is visible in session state
31
APEX
32
Livedemo
Conclusion
 complexity is huge because of many different technical aspects
 all important key facts are calculateable
 transforming JSON in JavaScript or PL/SQL is not easy in the beginning
 first time parsing JSON even with APEX_JSON needs practice
remember in 12c you can directly parse JSON by SQL
 Using APEX integrated „Web Service Reference“ only for simple examples
33
@OliverLemm
http://oliverlemm.blogspot.de/
http://de.linkedin.com/in/OliverLemm
https://www.xing.com/profile/Oliver_Lemm
Thanks!

Mais conteúdo relacionado

Mais procurados

Affordable Workflow Options for APEX
Affordable Workflow Options for APEXAffordable Workflow Options for APEX
Affordable Workflow Options for APEXNiels de Bruijn
 
Microsoft Dynamics 365 - Business Process Flow
Microsoft Dynamics 365 - Business Process FlowMicrosoft Dynamics 365 - Business Process Flow
Microsoft Dynamics 365 - Business Process FlowHungPham381
 
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInData
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInDataModel serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInData
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInDataGetInData
 
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...Athens Big Data
 
Introduction to Apache Airflow
Introduction to Apache AirflowIntroduction to Apache Airflow
Introduction to Apache Airflowmutt_data
 
Git for jenkins faster and better
Git for jenkins   faster and betterGit for jenkins   faster and better
Git for jenkins faster and betterMark Waite
 
Graphical Utilities For IBM DB2 Monitoring
Graphical Utilities For IBM DB2 MonitoringGraphical Utilities For IBM DB2 Monitoring
Graphical Utilities For IBM DB2 Monitoringluciano_alfonsin
 
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X Kai Wähner
 
Mau viet tai lieu srs
Mau viet tai lieu srsMau viet tai lieu srs
Mau viet tai lieu srstrinhtv_55
 
Overview of UiPath Insights.pdf
Overview of UiPath Insights.pdfOverview of UiPath Insights.pdf
Overview of UiPath Insights.pdfCristina Vidu
 
Introducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itIntroducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itBruno Faria
 
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CI
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CISecure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CI
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CIMitchell Pronschinske
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow IntroductionLiangjun Jiang
 
Framework Design Guidelines
Framework Design GuidelinesFramework Design Guidelines
Framework Design Guidelinesbrada
 
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...Codit
 
Sap user profile export &amp; import
Sap user profile export &amp; importSap user profile export &amp; import
Sap user profile export &amp; importDeepchaitanya B
 
Rpa fallout and log mechanism
Rpa fallout and log mechanismRpa fallout and log mechanism
Rpa fallout and log mechanismDantu Suhruth
 
Automate CRM systems through APIs with the new UiPath Integration Service
Automate CRM systems through APIs with the new UiPath Integration ServiceAutomate CRM systems through APIs with the new UiPath Integration Service
Automate CRM systems through APIs with the new UiPath Integration ServiceDiana Gray, MBA
 

Mais procurados (20)

Affordable Workflow Options for APEX
Affordable Workflow Options for APEXAffordable Workflow Options for APEX
Affordable Workflow Options for APEX
 
Microsoft Dynamics 365 - Business Process Flow
Microsoft Dynamics 365 - Business Process FlowMicrosoft Dynamics 365 - Business Process Flow
Microsoft Dynamics 365 - Business Process Flow
 
UiPath Extensions_v3.pdf
UiPath Extensions_v3.pdfUiPath Extensions_v3.pdf
UiPath Extensions_v3.pdf
 
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInData
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInDataModel serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInData
Model serving made easy using Kedro pipelines - Mariusz Strzelecki, GetInData
 
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...
22nd Athens Big Data Meetup - 1st Talk - MLOps Workshop: The Full ML Lifecycl...
 
Introduction to Apache Airflow
Introduction to Apache AirflowIntroduction to Apache Airflow
Introduction to Apache Airflow
 
Git for jenkins faster and better
Git for jenkins   faster and betterGit for jenkins   faster and better
Git for jenkins faster and better
 
Graphical Utilities For IBM DB2 Monitoring
Graphical Utilities For IBM DB2 MonitoringGraphical Utilities For IBM DB2 Monitoring
Graphical Utilities For IBM DB2 Monitoring
 
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X
IIoT / Industry 4.0 with Apache Kafka, Connect, KSQL, Apache PLC4X
 
Mau viet tai lieu srs
Mau viet tai lieu srsMau viet tai lieu srs
Mau viet tai lieu srs
 
Overview of UiPath Insights.pdf
Overview of UiPath Insights.pdfOverview of UiPath Insights.pdf
Overview of UiPath Insights.pdf
 
RabbitMQ + OpenLDAP
RabbitMQ + OpenLDAPRabbitMQ + OpenLDAP
RabbitMQ + OpenLDAP
 
Introducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using itIntroducing Apache Airflow and how we are using it
Introducing Apache Airflow and how we are using it
 
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CI
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CISecure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CI
Secure Infrastructure Provisioning with Terraform Cloud, Vault + GitLab CI
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
 
Framework Design Guidelines
Framework Design GuidelinesFramework Design Guidelines
Framework Design Guidelines
 
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
 
Sap user profile export &amp; import
Sap user profile export &amp; importSap user profile export &amp; import
Sap user profile export &amp; import
 
Rpa fallout and log mechanism
Rpa fallout and log mechanismRpa fallout and log mechanism
Rpa fallout and log mechanism
 
Automate CRM systems through APIs with the new UiPath Integration Service
Automate CRM systems through APIs with the new UiPath Integration ServiceAutomate CRM systems through APIs with the new UiPath Integration Service
Automate CRM systems through APIs with the new UiPath Integration Service
 

Destaque

20160307 apex connects_jira
20160307 apex connects_jira20160307 apex connects_jira
20160307 apex connects_jiraMT AG
 
Service Workers and APEX
Service Workers and APEXService Workers and APEX
Service Workers and APEXDimitri Gielis
 
Managing Product Growth Experiments With JIRA and Confluence - Zane Salim
Managing Product Growth Experiments With JIRA and Confluence - Zane SalimManaging Product Growth Experiments With JIRA and Confluence - Zane Salim
Managing Product Growth Experiments With JIRA and Confluence - Zane SalimAtlassian
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesAtlassian
 
Jira plugin dev introduction 14012014 a
Jira plugin dev introduction 14012014 aJira plugin dev introduction 14012014 a
Jira plugin dev introduction 14012014 alukasgotter
 
Moving to the APEX Listener
Moving to the APEX ListenerMoving to the APEX Listener
Moving to the APEX ListenerDimitri Gielis
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.jsDimitri Gielis
 
Agile Overview Session
Agile Overview SessionAgile Overview Session
Agile Overview SessionBahaa Farouk
 
Using JIRA & Greenhopper for Agile Development
Using JIRA & Greenhopper for Agile DevelopmentUsing JIRA & Greenhopper for Agile Development
Using JIRA & Greenhopper for Agile DevelopmentJeff Leyser
 
JIRA-An intro
JIRA-An introJIRA-An intro
JIRA-An introAsha G.K.
 
Introduction To Jira
Introduction To JiraIntroduction To Jira
Introduction To JiraHua Soon Sim
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 

Destaque (18)

20160307 apex connects_jira
20160307 apex connects_jira20160307 apex connects_jira
20160307 apex connects_jira
 
Jira
JiraJira
Jira
 
Service Workers and APEX
Service Workers and APEXService Workers and APEX
Service Workers and APEX
 
Managing Product Growth Experiments With JIRA and Confluence - Zane Salim
Managing Product Growth Experiments With JIRA and Confluence - Zane SalimManaging Product Growth Experiments With JIRA and Confluence - Zane Salim
Managing Product Growth Experiments With JIRA and Confluence - Zane Salim
 
JIRA Performance After 300,000 Issues
JIRA Performance After 300,000 IssuesJIRA Performance After 300,000 Issues
JIRA Performance After 300,000 Issues
 
Jira plugin dev introduction 14012014 a
Jira plugin dev introduction 14012014 aJira plugin dev introduction 14012014 a
Jira plugin dev introduction 14012014 a
 
Moving to the APEX Listener
Moving to the APEX ListenerMoving to the APEX Listener
Moving to the APEX Listener
 
APEX Security 101
APEX Security 101APEX Security 101
APEX Security 101
 
Jira Agile
Jira AgileJira Agile
Jira Agile
 
APEX Wearables
APEX WearablesAPEX Wearables
APEX Wearables
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
 
Agile Overview Session
Agile Overview SessionAgile Overview Session
Agile Overview Session
 
Using JIRA & Greenhopper for Agile Development
Using JIRA & Greenhopper for Agile DevelopmentUsing JIRA & Greenhopper for Agile Development
Using JIRA & Greenhopper for Agile Development
 
JIRA-An intro
JIRA-An introJIRA-An intro
JIRA-An intro
 
RESTful API Design, Second Edition
RESTful API Design, Second EditionRESTful API Design, Second Edition
RESTful API Design, Second Edition
 
Introduction To Jira
Introduction To JiraIntroduction To Jira
Introduction To Jira
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Project Management KPIs
Project Management KPIsProject Management KPIs
Project Management KPIs
 

Semelhante a APEX connects Jira

Building applications with Serverless Framework and AWS Lambda
Building applications with Serverless Framework and AWS LambdaBuilding applications with Serverless Framework and AWS Lambda
Building applications with Serverless Framework and AWS LambdaFredrik Vraalsen
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performanceEngine Yard
 
Working with data using Azure Functions.pdf
Working with data using Azure Functions.pdfWorking with data using Azure Functions.pdf
Working with data using Azure Functions.pdfStephanie Locke
 
PyData Berlin 2023 - Mythical ML Pipeline.pdf
PyData Berlin 2023 - Mythical ML Pipeline.pdfPyData Berlin 2023 - Mythical ML Pipeline.pdf
PyData Berlin 2023 - Mythical ML Pipeline.pdfJim Dowling
 
Data analytics master class: predict hotel revenue
Data analytics master class: predict hotel revenueData analytics master class: predict hotel revenue
Data analytics master class: predict hotel revenueKris Peeters
 
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge LucaaOS Community
 
Doctor Flow: Enterprise Flows best practices - patterns (SharePoint Saturday...
Doctor Flow:  Enterprise Flows best practices - patterns (SharePoint Saturday...Doctor Flow:  Enterprise Flows best practices - patterns (SharePoint Saturday...
Doctor Flow: Enterprise Flows best practices - patterns (SharePoint Saturday...serge luca
 
SharePoint for the .NET Developer
SharePoint for the .NET DeveloperSharePoint for the .NET Developer
SharePoint for the .NET DeveloperJohn Calvert
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextPrateek Maheshwari
 
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and Nagios
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and NagiosNagios Conference 2013 - Eric Stanley and Andy Brist - API and Nagios
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and NagiosNagios
 
Visualizing Big Data in Realtime
Visualizing Big Data in RealtimeVisualizing Big Data in Realtime
Visualizing Big Data in RealtimeDataWorks Summit
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTKai Zhao
 
Doctor Flow- Best practices Microsoft flow - Techorama 2019
Doctor Flow- Best practices Microsoft flow - Techorama 2019Doctor Flow- Best practices Microsoft flow - Techorama 2019
Doctor Flow- Best practices Microsoft flow - Techorama 2019serge luca
 
MuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataMuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataPace Integration
 
Chris O'Brien - Modern SharePoint development: techniques for moving code off...
Chris O'Brien - Modern SharePoint development: techniques for moving code off...Chris O'Brien - Modern SharePoint development: techniques for moving code off...
Chris O'Brien - Modern SharePoint development: techniques for moving code off...Chris O'Brien
 
Maximizer 2018 API training
Maximizer 2018 API trainingMaximizer 2018 API training
Maximizer 2018 API trainingMurylo Batista
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien
 

Semelhante a APEX connects Jira (20)

Building applications with Serverless Framework and AWS Lambda
Building applications with Serverless Framework and AWS LambdaBuilding applications with Serverless Framework and AWS Lambda
Building applications with Serverless Framework and AWS Lambda
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
 
Bh Win 03 Rileybollefer
Bh Win 03 RileybolleferBh Win 03 Rileybollefer
Bh Win 03 Rileybollefer
 
Working with data using Azure Functions.pdf
Working with data using Azure Functions.pdfWorking with data using Azure Functions.pdf
Working with data using Azure Functions.pdf
 
PyData Berlin 2023 - Mythical ML Pipeline.pdf
PyData Berlin 2023 - Mythical ML Pipeline.pdfPyData Berlin 2023 - Mythical ML Pipeline.pdf
PyData Berlin 2023 - Mythical ML Pipeline.pdf
 
Data analytics master class: predict hotel revenue
Data analytics master class: predict hotel revenueData analytics master class: predict hotel revenue
Data analytics master class: predict hotel revenue
 
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca
2019-05-16 aOS Luxembourg - 6 - Flow avancé - Serge Luca
 
Doctor Flow: Enterprise Flows best practices - patterns (SharePoint Saturday...
Doctor Flow:  Enterprise Flows best practices - patterns (SharePoint Saturday...Doctor Flow:  Enterprise Flows best practices - patterns (SharePoint Saturday...
Doctor Flow: Enterprise Flows best practices - patterns (SharePoint Saturday...
 
SharePoint for the .NET Developer
SharePoint for the .NET DeveloperSharePoint for the .NET Developer
SharePoint for the .NET Developer
 
Scale By The Bay | 2020 | Gimel
Scale By The Bay | 2020 | GimelScale By The Bay | 2020 | Gimel
Scale By The Bay | 2020 | Gimel
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and Nagios
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and NagiosNagios Conference 2013 - Eric Stanley and Andy Brist - API and Nagios
Nagios Conference 2013 - Eric Stanley and Andy Brist - API and Nagios
 
Visualizing Big Data in Realtime
Visualizing Big Data in RealtimeVisualizing Big Data in Realtime
Visualizing Big Data in Realtime
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
Doctor Flow- Best practices Microsoft flow - Techorama 2019
Doctor Flow- Best practices Microsoft flow - Techorama 2019Doctor Flow- Best practices Microsoft flow - Techorama 2019
Doctor Flow- Best practices Microsoft flow - Techorama 2019
 
Resume (1)
Resume (1)Resume (1)
Resume (1)
 
MuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataMuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and OData
 
Chris O'Brien - Modern SharePoint development: techniques for moving code off...
Chris O'Brien - Modern SharePoint development: techniques for moving code off...Chris O'Brien - Modern SharePoint development: techniques for moving code off...
Chris O'Brien - Modern SharePoint development: techniques for moving code off...
 
Maximizer 2018 API training
Maximizer 2018 API trainingMaximizer 2018 API training
Maximizer 2018 API training
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
 

Mais de Oliver Lemm

Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfOliver Lemm
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfOliver Lemm
 
APEX Page Items in detail
APEX Page Items in detailAPEX Page Items in detail
APEX Page Items in detailOliver Lemm
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenOliver Lemm
 
Jenkins Pipelines Advanced
Jenkins Pipelines AdvancedJenkins Pipelines Advanced
Jenkins Pipelines AdvancedOliver Lemm
 
Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Oliver Lemm
 
Jenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleJenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleOliver Lemm
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1Oliver Lemm
 
Schritt für Schritt ins Grid
Schritt für Schritt ins GridSchritt für Schritt ins Grid
Schritt für Schritt ins GridOliver Lemm
 
Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Oliver Lemm
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentOliver Lemm
 
Mastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentMastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentOliver Lemm
 
Jetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXJetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXOliver Lemm
 
Wieder verschätzt?
Wieder verschätzt?Wieder verschätzt?
Wieder verschätzt?Oliver Lemm
 
Komplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetKomplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetOliver Lemm
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentOliver Lemm
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoOliver Lemm
 

Mais de Oliver Lemm (20)

Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdf
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdf
 
APEX Page Items in detail
APEX Page Items in detailAPEX Page Items in detail
APEX Page Items in detail
 
confirm & alert
confirm & alertconfirm & alert
confirm & alert
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurieren
 
APEX Migration
APEX MigrationAPEX Migration
APEX Migration
 
Jenkins Pipelines Advanced
Jenkins Pipelines AdvancedJenkins Pipelines Advanced
Jenkins Pipelines Advanced
 
From Dev to Ops
From Dev to OpsFrom Dev to Ops
From Dev to Ops
 
Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Das Universal Theme in APEX 19
Das Universal Theme in APEX 19
 
Jenkins Pipeline meets Oracle
Jenkins Pipeline meets OracleJenkins Pipeline meets Oracle
Jenkins Pipeline meets Oracle
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1
 
Schritt für Schritt ins Grid
Schritt für Schritt ins GridSchritt für Schritt ins Grid
Schritt für Schritt ins Grid
 
Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union Investment
 
Mastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentMastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investment
 
Jetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXJetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEX
 
Wieder verschätzt?
Wieder verschätzt?Wieder verschätzt?
Wieder verschätzt?
 
Komplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetKomplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitet
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union Investment
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & Co
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 

Último (20)

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

APEX connects Jira

  • 1. APEX connects Jira Oliver Lemm APEX World 07.03.2016
  • 2. Facts & Figures Independent Technology House with Cross-Industry Expertise Headquarter Ratingen (North Rhine – Westphalia) 240 Employees Founded 1994 Branches Dortmund, Cologne, Frankfurt Top Company for Trainees & Students Privately- Owned Corporation Oracle Platinum Partner 24 Mio. Euro Revenue 2
  • 3. about me  Oliver Lemm  since february 2007 working for MT AG in Ratingen  Junior Consultant > Consultant > Senior Consultant > Competence Center Leader APEX & Service Center Leader APEX  Diploma applied computer science at the university of Duisburg-Essen  Projectleader, IT-Architect and Developer  working with Oracle Databases and Oracle Application Express since 2007  Blog http://oliverlemm.blogspot.de  Twitter https://twitter.com/OliverLemm 3
  • 4. APEX Connect 26th – 28th April 2016 in Berlin Get your early-bird ticket now! APEX.DOAG.ORG#APEXCONN16
  • 5. Agenda 1. Motivation 2. Jira 3. Webservices 4. JSON 5. Livedemo 5
  • 6. Motivation „Working with one tool to handle the developing process, controlling and all other processes in one project“ „Calculating key figures based on Jira values which are not delivered by Jira itself.“ „Using integrated Jira Plugins and adding additional functionality by using APEX as known technology“ 6 requirements
  • 7. Jira  https://www.atlassian.com/JIRA  Issue tracking and code integration  Supporting Dashboards & Plugins  perfect integration from Confluence (wiki) and Subversion (versioning)  supporting complex workflows  Issue import from Bugzilla, Mantis, GitHub, …  Supporting von REST-Webservices 7
  • 8. 8
  • 10. Jira  supporting a huge number of attributes  time tracking (estimated, time spent, remaining)  Components (can be used for APEX pages and database objects)  versions  fields and screens adjustable per project  external issue numbers, date of commision, date of payment  Supporting own workflows  Describing a whole process, usable for non developing processes  Every step can be defined by user rights or issue dependencies  Using „JIRA Timesheet Reports and Gadgets Plugin“ 10 Integrated features
  • 11. Jira  key figures not in desired aggregation  time per year/month  no further support for SOAP Webservices in Jira  SOAP Interface doesn‘t return all values  Using Jira-Plugins  Listed Plugins not fullfilling all requiremends  Developing own Jira-Plugins is complex and time consuming 11 lack of features
  • 12. Jira  API documentation for Jira REST-Webservices https://docs.atlassian.com/jira/REST/latest/  URL structure  http://host:port/context/rest/api-name/api-version/resource-name  Using an issue identfiied by the key JRA-9 would be like:  https://jira.atlassian.com/rest/api/latest/issue/JRA-9  Using JQL Language (syntax) https://jira.mt-ag.com/rest/api/2/search?jql=project=BP  Returning values in JSON Format (testable also in browser) 12 REST-Webservice
  • 14. Jira  addional information when getting REST-Webservice Result  Default max 50 entries  1. solution: add parameter &maxResults=XXX  2. solution: add Parameter &startAt=50  Sort the results  If no Authentication needed, don‘t submit username/password -> you get Unauthorized (401) 14 REST-Webservice "expand":"schema,names","startAt":0,"maxResults":50,"total":827,"issues":[….]} https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP&maxResults=1000 https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP&startAt=50 https://jira.mt-ag.com/rest/api/latest/search?jql=project=BP+order+by+duedate
  • 15. Webservices  getting Error:  Example: https://jira.atlassian.com/rest/api/latest/issue/JRA-9 15 ACL ORA-29273: HTTP request failed ORA-24247: network access denied by access control list (ACL) begin dbms_network_acl_admin.create_acl(acl => 'jira.atlassian.com.xml' ,description => 'An ACL for Calling REST Webservices.' ,principal => l_principal ,is_grant => true ,privilege => 'connect' ,start_date => systimestamp ,end_date => null); dbms_network_acl_admin.assign_acl(acl => 'jira.atlassian.com.xml' ,host => 'jira.atlassian.com' ,lower_port => 443 ,upper_port => 443); commit; end;
  • 16. Webservices  Getting existing ACL Entries  Important for ACL  Using Web Service References (shared components or the APEX_WEB_SERVICE (package)  principal = APEX_050000  using utl_http or other packages calling external resources  principal = my_schema_name 16 ACL select a.acl ,a.host ,a.lower_port ,a.upper_port ,p.principal ,p.privilege ,p.is_grant ,to_char(p.start_date ,'DD-MON-YYYY') as start_date ,to_char(p.end_date ,'DD-MON-YYYY') as end_date from dba_network_acl_privileges p left join dba_network_acls a on a.acl = p.acl
  • 18. Webservices  calling https:  To solve this problem, you have to get the certificates which are used by the server which runs Jira  Getting certificate  use your browser and call the URL from the REST-Webservice or even from Jira  click on the lock symbol  click show certificate 18 exporting certificate ORA-29273: HTTP request failed ORA-29024: Certificate validation failure
  • 20. Webservices  use the Oracle Wallet Manager (OWM) to import the certificate  run ORACLE_HOMEbinowm.cl (on windows a link is created)  Import of the certificate is also possible using the command line  create a wallet for the certificate using a path like this ORACLE_BASEadmin<SID><name_wallet>  Use automatic login for your wallet (otherwise you have to use the wallet always with your password in your plsql code) 20 importing certificate
  • 21. Webservice  APEX documentation http://docs.oracle.com/cd/E59726_01/doc.50/e39151/adm_wrkspc002.htm#BABHEHAG  Login into your INTERNAL Workspace Manage Instance Instance Settings Wallet 21 certificate in APEX
  • 22. Webservices  Shared Components  Web Service References  Create  Problems  based on single items  authentification  result as CLOB only in Collection. No support in  apex_items  report columns  JSON Format 23 Web Service Reference
  • 24. Webservice  Call REST  p_http_method GET, HEAD, POST, PUT, DELETE  Username & Password supporting Basic Authentication  Parameter if parameter beside the URL itself are needed 25 APEX_WEB_SERVICE l_clob := apex_web_service.make_rest_request( p_url => 'https://jira.atlassian.com/rest/api/latest/issue/JRA-9' ,p_http_method => 'GET' ,p_wallet_path => 'file:C:oracleadminorclmein_wallet' ,p_username => 'lemmo' ,p_password => '123456 '‚ ,p_parm_name => apex_util.string_to_table('param1:param2'), ,p_parm_value => apex_util.string_to_table('val1:val2') );
  • 25. JSON  Datentypen  String  "QS - Demo Feature"  "2015-11-03T13:48:16.630+0100"  Number  20  Boolean  true / false  Null  null  Array  [ {…}, {…}] 26 format { "id": "17149", "self": "https://jira.mt-ag.com/rest/api/latest/issue/17149", "key": "BP-7", "fields": { “summary": "QS - Demo Feature", "progress": { "progress": ​19800, "total": ​19800, "percent": ​100 }, "created": "2015-11-03T13:48:16.630+0100", worklog": { "startAt": ​0, "maxResults": ​20, "total": ​2, "worklogs": [ { ... }, { ... } ] } } }
  • 26. JSON  convert clob to JSON object  looping entries  get value 27 processing l_values apex_json.t_values; …. apex_json.parse(p_values => l_values ,p_source => l_clob); for i in 1 .. apex_json.get_count(p_values => l_values ,p_path => '.') loop … end loop l_jira_issue.key := apex_json.get_varchar2(p_values => pi_json_issue ,p_path => 'key'); l_jira_issue.timespent := apex_json.get_number(p_values => pi_json_issue ,p_path => 'fields.timespent');
  • 27. JSON  Number as String  you have to convert  Datetime as String  Converting with apex_json.get_date doesn‘t work because of format  custom fields in Jira are named like customfield_xxxxx 28 special cases "id": "17149" "created": "2015-11-03T13:48:16.630+0100" l_timestamp := to_timestamp_tz(pi_string ,'YYYY-MM-DD"T"hh24:mi:ss.FF3TZHTZM'); l_string := to_char(l_timestamp ,'yyyy.mm.dd hh24:mi:ss'); l_date := to_date(l_string ,'yyyy.mm.dd hh24:mi:ss'); apex_json.get_varchar2(p_values => pi_json_issue ,p_path => 'fields.customfield_10000');
  • 28. JSON  Time worked / Worklog not with information by day encapsuleted in issue  you have call the worklog for every single ticket by one REST Call 29 special cases for i in 1 .. apex_json.get_count(p_values => l_values, p_path => 'issues') loop l_rest_response := make_rest_request(pi_url => pi_jira_base_url || c_jira_rest_base_path || '/issue/' || apex_json.get_varchar2(p_values => l_values, p_path => 'issues[' || i || '].key' ,pi_username => pi_username ,pi_password => pi_password); apex_json.parse(p_values => l_values_issue, p_source => l_rest_response); l_jira_issue := get_issue_from_json(pi_json_issue => l_values_issue); for j in 1 .. apex_json.get_count(p_values => l_values_issue ,p_path => 'fields.worklog.worklogs') loop l_jira_issue_worklog := get_issue_worklog_from_json(pi_json_issue_worklog => l_values_issue ,pi_path => 'fields.worklog.worklogs[' || j || '].' ,pi_jira_issue_id => l_jira_issue.id ,pi_jira_issue_key => l_jira_issue.key); pipe row(l_jira_issue_worklog);
  • 29. JSON  transform JSON into type  easier to use  Transformation in package instead APEX  testing possible by using sql  Entities defined as column names  documentation von CollectionSpalte – JSON – Spaltenname im Type  using table function based on defined types 30 processing create or replace type t_jira_issue force as object ( -- { id: "16276" -- c001 id number, -- Jira Issue ID -- { self: https://jira.mt- ag.com/rest/api/2/issue/16276 -- c003 url_json varchar2(32767), -- c003 - JSON URL -- { key: "UITFPP-1057„ -- c001 key varchar2(32767), -- Issue Key select * from table(jira_rest_ws_pkg.get_projects(pi_base_url => 'https://jira.atlassian.com'))
  • 30. APEX  using APEX_COLLECTIONS  not every search means new webservice call  loading page doesn‘t call a webservice  APEX itself relies also on collections when working with Web Service References  problem authentication for webservice call  every call needs a username & password  using Web Service Reference it‘s inconvenient  using Application Items instead  when logging into the apex application password is saved on server-side by application item  attention the password value is visible in session state 31
  • 32. Conclusion  complexity is huge because of many different technical aspects  all important key facts are calculateable  transforming JSON in JavaScript or PL/SQL is not easy in the beginning  first time parsing JSON even with APEX_JSON needs practice remember in 12c you can directly parse JSON by SQL  Using APEX integrated „Web Service Reference“ only for simple examples 33

Notas do Editor

  1. From April 26th to 28th, 2016, the second edition of APEX Connect will take place in Berlin. Due to the positive feedback this year, there will be an extra day: The conference will be three days long. April 26th: Focus on PL/SQL April 27th - 28th: Full range of APEX programming There will again be many great submissions and topics. Main topics Project Management & Methods Operation Web technology Application Development The conference program is in completion and will be released in spring. The top speaker of the PL/SQL and APEX scene will be there. David Peake Patrick Wolf Anton Nielsen Martin Giffy D'Souza Roger Troller Jürgen Sieben Olaf Jessensky Chris Saxon In addition to the lecture program, the following activities are planned: Workshops Unconference sessions Many networking opportunities At the moment, the early bird prices still apply. The sale of the exhibition is already running.  
  2. APE