Home Forum Nuclos Entwicklung Makros und Regeln Aufruf von Webservices

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)
  • Autor
    Beiträge
  • #1245
    Ramin Goettlich
    Teilnehmer

    Hallo,

    gibt es eine Möglichkeit, aus Regeln heraus Webservices zu konsumieren?
    Ich kann mich an die Aussage erinnern, dass das irgendwie geht. Ich weiss nur nicht wie.

    Grüsse,
    zuiop

    #1249

    Hallo,

    ja die gibt es.

    Es gibt dafür extra Methoden, siehe dazu auch SOA Schnittstellen

    Ich hoffe das klärt deine Frage, wenn nicht: frag nach was dir noch unklar ist 🙂

    #1253
    bachmann bachmann
    Teilnehmer

    Hallo DALek,

    könnten Sie die im anderen Thread erwähnte bereits existierende Lösung kurz beschreiben? Ich würde gerne einen frei verfügbaren Webservice zum Nachschlagen von Bankinformationen (nach Eingabe von Bankleitzahlen) in einer Regel verwenden. Der Anwender gibt also nur die Bankleitzahl ein, alle anderen Informationen (z.B. Name der Bank) sollen aus dem Webservice geholt werden.

    Folgenden Beispiel-Webservice habe ich gefunden:
    http://www.thomas-bayer.com/axis2/services/BLZService?wsdl

    Evtl. werden wir uns aber auch für einen kostenpflichtigen Dienst mit garantierter Verfügbarkeit entscheiden.

    Ich würde den Aufruf gerne in einer Regeln machen — die Daten bei jedem Datenzugriff vom Webservice zu holen, stelle ich mir nicht gerade ressourcenschonend vor.

    Später würden wir vielleicht auch gerne Wechselkurse automatisiert über einen Webservice aktualisieren. Auch hier würden wir es gerne über eine Regeln machen, dann aber über Fristenregeln.

    Viele Grüße,
    Bachmann

    #1255
    Marc Jackisch
    Teilnehmer

    Da ist wohl eher das Problem, das du den Lookup nicht zum Zeitpunkt der Eingabe machen kannst…

    #1267
    bachmann bachmann
    Teilnehmer

    Hallo tdev,
    Wie oben geschrieben möchte ich den Lookup in der Regel beim Speichern des Datensatzes ausführen – dies sollte laut DALek ja möglich sein.

    Dass ich den Lookup nicht unmittelbar nach Eingabe der BLZ abfragen kann, ist mir bewusst — ist aber nicht so wichtig für mich. Aber vielleicht tut sich da ja was mit den Client-Regeln…

    #1269

    Hmm…

    Vielleicht lässt sich das mit Externe Datenquellen in der nächsten Version realisieren?

    Dann hätten wir das Setting wie mit einer bestehenden Entität und Lookup Funktion und vielleicht dann auch das Autocomplete von den Comboboxen.

    Müssten wir uns dann anschauen wenn es soweit ist.

    #1277
    bachmann bachmann
    Teilnehmer

    DALek schrieb in SOA-Schnittstellen:

    aktuell muss in der Geschäftsregel die SOA Klasse aufgerufen werden und der Host, Username, Passwort, die Methode die aufgerufen werden soll und die Parameter als Object Array übergeben werden.

    Wenn es jetzt schon möglich ist, würde ich ungern auf die nächste Version warten. Können Sie mir vielleicht eine kurze Anleitung geben, wie ich das umsetzen kann für den oben verlinkten Webservice? Wäre sehr hilfreich!

    #1289

    Natürlich:

    SOAFacadeBeanLocal soaLocal = de.novabit.common.ServiceLocator.getInstance().getFacade(SOAFacadeBeanLocal.class);
    Collection> response = soaLocal.getDataFromWebservice("www.thomas-bayer.com/axis2/services/BLZService"/*url*/, null /*username*/, null/*password*/, "getBank" /*methode*/, new Object[]{"blz", "123456789"}/*parameter*/);

    String bezeichnung = null;
    String bic = null;
    String ort = null;
    String plz = null;

    for(de.novabit.nucleus.server.common.Pair responseElement : response) {
    if("bezeichnung".equals(responseElement.getX())) {
    bezeichnung = (String) responseElement.getY();
    } else if("bic".equals(responseElement.getX())) {
    bic = (String)responseElement.getY();
    } else if("ort".equals(responseElement.getX())) {
    ort = (String)responseElement.getY();
    } else if("plz".equals(responseElement.getX())) {
    plz = (String)responseElement.getY();
    }
    }

    Muss aber dazu noch sagen das die Unterstützung von Webservices gerade erweitert wird. Es soll ja möglichst komfortabel sein und diese Lösung setzt schon ziemliche Kenntnisse der WSDL voraus.

    Hoffe ich konnte dir damit helfen, wenn du noch Fragen hast stehe ich gerne zur Verfügung.

    #1647
    bachmann bachmann
    Teilnehmer

    Hallo DALek,

    leider bekomme ich hier die Meldung:

    Rule_1108938.java:8: cannot find symbol
    symbol : class SOAFacadeBeanLocal
    location: class Rule_1108938
    SOAFacadeBeanLocal soaLocal = de.novabit.common.ServiceLocator.getInstance().getFacade(SOAFacadeBeanLocal.class);
    ^

    Muss ich den Package-Namen noch angeben?

    #1889

    Hallo,

    ja, der Packagename muss noch angegeben werden, der ist de.novabit.nucleus.server.soa.ejb3

    Wenn du dich ein wenig gedulden magst, in der neusten Version ist eine neue Implementierung, da kannst du dann dir aus den WSDL Dateien Klassen generieren lassen und dann darauf arbeiten. Das gibt dir mehr Möglichkeiten und auch etwas mehr Sicherheit was die Methoden, Parameter und Rückgabewerte angeht.

    Die genannte Methode wird der neuen Implementierung wahrscheinlich zum Opfer fallen, sie ist nicht sehr komfortabel und ist fehleranfälliger, da man die Services genauer kennen muss.

    #1890
    bachmann bachmann
    Teilnehmer

    Hallo DALek,

    leider noch die gleiche Meldung. Habe ich noch etwas vergessen? Unsere Nuclos-Version ist übrigens 2.3.4.

    #1904

    Hallo,

    wie schon gesagt, die aktuelle 🙂

    Wäre in dem Fall in der 2.4.5 enthalten. Wenn ich einen Termin habe wann die finalisiert ist gebe ich dir nochmal Bescheid, ok?

    Alternativ kann ich mich auch mal kundig machen ob du vorab eine Version zum Testen haben kannst.

    #1917
    bachmann bachmann
    Teilnehmer

    Danke, dann warte ich mal ab, wie unsere Update-Planung aussieht.

Ansicht von 13 Beiträgen - 1 bis 13 (von insgesamt 13)