APEX DESKTOP APPS Interaktion mit dem Client System
About me Oracle > 8 Jahre APEX > 8 Jahre Freelancer seit 2016 Vorher APEX Entwickler im Versicherungsumfeld aktiver Open Source Entwickler auf Github Mit-Entwickler von apex.world! https://danielhochleitner.de " @Dani3lSun # @Dani3lSun
DOAG 2016 APEX Plug-ins From Zero to Hero Wann: Do 17.11 15:00 Uhr Wo: Raum Istanbul APEX Open Mic Night Wann: Mi 16.11 20:30 Uhr Wo: Raum Istanbul
APEX Connect 2017 Call for Papers bis 21. November 2016!
Agenda Hintergrund / Motivation Electron Integration APEX Anwendungsfälle / Funktionen Deployment
Hintergrund / Motivation
Hintergrund / Motivation Long Long Time Ago Architektur: Client-Server Server: Application Server Client: Rich Client Kommunikation: stetige Verbindung
Hintergrund / Motivation Gestern Architektur: Web / Web 2.0 Server: Web Server / Application Server Client: Browser Kommunikation: Stateless / nur falls nötig Was fehlt?
Hintergrund / Motivation Heute Architektur: Web / Web 2.0 Server: Web Server / Application Server Client: Browser Kommunikation: Stateless / nur falls nötig Revival Client-Server à Web Sockets / Service Workers Weil: Live Events, Live Chats, Live Benachrichtigungen
Hintergrund / Motivation Revival des Rich Clients Keine Sandbox, keine Browser Einschränkungen Offline Funktionalitäten, App Stores Alle Möglichkeiten der Betriebssysteme nutzen
Hintergrund / Motivation Anbieter NW.js (Node Webkit) Electron
Electron
Electron
Electron
Electron Geschichte Entwickelt von Github als Open Source Aktiv seit Januar 2013 Runtime Umgebung ähnlich wie Node.js (node app.js à electron app.js) Chromium mit V8 Engine als Basis Integration von Node.js Cross-Platform Mac, Windows und Linux
Electron
Electron Main Process Nur ein Main Process Interaktion mit Native GUI und dem Betriebssystem Erstellt Application-Windows (Browser Windows) Zugriff auf Low-Level API Renderer Process Mehrere Renderer Processes möglich Darstellung/Rendering der Web Pages (HTML Datei mit CSS / JavaScript) Kein Zugriff auf Low Level API à IPC (Inter-Process Communication)
Electron Aufbau
Electron package.json
Electron main.js
Electron index.html
Electron index.html APEX App
Integration APEX APEX Client Extension (ACE)
Integration APEX APEX Client Extension (ACE) Entwickelt und gesponsert von FOEX GmbH Open Source auf Github In Entwicklung (BETA)!! Auf Electron basierend Framework mit Electron gebaut Vereinfachte Verwendung Eigene API um die Komplexität zu verbergen Funktionierende APEX Integration im Fokus
Integration APEX APEX Client Extension (ACE) To-do s bessere Electron API Abdeckung à ScreenCapture, SystemPrefs, usw. deklarative JavaScript Verwendungà APEX Dynamic Actions Plug-ins verbessertes Error Handling: Main <> Renderer <> WebView
Integration APEX Mit APEX Client Extension loslegen Node.js installieren Github Repository: https://github.com/foexgmbh/apex-client-extension Repository als ZIP herunterladen oder per Kommandozeile: In das Verzeichnis apex-client-extension wechseln Mit NPM alle Pakete und Abhängigkeiten installieren
Integration APEX Mit APEX Client Extension loslegen Demo APEX App installieren (Optional) App Export apex-demo-app.sql aus Demo Ordner importieren Sample Database Application installieren config.json anpassen Starten mit:
DEMO $ %
Anwendungsfälle / Funktionen
Anwendungsfälle / Funktionen Zugriff Zwischenablage / Clipboard Definition von globalen Shortcuts Lese- u. Schreibzugriffe auf das Client Dateisystem Desktop Notifications Shell-Skripte Web Frame Drucken uvm...
Anwendungsfälle / Funktionen Zugriff Zwischenablage / Clipboard Clipboard Format Clipboard lesen Clipboard schreiben
Anwendungsfälle / Funktionen Definition von globalen Shortcuts Shortcut registrieren Shortcut Registrierung entfernen Shortcut Registrierung prüfen
Anwendungsfälle / Funktionen Lese- u. Schreibzugriffe auf das Client Dateisystem Verzeichnis Inhalt lesen Datei Inhalt lesen Verzeichnis öffnen Datei öffnen Datei in Papierkorb verschieben
Anwendungsfälle / Funktionen Web Frame Zoom Level setzen Zoom Level lesen Zoom Faktor setzen Zoom Faktor lesen
Anwendungsfälle / Funktionen Desktop Notifications Benachrichtigung anzeigen Benachrichtigung Click Event
Anwendungsfälle / Funktionen Drucken Seite drucken Als PDF drucken
DEMO $ %
Deployment
Deployment APEX Client Extension Release erstellen Automatische Updates
Deployment APEX Client Extension Release erstellen In das Verzeichnis apex-client-extension wechseln macos Windows Linux
Deployment Automatische Updates Electron autoupdater (kein Linux Support à Package Manager) Web Server mit JSON File und Update Paket (nur SSL/TLS) Client Funktion um Update Server zu registrieren Update Check durchführen Update installieren
Literatur und Beispiele APEX Client Extension: https://github.com/foexgmbh/apex-client-extension Electron Homepage: http://electron.atom.io/ Electron Github: https://github.com/electron/electron Electron Docs: http://electron.atom.io/docs/ Electron API Docs: https://github.com/electron/electron/tree/master/docs/api Node.js Homepage: https://nodejs.org Node.js Docs: https://nodejs.org/en/docs/ Building Desktop Apps with Electron Article: https://medium.com/developerswriting/building-a-desktop-application-with-electron-204203eeb658#.sc2gukm1y Electron Fundamentals: https://maxogden.com/electron-fundamentals.html Electron Workshop: https://github.com/feross/electron-workshop Awesome Electron (Summery): https://github.com/sindresorhus/awesome-electron
Q & A? '! https://danielhochleitner.de " @Dani3lSun # @Dani3lSun ( dhochleitner@posteo.de ) +49 941 46189777