Autor Thema: Start eines Agenten aus JavaScript  (Gelesen 7730 mal)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Start eines Agenten aus JavaScript
« am: 03.12.07 - 21:00:59 »
Hallo Forum!

Es gibt zwar schon einige Verweise auf dieses Thema. Trotzdem komme ich nicht weiter.
Zum Thema Dialogbox im Webbrowser habe ich mir das Beispiel aus jNotes angesehen. Nun möchte ich nach der Auswahl einen Agenten starten.
Dieser soll nach "Rückkehr" in die aufrufende Methode gestartet werden.

Nur weiß ich mir keinen Rat-wie "verpacke" ich die URL zum Aufruf in JavaScript?  ???

Vielen Dank für Eure erneute Hilfe!!!!!

Grüße, Nils
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Start eines Agenten aus JavaScript
« Antwort #1 am: 03.12.07 - 21:38:09 »
... wie wäre es mit document.location ?

Toni
Grüßle Toni :)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #2 am: 04.12.07 - 08:16:08 »
@ata
Hallo und Moin Toni! Hallo Forum!

Danke Dir! Ist es denn so, dass ich "?OpenAgent" direkt darauf anwenden kann?

Sollte meine Frage Entsetzen auslösen, bitte ich um Nachsicht!  ^-^

Erstmal Danke für das Stichwort!!! Ich werde damit erst einmal weiter suchen!! Ist aber schonmal ein Hinweis auf eine Richtung!!!

Grüße, Nils.
« Letzte Änderung: 04.12.07 - 08:32:20 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Start eines Agenten aus JavaScript
« Antwort #3 am: 04.12.07 - 08:27:25 »
"?OpenAgent" kannst Du so benutzen ... ;)
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #4 am: 04.12.07 - 11:24:08 »
Hallo Forum!

Der Agent startet!
Da ich aber den Aufruf direkt hinter den Aufruf der Methode zum Öffnen des Auswahlfensters gestellt habe, startet der Agent sofort startet, ohne dass eine Auswahl getroffen werden konnte.
Wie könnte ich dass Auswahlfenster modal öffnen?

Wäre es eine Lösung, wenn ich den Agent aus dem Auswahlfenster startete?
"document.location = URL" klappt dann aber nicht.

Muß ich das document-Objekt an die Methode zum Aufruf des Auswahlfensters übergeben???

Danke für Hilfe!!!  ???

Grüße, Nils.


"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Start eines Agenten aus JavaScript
« Antwort #5 am: 04.12.07 - 11:39:38 »
... das lässt sich nicht einfach beantworten, dazu sollte man deinen Code sehen:

- Mittels der Dialogbox triffst du eine Auswahl. Diese Auswahl solltest du mit if abfragen und dann die location-Methode verwenden. Dann sollte der Aufruf des Agenten in der richtigen Reihenfolge kommen...

Nur ohne deinen Code lässt sich so was nur ahnen...

Toni
Grüßle Toni :)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #6 am: 04.12.07 - 12:02:11 »
@ata
Hallo Toni!

Du hast natürlich Recht! Nur experimentiere ich hier mit einem Beispiel, welches ich bei www.jNotes.de gefunden habe.

Hier der link
http://www.jnotes.de/JNotes/jnotes_webware.nsf/0/3D61CB985812D11EC1256E1400351407?openDocument

Der Aufruf des Auswahlfensters erfolgt so:
Code
addSingleName("Selection_2", "no", 250, 420, "comma");

Code
function addSingleName(FieldName, Groups, width, height, sChar) {
      var left = Math.floor( (screen.width - width) / 2);
      var top = Math.floor( (screen.height - height) / 2);
      var params = "top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
      var URL1 =  "/MsingleSelect?openform&sChar="+ sChar;  //pfad des auswahlmenus
      var URL2 = "/MsingleSelect?openform&groups=yes&sChar="+ sChar;

      accessField = FieldName ;
      if ( Groups != "yes" ) {
            var w = window.open( url + URL1 ,"Select", params);   //öffnet ein pop-up 
            } else {
            var w = window.open(url +  URL2,"Select", params);    //öffnet popup
      }
}

Der OK-Button im popup-Fenster ruft ready() auf.

Code
var accessFieldName = window.opener.accessField;
var accessField = window.opener.document.forms[0][accessFieldName];
var href = new String();//dieser zeilenblcok liest die adresse der datenbank aus
href = window.location.href;        //adresszeile im browser
var pos_nsf = href.lastIndexOf(".nsf"); //position von ".nsf" wird gesucht
var url = href.substr(0, pos_nsf + 4)        //alles hinter ".nsf" wird abgeschnitten

function ready() {
      var sIndex = document.forms[0].Namen.selectedIndex;
      if (sIndex!=-1) {
            accessField.value = document.forms[0].Namen[sIndex].text;
      };
      window.close();
}

Ich hatte auch versucht, den Agent im If-Block (sIndex!=-1) über window.location und auch document.location zu starten, aber es klappt icht.

So, ich hoffe die code-Ausschnitte sind so ausreichend und verwirren nicht.

Danke für weitere Tips!!!

Nils
« Letzte Änderung: 04.12.07 - 12:24:17 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Glombi

  • Gast
Re: Start eines Agenten aus JavaScript
« Antwort #7 am: 04.12.07 - 13:16:12 »
Auf meiner Hausaufgabenliste steht das gleiche Problem, daher verfolge ich den Thread mit großem Interesse und versuche meinen Teil dazu beizutragen.

Aufgabe: Im Web ist ein Dokument geöffnet. Dort gibts die Aktionen "Genehmigen" und "Ablehnen". Bei "Ablehnen" soll ein Fenster zur Eingabe der Begründung aufgehen. Wenn man diese dann eingetippt hat, soll mit OK das Begründungsfenster geschlossen und ein Agent aufgerufen werden. Der Agent soll Werte im Ursprungsdokument setzen.

Folgendes hatte ich mir überlegt:
Ich rufe das Dialogdokument auf und übergebe mit der URL die Dok-ID des Dokuments. Diese ID wird dann in ein Feld SourceDocID geschrieben, welches über die CGI-Variable "Query_String" geholt wird.

Jetzt muss ich den Agenten so aufrufen, dass er das Dialogdokument mit dem Feld "SourceDocID" "kennt", d.h. sowas wie
paramid$ = notesAgent.ParameterDocID

Aber: Wie mache ich das denn mit JavaScript? Wie kann ich eine NoteID mitgeben?

tbc...

Andreas

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Start eines Agenten aus JavaScript
« Antwort #8 am: 04.12.07 - 14:15:58 »
Die NoteID oder DocumentID muss bereits im HTML Code vorhanden sein.
Dabei kann es als Feld oder eleganter als Computed Text im übergeben werden.
Falls das JS im Body der Maske übergeben wird, kann somit direkt die ID in eine Funktion geschrieben werden.
Code
<script type="text/javascript">
function getID() { return "<computedTExt=@text(@Documentuniqueid)>";}</script>

Evtl. wäre die CGI-Variable Query_String_Decoded besser geeignet, da alle Sonderzeichen wieder zurückübersetzt wurden z.B: %20 -> " "

Deinen Agent kannst Du ja wie folgt aufrufen

http://server/pfadzurDB/db.nsf/AgentNAme?OpenAgent&docunid=0918208201298310812313&Parameter1=yes&parameter2=rot

Im Agent kannst Du dann folgendes machen
Code
dim s as notessession
dim context as notesdocument
dim querystring as string

set s = new notessession
set context = s.documentcontext
querystring = context.getitemvalue("Query_string_decoded")(0)

Im Agent brauchst Du dann nur die Variable "QueryString" zu parsen um die einzelnen Parameter (docunid,parameter1,parameter2) auszulesen.

Um am Ende des Agent etwas zu erhalten kann mit einem entsprechenden Print eine URL zurückgegeben werden z.B. auf das geändert Dokument oder eine Bestätgungsmeldung

Code
print "[/pfad/db/view/docid?Open"]
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Glombi

  • Gast
Re: Start eines Agenten aus JavaScript
« Antwort #9 am: 04.12.07 - 14:20:32 »
Zitat
set context = s.documentcontext
Ja klar!  :D
Manchmal stört das Brett vorm Kopf doch etwas  ;)

Merci! Auch für die anderen Tipps!

Andreas

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #10 am: 04.12.07 - 14:47:23 »
@umi

Andreas hat's geholfen. Mir leider noch nicht! :-\
Ich versuche es weiter...

Grüße, Nils.

"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Start eines Agenten aus JavaScript
« Antwort #11 am: 04.12.07 - 15:26:14 »
Evtl. solltest Du dich mal mit modernen JS Framworks auseinandersetzen
YUI, EXTJS, Prototype, DOJO oder ähnliches.
Du könntest nämlich den Agent via AJAX starten.
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Start eines Agenten aus JavaScript
« Antwort #12 am: 04.12.07 - 15:36:08 »
... du setzt vermutlich an der falschen Stelle an. Wie hattest du den Code dort eingebaut? Vor oder nach dem window.close?

Toni
Grüßle Toni :)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #13 am: 05.12.07 - 08:17:24 »
Guten Morgen!

@umi
Hallo Urs,
Ja! Danke für den Tip! Ich werde mich darum kümmern! Allerdings dann unabhängig von meiner jetzigen Aufgabe (Zeit....)

@ata
Hallo Toni,

ich habe dies direkt hinter accessfield.Value geschrieben:
Aber dies führte nicht zum Start des Agenten.

Grüße, Nils
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Start eines Agenten aus JavaScript
« Antwort #14 am: 05.12.07 - 08:23:20 »
... probier es mal hinter dem window.close

Toni
Grüßle Toni :)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Start eines Agenten aus JavaScript
« Antwort #15 am: 05.12.07 - 09:55:07 »
Hi,

machst Du zufällig einen "Submit" beim schliessen?
dann kannst Du den Agenten auch direkt in der Maske als "WebquerySave"-Agent starten:
im "WebquerySave" der Maske
@Command([ToolsRunMacro]; "<Your agent goes here>")
einbauen.

Session.DocumentContext ist dann das gerade "submittete" Dokument / Form ....
(mit SaveOptions="0" und keinem doc.save  wirds dann auch nicht gespeichert)

Gruss, Pete(r)
pete(r)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Re: Start eines Agenten aus JavaScript
« Antwort #16 am: 05.12.07 - 10:38:54 »
@ata
Hallo Toni,

Nein, geht auch noch nicht. Zwar könnte an der URL etwas nicht stimmen, aber dann würde ich das ja im ServerLog sehen. Ich habe "document.location = "...\test?OpenAgent" verwendet.


@pete_bla
Hallo Peter,
Nein, kein submit. Ich führe eine JavaScript Methode aus, die window.close() enthält. Dachtest Du an den Standard-Submit-Button? Der ist im hier benutzten jNotes-Beispiel (PopUp-Fenster) durch einen kommentierten button (HTML-PassThrue) ausgeblendet.

Vielen Dank für die Ratschläge. Ich forsche parallel weiter.  :)

Grüße, Nils.
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Start eines Agenten aus JavaScript
« Antwort #17 am: 05.12.07 - 10:57:21 »
Hi,

ich vermute so langsam zu verstehen was Du erreichen willst:  :)
 :) im web ein zweites window als dialogbox öffnen, 
 ;) dort etwas auswählen
 ??? und dann den ausgewählten Wert in das ursprüngliche Dokument (Window) zurückliefern - oder irre ich mich da ?

ich denkte das könnte mit einem Agentenaufruf im "Dialog-Window" etwas kompliziert werden -
zumal du ja dann deine Änderung am ursprünglichen Dokument (Window) machen musst, und das muss dass ja auch erfahren.
(allerdings hab ich mir das jnotes noch nicht angesehn) - bitte korrigiere mich wenn ich hier abschweife.

Gruss, Pete(r)

PS: sorry für die emoticons - wollte ich nur mal austesten...
pete(r)

Glombi

  • Gast
Re: Start eines Agenten aus JavaScript
« Antwort #18 am: 05.12.07 - 11:01:40 »
Das zurückschreiben macht er ja schon:

accessField.value = document.forms[0].Namen[sIndex].text;

accessField ist window.opener.document., d.h. das Dokument, aus dem die Dialogbox aufgerufen wurde.

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Start eines Agenten aus JavaScript
« Antwort #19 am: 05.12.07 - 11:10:14 »
Hi,

danke für die info -  wolle es (jnotes) nachvollziehen, bin aber noch nicht dazugekommen.  :-X

Mir stellt sich noch die Frage, wo Nils jetzt den Agenten "Starten" will (ok im window.close) und die Daten übergeben will ?
- er könnte dann doch einen "Submit" bei der dialogbox machen,
hier liefert der Agent die daten (in die "dialogbox")
und diese gibt es entsprechend zurück und
schliesst sich selbst ?

sonst muss er ja den agenten "auf das übergeordnete dokument" starten.

oder bin ich immernoch zu weit weg  :-[

Gruss, Pete(r)
pete(r)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz