Autor Thema: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?  (Gelesen 4403 mal)

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Hi zusammen,
nachdem ich's endlich geschafft habe, von Notes aus einen WebService anzusprechen (per Button, bzw. zeitgesteuert) würde ich gern einen Schritt weitergehen und eine DialogBox damit befüllen.
Sprich: ich habe zwei Parameter und will die zurückgelieferten Werte in einer DialogBox zur Anzeigen bringen. Hat jemand ne Idee, wie man sowas geschickt lösen kann?
Die einzige Möglichkeit, die mir einfallen würde wäre ein Button, der den WS aufruft, dieser erzeugt ein temp. Dokument mit den Rückgabewerten und ich lese es dann aus. Aber woher soll der Button dann wissen, welches Dokument?
Kann ich irgendwie anders aus einem Java-Agenten die Werte zurückgeben?

Danke & Gruß,
Buzzy

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
Ähhh. Webservices sind dafür gedacht, dem Aufrufer Daten zurück zu geben. Daher musst Du die Dialogbox auf der Aufrufer-Seite implementieren, nicht im Webservice.

Ansonsten gelten für ein Webservice die gleichen Regeln wie für einen periodischen Agenten, der auf dem Server läuft: Keine UI-Elemente, Messagebox et al werden ins Notes-Log umgeleitet.

Sag mal, was Du erreichen willst, ev. kann ich Dir dann helfen.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Ok also schau her:
Ich hab ne Notes-App, in der Vertriebsaktionen geplant werden. Um Infos zu alten Aktionen anzeigen zu können, soll z.B. zu einer Aktionsnummer und einem Aktionsjahr alle vergangenen Aktionsbezeichnungen angezeigt werden. Dann werden aus dieser Liste wiederum einige ausgewählt, zu denen dann die Erfolgszahlen ermittelt werden.
Der User geht also in eine Maske, gibt eine Jahr ein und eine Nummer (also. z.B. 2005 und 12345678). Nun sollten in einer DialogBox alle Aktionsbezeichnungen aufgelistet werden, die es zu der Jahr/Nummern-Kombination gibt.
Meine bisherigen (manuellen) WebService-Aufrufe fanden bisher so statt:
in einem Dokument klick ich nen Button, der per LS einen Java-Agenten startet:

soapAgent.Run(thisdoc.NoteID)

Anhand des Parameters thisdoc.NoteID kann der Java-Agent die Parameter für den WebService auslesen, Werte ermitteln und nach thisdoc zurückschreiben.

Der Java-Agent macht im wesentlichen folgendes:

public static void main(String[] args) {

        VermittlerWacServiceLocator wsl = new VermittlerWacServiceLocator();

        int aktNr[] = new int[1];
        int jahr[] = new int[1];

        try {
            URL wsURL = new URL("http://orpheus.qv.de:7010/wek.ws/vermittlerWac");

            VermittlerWacServicePort wsp = wsl.getvermittlerWacServicePort(wsURL);

            aktNr[0] = 12345678;
            jahr[0] = 2005;
            VermittlerTarifDto[] vermittlerTarifDtoArray = wsp.getVermittlerTarife(aktNr, jahr);
            for (int i = 0; i < vermittlerTarifDtoArray.length; i++) {
                // mach was mit dem Ergebins
            }

        } catch (Throwable e) {
            e.printStackTrace();
        }

    }

Die ganze Geschichte basiert übrigens auf Axis, deswegen ist der Agent auch recht schlank.

Kam mein Anliegen halbwegs verständlich rüber  ???

Danke & Gruß,
Buzzy

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
Die Dialog-Box soll aber im Browser aufgehen, der über Axis mit HTML gefüttert wird, oder?
Also musst Du das im Browser implementieren (Javascript/AJAX), da kann Dir Domino/Webservices nicht helfen.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Ähm nö!? Hat nichts mit dem Browser zu tun...
Oh Gott sag mir etz bitte nicht, dass man des vom Notes-Client aus eh ganz anders macht  :-\

Ich hab mir halt nen bestehenden WS vorgenommen, den ein IBMler mal bei uns implementiert hat...

Gruß,
Buzzy

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Also wenn das für Notes Clients ist, ja dann macht man das ganz anders.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

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
Ah. Sorry. Ich bin ein bissl auf der Leitung gestanden (zu wenig Kaffee). Du rufst im Notes-Client ein externes WebService auf.

Wenn Du den Agent mit "AgentRun" startest, kannst Du Ihm eine DocID mitgeben. In das Doc kann er dann schreiben und Du weißt, wo Du nachschauen musst.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Hm...is halt etwas unperformant, aber was solls - hätten sie's mich halt mit ODBC machen lassen  >:D

Danke & Gruß,
Buzzy

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Ah. Sorry. Ich bin ein bissl auf der Leitung gestanden (zu wenig Kaffee). Du rufst im Notes-Client ein externes WebService auf.

Wenn Du den Agent mit "AgentRun" startest, kannst Du Ihm eine DocID mitgeben. In das Doc kann er dann schreiben und Du weißt, wo Du nachschauen musst.

Hast Du ne Idee, wie ich das UIDoc refreshen muss, damit ich auf die Werte Zugreifen kann? Bisher komm ich nur dran, wenn ich das Dok schliesse und neu öffne  :-:

Danke nochmal!

Gruß,
Buzzy

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
Ja, so gehört sich das bei einem NotesUIDocument auch, wenn RichText Felder involviert sind. Ansonsten reicht ein Document.Refresh(), um die Änderungen anzuzeigen.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #10 am: 10.07.06 - 13:33:07 »
Hm,
also irgendwie aktualisiert sich da nix :-(
Und das Feld, wo die Werte aus dem Java-Agenten reinkommen ist ein ganz normales Textfeld.

Der Agent befüllt das Feld "tempWS" und führt einen doc.save() aus.

Hier ist der Button, der das Ganze startet:

   Dim s As New notessession
   
   Dim thisdb As notesdatabase
   Set thisdb = s.CurrentDatabase
   
   Dim ws As New NotesUIWorkspace
   Dim uidoc As notesuidocument
   Set uidoc = ws.CurrentDocument
   
   Dim thisdoc As notesdocument
   Set thisdoc = uidoc.Document
   
   Set soapAgent = thisdb.getAgent("VermittlerWac")   
   Call soapAgent.Run(thisdoc.NoteID)
   
   Call uidoc.Refresh
   
   werte = ws.Prompt( PROMPT_OKCANCELLIST , "Wähle!" , "Mach etz..." , "" , thisdoc.tmpWS )

Ich könnte das UIdoc per Script schliessen und neu öffnen, aber das ist halt unschön...

Danke & Gruß,
Buzzy

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: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #11 am: 10.07.06 - 13:40:43 »
Warum willst Du die Daten in das aktuelle Doc schreiben? Mach doch ein eigenes auf, dann kannst Du die Daten bequemer auslesen.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #12 am: 10.07.06 - 13:49:20 »
Wohl wahr, aber woher soll denn der Knopf, der das Ganze startet das neue Dokument kennen?
ich müsste dem Agenten höchstens noch nen Schlüssel mitgeben, anhand dessen das neue Dok wiedergefunden werden kann...könnte klappen.

Danke & Gruß,
Buzzy

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: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #13 am: 10.07.06 - 13:52:59 »
Also entweder stehst Du auf dem Schlauch oder Du brauchst DRINGEND eine Entwickler-Schulung.

Erstell doch "in dem Knopf" mit "Set wertedoc = New NotesDocument ( db )" ein neues Dokument, speichere es und übergib dessen DocID an den Agenten.
Wenn der Agent fertig ist (und das wertedoc erneut gespeichert hat) kannst Du ganz kommod darauf zugreifen.
Und wenn Du fertig bist, löscht DU das wertedoc "im Knopf" wieder.

Umständlich, aber sollte klappen.
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 buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #14 am: 10.07.06 - 16:39:12 »
Ok ich bin zu doof  :'(

   Dim wsDoc As New notesdocument(thisdb)
   wsDoc.form = "wsDoc"
   wsDoc.vermittlernummer = thisdoc.vermittlernummer(0)
   
   Call wsDoc.Save(True,False)
   noteid = wsDoc.NoteID
   
   Set soapAgent = thisdb.getAgent("VermittlerWac")   
   Call soapAgent.Run(wsDoc.NoteID)
   
   Dim fsd As NotesDocument
   Set fsd = thisdb.GetDocumentByID(noteid)   

"fsd" findet er zwar, aber das Feld, wo die Werte reinkommen ist nicht existent. In einem DB-Viewer (scanEZ) gibt's das Feld aber und ist auch gefüllt...muss ich das doc irgendwie anders speichern, also auf Java mit doc.save()???

Buzzy

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #15 am: 10.07.06 - 16:43:56 »
Ha,

so geht's:

        noteid = wsDoc.NoteID

   Dim wsView As NotesView
   Set wsView = thisdb.GetView("wsView")
   
   Call wsView.Refresh
   
   Dim fsd As NotesDocument
   Set fsd = wsView.GetDocumentByKey(noteid)

Is zwar noch ein Schleifchen mehr, aber darauf kommt's auch nimmer an :-/

Merci nochmal,
Buzzy

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Ergebnis eines WebService-Aufrufs in einer DialogBox anzeigen?
« Antwort #16 am: 10.07.06 - 18:09:11 »
und wenn du statt der NoteID die universalID nimmst und mit db.getdocumentbyUNID darauf zugreifst, dann sparst du dir auch diese Schleife noch, und die Zeit die du für den View.Refresh brauchst auch.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz