NF1.0 WEB-Service verbessert

Aus iDempiere de
Wechseln zu:Navigation, Suche

' Feature: ' Web Services Verbesserungen

Quelle dt. Übersetzung von NF1.0_Web_Services_Improvements

Ziel: Technische

Sponsor : Trek Global

Feature- Ticket : [ http://jira.idempiere.com/browse/IDEMPIERE-460 IDEMPIERE -460 ] entwickelt von [ [ Benutzer: Dpansheriya | Deepak Pansheriya ] ]

Github Quelle : [ https://github.com/idempiere/idempiere iDempiere ] . Geben Sie für [ https://github.com/idempiere/idempiere/tree/master/org.idempiere.webservices org.idempiere.webservices ] .

Kategorie der Technik : Middle - ware [ http://en.wikipedia.org/wiki/Web_service Web - Dienstleistungen]

Verbesserungen in Kürze:

  • Hohe Dokumentenprozess
  • Führen Sie Zeit - Validierung
  • Prozess Feinabstimmung
  • iDempiere Plug- in bereit

Entwicklung in Kürze:

  • Umrechnungskurs ADempiere Web - Dienste wie iDempiere Plugin
  • Kompatibel zu Version 1.0 iDempiere
  • Von XFire zu CXF Rahmen migriert.
  • Added Composite- Methoden für singuläre Client fordert Reduzierung der Gemeinkosten von redundanten Anrufe
  • Web - Service- Plugin für generische Zugang zu jedem Modell , Prozess oder eine Aktion in iDempiere .
  • Dokumentation Inhalt und Tutorial von Deepak Pansheriya bereitgestellt
  • Wiki -Bearbeitung Unterstützung von [ [ Benutzer: Red1 | Red1 ] ] ([ [ Benutzer Diskussion : Red1 | Diskussion ] ] )

Contribution Accreditation

  • Erster Prototyp 3E aus Polen im Jahr 2007
  • Das neue Web Services -Fenster ( Ruiz )
    • Suche Key ( Ruiz )
    • Web Service ( Ruiz )
    • Web Service -Methode ( Ruiz )

Tabelle ** ( Ruiz )

  • Web -Service-Parameter ( Ruiz )
  • Web-Service- Feld Input ( Ruiz )

DB ** Column Name ( Pansheriya )

    • Referenz ( Pansheriya )
    • Identifier ( Pansheriya )

Erlauben ** Nullwert ( Pansheriya )

    • Identifier Logik ( Pansheriya )
  • Web-Service- Feld Output ( Ruiz )
    • Web Service Access ( Ruiz )
  • Code schreiben ( HengSin )
  • Web -Ressource

http://www.adempiere.com/Adempiere_Web_Services ** ( Ruiz ) http://www.adempiere.com/Adempiere_Web_Services_Security ** ( Ruiz )

Die neue Web Services-Fenster

  1. Aufgrund der vielen bereits erwähnten Beiträge, unsere Web - sind unsere Dienstleistungen in iDempiere

viel weiter fortgeschritten im Master-Detail- Layout mit High-Power- Betriebsführung.

  1. Wir werden durch das neue Feature-Request von der Spitze zu gehen. Unten ist das Hauptfenster und Tabs .

First Look.png

  1. Das wird aus dem Hauptmenü , indem Sie auf ins Leben gerufen " Web Services Security ' .
  2. Der erste Reiter ist ' Web Service Type ', um die Web-Services auf iDempiere erlaubt zu definieren.
  3. Die Web Services Plugin hat generische Implementierung für Benutzer , um Anrufe an das ERP- Server machen auf jedem Tisch , Prozess-oder Workflow-Aktionen .
  4. iDempiere hat sowohl Eingang und Output -Vorlagen für externe Benutzer , die Elemente ihrer XSD (XML -Schema-Definitionen ) abzubilden.
  5. Die neue Composite- Dienstleistungen weiter zu reduzieren Aufwand für Aufgaben die Kunden benötigen, um als einfache Aktionen wie einen Geschäftspartner zu tun ist nun ein einziger Anruf statt vieler umständlich Anrufe , wodurch die Arbeit der Entwickler und sorgen für geringere Wartungskosten in Zukunft.

Suche Key

  1. Die Suchschlüssel Wert Maps, um die ' serviceType ' tag in der Web-Service- Anfrage. Dies wird im folgenden Codeausschnitt gezeigt :
<web:ModelCRUD>
  <adin:serviceType> CreateBPartner </ adin : serviceType >
  <adin:TableName> C_BPartner </ adin : TableName >
  <adin:RecordID> 0 </ adin : RecordID >
  <adin:Action> CreateUpdate </ adin : Aktion>
     :
     :
<web:ModelCRUD>

Web Service

  1. Dieses Feld zeigt den Typ des Web-Service. Wir haben jetzt sowohl 'Model - Oriented und ' Composite- ' Interfaces . Die ' ModelADService wird ebenfalls verbessert , um createUpdateData Dienst.

Web Service -Methode

  1. Dies ist für die Auswahl eine operative Aufgabe während der Web - Service-Implementierung .
  2. Jeder Web - Service-Typ hat dann die Wahl von unterschiedlichen Aufgaben.

Tabelle

  1. Dieses Feld wird verwendet, wenn das Web - Service-Methode muss mit einem ' Tabelle ' arbeiten.
  2. Zum Beispiel Neuen Datensatz erstellen , Lesen Sie vorhandene Datensätze oder Aktualisieren vorhandene Datensätze .

Web Service-Parameter

  1. Auf dieser Registerkarte werden die Parameter für Web-Service zu definieren.
  2. Parameter kann eine Konstante oder Kostenloses sein .
  3. Wenn es Constant dann wird der Wert von Konstante Wert -Feld verwendet wird, jede übergebene Wert von Anforderung wird ignoriert.
  4. Bei freies , Wert Anfrage verwendet wird.
  5. Beachten Sie, dass für _ID Parameter sowohl Record ID , als auch UUID Wert zu übernehmen sind.

Web Service Parameters.png

Web Service Feld Eingabe

  1. Diese Registerkarte wird verwendet, um die Liste der Felder (Spalten) für Web - Service, der neue Datensatz oder aktualisiert vorhandene Datensatz erstellt definieren .
  2. Dieses Register steuert die Belichtung von Spalten aus dem Web - Service-Anfrage.
  3. Beachten Sie die neue Referenz Feld, das Überschreiben der Look-up- Typ benötigt ermöglicht .

WebService Field Input.png

DB Spaltenname

WebService Field Input CtxVariable.png

  1. Oben zeigt , wie diese verwendet werden, um den Namen der Variablen für Anfrage CTX konfigurieren.
  2. Dieses Feld enthält die Saitenmusters Tabelle Name verwendet.
  3. Mehr auf Anfrage CTX später.

Referenz

  1. Die Idee ist es, die Verwendung einer anderen Taste während der Look-up- Tabelle von einem anderen zu ermöglichen.
  2. Zum Beispiel , zu schaffen ' OrderLine ' , können wir SKU statt Product_ID .
  3. Dieses Feld kann somit überschreiben Referenz-Typ bei Tabelle Spalte und Bereitstellung von Referenz-Typ für ' Ctx Variable ' .
  4. Web -Dienst verwendet dieses Feld, um Daten - Typ von variablen zu bestimmen.
  5. -Referenz -Taste wird verwendet, um ' Liste ' überschreiben oder Look-up- Wert .

Identifier

  1. Wenn dieses Flag aktiviert ist dann aktuellen Spalte wird als Teil der Aufnahme-Taste betrachtet.
  2. Mehrere Spalten können als Kennung konfiguriert werden, und sie sind für den Einsatz als zusammengesetzten Schlüssel kombiniert.
  3. Bildschirm unten zeigt, wie' C_BPartner_ID wird als Kennung zu bestehenden Datensatz zu finden verwendet.

WebService Field Input IdentifierLogic.png

Erlaube Nullwert

  1. Wenn dieses Feld wird dann geprüft null Wert wird in einen vorhandenen Datensatz abzurufen betrachtet.

Identifier Logik

  1. Dieses Feld hinzufügen Unterstützung für die Identifizierung Rekord durch die Verwendung einer SQL-Anweisung.
  2. Vor-Bildschirm zeigt, wie ein' C_BPartner Datensatz durch 'AD_User.email identifiziert werden können.

Web Service Feld Output

  1. Diese Registerkarte wird verwendet, um die Liste der Werte, die in Reaktion zurückgegeben werden konfigurieren.
  2. Hier können Sie Spalten aus der Erstellt / Aktualisiert Rekord.

Web Service Field Output.png

Web Service Access

  • Auf dieser Registerkarte konfigurieren Sie die' Rollen, die die definierten Webservice zugreifen können.
  • Es gibt zusätzliche Sicherheit, wie die Web-Service wird über dem offenen Web abgerufen.

Web Service Access.png

Composite- Dienst

  1. Composite- Form von Web-Services in diesem iDempiere Version 1.0 eingeführt, um komplexe Operationen wie create BPARTNER , Kontakt-und Standortinformationen innerhalb einer einzigen Anfrage und in einer einzigen Transaktion zu unterstützen.
  2. Ein weiteres Ziel dieser deisgn ist, die Anzahl der Anrufe zwischen Client und Server zu reduzieren.
  3. Composite- Service ist eigentlich ein Wrapper auf der modell- orientierten Web - Service.
  4. Es ermöglicht , mehrere atomare ModelADService Betrieb wie kombiniert createData , UpdateData , createUpdateData , setDocAction etc in einzelne Anfrage .
  5. Unten ist Probe Anfrage Syntax für einen zusammengesetzten Dienst .
<web:compositeOperation>
  <web:CompositeModelRequest>
   <web:ADLoginRequest>
        :
        :
   < / web: ADLoginRequest >
   <web:serviceType> SyncOrder < / web: serviceType >
   <web:operations>
     <web:operation preCommit="false" postCommit="false">
       <web:'TargetPort> createUpdateData < / web:  ' TargetPort  >
         <web:ModelCRUD>
            :
            :
         < / web: ModelCRUD >
       <web:TargetPort> createUpdateData < / web: TargetPort >
     < / web: Betrieb preCommit = "false" postCommit = "false" >
    < / web: Operationen >
 < / web: compositeOperation >
  1. Sie können einen Blick auf den hervorgehobenen Tags.
  2. Operationen ermöglichen , mehrere CRUD oder Betrieb runProcess Betrieb zu kombinieren.
  3. ' TargetPort ' angeben Betrieb Namen * ModelADService aufgerufen werden.
  4. Mögliche Wert für ' TargetPort sind createData , updateData , * createUpdateData , deleteData , readData , und setDocAction ' ' runProcess .
  5. Alle Betrieb in dieser Anfrage teilen sich ein Login-Anfrage spezifiziert und können Daten untereinander über teilen requestCtx ( @ * Variable).
  • Beachten Sie, dass createUpdateData eine Verbesserung für die ModelADService in diesem Feature-Request enthalten ist.

Transaktion Steuerung

  1. Wir können jetzt die Feinabstimmung der Verwaltung von Daten über das Web iDempiere Service repliziert.
  2. Wenn wir Daten zu synchronisieren , können wir das Konzept der ' Sicher -Punkt ' .
  3. Wir können nicht zu re -sync tun, wenn wir erfolgreich bestanden oder erreicht einen sicheren -Punkt- Lage.
  4. Zum Beispiel , wenn wir Synchronisieren Auftrag , die Schaffung von 'Kundenauftrags-Header und Linie sind atomar , aber sobald wir geschaffen haben, alle OrderLines können wir sie zu retten , auch wenn wir nicht imstande sind, Komplett oder ' " Bereiten Sie die bestellen .
  5. Composite- Service ermöglichen, über Transaktion steuern mit ' preCommit und ' postCommit Attribute auf Betrieb Element .
  6. Wenn preCommit wahrhaftig ist, was vorher getan aktuellen Vorgang an die Datenbank übergeben werden .
  7. Wenn postCommit wahr ist, ist nach den aktuellen commit Operation erfolgreich ausgeführt durchgeführt .
  8. Wenn ein Fehler auftritt , dann eine Transaktion ein Rollback durchgeführt und ihre Reaktion zeigt an, ob eine Operation festgeschrieben oder -back durch Bezugnahme auf das Attribut ' IsRolledBack ' auf Standard- Response-Element .
  9. ' isError ' Attribut auf true für fehlgeschlagene Vorgänge gesetzt .

Anfrage CTX Variable

  1. ' Anfrage CTX ' Variable als Referenz zur Verfügung während des gesamten Lebenszyklus Anfrage .
  2. Diese Variable Ctx verfolgt alle erstellten Datensätze in der aktuellen Anfrage von Tabellennamen.
  3. Anfordern können bevölkern jede benutzerdefinierte Variable name auf Web Service Security definiert - > Web Service Feld Eingabe Registerkarte zu .
  4. Diese Variablen sind zugänglich auch durch aufeinanderfolgende Operationen per Skript .
  5. Zum Beispiel , wenn wir einen Benutzer geschaffen haben und wollen das gleiche auf verwenden C_Order , unsere createOrder Anfrage Eingabefeld Parameter haben kann , wie unten .
<adin:field column="AD_User_ID">
  <adin:val> @ AD_User . AD_User_ID </ adin : val >
</ adin : field>
  1. Hier Feld hat immer Wert beginnend mit @ , wird die Web-Service die fortlaufende Zeichenfolge als Variable betrachten und versuchen, sie von der Anfrage Kontext zu lösen.
  2. In obigen Beispiel @ AD_User . AD_User_ID wird von zuvor erstellten AD_User Rekord AD_User_ID bekommen .
  3. Wenn Antrag auf benutzerdefinierten Variablen in Ctx bevölkern wollen, kann es Webdienst Eingabefeld ohne Auswahl beliebige Spalte und Verwendung DB Spalte Feld Name den Namen der Variablen definieren konfigurieren.
  4. Zum Beispiel zeigt unter Bildschirm ' E ' variable set on CreateBPartner Anfrage.
  5. Es gibt keine Spalte mit dem Namen ' E ' auf ' C_BPartner aber die Konfiguration dieser Variablen auf ' Web Service Eingang Tab wird es ermöglichen, den Antrag Zusammenhang mit E-Mail- Wert auf CreateBParner bevölkern Anfrage.

CtxVariable.png

  1. Wenn Sie die Konfiguration eines DB-Spalte , Säule muss leer und Referenz ausgewählt werden.
  2. Ctx variable entscheidet Datentyp für die Eingabe auf Referenz basierend key .

Env Ctx Variable

  1. iDempiere die Env Variable zugänglich sind mit script @ # VariableName Syntax .
  2. Wir können diese Syntax in Feld und recordID Elemente verwenden, um dynamische Wert zu erhalten.

createUpdateData

  1. Diese Operation überprüft vorhandenen Datensatz und führen entweder zu erstellen oder zu aktualisieren Rekord.
  2. Dieser Vorgang kann besser sein als die createData oder updateUpdate Betrieb .
  3. createUpdateData verwendet Satzkennung ( s ) , um zu überprüfen , ob ein Datensatz vorhanden ist oder nicht .
  4. ' Web Service Eingabefeld ' hat eine Kennung Flag , die verwendet werden , um zu entscheiden , ob ein Eingabefeld wird verwendet, um den Rekord oder nicht zu identifizieren ist .
  5. Mehr als eine Spalte verwendet werden, um jeden Datensatz zu identifizieren.
  6. Zum Beispiel C_BPartner_ID und E-Mail verwendet werden, um BPUser identifizieren.
  7. Auch benutzerdefinierte SQL- Kennung kann in Logik verwendet werden, um dessen Datensatz-ID zurück.
  8. Diese Operation ermöglicht explizite Kontrolle Erstellung oder Aktualisierung der Aufzeichnung.
  9. Anfordern können angeben folgenden Wert auf Aktion .
  10. # Erstellen - Nur zu erstellen Rekord. Wenn Datensatz existiert , kehren Fehler
  11. # Aktualisierung - Nur Verbuchungssatz . Wenn Datensatz nicht vorhanden ist, zurückzukehren Fehler
  12. # CreateUpdate - Wenn Datensatz nicht vorhanden ist, erstellen Sie es sonst vorhandenen Datensatz aktualisieren
  13. Unten ist ein Beispiel für die Anfrage Dokument ' createUpdateData ' .
<_0:createUpdateData> <_0:ModelCRUDRequest>
  <_0:ModelCRUD>
    <_0:serviceType> CreateUpdateLocation </ _0 : serviceType >
      <_0:TableName> C_Location </ _0 : TableName >
      <_0:RecordID> 0 </ _0 : RecordID >
    <_0:Action>  ' CreateUpdate ' </ _0 : Aktion>
    <_0:DataRow>
      <_0:field Column="C_Country_ID" lval="United States"/>
      <_0:field column="Address1">
          <_0:val> 1625 Cowboy Chaps Platz </ _0 : val >
      </ _0 : Field>
      <_0:field Column="C_Region_ID" lval="NV"/>
      <_0:field column="RegionName">
          <_0:val> NV </ _0 : val >
      </ _0 : Field>
      <_0:field column="Postal">
          <_0:val> 89002 </ _0 : val >
      </ _0 : Field>
      <_0:field column="City">
          <_0:val> Henderson </ _0 : val >
      </ _0 : Field>
    </ _0 : DataRow >
  </ _0 : ModelCRUD >
      <_0:ADLoginRequest>
        :
        :
  </ _0 : ADLoginRequest >
 </ _0 : ModelCRUDRequest >
</ _0 : CreateUpdateData >
  1. Bitte beachten Sie ' Aktion ' . Es zeigt CreateUpdate . Dieser Mittelwert Datensatz erstellt oder aktualisiert basierend auf Existenz.

Lookup

  1. Neu hinzugefügte LVAL Parameter für Feld passieren Klartextzeichenfolge und wird mit Standard- ID iDempiere Lookup Mechanismus umgewandelt werden.
  2. Zum Beispiel , um Liefer-Methode auf Auftrag eingestellt ist, können wir durch Versandart Namen M_Freight_ID abrufen .
  3. Nachfolgend sind beispielhaft, wie können wir herausfinden Region mit Lookup statt C_Region_ID . <_0:field Column="C_Region_ID" lval="NV"/>
  4. Bitte beachten Sie , dass wir mit lval Attribut statt val Element , wenn wir Lookup verwenden möchten.

WS Validator

  1. Web -Service- Validator können verwendet werden, um Web -Service- Funktionalität zu erweitern und Anhängen zusätzliche Geschäftslogik werden.
  2. Validator als OSGi-Service aufgenommen und muss die ' IWSValidator ' -Schnittstelle implementieren.
  3. Validator können registriert zu einer Art von Web -Service- oder allen Web-Services zu hören sein .
  4. Wenn Validator muss auf alle Web -Service- Anrufe zu hören , dann verwenden Sie den besonderen Wert GLOBAL in WSType Parameter .
  5. Validatoren werden zu folgenden Zeiten genannt :
  6. # Bevor Parse
  7. # Nach Parse
  8. # Vor
  9. # Nach Speichern

RecordIDVariable

  1. RecordIDVariable wird hinzugefügt, um recordID Feld überschreiben und damit Unterstützung für Scripting .
  2. Mit diesem Parameter in Wunsch können Datensatz-ID aus Variable in requestCtx eingestellt werden.
  3. Aufruf dieser ist in zusammengesetzten Dienst zu setDocAction ohne Zugabe von Komplexität zu erfassen identifizieren durchzuführen.
  4. Unten Beispiel zeigt, wie es verwendet wird , um ein Dokument in früheren Operation innerhalb eines zusammengesetzten srequest erstellt abzuschließen.
<_0:compositeOperation>
 <_0:CompositeRequest>
   <_0:serviceType> SyncOrder </ _0 : serviceType >
   <_0:operations>
     <_0:operation PreCommit="false" postCommit="false">
       <_0:TargetPort> CreateUpdateData </ _0 : TargetPort >
         <_0:ModelCRUD>
           <_0:serviceType> CreateOrderRecord </ _0 : serviceType >
           <_0:TableName> C_Order </ _0 : TableName >
                :
                :
         </ _0 : ModelCRUD >
       </ _0 : Betrieb >
     <_0:operation PreCommit="true" postCommit="false">
       <_0:TargetPort> CreateUpdateData </ _0 : TargetPort >
         <_0:ModelCRUD>
             <_0:serviceT Ype> CreateOrderLine </ _0 : serviceT yp >
             <_0:TableName> C_OrderLine </ _0 : TableName >
                :
                :
         </ _0 : ModelCRUD >
       </ _0 : Betrieb >
     <_0:operation PreCommit="true" postCommit="true">
       <_0:TargetPort> SetDocAction </ _0 : TargetPort >
       <_0:ModelSetDocAction>
         <_0:serviceType> CompleteOrder </ _0 : serviceT yp >
         <_0:tableName> C_Order </ _0 : tableName >
         <_0:recordID> 0 </ _0 : recordID >
       <_0:recordIDVariable> @ C_Order.C_Order_ID </ _0 : recordIDVariable >
           <_0:docAction> CO </ _0 : DocAction >
       </ _0 : ModelSetDocAction >
    </ _0 : Betrieb >
  </ _0 : Operationen >
 </ _0 : CompositeRequest >
</ _0 : CompositeOperation >
  1. In obigen Anfrage , schaffen wir Ordnung und dann Abschluss derselben mit setDocAction Betrieb .
  2. Wir verwenden ' recordIDVariable ' auf Datensatz-ID für Bestellung vor diesem Vorgang erstellt abzurufen.

Referenz Überschreiben

  1. Web - Dienst verwendet Referenz Art von Tabelle Spalte als Standard , kann aber auch überschrieben werden Web Service Eingang -Feld , wie unten gezeigt .
  2. Wir verwenden diese übergeordneten Mechanismus, um benutzerdefinierte Look-up für Spalte.
  3. Zum Beispiel , wenn wir Referenz für ' M_Product ' Tabelle konfigurieren , die wir normalerweise benutzen Produktname .
  4. Jetzt können wir wählen, zu verwenden Artikelnummer , um Produkte in unserem Web - Service zu identifizieren.
  5. In diesem Fall können wir neue Look-up Welchen Nutzen Anzeigefeld als SKU definieren für das Produkt .
  6. Die folgende Abbildung zeigt , wie wir ' M_Product_ID Spalte ' CreateUpdateOrderLine Dienst konfiguriert .

Reference OverRiding.png

Cookies helfen uns bei der Bereitstellung von iDempiere de. Durch die Nutzung von iDempiere de erklärst du dich damit einverstanden, dass wir Cookies speichern.