Extending Oracle ADF to Cloud and Mobile

Preview:

Citation preview

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

ExtendingOracleADFtoCloudandMobile

FrankNimphiusSeniorPrincipalProductManagementOracleMobilityNovember,2016

ExposingADFBusinessComponentsBusinessServicesonREST

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 3

"THEFOLLOWINGISINTENDEDTOOUTLINEOURGENERALPRODUCTDIRECTION.ITISINTENDEDFORINFORMATIONPURPOSESONLY,ANDMAYNOTBEINCORPORATEDINTOANYCONTRACT.ITISNOTACOMMITMENTTODELIVERANYMATERIAL,CODE,ORFUNCTIONALITY,ANDSHOULDNOTBERELIEDUPONINMAKINGPURCHASINGDECISIONS.THEDEVELOPMENT,RELEASE,ANDTIMINGOFANYFEATURESORFUNCTIONALITYDESCRIBEDFORORACLE'SPRODUCTSREMAINSATTHESOLEDISCRETIONOFORACLE."

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 4

How to use Oracle ADF in Cloud and Mobile Apps

Return of Investment

Extension Strategy Be part of the Future

Easy Please!

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

IntegraYonstrategies

MobileBrowser

EmbeddedWebPages

ServiceSharing

DataModelSharing

5

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 6

AgendaItem

HowtodotheRESTthingWithADFBC?

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 7

ViewObjectInstanceDepartments

ApplicaDonModule

ViewObjectInstanceEmployees

ViewObjectInstanceEmployees

DataM

odel

RESTInterfaceRESTResourceDepartments

CollecYon/ObjectCustomJavaRowFinder/VC

RESTfiltering

RESTURI–GET,PUT,POST,Delete,PATCH{host:port}/{path}/rest/{version}/Departments

/{deptId}

/{deptId}/children

/{deptId}/child/Employees/{empId}

/{deptnameviarowfinder}

/{…}?{querycondiYon}

HowitWorks

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DemonstraYonBuildingADFBCRESTServices

8

§  ConfigureApplicaYonModuleforREST§  ADFBCRESTversioning§  CreaYngResourcesfromViewObjects

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 9

oracle.adf.model.servlet.rest.ResourceServlet

RESTFrameworkentrypoint

configuredinweb-xmlforRestproject

…/rest/…

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

AnatomyofaADFBCRestRequest

10

hlp://{host}:{port}/{context-root}/rest/{version}/{resource}DELETE

hlp://{host}:{port}/{context-root}/rest/{version}/{resource}POST,PATCH

Post: executeanacYonorcreateanewresource.Patch: Updatearesource.Ifanalributeisnotcontainedintherequestpayload,itwillnotbemodified.

hlp://{host}:{port}/{context-root}/rest/{version}/{resource}?{query)GETGet: QueriesADFBCRestservicefordataanddatastructureresponses.Canusequeryparameters.

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DiscoveringADFBCRestResources

•  /describe– Describeallavailableresources(resourcecatalog).– DescribeasingleresourcecollecYon.– Describeasingleresourceitem.– Describeanestedresourceinaparent-childrelaYonship.

11

hlp://{host}:{port}/{context-root}/rest/{version}/describe

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

QueryStrings

• offset– Definestheindexfromwheretostartqueryingresults– Allowsdeveloperstopaginatethrougharesultset

•  Limit– Definesthenumberofrowstofetchforaquery

12

PaginaDon

?offset=3&limit=10

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

QueryStrings

• Definesthefields(ViewObjectsalributes)tobeaddedtotheresponsepayload

13

Definefieldsinresponse

?fields={field1},{field2},{field-n}

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

•  one-to-manyexpressionstofilterresponsepayload–  E.g.?q=EmployeeId>=100and<=110;Salary>=5000

•  Supportedoperators:–  >–  <–  >=–  <=–  AND–  OR–  =–  LIKE

14

•  SpecialCharacters–  "and'=todefineliterals–  \=toescape–  *=wildcard

QueryStrings

?q

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

QueryStrings

• Booleanvaluetrue|false• Resourceitempayloadistodataonly– nolinks,etc.

15

Dataonly

?onlyData

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

QueryStrings

• Commaseparatedlistoforderbystatements– {orderBy_alribute_name}:{asc|desc}.– ?orderBy=alribute1:asc,alribute2:asc…

16

Orderby

?orderBy

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

InvokingCustom

ViewObject

Method

•  URI:/rest/{version}/{resource}•  HTTPMethod:POST

•  Content-Type:applicaYon/vnd.oracle.adf.acYon+json

•  Payload

17

{"name":"<methodname>","parameters":[{"<argumentname>":"<value>"},{...}]}

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DemonstraYonBuildingADFBCRESTServices

18

§  DiscoverADFBCRESTinPostman§  ExploreRESTResources§  CRUDinPostman

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 19

AgendaItem

ADFBCRESTfromOracleMAF

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

OracleMobileApplicaYonFramework

20

OracleMobileCloudServiceCustomAPI,RESTConnector

ADFBCRESTAPI

DELETE

POST,PATCH

GETCD

M

RestServiceAdapter

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DemonstraYonMobileApplicaDonFramework

21

§  AccessingADFBCRESTfromOracleMAF§  BuildingApplicaYonsFast

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 22

AgendaItem

ADFBCRESTfromOracleJET

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

OracleJavaScriptExtensionToolkit(JET)

23

OracleMobileCloudServiceCustomAPI,RESTConnector

ADFBCRESTAPI

DELETE

POST,PATCH

GETJETCo

mmon

Mod

el

MCSSDK

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 24

AgendaItem

OracleADFBCRESTIntegraDoninMobileCloudService

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 25Imagecourtesyof"imagerymajesYc"atFreeDigitalPhotos.net

WhyshouldIuse

OracleMCS?

Because a swallow doesn't make a Summer.

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

MobileBackend

MobileApp ConnectorCustomAPI

Nodehttp://rest/api ADFBCRESTService

ImplementaYonInterface

MobileDeveloperServiceDeveloper

DefinesInterfaceRESTAPI

Mockdata

DefinesImplementaYonNode.jscodeConnectors

OracleMobileCloudServiceCustomAPI

Proxy with Benefits

Connector

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DemonstraYon

27

ConsumingADFBCREST

§  MCSRESTConnector§  MCSCustomAPI

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved. 28Imagecourtesyof"imagerymajesYc"atFreeDigitalPhotos.net

WhataboutOracleMAX?

Using the Express API is all it takes to build MAX apps from ADF BC REST

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

DemonstraYon

29

ConsumingADFBCRESTServices

§  OracleMAX

Copyright©2016Oracleand/oritsaffiliates.Allrightsreserved.

Summary

ADFBCREST

•  StandingontheShouldersofaGiant•  ExposesADFBCViewObjectsasRESTresources

•  ResponseShaping•  Queryparametersforon-demanddatashapingand–paginaYon

•  Secure–  CORS,CSRFProtecYon,–  ADFSecurity

UseCases

•  ShareADFBCbusinesslogicwithmobileandcloud

•  ExposeADFBClogicasRESTserviceoncloudforconsumpYonbyRESTclientsincludingADF,MAF,REST

•  BuildamobileextensionforanexisYngADFapplicaYon

30