präsentation webservices

15

Click here to load reader

Upload: xxtesaxx

Post on 06-Jul-2015

121 views

Category:

Education


6 download

DESCRIPTION

Webservices Vortrag. Gehalten auf dem deutschen iDempiere Community Treffen

TRANSCRIPT

Page 1: Präsentation webservices

evenos Consulting GmbH 1

Webservices in iDempiere

Jan Thielemann

Page 2: Präsentation webservices

evenos Consulting GmbH 2

Inhalt

Was sind Webservices?

Webservices in iDempiere aktivieren

ModelADService

CompositeInterface

Webservices erstellen

Webservices testen/benutzen

Konzepte zur Nutzung von Webservices in iDempiere

Page 3: Präsentation webservices

evenos Consulting GmbH 3

Was sind Webservices?

Ein Webservice oder Webdienst ist eine Softwareanwendung, die über ein Netzwerk für die direkte Maschine-zu-Maschine-

Interaktion bereitgestellt wird

Page 4: Präsentation webservices

evenos Consulting GmbH 4

Webservices in iDempiere aktivieren

Die Webservice in iDempiere sollten standardmäßig aktiviert sein. In älteren Versionen kann jedoch eine nachträgliche Aktivierung erforderlich sein. Dies kann auf zwei Arten erfolgen Felix Web Console (– http://server:8080/osgi/system/console/bundles– Bundle suchen– Bundle starten

OSGi Console– ss für Liste der Bundles– Bundle in Liste finden– start <Bundle-Nr>

Page 5: Präsentation webservices

evenos Consulting GmbH 5

ModelADService

Generischer Webservice mit verschiedenen Funktionen– setDocAction • Den Status eines Dokuments ändern• Workflows werden nicht ausgeführt!

– RunProcess• Einen Prozess starten• Prozess kann Dokument Workflow sein

– GetList• Liste der Einträge einer Referenz (Table oder List)

– CreateData• Datensätze anlegen

– UpdateData• Datensätze updaten

– DeleteData• Datensätze löschen

– ReadData• Einzelnen Datensatz anhand der RecordID auslesen

– QueryData• Datensätze anhand von Input-Feldern oder Filter finden

Es wird immer nur genau ein Aufruf ausgeführt

Validatorn und Model-Hooks bei createData, updateData und deleteData

Page 6: Präsentation webservices

evenos Consulting GmbH 6

CompositeInterfaceZusammenfassen mehrerer ModelADService-Aufrufe in einem einzigen CompositeInterface-Aufruf

Liste der Aufrufe = operations

Einzelner Aufruf = operation

Jede Operation hat ein pre- und postCommit Tag

Jede Operation hat einen TargetPort– createData– readData– updateData– deleteData– runProcess– setDocAction– createUpdateData

createData, readData, updateData, deleteData und createUpdateData benötigen <ModelCRUD>

setDocAction benötigt <ModelSetDocAction>

runProcess benötigt <ModelRunProcess>

Nicht jeder ModelADService-Aufruf funktioniert

Page 7: Präsentation webservices

evenos Consulting GmbH 7

Webservices erstellen

Hilfe unter http://www.adempiere.com/Adempiere_Web_Services

Fenster: Web Service Security

Kopfdaten– Search Key → serviceType– Web Service → ModelADService oder CompositeInterface– Web Service Method → Gewünschte Methode (create-, read- und queryData, runProcess, etc.)– Table → Optionale Tabelle des Webservices, wichtig wenn Felder ein- bzw. zurückgegeben werden sollen

Web Service Parameters– Je nach Webservice unterschiedlich– Typische Parameter:• tableName/TableName• recordID/RecordID• filter/Filter• action/Action

Web Service Access– Rollen, die diesen Webservice nutzen dürfen

Page 8: Präsentation webservices

evenos Consulting GmbH 8

Webservices erstellen

Die folgenden Tabs sind nur sichtbar, wenn in den Kopfdaten eine Tabelle ausgewählt wurde

Web Service Field Input– Hier werden Felder definiert, die per Aufruf übergeben werden (z. B. Name und Suchschlüssel bei

createData)– Spaltenname (kann aus allen Spalten der Tabelle ausgesucht werden oder Freitext)– Referenz der Spalte (String, Integer, Date, etc.)– Identifier (?)– Allow Null Value (?)– Identifier Logic (?)

Web Service Field Output– Hier werden Felder definiert, die der Webservice zurück gibt– Spaltenname (kann aus allen Spalten der Tabelle ausgesucht werden oder Freitext)

Page 9: Präsentation webservices

evenos Consulting GmbH 9

iDempiere Webservices nutzen das SOAP-Protokoll

Tool zum Testen: SoapUI (http://www.soapui.org)

Übersicht der Endpunkte unter http://myserver/ADInterface/services

ModelADService Endpunkt: http://myserver/ADInterface/services/ModelADService?wsdl

CompositeInterface Endpunkt: http://myserver/ADInterface/services/compositeInterface?wsdl

Webservices testen/benutzen

Page 10: Präsentation webservices

evenos Consulting GmbH 10

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://idempiere.org/ADInterface/1_0"> <soapenv:Header/> <soapenv:Body> <_0:setDocAction> <_0:ModelSetDocActionRequest> <_0:ModelSetDocAction> <_0:serviceType>iDempiereDocAction</_0:serviceType> <_0:tableName>C_Order</_0:tableName> <_0:recordID>1000000</_0:recordID> <_0:docAction>VO</_0:docAction> </_0:ModelSetDocAction> <_0:ADLoginRequest> <_0:user>WebService</_0:user> <_0:pass>MYPASSWORD</_0:pass> <_0:lang>191</_0:lang> <_0:ClientID>11</_0:ClientID> <_0:RoleID>50004</_0:RoleID> <_0:OrgID>11</_0:OrgID> <_0:WarehouseID>103</_0:WarehouseID> <_0:stage>0</_0:stage> </_0:ADLoginRequest> </_0:ModelSetDocActionRequest> </_0:setDocAction> </soapenv:Body></soapenv:Envelope>

Webservices testen/benutzenDocument Action

Page 11: Präsentation webservices

evenos Consulting GmbH 11

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://idempiere.org/ADInterface/1_0"> <soapenv:Header/> <soapenv:Body> <_0:getList> <_0:ModelGetListRequest> <_0:ModelGetList> <_0:serviceType>iDempiereGetList</_0:serviceType> <_0:AD_Reference_ID>148</_0:AD_Reference_ID> <_0:Filter>Name like 'Prepay%'</_0:Filter> </_0:ModelGetList> <_0:ADLoginRequest> <_0:user>WebService</_0:user> <_0:pass>MYPASSWORD</_0:pass> <_0:lang>191</_0:lang> <_0:ClientID>11</_0:ClientID> <_0:RoleID>50004</_0:RoleID> <_0:OrgID>11</_0:OrgID> <_0:WarehouseID>103</_0:WarehouseID> <_0:stage>0</_0:stage> </_0:ADLoginRequest> </_0:ModelGetListRequest> </_0:getList> </soapenv:Body></soapenv:Envelope>

Webservices testen/benutzenReferenz-Liste

Page 12: Präsentation webservices

evenos Consulting GmbH 12

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://idempiere.org/ADInterface/1_0"> <soapenv:Header/> <soapenv:Body> <_0:queryData> <_0:ModelCRUDRequest> <_0:ModelCRUD> <_0:serviceType>iDempiereQueryData</_0:serviceType> <_0:TableName>M_Product</_0:TableName> <_0:RecordID>0</_0:RecordID> <_0:Filter>name like 'Aza%'</_0:Filter> <_0:Action>Read</_0:Action> </_0:ModelCRUD> <_0:ADLoginRequest> <_0:user>WebService</_0:user> <_0:pass>MYPASSWORD</_0:pass> <_0:lang>191</_0:lang> <_0:ClientID>11</_0:ClientID> <_0:RoleID>50004</_0:RoleID> <_0:OrgID>11</_0:OrgID> <_0:WarehouseID>103</_0:WarehouseID> <_0:stage>0</_0:stage> </_0:ADLoginRequest> </_0:ModelCRUDRequest> </_0:queryData> </soapenv:Body></soapenv:Envelope>

Webservices testen/benutzenDaten Abfragen

Page 13: Präsentation webservices

evenos Consulting GmbH 13

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_0="http://idempiere.org/ADInterface/1_0"> <soapenv:Header/> <soapenv:Body> <_0:queryData> <_0:ModelCRUDRequest> <_0:ModelCRUD> <_0:serviceType>iDempiereQueryData</_0:serviceType> <_0:TableName>M_Product</_0:TableName> <_0:RecordID>0</_0:RecordID> <_0:Action>Read</_0:Action> <_0:DataRow> <_0:field column="Name" > <_0:val>Assembly Area</_0:val> <!--Hier muss der exakte Name stehen, Wildcards funktionieren nicht--> </_0:field> </_0:DataRow> </_0:ModelCRUD> <_0:ADLoginRequest> <_0:user>WebService</_0:user> <_0:pass>MYPASSWORD</_0:pass> <_0:lang>191</_0:lang> <_0:ClientID>11</_0:ClientID> <_0:RoleID>50004</_0:RoleID> <_0:OrgID>11</_0:OrgID> <_0:WarehouseID>103</_0:WarehouseID> <_0:stage>0</_0:stage> </_0:ADLoginRequest> </_0:ModelCRUDRequest> </_0:queryData> </soapenv:Body></soapenv:Envelope>

Webservices testen/benutzenDaten Abfragen

Page 14: Präsentation webservices

evenos Consulting GmbH 14

Konzepte zur Nutzung von Webservices in iDempiere

Daten direkt anlegen (ggf. mehrere Calls)– Fehler bei unterbrochener Übertragung (bei mehreren Calls)– Geeignet um einzelne Einträge zu erstellen/ändern/löschen

Daten direkt mittels Composite Webservice anlegen– Kein Fehler bei unterbrochener Übertragung– Geeignet um verschachtelte Einträge (z. B. Geschäftspartner) zu erstellen/ändern/löschen

Daten in Importtabelle schreiben– Einfaches Anlegen von Datensätzen– Ermöglicht Batch-Verarbeitung– Importprozess kann über Webservice, Scheduler oder manuell gestartet werden

Page 15: Präsentation webservices

evenos Consulting GmbH 15

Danke für eure Aufmerksamkeit

Noch Fragen? Schick mir eine Mail an [email protected]