Autor Thema: Assoziative Arrays aus PHP in Lotus Notes verwenden  (Gelesen 7653 mal)

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Hallo

Ich möchte Daten aus einen Webshop in Lotus Notes importieren.
Dazu wird eine API angeboten (Web Service). Das einloggen funktioniert.

Zum auslesen muss ich ein Assoziative Arrays übergeben.
Das sieht bei PHP so aus.

 array(array('updated_at' => array('from' => '2009-06-10')))

Wie kann ich das in Lotus Script umsetzen.

Bei dem Shop handelt es sich um Magento.

Vielen Dank für die Hilfe im voraus.
mfg. Andreas

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #1 am: 27.01.10 - 19:54:47 »
Du importierst in Deinen Webservice-Consumer einfach das WSDL und er setzt Dir alles automatisch auf Lotusscript-Objekte/Strukturen um.

Zitat
If you want to connect to Magento SOAP webservices you should load WSDL from this link (http://youmagentohost/api/?wsdl or http://youmagentohost/api/soap/?wsdl) in your SoapClient

As of v1.3 you may also use http://yourmagentohost/api/v2_soap?wsdl=1 which has been added to improve compatbility with Java and .NET.
http://www.magentocommerce.com/wiki/doc/webservices-api/introduction
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #2 am: 27.01.10 - 20:21:20 »
Ja das habe ich gemacht.
Ich kann mich anmelden und bekomme die session ID zurück.

Nun möchte ich die Bestellung auslesen.

Dim arg As XSD_ANYTYPE
set arg.Setvaluefromstring("10000003")
Set rettabel = oMangento.call_(ret,"sales_order.info",arg)

und dieser aufruf bringt den Fehler

Arg sollte der Parameter sein. Dieser wird bei PHP mit einem Assoziative Array angegeben. Und da habe ich keine Idee wie ich diesen in Lotus Script umsetzen kann

« Letzte Änderung: 27.01.10 - 20:32:43 von notes_andy »

Offline heini_schwammerl

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #3 am: 27.01.10 - 21:53:52 »
Schaut mir fast nach einer Liste (List) oder Array aus. Allerdings sollte das auch ohne gehen.
« Letzte Änderung: 27.01.10 - 22:15:39 von heini_schwammerl »

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #4 am: 27.01.10 - 21:57:56 »
Eine Liste habe ich schon versucht. Da bekomme ich beim speichern schon einen Fehler.

Offline heini_schwammerl

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #5 am: 27.01.10 - 22:49:36 »
Was sagt denn ?
Set rettabel = oMangento.call_(ret,"sales_order.info", "10000003")

Evtl. auch als Custom Type

Code
Type magentoStrArray
   param As String 
   magValue As String
End Type

Dim query As magentoStrArray

query.param$ = "from"           
query.magValue$ = "2009-06-10"
Set rettabel = oMangento.call_(ret,"sales_order.info",query) 

Wenn ich dann mehrere Parameter habe
Code
Dim query( 0 to 1) As magentoStrArray

query(0).name$ = "from" 
query(0).magValue$ = "2009-06-10"
query(1).name$ = "keineAhnung" 
query(1).magValue$ = "irgendwas"
Set rettabel = oMangento.call_(ret,"sales_order.info",query) 
Aber jetzt ned hauen. Es ist schon spät und ich bin eigentlich Admin ;-)
« Letzte Änderung: 27.01.10 - 23:18:35 von heini_schwammerl »

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #6 am: 28.01.10 - 09:09:08 »
... assoziative Arrays sind in Notes Listen - was für eine Fehlermeldung erhälst du denn?

Toni
Grüßle Toni :)

Offline heini_schwammerl

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #7 am: 28.01.10 - 12:15:16 »
Listenbeispiel

Dim magentoList List As String

magentoList("from") = "2009-06-10"

Set rettabel = oMangento.call_(ret,"sales_order.info", magentoList)


Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #8 am: 28.01.10 - 18:13:02 »
Vielen Danke für die Hilfe

Ich habe alle Vorschläge versucht.
Aber die Funktion will den XSD_ANYTYPE Datentype.

Ich kann diesen auch als Liste anlegen.
Aber bei dem Speichen meldet Notes bei der Funktion einen Fehler.

bei diesem Aufruf kommt der Fehler

Dim tmp As String
tmp = |{updated_at => {from => 01.01.2008 12:49:51}}|
Set mm = New XSD_ANYTYPE ()
        mm.Setvaluefromstring(tmp)


Public Class XSD_ANYTYPE As LS_PROXY_OBJECT
End Class

Public Class LS_PROXY_OBJECT

    Private ValueAsString As String

   Sub setValueFromString (value As String)
      ValueAsString = value
   End Sub

   Function getValueAsString () As String
      getValueAsString = ValueAsString
   End Function

End Class

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #9 am: 28.01.10 - 19:07:06 »
Zeig doch mal das WSDL her. "Public Class XSD_ANYTYPE As LS_PROXY_OBJECT" kommt mir sehr spanisch vor.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #10 am: 29.01.10 - 15:12:48 »
Hallo

Danke für die Hilfe

Anbei die Dateien.

Beim Import des WSDL File wird Lotus Script Code erstellt (lotusScript.txt).
Dieser verweist auf ein LSS File (lsxsd_lss.txt).
Das WSDL File (wsdl.txt).

LS_PROXY_OBJECT findet man in der Datei lsxsd_lss.txt.

Hat jemand eine Idee wie ich sonst die Daten aus den Magento in Lotus Notes Bekomme?

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #11 am: 29.01.10 - 16:08:35 »
Also das WSDL ist schon sehr traurig mit den XSD_ANYTYPEs. Das ist das WSDL-Equvalent des Variants ins Lotusscript. Das sollte bei ordentlich definierten Schnittstellen eigentlich nicht vorkommen, da so keine Typenprüfungen, ... möglich sind. Da wäre z. so ein Code möglich, der einfach einen String zurückschickt.:

Code
	Function call_(sessionId As String, resourcePath As String, args As XSD_ANYTYPE) As XSD_ANYTYPE
		Dim arg As XSD_ANYTYPE
		arg.Setvaluefromstring("10000003")
		Set call_ = arg
	End Function

Ich denke, da sollte am WSDL nochmal gedreht werden.

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #12 am: 29.01.10 - 16:59:00 »
Habe bei Magento das Problem auch schon ins Forum gestellt. Kommt keine Antwort rein.
Auch bei Anfragen an Dienstleister von Magento konnten nicht weiterhelfen.

Wie bekomme ich nun die Daten ins Lotus Notes?

An wenn könnte ich mich wenden?

« Letzte Änderung: 29.01.10 - 17:03:18 von notes_andy »

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #13 am: 02.02.10 - 19:19:23 »
Hallo

Noch mal einige Informationen zu meinem Problem.

Zu den Magento Shop gibt es eine API.

http://www.magentocommerce.com/support/magento_core_api

Es gibt da auch ein wsdl File.
Das File kann man in Lotus Notes unter Web-Service Importieren.

Das File habe ich in einer vorigen Antwort schon angehängt.

Die meisten Beispiele sind in PHP. Und da werden Assoziative Arrays verwendet.
Ich habe schon alles Mögliche versucht, konnte aber noch keine Daten abfragen.

Mein Problem ist das ich den Filter nicht umsetzen kann.
|{updated_at => {from => 01.01.2008 12:49:51}}|

Oder gibt es eine Möglichkeit das ganze in JAVA zu machen???





Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #14 am: 02.02.10 - 20:46:30 »
Oder gibt es eine Möglichkeit das ganze in JAVA zu machen???

Das geht eigentlich immer. Nur ist das u.U. nicht ganz so einfach.
Immer geht, den Webservice Consumer von Hand zu programmieren, d.h. mit Jakarta HttpClient eine http Connection herstellen, xml hinschicken und rückkehrendes xml zu parsen (dafür gibts einen Haufen Möglichkeiten).
Vielleicht gehts auf Domino 8 mit XML-RPC (dafür haben die ja auch eine API) ein bischen höher auf der Abstraktionsebene, weiss aber nicht.

Falls du im Web irgendwo ein Beispiel findest, wo jemand beschreibt wie man mit einem Java Client auf Magento zugreift, würd ich das evaluieren. Spätestens am WE.   

Ich hab dem SOAP für LotusScript Zeugs immer mißtraut. 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #15 am: 03.02.10 - 09:55:49 »
Wozu den Consumer von hand programmieren, das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.

@Andy: Was versuchst Du denn konkret zu tun? Welche API versuchst Du in den Griff zu bekommen?
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #16 am: 03.02.10 - 10:23:30 »
Hallo

Den Consumer habe ich mit Notes-Mitteln gemacht.
Import des WSDL File. Den Rest macht Notes.

Ich möchte die Aktuellen Bestellungen aus dem Shop auslesen.

Mit diesem Aufruf sollte ich ja die Daten bekommen
 
Set rettabel = oMangento.call_(ret,"sales_order.info", Filter)


Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #17 am: 03.02.10 - 11:03:46 »
Wozu den Consumer von hand programmieren, das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.

@Andy: Was versuchst Du denn konkret zu tun? Welche API versuchst Du in den Griff zu bekommen?

Martin,

die "Transparenz" von SOAP hat sich des öfteren als leaking abstraction herausgestellt. Gerade bei Annahmen über Datentypen, die in den verschiedenen Programmiersprachen anders oder z.T. gar nicht vorhanden sind.
Falls in der WSDL als Kontrakt zwischen Producer und Consumer bestimmte Datentypen angefordert werden, die von den Entwicklern der SOAP Consumer Engine nicht bedacht wurden, funktioniert die Interoperabilität nicht. Es gibt darüber gewaltige Diskussionen in .NET und anderswo, in der sich herausstellte, dass sich die Transparenz-Versprechungen von SOAP eben genau nicht erfüllt haben.

Dem Mann kann geholfen werden, indem hier jemand konkret zeigt, ob und  wie assoziative Arrays von der Notes Soap Consumer Engine unterstützt werden. Theoretisch hätte mans ja implementieren können. Assoziative Arrays sind in LotusScript List. Wenn bereits so ein fundamentaler Datentyp nicht unterstützt wird, fänd ich DAS traurig. Würds aber auch nicht ausschliessen.

Solang das nicht geklärt ist, sollte die Aussage
Zitat
das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.
heißen

das geht doch unter 8.5.1. auch schon mit Notes-Mitteln, außer für die SOAP API von Magento, xxx und zzz.   

Gruß Axel
« Letzte Änderung: 03.02.10 - 12:26:01 von Pitiyankee »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline notes_andy

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • solutionforyou
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #18 am: 06.02.10 - 23:19:59 »
Hallo

Ich habe nun das WSDL File als Java importiert.

Dann habe ich einen Java Agent erstellt.

Dann bei Importieren die Web-Service.Konstrukt gewählt.

Wie setze ich folgende Zeilen in Java um?
Code
Dim oMangento As  Mage_Api_Model_Server_HandlerPortType_n0
Set oMangento = New  Mage_Api_Model_Server_HandlerPortType_n0
ret = oMangento.Login("superuser", "xxx")
Call oMangento.Startsession()
Set rettabel =  oMangento.call_(ret,"catalog_product.info", XSD_ANYTYPE) 

Wie kann ich nun in Jave den Datentyp
XSD_ANYTYPE umsetzen.
Ist in Java anscheinend xsd:anyType java.lang.Object

Auf der folgenden Seite gibt es eine gute Beschreibung.
http://www.ibm.com/developerworks/lotus/library/nd7-webservices/index.html
Aber mir fehlt noch einiges an wissen.


Danke im Voraus für die Hilfe.

Andreas

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Assoziative Arrays aus PHP in Lotus Notes verwenden
« Antwort #19 am: 07.02.10 - 20:11:09 »
Hier wird schon einmal beschrieben, wie man grundsätzlich damit arbeitet:

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/09082009051707PMWEBSY9.htm

BUT: Das Problem bleibt. Wenn die Programmierer der Notes Webservice Consumer API nicht berücksichtigt haben, dass XSD_ANYTYPE implizit assoziativer Array heissen kann, wirst du das nicht ans Fliegen bringen. Der logische Datentyp in Java für assoziative Arrays wäre java.util.Map und seine einfachste Implementierung als java.util.HashMap.

Ich würd mich damit nur näher beschäftigen, falls mir ein Kunde dafür Geld bezahlt.

Würd erstmal so vorgehen:
Die PHP Beispiele testweise implementieren und mittels eines Interceptor-Proxies (Axis-1 hat einen dabei oder sowas: http://www.allhttp.com/interceptor/) mir mal die SOAP Message anschauen, die der Service schluckt.
Dann würd ich die Nachricht aus Domino an den gleichen Interceptor schicken. Du kannst dann die Nachrichten vergleichen. Die vom Notes-Consumer abgesandte Nachricht wird anders aussehen.
Diese Dinger laufen so, dass du im Interceptor einstellst, dass du Nachrichten an den Producer (Service) x weiterleitest. Aus dem Domino Consumer schickst du die Nachrichten nicht mehr direkt an den Shopservice x sondern an den Proxy-Interceptor (hat eigenen Port). Der leitet die Nachrichten dann umgehend an den Shop Service weiter. Der Shop Service sendet dann an den Interceptor Proxy zurück und der liefert das an Domino. Dabei speichert der Interceptor Proxy die ausgetauschten Nachrichten. Unverzichtbar für jedes halbwegs abenteuerliche Webservice Projekt.

Ich hoffe, es hilft vielleicht ein wenig.
« Letzte Änderung: 07.02.10 - 21:25:51 von Pitiyankee »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz