Rollbase OpenEdgeVia de REST adapter naar OpenEdge
PUG NL, 16-04-2014Bronco Oostermeyer
Introductie
{"speaker": [ { "id": 1, "voornaam": "Bronco", "achternaam": "Oostermeyer", "bedrijf": "Flusso" }]}
Agenda
- OpenEdge REST Adapter- Mobile Services- Koppeling vanuit Rollbase
OpenEdge REST adapter
• REST = Representational State Transfer• Architectuur, geen protocol• Zeker geen standaard
• In het kort• Datauitwisseling via HTTP• Data via JSON (JavaScript Object Notation)• Benaderbaar in iedere technologie• WebServices zonder de SOAP overhead
REST adapter - implementatie
Met PSDOE wordt een tomcat geïnstalleerd
REST Adapter – Servicetypes
• REST Services• GET: http://www.flusso.nl/pug/rest/pug/speaker/{:id}• Zeer flexibel• Relatief veel zelf doen
• Mobile Service• GET: http://www.flusso.nl/pug/rest/pug/speaker?filter=...• Standaard CRUD ondersteuning• Service contract via catalog• JSDO op clientside mogelijk• Nodig voor Rollbase
Mobile Services - vooraf
• PDSOE “verplicht”!• Neemt zeer veel werkuit handen• Zonder is eigenlijk niet te doen
Mobile services - flow
• Creëer dataset / temp-table include file• Creëer een Business Entity• Koppel de BE aan de Mobile Service• Publish• Testen
Mobile services - data
• Data first• Definitie (static!) temp-table of dataset in include
define temp-table ttspeaker no-undo before-table btspeaker field id as integer field voornaam as character field achternaam as character field bedrijf as character . define dataset dsspeaker for ttspeaker.
Mobile services – Business Entity
• Creeer Business Entity• Bevat methods die door de REST Adapter worden aangesproken
Mobile services – Business Entity (2)
Mobile services – Business Entity (3)
@program FILE(name="SpeakerBE.cls", module="AppServer")[email protected] FILE(type="REST", executionMode="singleton", useReturnValue="false", …)[email protected] FILE(name="SpeakerBE", URI="/speaker",
schemaName="dsspeaker", schemaFile="PUG/AppServer/pug/data/dsspeaker.i").
class pug.logic.SpeakerBE: …
@openapi.openedge.export(type="REST", useReturnValue="false", writeDataSetBeforeImage="false")[email protected](type="REST", operation="read", URI="?filter=~{filter~}",
alias="", mediaType="application/json"). method public void ReadSpeakerBE(filter as character, output dataset dsspeaker):end method.
Class definitie:
Lees method:
En de methods: CreateSpeakerBE, UpdateSpeakerBE & DeleteSpeakerBE
Mobile services – Service
Mobile services – Resultaat
• Catalog file (PUG.json)• In WebContent map (PDSOE project)• Service definities: path, operations• Data definities
• WAR file (PUG.war)• Web Archive (ZIP voor Tomcat)• Wordt in PDSOE automatisch
gepublished• <oe-install>\servers\tomcat\pdsoe
Mobile Services - Testen
• Via HTTP testtool (Postman in Chrome, RESTClient in Firefox)• Mogelijkheid om te bekijken/beinvloeden wat er exact plaatsvindt• Aparte testcases (HTTP OE)
• GET Read• POST Create• PUT Update• DELETE Delete
• Fiddler• Inzicht!
Rollbase/OE – high over architectuur
PUG.json
JSDOhttp://www.flusso.nl/pug/rest/pug/speaker
AppServer
REST Adapter
PUG.war
Rollbase
JSDO
JavaScript Data Object (progress.js)• verzorgt communicatie naar de AppServer• CRUD• Invoke
• Werkt samen met progress.session.js• Local data store• Data handling methods (foreach!)• Bruikbaar voor Mobile Apps, Rollbase en … “standard” websites
Rollbase – OpenEdge adapter
Rollbase – OpenEdge adapter (2)
Rollbase – OpenEdge adapter (3)
Rollbase – OpenEdge adapter (4)
Maar…
• Relaties tussen (OE) objecten in Rollbase nog niet mogelijk (volgende RB release?)• REST/Mobile services bieden nog geen ondersteuning Before Image informatie (11.4?)• Mobile / REST: twee verschillende werkwijzes (potentieel dubbel werk)
“to do”
• PDSOE project inrichting• Authentication• Deployment
Vragen?
Volg ons op:
Links
• http://www.progress.com/news-and-events/events/exchange-2013-presentation-download-center• Track 1 & 2
• http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm (academisch)
• http://www.infosupport.com/RESTful_Webservices_Paul_Bakker (praktisch)
Top Related