Ich habe so etwas in schon zwei verschiedenen Richtungen gebaut, beides mit entsprechenden Nachteilen. Vielleicht ist eine Anregung für Dich dabei:
Variante 1: Aktiver Sammler
Ein Dokument je Benutzer in einer Datenbank, das sich automatisch beim Öffnen der Datenbank für den aktuellen Benutzer öffnet. In dem Dokument werden alle eigenen Aufgaben, alle Aufgaben, die ich als Vertreter und alle die, die ich als Teil einer Gruppe wahrnehmen muss, angezeigt. Die dabei entstehenden 32-k-Probleme ließen sich gut umgehen, indem die Auswahllisten entsprechend aufgeteilt und in Items mit IsSummary = False gespeichert wurden. Aktualisierung der Aufgaben entweder beim Öffnen des Dokuments oder per Refresh-Schaltfläche, eventuell auch per periodischem Agenten.
Vorteil:
Keine hohen Ansprüche an die Aufgabenlieferanten, eine fest definierte Ansicht (definierter Name, erste Spalte = Aufgabenempfänger, zweite Spalte = Aufgabentitel) genügt, und jede Datenbank kann interpretiert werden. Keine aktive Komponente in der Lieferantendatenbank notwendig.
Nachteil:
Absolut grottige Performance, sobald die Anzahl der Datenbanken und Dokumente ansteigt.
Variante 2: Mitlaufende Aufgabendatenbank
Aufgrund der Erfahrungen aus Variante 1 habe ich bei der zweiten Lösung eine separate Aufgabendatenbank erstellt, in der zu jeder Aufgabe (z.B. Dokument in einem bestimmten Workflowstatus) ein paralleles Aufgabendokument mitgeführt wird. Im Gegensatz zur Variante 1 befindet sich hier die aktive Komponente in der Lieferantendatenbank. Bei Erstellung / Änderung von Dokumenten müssen parallel dazu die Aufgabendokumente aktualisiert werden. Das funktioniert bei uns nur deshalb, weil strukturell kein Offlinearbeiten vorgesehen ist, ansonsten müsste die Aufgabendatenbank parallel repliziert werden.
Vorteil:
Aufgabendatenbank ist schnell, da keine aktive Aktualisierung notwendig ist.
Nachteil:
Aktualisierung der Aufgaben geht auf die Performance der Dokumente (aber nicht wirklich spürbar), die aktive Komponente in den Lieferantendatenbanken ist wesentlich komplexer (wie Tode schon angedeutet hat). Oft genug bleiben auch Aufgaben liegen, weil mal wieder ein Prozess nicht sauber beendet wurde (z.B. bei wackeligen Verbindungen über UMTS), deshalb haben wir schon einen periodischen Agenten, der nachts liegengebliebene Aufgaben entfernt (ist zwar nur im Promille-Bereich, fällt aber bei der Anzahl der durchgeschobenen Aufgaben schon auf). Eine Adaption von Fremdanwendungen stelle ich mir recht aufwendig vor (ist bei uns nicht aktuell).
Die Nachfolger, die meine Variante 1 übernehmen mussten, haben das auf eine ähnlich Art, wie die Variante 2 umgestellt, allerdings wird bei denen die Aktualisierung der Aufgaben per Mail angestoßen. Welche Erfahrungen die damit gemacht haben, weiß ich allerdings nicht.