extending oracle adf to cloud and mobile
TRANSCRIPT
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