Plugins mit ADITO AID 004 DE

Ähnliche Dokumente
JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Einstieg in die Informatik mit Java

Variablen manipulieren per JDI

Javakurs zu Informatik I. Henning Heitkötter

Das Build Tool Ant. Sebastian Mancke,

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Reflection. Arthur Zaczek. Nov 2014

3 Objektorientierte Konzepte in Java

Handbuch für die Erweiterbarkeit

Programmieren in Java

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Java für C++ Programmierer

Asynchrone Webservices mit Axis 1.x in Java

Einführung in Javadoc

Programmieren in Java

Distributed Computing Group

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Beispiel: DB-Mock (1/7)

Programmieren I. Dokumentation mit Javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Software Engineering II

Software Engineering Klassendiagramme Einführung

II.1.1. Erste Schritte - 1 -

Grundlagen von Python

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Software Engineering II

Eclipse 3.0 (Windows)

Probeklausur: Programmierung WS04/05

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Remote Method Invocation

Einführung in die Programmierung

Tutorium Java Ein Überblick. Helge Janicke

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Java-Schulung Grundlagen

Objektorientierte Programmierung

Auszug aus Axis2 Übungen

Konstruktoren, Packages und Scopes

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

3 Objektorientierte Konzepte in Java

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Java Einführung Methoden. Kapitel 6

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Java: Vererbung. Teil 3: super()

Ogre Einführung Teil 1

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Einführung in die. objektorientierte Programmierung

Themen. Web Service - Clients. Kommunikation zw. Web Services

Schritt 4: Hallo Enterprise Bean

Probeklausur: Programmierung WS04/05

WebService in Java SE und EE

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

PIWIN 1 Übung Blatt 5

Installation und Benutzung AD.NAV.ZipTools

1 Polymorphie (Vielgestaltigkeit)

Vorlesung Informatik II

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz von Web Services:

Java Einführung Collections

Eclipse 3.0 (Mac) 1. Eclipse installieren. 2. Welcome Projekt schliessen

TimeSafe Leistungserfassung

GameGrid mit BlueJ Seite 1

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse

Testen mit JUnit. Motivation

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli MySQL-Job-Automation

Anzeige des Java Error Stack in Oracle Forms

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

SQL. Run. SQL Run - Handbuch. as Mika GmbH. it solutions for your system i

Java - Webapplikationen

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Java - Programmierung - Objektorientierte Programmierung 1

Vorkurs Informatik WiSe 15/16

JAVA KURS COLLECTION

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Programmieren in Java

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Programmentwicklung ohne BlueJ

Einführung in die Java- Programmierung

Einführung in die Programmierung Blockkurs Java

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

DOKUMENTATION. CaptchaAd mit Java. Die Schritte zur Integration des CaptchaAd-Modul im Einzelnen

Datenbank und Informationssysteme

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

Kurzanleitung zu XML2DB

Software Engineering I

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Große Übung Praktische Informatik 1

SAP Business One Adapter

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Einführung Klassendefinitionen

Transkript:

Plugins mit ADITO AID 004 DE

2016 ADITO Software GmbH Diese Unterlagen wurden mit größtmöglicher Sorgfalt hergestellt. Dennoch kann für Fehler in den Beschreibungen und Erklärungen keine Haftung übernommen werden. Wir sind für Feedback zu den Themen, Inhalten, aber auch noch vorhandenen Fehlern dankbar und würden uns freuen, Ihre Meinung zu hören. Die in diesen Unterlagen enthaltenen Daten und Angaben, einschließlich URLs und anderer Verweise können ohne vorherige Ankündigung geändert werden. Alle in diesen Unterlagen aufgeführten Produkt- und Firmennamen sind unter Umständen Marken oder geschützte Zeichen der einzelnen Firmen. Ohne ausdrückliche schriftliche Einverständniserklärung der ADITO Software GmbH darf kein Teil dieses Dokumentes vervielfältigt oder in einer Datenverarbeitungsanlage gespeichert oder in diese eingelesen werden. Diese Einschränkung gilt unabhängig von Art und Weise der Datenerfassung. Autor: FA, MN, MW, KN, JK. Version 10.2. Zuletzt geändert 31.08.2017 Version Änderungen 10.2 PlugIn-Toolkit (Plugin-spi) jetzt über Maven Central zugänglich 10.1 Anpassung der Formatierungen 10.0 Anpassung an ADITO4.6 2.1 Ablagepfade der Plugins hinzugefügt 2.0 Letzter Stand vor Übernahme in Versionierung 2

Inhaltsverzeichnis 1. Voraussetzungen... 4 1.1. Java Software Development Kit... 4 1.2. Editor oder IDE... 4 1.3. ADITO PlugIn-Toolkit... 4 2. ADITO4 PlugIns... 5 2.1. Server-PlugIns... 5 2.2. Client-PlugIns... 5 3. PlugIns schreiben... 6 3.1. Server-PlugIns... 6 3.2. Client-PlugIns... 8 4. PlugIns aufrufen... 11 4.1. Server-PlugIns... 11 4.2. Client-PlugIns... 11 5. Zugriff auf weitere Methoden der PluginFacade... 13 5.1. Logging... 13 5.2. Datenbankzugriff... 15 5.3. Aufruf von JDito-Prozessen... 18 6. Webservice Plugins... 21 3

1. Voraussetzungen 1.1. Java Software Development Kit Um PlugIns für ADITO4 schreiben zu können, müssen Sie das Java SDK in der von ADITO freigegebenen Version installiert haben. Welche Version von Java für ADITO4 frei gegeben wurde, steht im ADITO4 Informationsdokument AID017-DE - ADITO Technikbroschüre. 1.2. Editor oder IDE Zum Schreiben des Quellcodes benötigen Sie einen Text-Editor. Programmieren Sie öfter mit Java, können Sie natürlich eine entsprechende Entwicklungsumgebung (Eclipse, NetBeans, IntelliJ, o.ä.) verwenden. 1.3. ADITO PlugIn-Toolkit Das ADITO PlugIn-Toolkit besteht aus den beiden Klassen AbstractClientPlugin und AbstractPlugin, die Ihre Plugins erweitern müssen. Das ADITO PlugIn-Toolkit (Plugin-spi) ist auf der Maven Central öffentlich mit folgenden Koordinaten zugänglich: <groupid>de.adito.aditoweb</groupid> <artifactid>plugin-spi</artifactid> <version>1.0.0</version> Außerdem benötigen Sie zum Entwickeln von ADITO PlugIns die Bibliothek serversplash.jar für Server-PlugIns und die Bibliothek client.jar für Client- PlugIns. Diese beiden Bibliotheken finden Sie im Verzeichnis lib/server bzw. lib/client Ihrer ADITO4 Distribution. Sie enthalten die PluginFacade und die ClientPluginFacade, deren Methoden Sie im PlugIn nutzen können. 4

2. ADITO4 PlugIns 2.1. Server-PlugIns Server-PlugIns werden am Server ausgeführt. Damit unterliegen sie gewissen Beschränkungen. So können Server-PlugIns auch nur auf das Dateisystem am Server zugreifen. 2.2. Client-PlugIns Client-PlugIns werden am Client ausgeführt. Das impliziert, dass die Jar-Datei, die das PlugIn enthält und weitere benötigte Bibliotheken und Ressourcen, auf jedem Client, auf dem das PlugIn ausgeführt werden soll, vorhanden sein müssen. 5

3. PlugIns schreiben 3.1. Server-PlugIns Ihr Server-PlugIn besteht im Wesentlichen aus einer Java-Klasse, die AbstractPlugin erweitert. In dieser Klasse müssen Sie die beiden Methoden getdescription und execute von AbstractPlugin überladen. Die Signaturen dieser beiden Methoden lauten wie folgt: public String getdescription() public Object[] execute(object[] pparameters, IPluginFacade ppluginfacade) throws PluginException Das Ergebnis der Methode getdescription wird im Serverlog mit angezeigt, wenn beim Initialisieren, Laden oder Ausführen des PlugIns ein Fehler aufgetreten ist, der nicht abgefangen wurde. Damit kann das PlugIn identifiziert werden. In der Methode execute können Sie weitere Klassen und Bibliotheken aufrufen. Außerdem haben Sie in dieser Methode Zugriff auf das Logging-Backend und die DB-Schicht und können die Methoden log, dodbrequest und runjditoprocess der PluginFacade nutzen (siehe unten). Beispiel package de.adito.plugin; import de.adito.aditoweb.common.jdito.plugin.*; import de.adito.aditoweb.common.jdito.plugin.impl.abstractplugin; /** * Demo-Plugin * * @author ADITO Software GmbH, 2007 */ public class DemoPlugin extends AbstractPlugin static 6

System.out.println("*************************"); System.out.println("*************************"); System.out.println("*************************"); System.out.println("*PlugIn zur Demonstration der PlugIn- Funktionalität*"); System.out.println("*************************"); System.out.println("*************************"); System.out.println("*************************"); public String getdescription() return "DemoPlugin: PlugIn zur Demonstration der PlugIn- Funktionalität"; public Object[] execute(object[] pparameters, IPluginFacade ppluginfacade) try throws PluginException // Ergebnis der Methode zurückliefern return new String[]"Ergebnis des PlugIns: " + pparameters[0].tostring(); catch (Exception ex) Der static-teil des PlugIns wird beim Laden des PlugIns im Serverlog angezeigt. Ist ein PlugIn einmal im Server geladen, kann ein erneutes Laden des PlugIns nur durch Neustart des Servers erzwungen werden! 7

Haben Sie den Quellcode Ihres PlugIns erstellt, übersetzen Sie den Quellcode mit dem Java- Compiler in eine Class-Datei. Diese packen Sie dann zusammen mit der Klasse AbstractPlugin in eine Jar-Datei. Diese Jar-Datei legen Sie im Ordner lib\server\plugin in Ihre ADITO4 Distribution ab. Bitte achten Sie darauf, dass die Klasse AbstractPlugin in der Jar-Datei im Pfad de/adito/aditoweb/common/jdito/plugin/impl liegt. Dieser Pfad spiegelt die Package- Struktur wider und darf nicht verändert werden. Damit ist ihr PlugIn einsatzfähig. Die Klasse AbstractPlugin muss in der Jar-Datei mitgepackt werden. Dadurch kann der ADITO Server beim Laden des PlugIns überprüfen, ob dieses noch versionskompatibel ist. Nutzen Sie in Ihrem PlugIn externe Bibliotheken, die auch bereits in der ADITO4-Distribution enthalten sind, müssen diese Bibliotheken in der von ADITO mitgelieferten Version verwendet werden. Die Verwendung anderer Versionen dieser Bibliotheken ist nicht möglich! Weitere zusätzlich verwendete Bibliotheken müssen in den Klassenpfad aufgenommen werden. 3.2. Client-PlugIns Ihr Client-PlugIn besteht im Wesentlichen aus einer Java-Klasse, die AbstractClientPlugin erweitert. In dieser Klasse müssen Sie die beiden Methoden getdescription und execute von AbstractClientPlugin überladen. Die Signaturen dieser beiden Methoden lauten wie folgt: public String getdescription() public String[] execute(string[] pparameters, IClientPluginFacade ppluginfacade) throws PluginException Das Ergebnis der Methode getdescription wird im Clientlog mit angezeigt, wenn beim Initialisieren, Laden oder Ausführen des PlugIns ein Fehler aufgetreten ist, der nicht abgefangen wurde. Damit kann das PlugIn identifiziert werden. In der Methode execute können Sie weitere Klassen und Bibliotheken aufrufen. Außerdem haben Sie in dieser Methode Zugriff auf das Logging-Backend und können die Log-Methoden der ClientPluginFacade nutzen (siehe unten). Beispiel package de.adito.plugin; import de.adito.aditoweb.common.jdito.plugin.*; import de.adito.aditoweb.common.jdito.plugin.impl.abstractclientplugin; 8

/** * Demo-Clientplugin * * @author ADITO Software GmbH, 2007 */ public class DemoClientPlugin extends AbstractClientPlugin static System.out.println("*********************************"); System.out.println("*********************************"); System.out.println("*********************************"); System.out.println("*Client-PlugIn zur Demonstration der PlugIn- Funktionalität*"); System.out.println("*********************************"); System.out.println("*********************************"); System.out.println("*********************************"); public String getdescription() return "DemoClientPlugin: Client-PlugIn zur Demonstration der PlugIn-Funktionalität"; public String[] execute(string[] pparameters, IClientPluginFacade ppluginfacade) throws PluginException try return new String[]"Ergebnis des Client-PlugIns: " + pparameters[0].tostring(); 9

catch (Exception ex) return new String[]"Client-PlugIn: No Message"; Der static-teil des PlugIns wird beim Laden des PlugIns im Clientlog angezeigt. Ist ein PlugIn einmal im Client geladen, kann ein erneutes Laden des PlugIns nur durch Neustart des Clients erzwungen werden! Haben Sie den Quellcode Ihres PlugIns erstellt, übersetzen Sie den Quellcode mit dem Java- Compiler in eine Class-Datei. Diese packen Sie dann zusammen mit der Klasse AbstractClientPlugin in eine Jar-Datei. Bitte achten Sie darauf, dass die Klasse AbstractClientPlugin in der Jar-Datei im Pfad de/adito/aditoweb/common/jdito/plugin/impl liegt. Dieser Pfad spiegelt die Package- Struktur wider und darf nicht verändert werden. Damit ist ihr PlugIn einsatzfähig. Die Klasse AbstractClientPlugin muss in der Jar-Datei mitgepackt werden. Dadurch kann der ADITO Server beim Laden des PlugIns überprüfen, ob dieses noch versionskompatibel ist. Die erstellte Jar-Datei legen Sie in den Ordner lib\client\plugin in Ihre ADITO4 Distribution. Nutzen Sie in Ihrem PlugIn externe Bibliotheken, die auch bereits in der ADITO4-Distribution enthalten sind, müssen diese Bibliotheken in der von ADITO mitgelieferten Version verwendet werden. Die Verwendung anderer Versionen dieser Bibliotheken ist nicht möglich! Client-PlugIns, die über Java Webstart verteilt werden sollen, müssen signiert werden. Das kann entweder mit einem Zertifikat geschehen, das Ihr Unternehmen bereits im Einsatz hat oder auch mit einem selbst erstellten Zertifikat. Weitere Informationen zum Signieren von Jar-Dateien finden Sie in den unter "Verweise, Literatur, Links" angegebenen Quellen. Da eine JNLP-Datei immer nur Jar-Dateien enthalten darf, die alle mit dem gleichen Zertifikat signiert wurden, brauchen Sie für Ihr PlugIn eine zweite JNLP-Datei, die Sie als Extension einbinden. Auch hierzu finden Sie Informationen in der Java WebStart-Dokumentation, die unter "Verweise, Literatur, Links" aufgelistet ist. Weitere zusätzlich verwendete Bibliotheken müssen in den Klassenpfad (und damit ggf. in die JNLP-Datei) aufgenommen werden. 10

4. PlugIns aufrufen 4.1. Server-PlugIns Server-PlugIns rufen Sie aus JDito mit der Methode run des Moduls plugin auf. Object[] run(string jarurl, String classname, Object[] arguments); jarurl URL des Plugin-Jar-Files, kann null sein, wenn das Jar-File bereits im Klassenpfad enthalten ist. Die Aufnahme des PlugIns in den Klassenpfad ist der bevorzugte Weg. Die direkte Angabe beim Aufruf des PlugIns funktioniert z.b. unter Linux nicht. classname Der vollständige Klassenname des PlugIns. arguments Kommandozeilenparameter für das PlugIn als String-Array. return Die vom Plugin zurückgegebenen Ergebnisse. throws PluginException bei Fehlern. Code-Beispiel: // run the plugin contained in testplugin.jar var ret = plugin.run("file:///c:/plugin/testplugin.jar", "de.adito.aditoweb.plugin.test.testplugin", new Array("arg1", "arg2", "arg3") ); // display the number of array elements returned question.showmessage(liste.length); 4.2. Client-PlugIns Client-PlugIns rufen Sie aus JDito mit der Methode swing.doclientintermediate mit der Option CLIENTCMD_RUNPLUGIN auf: Object doclientintermediate(int type, String[] details); type Der Typ des Client-Kommandos, hier: CLIENTCMD_RUNPLUGIN. 11

details details[0]: Pfad zum PlugIn-Jar am Client, optional, ist die PlugIn-Klasse im Klassenpfad enthalten kann hier null übergeben werden. details[1]: Der vollständige Klassenname des PlugIns. details[2] details[x]: Parameter für das PlugIn. return Die Ergebnisse des PlugIns als String[]. throws PluginException bei Fehlern. Code-Beispiel: // run the plugin contained in testplugin.jar var details = new Array(); details[0] = "c:/plugin/testplugin.jar"; details[1] = "de.adito.aditoweb.plugin.test.testplugin"; details[2] = "arg1"; details[3] = "arg2"; var liste = swing.doclientintermediate(swing.clientcmd_runplugin, details); // display the number of array elements returned question.showmessage(liste.length); 12

5. Zugriff auf weitere Methoden der PluginFacade In der Methode execute des PlugIns wird eine Instanz der PluginFacade als Parameter übergeben. 5.1. Logging Auf der PluginFacade-Instanz können Sie drei Methoden zum Loggen von Informationen in die Log-Dateien von Server und Client aufrufen. Diese Methode existiert mit folgenden Signaturen: log(throwable pexception, int pid, Object pdetails, boolean pshowdialog) log(throwable pexception, Object pdetails, boolean pshowdialog) log(object pdetails, boolean pshowdialog) pexception Das Exception-Objekt, das geloggt werden soll. pid Die ID der Log-Meldung. Die Übergabe einer ID mit dem Parameter pid wird derzeit in der PlugIn-Schnittstelle nicht ausgewertet. Benutzen Sie daher immer die Methoden mit zwei oder drei Parametern! pdetails Ein Object mit den Details für die Log-Meldung. Für die Ausgabe wird die Funktion tostring aufgerufen. Hier kann auch ein Object-Array übergeben werden. Ist dies der Fall wird für die Ausgabe die Methode tostring auf alle Elemente des Arrays aufgerufen. Werden keine Details angegeben, kann hier null übergeben werden. pshowdialog true oder false, gibt an, ob eine Fehlermeldung am Client angezeigt werden soll oder nicht. Wird am Client eine Fehlermeldung angezeigt werden die in pdetails übergebenen Informationen in der Detailansicht der Fehlermeldung angezeigt. Der Zugriff auf diese Logging-Methoden ist sowohl über die Server- als auch über die Client- PluginFacade möglich. Der Eintrag erfolgt je nach Art des PlugIns in die Server-Logdatei oder in die Client-Logdatei. Die Log-Meldungen der PlugIn-Schnittstelle werden in den Log-Dateien auf dem Log-Level 'R' geloggt. 13

Beispiel 1 PlugIn-Code: public class DemoPlugin extends AbstractPlugin public Object[] execute(object[] pparameters, IPluginFacade ppluginfacade) try throws PluginException throw new Exception("Exception-Message"); catch (Exception ex) // Logging ppluginfacade.log(ex, new String[]"Detail1", "Detail2", "Detail3", true); return new String[]"Exception"; Ergebnis: Z-00-N-0011-S Ursprüngliche Java-Exception die den Fehler auslöpste. [ID 1] [->] Exception: java.lang.exception [->] Message: Exception-Message J-39-R-0000-S Fehler im Plugin [->] Detail1 [->] Detail2 [->] Detail3 14

Beispiel 2 ppluginfacade.log(ex, "Detail", true); Beispiel 3 ppluginfacade.log("detail", true); Beispiel 4 ppluginfacade.log(new String[]"Detail1", "Detail2", "Detail3", true); 5.2. Datenbankzugriff Der Datenbankzugriff über PlugIns ist nur mit Server-PlugIns möglich! Hierfür steht Ihnen die Methode dodbrequest der PluginFacade mit folgender Signatur zur Verfügung: ArrayList dodbrequest(string palias, String[] psqlstatements, int pstart, int pcount, boolean pgetmetadata, boolean pwithlobcontent, boolean pwithrowcount) palias Der DB-Alias, auf dem die Statements ausgeführt werden sollen. psqlstatements Die auszuführenden Statements als String-Array. pstart Für ein Select-Statement. Der Datensatz, ab dem Datensätze zurückgegeben werden sollen. pcount In Verbindung mit pstart. Die Anzahl Datensätze, die zurückgegeben werden soll. Hier kann das Feld DBREQUEST_EOF genutzt werden. Dies steht für alle Datensätze. 15

pgetmetadata Geben Sie hier immer false an. Die ermittelten Informationen sind im Moment im PlugIn nicht lesbar! pwithlobcontent Geben Sie hier immer false an. Derzeit wird im PlugIn sonst nur ein BlobHandler- /ClobHandler-Objekt zurückgegeben, mit dem Sie nicht weiterarbeiten können! pwithrowcount Geben Sie hier immer false an. Derzeit können Sie mit diesem Parameter nichts anfangen! return Das Ergebnis des letzten Statements aus psqlstatements. Bei einem Select-Statement wird als Ergebnis das RecordSet als ArrayList (mit Object[] für jede Zeile) zurückgegeben. Bei Update-, Insert- und Delete-Statements wird die Zahl der betroffenen Datensätze zurückgeliefert. Bei Fehlern wird eine PluginException geworfen. Beispiel PlugIn-Code: package de.adito.plugin; import java.util.arraylist; /** * Demo-Plugin * * @author ADITO Software GmbH, 2007 */ public class DemoPlugin extends AbstractPlugin public Object[] execute(object[] pparameters, IPluginFacade ppluginfacade) 16

try throws PluginException // DB-Zugriff String[] stmts = new String[2]; stmts[0] = "select count(*) from org"; stmts[1] = "select orgid, orgname from org where orgid < 1010"; ArrayList ergebnis = ppluginfacade.dodbrequest("ao_daten", stmts, 0, -1, false, false, false); return ergebnis.toarray(); catch (Exception ex) PlugIn-Aufruf: // Kann null sein, wenn das Plugin im Classpath enthalten ist var url = "file:///e:/java/demoplugin/demoplugin.jar"; var klasse = "de.adito.plugin.demoplugin"; var pluginantwort = plugin.run(url, klasse, null) var string = ""; for (var i=0; i<pluginantwort.length; i++) string = string + pluginantwort[i].join(" ") + "\n"; question.showmessage(string); 17

5.3. Aufruf von JDito-Prozessen Der Aufruf von JDito-Prozessen über PlugIns ist nur mit Server-PlugIns möglich! Hierfür steht Ihnen die Methode runjditoprocess der PluginFacade mit folgender Signatur zur Verfügung: String runjditoprocess(string pprocessname, Map plocalvariables) pprocessname Der Name des JDito-Prozesses der ausgeführt werden soll. plocalvariables Eine Map (Key-Value-Paare) mit den Parametern für den JDito-Prozess. Die Keys können im JDito-Prozess über $local.<key> als lokale Variablen verwendet werden. return Der Rückgabewert des JDito-Prozesses. Wird im JDito-Prozess mit der JDito-Methode result.string o.ä. zurückgegeben. Beispiel PlugIn-Code: import java.util.hashmap; /** * Demo-Plugin * * @author ADITO Software GmbH, 2007 */ public class DemoPlugin extends AbstractPlugin 18

public Object[] execute(object[] pparameters, IPluginFacade ppluginfacade) try throws PluginException // JDito-Prozess ausführen HashMap map = new HashMap(); map.put("param1", "Wert1"); map.put("param2", "Wert2"); String ergebnis = ppluginfacade.runjditoprocess("pluginprozess", map); return new String[]ergebnis; catch (Exception ex) JDito-Prozess: var p1 = vars.getstring("$local.param1"); var p2 = vars.getstring("$local.param2"); var ergebnis = "Erster Parameter: " + p1 + ", Zweiter Parameter: " + p2; result.string(ergebnis); PlugIn-Aufruf: // Kann null sein, wenn das Plugin im Classpath enthalten ist var url = "file:///e:/java/demoplugin/demoplugin.jar"; var klasse = "de.adito.plugin.demoplugin"; 19

var pluginantwort = plugin.run(url, klasse, null); var string = pluginantwort[0]; question.showmessage(string); 20

6. Webservice Plugins Über den ADITO4 Manager ist es möglich, Server-Plugins zu erstellen (siehe 2.1), welche eine Schnittstelle zu externen Webservices herstellen. Wie Sie diese Plugins erstellen können und damit arbeiten finden Sie im ADITO-Informationsdokument AID059-DE - Webservices in ADITO. 21