Home › Forum › Nuclos Entwicklung › Makros und Regeln › Aufruf von Webservices
- Dieses Thema hat 12 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 13 Jahre von
bachmann bachmann.
-
AutorBeiträge
-
29 April 2010 um 19:38 Uhr #1245
Ramin Goettlich
TeilnehmerHallo,
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,
zuiop30 April 2010 um 10:36 Uhr #1249Hartmut Beckschulze
Teilnehmer30 April 2010 um 11:53 Uhr #1253bachmann bachmann
TeilnehmerHallo 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?wsdlEvtl. 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,
Bachmann30 April 2010 um 11:57 Uhr #1255Marc Jackisch
TeilnehmerDa ist wohl eher das Problem, das du den Lookup nicht zum Zeitpunkt der Eingabe machen kannst…
30 April 2010 um 12:27 Uhr #1267bachmann bachmann
TeilnehmerHallo 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…
30 April 2010 um 12:32 Uhr #1269Hartmut Beckschulze
Teilnehmer30 April 2010 um 12:53 Uhr #1277bachmann bachmann
TeilnehmerDALek 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!
30 April 2010 um 13:48 Uhr #1289Hartmut Beckschulze
TeilnehmerNatü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.
6 Mai 2010 um 23:09 Uhr #1647bachmann bachmann
TeilnehmerHallo 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?
20 Mai 2010 um 19:13 Uhr #1889Hartmut Beckschulze
TeilnehmerHallo,
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.
20 Mai 2010 um 20:08 Uhr #1890bachmann bachmann
TeilnehmerHallo DALek,
leider noch die gleiche Meldung. Habe ich noch etwas vergessen? Unsere Nuclos-Version ist übrigens 2.3.4.
21 Mai 2010 um 11:53 Uhr #1904Hartmut Beckschulze
TeilnehmerHallo,
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.
21 Mai 2010 um 14:52 Uhr #1917bachmann bachmann
TeilnehmerDanke, dann warte ich mal ab, wie unsere Update-Planung aussieht.
-
AutorBeiträge