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).
Ö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.
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".
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.
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.
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.
Erzeugen Sie eine neue Eigenschaft und
eine Action.
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.
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...