Drag'n'Drop in Lotus Notes-Verbundanwendungen

von Manuel Nientit,
assono GmbH, Standort Kiel,

Ja es geht durchaus :).
Wollten Sie zum Beispiel schon einmal eine Kunden E-Mail aus dem Eingangsordner direkt in Ihre CRM-Anwendung fallen lassen, wo sie dann automatisch als Korrespondenz zu dem jeweiligen Kunden hinzugefügt wird?

Here is how it goes (equal goes it loose) ->

Sie brauchen zuerst eine Verbundanwendung (zu Entwickler-Deutsch: Composite Application oder CA). A picture named M2
Öffnen Sie die CA im Composite Application Editor (CAE), indem Sie "Aktionen -> Anwendung bearbeiten" wählen. Wählen Sie auf der rechten Seite aus der Palette den "Notes View Container" und ziehen ihn in die Mitte. A picture named M3
Der Container zeigt automatisch den Eingangsordner der Mailbox des jeweils aktiven Nutzers. Das können wir bei der dieser Komponente so lassen. Was wir vielleicht ändern sollten, ist die Benennung, damit wir die beiden Komponenten später auseinanderhalten können. Wählen Sie aus dem Page-Navigator auf der linken Seite den neu hinzugefügten "Notes View Container" und dann aus dem Kontextmenü "Edit Component Properties". A picture named M4
Tragen Sie einen sprechenden Namen ein . Die Beschreibung ist nur dann notwendig, wenn Sie die Komponente in ihre persönliche Palette übernehmen wollen und gerne beschreiben wollen, was diese Komponente tut.
Ziehen Sie nun noch einen Notes View Container in die Mitte. Wenn Sie das gezogene Objekt ein wenig an einem der Ränder platzieren, verwandelt sich der Mauszeiger in einen Pfeil und ein Umriss wird darstellen, wo der Container platziert werden wird. Ich habe den neuen Container am rechten Rand platziert, so dass ich meine E-Mail von links nach rechts in die CRM-Anwendung ziehen kann.
Es erscheint wieder ein neuer Eintrag mit dem Namen "Notes View Container" im Page-Navigator. Bearbeiten Sie wieder die Komponenteneigenschaften und geben Sie einen sprechenden Namen ein. Da auch dieser Container wieder die Maildatenbank zeigt, müssen wir jetzt auch die Notes-URL ändern. Klicken Sie auf Browse. Es öffnet sich ein neuer Dialog. Wählen Sie eine Ansicht oder einen Ordner, in den Sie die E-Mails ablegen wollen. A picture named M5
Schließen Sie jetzt den CAE (Änderungen speichern). Die  CA wird dann im Notes-Client geöffnet. Versuchen Sie, ein Dokument von einem Frame in ein anderes zu ziehen, und Sie werden feststellen, dass der Cursor Ihnen mitzuteilen versucht, dass das nicht geht.

Hier ist Trick Nr. 1:
Drag and Drop funktioniert nur mit Java-Ansichten.
Das heißt nun keineswegs, dass Sie Ihre Ansichten jetzt alle zu Java-Ansichten umwandeln müssen. Das kann Ihnen die CA abnehmen. Öffnen Sie sie wieder im Editor und bearbeiten Sie die Eigenschaften der Komponente. A picture named M6
Wählen Sie für beide Komponenten als "View Rendering Technology" Java aus. Wenn Sie jetzt noch einmal versuchen, ein Dokument in die andere Anwendung zu ziehen, klappt das mehr oder weniger, nur reagiert die Zielanwendung noch nicht. Wenn Sie jetzt die Ansicht in der Zielanwendung einmal im Designer öffnen und dort im "PostDragDrop"-Event eine Message-Box ausgeben, werden Sie auch eine Bestätigung bekommen, dass das Event tatsächlich gefeuert wird. Dummerweise haben wir damit noch kein Handle auf das gezogene Objekt und die klassischen Techniken geben uns keine Möglichkeiten, es überhaupt zu bekommen.

Und hier kommt Trick Nr. 2 ins Spiel:
Jedesmal wenn wir in einer CA auf ein Dokument in einer Ansicht klicken, wird dessen Notes-URL als Notesproperty veröffentlicht. Wir brauchen also in der Zielanwendung eine Action, die dieses Property konsumiert, so dass wir im PostDragDrop an die Notes-URL des zuletzt geklickten Dokumentes kommen.
Öffnen Sie im Notes-Designer den Bereich "Composite Application" und dort die "Wiring Properties". Öffnen Sie die Vorhandene oder erzeugen Sie Neue. A picture named M7
Erzeugen Sie eine neue Eigenschaft und eine Action. A picture named M8
Wie haben die Property und die Action - und nun müssen wir sie noch auslesen. Dazu bauen wir das folgende Script in das PostDragDrop Event der Ansicht ein, die wir als Ziel für die Drag'n'Drop-Aktion auserkoren haben:

Sub Postdragdrop(Source As Notesuiview)
       
       Dim session As New NotesSession
       Dim uiws As New NotesUIWorkspace
       Dim npb As NotesPropertyBroker
       Dim np As NotesProperty
       Dim value As String
       Dim object As Variant
       
       Set npb = session.GetPropertyBroker
                'oder aber npb.getPropertyValue
       Set np = npb.GetProperty("NotesURL")
       value = Cstr(np.Values(0))
       
       If value <> "" Then
               Set object = session.Resolve(value)
               If Typename(object) = "NOTESDOCUMENT" Then
                            'Was auch immer Sie jetzt mit dem Handle auf das gezogene Dokument anfangen wollen...
                                            'Man könnte zum Beispiel das Dokument kopieren und anhand der E-Mail-Adresse herausfinden, zu welcher Adresse die Mail gehört.
                                            'Auf diese Weise können wir die Zuordnung durchführen und weitere Zusatzinformationen ermitteln.
               Else
                       Msgbox "Die übergebene URL verweist nicht auf ein Dokument"
               End If
       Else
               Msgbox "Keine URL übergeben"
       End If
End Sub

Der letzte Schritt besteht darin, noch das Wiring herzustellen. Öffnen Sie die CA im CAE. Im Page Navigator wählen Sie die Page und rufen aus dem Kontextmenü die "Wiring Properties" auf. A picture named M9
A picture named M10
Ziehen Sie eine Verbindung zwischen "Notes url changed" und "ConsumeNotesURL". Speichern, CAE schließen -> fertig.

Wenn Sie jetzt eine E-Mail aus Ihrem Postfach ziehen und sie in die Ziel-Ansicht fallen lassen, wird das Script im PostDragDrop-Event ausgeführt. Daraus haben Sie Zugriff auf das E-Mail-Dokument. Was Sie damit machen, bleibt Ihrer Phantasie überlassen.
Was können Sie sich sonst noch so vorstellen?
Wo könnte Drag and Drop noch sinnvoll sein?

Ein Wermutstropfen bleibt - man kann immer noch nicht "zielen" d.h. man kann das Dokument nicht in einer bestimmten Kategorie fallen lassen, so dass es dort einsortiert wird. Aber daran arbeite ich noch...

Fachbeitrag IBM Notes IBM Notes Traveler Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen? Wir sind für Sie da.

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Sie können uns auf verschiedene Weisen für eine unverbindliche Erstberatung erreichen:

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de