Using Node.js for Mocking Apex Web ServicesJeff Douglas
This document discusses using Node.js to mock Apex web services. It provides a safe harbor statement and introduces the speaker. The speaker will demonstrate building a simple Node.js app that supports HTTP gets, developing an Apex callout class and visualforce page to call the Node app hosted on Heroku, and testing the integration. The use case is to provide endpoints for tight deadlines when dependent on other organizations, allowing development to continue even if real endpoints are not ready.
Using the Tooling API to Generate Apex SOAP Web Service ClientsDaniel Ballinger
Presentation from Dreamforce 2014 on using the Tooling API to create increased support for calling SOAP based web services using WSDLs to generate Apex.
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...Niels de Bruijn
As Slideshare won't let me update the content without breaking the URL, I was forced to use a new platform for my documents. Please use the following link to get the latest version:
https://www.edocr.com/v/ldmkqo7v/nielsdebruijn/20180529_Einfuehrung_APEX
Apex code is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on the Force.com platform. It provides the ability to define triggers and classes that can be initiated by user interface events as well as API calls. Apex code executes on the Force.com servers and provides a way for developers to add custom application logic to their Force.com deployments in a way that is integrated with the platform. Testing of Apex code is also supported to help ensure code quality.
Using Node.js for Mocking Apex Web ServicesJeff Douglas
This document discusses using Node.js to mock Apex web services. It provides a safe harbor statement and introduces the speaker. The speaker will demonstrate building a simple Node.js app that supports HTTP gets, developing an Apex callout class and visualforce page to call the Node app hosted on Heroku, and testing the integration. The use case is to provide endpoints for tight deadlines when dependent on other organizations, allowing development to continue even if real endpoints are not ready.
Using the Tooling API to Generate Apex SOAP Web Service ClientsDaniel Ballinger
Presentation from Dreamforce 2014 on using the Tooling API to create increased support for calling SOAP based web services using WSDLs to generate Apex.
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...Niels de Bruijn
As Slideshare won't let me update the content without breaking the URL, I was forced to use a new platform for my documents. Please use the following link to get the latest version:
https://www.edocr.com/v/ldmkqo7v/nielsdebruijn/20180529_Einfuehrung_APEX
Apex code is a strongly typed, object-oriented programming language that allows developers to execute flow and transaction control statements on the Force.com platform. It provides the ability to define triggers and classes that can be initiated by user interface events as well as API calls. Apex code executes on the Force.com servers and provides a way for developers to add custom application logic to their Force.com deployments in a way that is integrated with the platform. Testing of Apex code is also supported to help ensure code quality.
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Michael Hofmann
Die Entwicklung einer Cloud-native-Anwendung ist nur eine Seite der Medaille, die andere Seite ist die Cloud-Umgebung, in der die Anwendung betrieben werden soll. Als Architekt muss man Entscheidungen treffen, die auch von der Laufzeitumgebung abhängig sind. Einige Aspekte, wie zum Beispiel Konfiguration, Resilienz, Health Checks, Metriken, Request Tracing und Service Discovery besitzen eine starke Kopplung mit der Cloud-Umgebung.
Istio, das als offene Plattform auf beispielsweise Kubernetes betrieben werden kann, bietet diese Funktionalitäten. Auf der anderen Seite besitzt MicroProfile auch eine Menge von Spezifikationen, die bei der Implementierung der Cloud-native-Anwendung hilfreich sein können. Die Session startet mit einer kurzen Einführung in Istio und MicroProfile und zeigt im Anschluss, wie diese beiden Welten in einer Cloud-native-Anwendung am besten miteinander kombiniert werden können.
Monitoring von SAP mit den bisher vorhandenen Plugins beschränkte sich auf die Abfrage von CCMS-Metriken. In einem SAP-System steckt aber noch viel mehr, das sich überwachen lässt. Check_sap_health ist ein neues Plugin, welches in Perl geschrieben wurde. Es entstand in einem Projekt, bei dem von unterschiedlichen Standorten aus die Laufzeiten von BAPI-Aufrufen gemessen werden sollten. Durch die einfache Erweiterung des Plugins um selbstgeschriebene Perl-Elemente lassen sich beliebige Funktionen per RFC aufrufen und somit firmenspezifische Logik implementieren.“
Vortrag gehalten beim Workshop der Open-Source-Monitoring-Community 2014 in Berlin.
Was kann man machen, um Angular-1.x-Code auf Angular 2 vorzubereiten? Welche Möglichkeiten werden in der nächsten Zeit aufkommen, um einen Parallelbetrieb zu realisieren.
Die Flux Application Architecture - Facebooks Ansatz für Client-side Web Appl...OPEN KNOWLEDGE GmbH
Speaker: Sven Kölpin
Facebooks ReactJS ist der neue Stern am Himmel der client-seitigen JavaScript-Bibliotheken. Neben diesem innovativen Framework hat der Software-Gigant zusätzlich ein Pattern veröffentlicht, welches die Nachteile des klassischen MVC-Prinzips umgehen soll: Die Flux-Architektur. Auf Basis dieser Architektur wurden bereits Web-Anwendungen wie facebook.com und instagram.com entwickelt.
Eine Sammlung von Best Practices für Applikationen mit AngularJS. Der Vortrag stellt Strukturen und Konventionen vor, mit denen sich auch umfangreiche Applikationen wartbar und erweiterbar halten lassen.
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
Slides from my talk about early feedback during development time, flexibility for customers and security as a Must-have. It's nothing about management - it's all about C# Script and practical use.
Wertströme werden bisher häufig analog in Papierform oder rein statisch, basierend auf Momentaufnahmen und aggregierten Durchschnittswerten dokumentiert und analysiert.
Die Ringvorlesung "Informatik in der Praxis: Wirtschaft und Industrie" 2012 bringt die regionale IT-Wirtschaft mit Masterstudenten der Informatik und Wirtschaftsinformatik durch Zusammenarbeit in konkreten Praxisprojekten direkt zusammen. Das Community Management ITmitte.de organisiert diese Veranstaltung und begleitet sie kommunikativ.
Lassen Sie sich empfehlen zu über 100 IT, Informatik, Software - Jobs, Stellen, Praktika, Ausbildungen in Leipzig, Halle, Jena, Bitterfeld-Wolfen, Leuna, Zeitz, Gera, Zwickau, Plauen, Erfurt und Magdeburg.
Die Inhalte einer Webseite dürfen bei einem Wechsel auf einen anderes CMS nicht einfach verloren gehen. Da jedes CMS seine Daten etwas anders speichert ist Daten-Migration aber eine oft komplexe und aufwändige Aufgabe. Der Vortrag berichtet von einer konkreten Migration von Typo3 zu Plone, bei der Inhalte mittels Transmogrifier automatisch transferiert und angepasst wurden.
Folien zu unserem Vortrag beim Java Forum Stuttgart 2014
Besuchen Sie uns unter http://www.thecodecampus.de
Müssen Sie auch noch alte servergetriebene Java-Webanwendungen weiterentwickeln und wollen Ihre Kunden dabei den Genuss der Usability moderner Webseiten bieten?
In unserem Talk beim JavaForum Stuttgart 2014 haben wir anhand von Codebeispielen und Erfahrungsberichten gezeigt wie man schrittweise AngularJS in bestehende Anwendungen integriert. Dieser agile Ansatz liefert schnelle Ergebnisse und reduziert die Kosten und Risiken im Vergleich zu einer kompletten Umstellung.
This document discusses connecting the issue tracking software Jira to Oracle Application Express (APEX) by utilizing Jira's REST web services and JSON formatting. It covers motivating the need to integrate the tools, an overview of Jira features, using REST and JSON to retrieve and parse Jira issue data, and demonstrations of consuming the web services in APEX including using collections to cache responses.
The document describes implementing a high availability APEX environment using Oracle RAC and ACFS. Key aspects included using RAC to secure the database across multiple nodes, running APEX within a container database to isolate environments, and leveraging ACFS for shared storage of static files to allow load balancing across web servers on different nodes. The new environment provides high availability, high performance, and is dedicated solely for APEX.
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Michael Hofmann
Die Entwicklung einer Cloud-native-Anwendung ist nur eine Seite der Medaille, die andere Seite ist die Cloud-Umgebung, in der die Anwendung betrieben werden soll. Als Architekt muss man Entscheidungen treffen, die auch von der Laufzeitumgebung abhängig sind. Einige Aspekte, wie zum Beispiel Konfiguration, Resilienz, Health Checks, Metriken, Request Tracing und Service Discovery besitzen eine starke Kopplung mit der Cloud-Umgebung.
Istio, das als offene Plattform auf beispielsweise Kubernetes betrieben werden kann, bietet diese Funktionalitäten. Auf der anderen Seite besitzt MicroProfile auch eine Menge von Spezifikationen, die bei der Implementierung der Cloud-native-Anwendung hilfreich sein können. Die Session startet mit einer kurzen Einführung in Istio und MicroProfile und zeigt im Anschluss, wie diese beiden Welten in einer Cloud-native-Anwendung am besten miteinander kombiniert werden können.
Monitoring von SAP mit den bisher vorhandenen Plugins beschränkte sich auf die Abfrage von CCMS-Metriken. In einem SAP-System steckt aber noch viel mehr, das sich überwachen lässt. Check_sap_health ist ein neues Plugin, welches in Perl geschrieben wurde. Es entstand in einem Projekt, bei dem von unterschiedlichen Standorten aus die Laufzeiten von BAPI-Aufrufen gemessen werden sollten. Durch die einfache Erweiterung des Plugins um selbstgeschriebene Perl-Elemente lassen sich beliebige Funktionen per RFC aufrufen und somit firmenspezifische Logik implementieren.“
Vortrag gehalten beim Workshop der Open-Source-Monitoring-Community 2014 in Berlin.
Was kann man machen, um Angular-1.x-Code auf Angular 2 vorzubereiten? Welche Möglichkeiten werden in der nächsten Zeit aufkommen, um einen Parallelbetrieb zu realisieren.
Die Flux Application Architecture - Facebooks Ansatz für Client-side Web Appl...OPEN KNOWLEDGE GmbH
Speaker: Sven Kölpin
Facebooks ReactJS ist der neue Stern am Himmel der client-seitigen JavaScript-Bibliotheken. Neben diesem innovativen Framework hat der Software-Gigant zusätzlich ein Pattern veröffentlicht, welches die Nachteile des klassischen MVC-Prinzips umgehen soll: Die Flux-Architektur. Auf Basis dieser Architektur wurden bereits Web-Anwendungen wie facebook.com und instagram.com entwickelt.
Eine Sammlung von Best Practices für Applikationen mit AngularJS. Der Vortrag stellt Strukturen und Konventionen vor, mit denen sich auch umfangreiche Applikationen wartbar und erweiterbar halten lassen.
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
Slides from my talk about early feedback during development time, flexibility for customers and security as a Must-have. It's nothing about management - it's all about C# Script and practical use.
Wertströme werden bisher häufig analog in Papierform oder rein statisch, basierend auf Momentaufnahmen und aggregierten Durchschnittswerten dokumentiert und analysiert.
Die Ringvorlesung "Informatik in der Praxis: Wirtschaft und Industrie" 2012 bringt die regionale IT-Wirtschaft mit Masterstudenten der Informatik und Wirtschaftsinformatik durch Zusammenarbeit in konkreten Praxisprojekten direkt zusammen. Das Community Management ITmitte.de organisiert diese Veranstaltung und begleitet sie kommunikativ.
Lassen Sie sich empfehlen zu über 100 IT, Informatik, Software - Jobs, Stellen, Praktika, Ausbildungen in Leipzig, Halle, Jena, Bitterfeld-Wolfen, Leuna, Zeitz, Gera, Zwickau, Plauen, Erfurt und Magdeburg.
Die Inhalte einer Webseite dürfen bei einem Wechsel auf einen anderes CMS nicht einfach verloren gehen. Da jedes CMS seine Daten etwas anders speichert ist Daten-Migration aber eine oft komplexe und aufwändige Aufgabe. Der Vortrag berichtet von einer konkreten Migration von Typo3 zu Plone, bei der Inhalte mittels Transmogrifier automatisch transferiert und angepasst wurden.
Folien zu unserem Vortrag beim Java Forum Stuttgart 2014
Besuchen Sie uns unter http://www.thecodecampus.de
Müssen Sie auch noch alte servergetriebene Java-Webanwendungen weiterentwickeln und wollen Ihre Kunden dabei den Genuss der Usability moderner Webseiten bieten?
In unserem Talk beim JavaForum Stuttgart 2014 haben wir anhand von Codebeispielen und Erfahrungsberichten gezeigt wie man schrittweise AngularJS in bestehende Anwendungen integriert. Dieser agile Ansatz liefert schnelle Ergebnisse und reduziert die Kosten und Risiken im Vergleich zu einer kompletten Umstellung.
This document discusses connecting the issue tracking software Jira to Oracle Application Express (APEX) by utilizing Jira's REST web services and JSON formatting. It covers motivating the need to integrate the tools, an overview of Jira features, using REST and JSON to retrieve and parse Jira issue data, and demonstrations of consuming the web services in APEX including using collections to cache responses.
The document describes implementing a high availability APEX environment using Oracle RAC and ACFS. Key aspects included using RAC to secure the database across multiple nodes, running APEX within a container database to isolate environments, and leveraging ACFS for shared storage of static files to allow load balancing across web servers on different nodes. The new environment provides high availability, high performance, and is dedicated solely for APEX.
Single Sign-On (SSO) is not an optional feature for APEX applications according to the speaker. The document discusses how SSO using Kerberos works by having APEX applications authenticate users through Active Directory without passing credentials to the database. Some caveats are mentioned such as how to handle users not in AD. Additional information resources are provided to learn more about Kerberos, mod_auth_kerb, and other SSO options.
2. |
Grundidee
Use Case: Ein Kunde will an einer Konferenz teilnehmen. Zur Teilnahme wird ein
Ticket benötigt.
- Hierfür füllt er ein Formular in einer APEX Anwendung aus.
- Sobald er die Bestellung abgeschickt hat, bekommt er direkt sein individuelles
Ticket zum Download angeboten (finanzielle Transaktionen wurden der zur
Vereinfachung nicht berücksichtigt).
- Es wird nur eine Wordvorlage erstellt. Die einzelnen Tickets sollen automatisch
ausgefüllt werden.
Mtdoxx Webservice in APEX2
Über den Webservice-Aufruf die Formulardaten übergeben und direkt das ausgefüllte Dokument erhalten
4. |
Architektur
Der User schickt das Formular ab
„on submit“ wird ein Application
Process ausgelöst
- Hier wird der Prozess in der
Datenbank aufgerufen
Eine SOAP Envelope und die
benötigte XML werden dynamisch
erstellt und an den Webservice
gesendet.
- Im Application Process wird die
Rückgabe nun in der DB hinterlegt
Mtdoxx Webservice in APEX4
5. |
Quellcode: Beispiele (vereinfacht)
g_ws_url varchar2(500) := 'http://URL/Webservice/Service.svc?singleWsdl';
--Aufteilung der SOAP Envelope in mehrere Teile, da die base64 Dateien zu groß für replace sind
g_env_t1 CLOB:= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GenerateDocument>
<!--Optional:-->
<tem:xmlDataInput>'; g_env_t2 CLOB:= '</tem:xmlDataInput>
<!--Optional:--> <tem:masterTemplate>'; g_env_t3 CLOB:= '</tem:masterTemplate>
<!--Optional:--> <tem:createPdf>false</tem:createPdf>
</tem:GenerateDocument>
</soapenv:Body>
</soapenv:Envelope>';
--XML-Data-Input
g_xml CLOB := '<?xml version="1.0" encoding="iso-8859-1"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:values>
<DATA_TABLE>
<item>
<MV_ALLG>
<Adresszeile1>#VORNAME# #NACHNAME#</Adresszeile1>
--Weitere XML tags
</MV_ALLG>
</item>
</DATA_TABLE>
</asx:values>
</asx:abap> ';
Mtdoxx Webservice in APEX5
Webservice Aufruf: SOAP Envelope und XML
6. |
Quellcode: Beispiele (vereinfacht)
function create_xml( p_vorname in VARCHAR2,
--weitere Input Parameter )
return CLOB
is value_xml CLOB;
l_anrede VARCHAR2(20);
--Weitere variablen
begin
value_xml:= g_xml;
--Werte über das Event aus DB laden
SELECT ticketpreis INTO l_ticketpreis FROM mtdoxx_ticketpklasse WHERE klassenid=p_ticketpklasse;
--...
--Werte einsetzen
value_xml := replace(value_xml, '#VORNAME#', p_vorname);
value_xml := replace(value_xml, '#NACHNAME#', p_nachname);
--...
return value_xml;
end create_xml;
Mtdoxx Webservice in APEX6
Webservice Aufruf: Funktion create_xml
7. |
Quellcode: Beispiele (vereinfacht)
function create_document(p_xml_data_input in CLOB, p_master_template in CLOB) return CLOB is
l_soap_env CLOB;
xml_base CLOB;
l_value_xml CLOB;
l_soap_response xmltype;
g_env_getstring CLOB;
begin
g_env_getstring := g_env_t1||p_xml_data_input||g_env_t2||p_master_template||g_env_t3;
l_soap_env := g_env_getstring;
l_soap_response := apex_web_service.make_request( p_url => g_ws_url, p_action => 'http://tempuri.org/IService/GenerateDocument',
p_envelope => l_soap_env );
l_value_xml := apex_web_service.parse_xml_clob( p_xml => l_soap_response,
p_xpath => '//soap:GenerateDocumentResult/text()',
p_ns => 'xmlns:soap="http://tempuri.org/"' );
return l_value_xml;
end create_document;
Mtdoxx Webservice in APEX7
Webservice Aufruf: Funktion create_document
8. |
Vorteile bei der Nutzung von Mtdoxx (als Webservice)
Einfaches Setup
Flexibel erweiterbar
Skalierbar
Einfache Massengenerierung – Optimale Performance
Schnelle Template-Erstellung direkt in Word
Anpassungen am Template werden direkt ohne aufwendige Programmierung
wirksam (teilweise XML Anpassung nötig)
8
10. |
Quellcode: Beispiele (vereinfacht)
Mtdoxx Webservice in APEX10
Application Process
DECLARE
xml_input_clob CLOB;
xml_input_blob BLOB;
xml_base_clob CLOB;
mt_file BLOB;
mt_base_clob CLOB;
doc_clob CLOB;
doc_result BLOB;
BEGIN SELECT mastertemplate into mt_file FROM mtdoxxmastertemplate;--Mastertemplate wird als BLOB aus der DB abgerufen. mt_base_clob:=
utl_base64.encode_base64(p_blob_in => mt_file);--Das Mastertemplate wird in das base64 Format codiert und als CLOB gespeichert
xml_input_clob:= ws_create_document_package.create_xml(--Aufruf des Prozesses, der die XML erstellt. Rückgabe erfolgt hier als CLOB
p_vorname => :P8_VORNAME,
p_nachname => :P8_NACHNAME,
--…
);
xml_input_blob:= WS_CREATE_DOCUMENT_PACKAGE.convert_toblob(xml_input_clob);--CLOB wird zu BLOB konvertiert
xml_base_clob:= utl_base64.encode_base64(p_blob_in => xml_input_blob);--XML wird als base64 codiert
doc_clob:= ws_create_document_package.create_document(xml_base_clob, mt_base_clob);--Das Mastertemplate und die XML werden codiert an
den Prozess zum Aufruf des Webservices übergeben
doc_result:= utl_base64.decode_base64(p_clob_in => doc_clob);--Das Ergebnis wird wieder decodiert
UPDATE TAB_DATEIEN--Das decodierte, ausgefüllte Dokument wird in einer Tabelle gespeichert, in der es für die Ausgabe in der Anwendung
bereitliegt
SET DATEIINHALT = doc_result
WHERE ID=1;
END;