Domino 9 und frühere Versionen > ND7: Entwicklung

OpenView-@Befehl

<< < (2/2)

Thomas Schulte:

--- Zitat von: Jürgen Schomann am 06.02.11 - 13:35:44 ---Das mit dem Focus ist mir schon klar. Wenn ich aber die Befehlsfolge

@Command([RunAgent]; "Agent1"); mit der Anweisung @Command([OpenView]; "<Ansicht>"; ""; "1");
@Command([RunAgent]; "Agent2"); mit der Anweisung @Prompt([Ok];"";@Text(@DocumentUniqueID));

abarbeite, wird doch auch gewartet bis der 1. Agent fertig ist.

--- Ende Zitat ---
Überleg dir doch einfach mal wieviele Agents du in einer Client Umgebung gleichzeitig laufen lassen kannst.

Ich begreife allerdings immer noch nicht ganz, warum du rausfinden musst ob eine andere Ansicht "ein" Dokument enthält. Stellst du sicher das es immer GENAU ein Dokument ist? Gibt es einen Schlüssel mit dem du zugreifen kannst oder ist das vollkommen egal, Hauptsache da steht was drin?

Für Fall eins wäre @dbColumn anstelle von @dbLookup die bessere Wahl, denn wenn du mindestens einen Eintrag zurückbekommst, hast du da ja ein Dokument drinstehen. Bei Fall 2, stimme ich Boris zu. Dann brauchst du eigentlich nur einen @dbLookup.

Jürgen Schomann:
Vielen Dank für eure Hinweise. Der Hinweis mit @UpdateFormulaContext scheint zu klappen. Der ganze Vorgang ist wie gesagt ziemlich umfangreich und in Formelsprache programmiert. Ich will nicht zu viel eingreifen, nur versuchen etwas zu optimieren.
Entschuldigung, es geht nicht um Ansichten, sondern um einen privaten Ordner. Dieser soll geprüft werden, ob er Dokumente enthält und dann auf Anfrage geleert werden oder nicht.
Die Anwendung benutzt u. a. folgende Befehlsfolge:

    @PostedCommand([ToolsRunMacro]; "Agent1");
    @PostedCommand([ToolsRunMacro]; "Agent2");
    @PostedCommand([ToolsRunMacro]; "Agent3")

Agent1 enthält die Befehlsfolge:

@Command([OpenView]; "Ordner"; ""; @If(@ViewTitle = "Ordner; "1"; "0"))

Agent2 enthält die Befehlsfolge:

@If(@Text(@DocumentUniqueID) = @Repeat("0"; 32);
  @Return("");
  ""
);
@If (
  @Prompt([YesNo]; "Titel"; "Anfrage") = 1;
  @Do(
    @Command([EditSelectAll]);
    @Command([RemoveFromFolder])
  );
  ""
)

Agent3 enthält die Befehlsfolge:

@Command([FileCloseWindow])


Ich könnte das in LotusScript auch über NotesView.AllEntries, Anfrage stellen und dann ggf. NotesViewEntryCollection.RemoveAllFromFolder erreichen.

Noch eine Frage zum Unterschied von ToolsRunMacro-@Befehl und RunAgent-@Befehl. Sind diese äqivalent bezüglich der Abarbeitung im gleichen Prozess, außer natürlich, dass ToolsRunMacro erst am Ende der Formel und RunAgent sofort ausgeführt wird. Es wäre dann wirklich ein Makro wie aus anderen Programmiersprachen gewöhnt.
In LotusScript wird bei NotesAgent.Run dagegen wirklich ein neuer Prozess aufgemacht.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln