Wie werden Änderungen an das externe System weitergegeben?
Letzte Änderung: Montag, 2. November 2009
Gilt für: SharePoint Server 2010
Inhalt dieses Artikels
Erstellungsvorgang
Aktualisierungsvorgang
Löschvorgang
Wenn externe Daten lokal geändert werden, werden die Schreibvorgänge nicht unmittelbar an das externe System, sondern an den Cache geleitet. Sie werden dann vom Cache in die Warteschlange eingereiht und nacheinander ausgeführt. Der Zeitpunkt der Ausführung eines Vorgangs in der Warteschlange kann nicht vorausgesagt werden und hängt vom Aktualisierungsintervall des Caches, der Verfügbarkeit der externen Anwendung und mehrerer anderer Faktoren ab. In folgenden Abschnitt wird beschrieben, wie die verschiedenen Schreibvorgänge vom Cache ausgeführt werden.
Erstellungsvorgang
Wenn Sie eine Entitätsinstanz in Ihrer Anwendung im Cachemodus erstellen, wird der Vorgangswarteschlange ein Erstellungsvorgang hinzugefügt. Lokal wird eine Entitätsinstanz von Business Connectivity Services erstellt und der neu erstellten Entitätsinstanz im Cache eine temporäre ID zugewiesen, bis die Entitätsinstanz in der externen Anwendung erstellt und die tatsächliche ID abgerufen werden kann. Die temporäre ID (eine GUID) wird im Rahmen des EntityInstance-Verweises an die aufrufende Anwendung zurückgegeben.
Hinweis |
---|
Mithilfe der IsTemporary-Kennzeichnung im Identity-Feld der Offlineentitätsinstanz können Sie bestimmen, ob die Identität temporär ist. |
Wenn der Vorgang in der externen Anwendung ausgeführt und erfolgreich beendet wird, wird die ID der neu erstellten Entitätsinstanz durch die tatsächliche ID des externen Systems aktualisiert und die Entitätsinstanz wird zum Aktualisieren gekennzeichnet, sodass die Werte berechneter Felder aktualisiert werden können. Wenn der Aufruf fehlerhaft ausgeführt wurde, wird die Entitätsinstanz als InError gekennzeichnet, und alle Ausnahmen werden im Cache aufgezeichnet.
Aktualisierungsvorgang
Wenn Sie eine Entitätsinstanz in Ihrer Anwendung im Cachemodus aktualisieren, werden die Änderungen im Cache aufgezeichnet. Der Warteschlange wird ein Aktualisierungsvorgang hinzugefügt, und die Originaldaten der Entitätsinstanz vor der lokalen Aktualisierung werden im Cache aufgezeichnet. Direkt vor der Ausführung des Vorgangs während der Laufzeit wird zuerst SpecificFinder aufgerufen, um die neuesten Informationen von der externen Anwendung abzurufen und diese mit dem Originalstatus zu vergleichen. So wird sichergestellt, dass die Daten in der externen Anwendung nicht von einem anderen Benutzer bzw. einer anderen Anwendung geändert wurden. Wenn keine Konflikte erkannt werden, erfolgt ein Aufruf der Update-Methodeninstanz bei der externen Anwendung. Ist der Vorgang erfolgreich, wird die Entitätsinstanz zum Aktualisieren gekennzeichnet, sodass die Werte berechneter Felder aktualisiert werden können. Wenn der Aufruf fehlerhaft ausgeführt wurde, wird die Entitätsinstanz als InError gekennzeichnet, und alle Ausnahmen werden im Cache aufgezeichnet. Wird ein Konflikt erkannt, wird die Entitätsinstanz erneut als InError gekennzeichnet und ConflictDetectedException wird im Cache für die Entitätsinstanz aufgezeichnet.
Löst SpecificFinder hingegen ObjectNotFoundException oder ObjectDeletedException aus, bedeutet das, dass die Entitätsinstanz in der externen Anwendung bereits von einem anderen Benutzer oder einer anderen Anwendung gelöscht wurde. In diesem Fall wird der Aktualisierungsvorgang als fehlerhaft gekennzeichnet.
Löschvorgang
Wenn Sie eine Entitätsinstanz in Ihrer Anwendung im Cachemodus löschen, wird das Löschen im Cache aufgezeichnet. Der Warteschlange wird ein Löschvorgang hinzugefügt, und die Originaldaten der Entitätsinstanz vor dem lokalen Löschen werden im Cache aufgezeichnet. Direkt vor der Ausführung des Vorgangs während der Laufzeit wird zuerst SpecificFinder aufgerufen, um die neuesten Informationen von der externen Anwendung abzurufen und diese mit dem Originalstatus zu vergleichen, um sicherzustellen, dass die Daten in der externen Anwendung nicht von einem anderen Benutzer bzw. einer anderen Anwendung geändert wurden. Wenn keine Konflikte erkannt werden, erfolgt ein Aufruf der Delete-Methodeninstanz bei der externen Anwendung. Wenn der Vorgang erfolgreich war, wird die Entitätsinstanz im Cache als gelöscht gekennzeichnet. Wenn der Aufruf fehlerhaft ausgeführt war, wird die Entitätsinstanz als InError gekennzeichnet, und alle Ausnahmen werden im Cache aufgezeichnet.
Löst SpecificFinder hingegen ObjectNotFoundException oder ObjectDeletedException aus, bedeutet das, dass die Entitätsinstanz in der externen Anwendung bereits von einem anderen Benutzer oder einer anderen Anwendung gelöscht wurde. In diesem Fall werden keine Fehler zurückgegeben, die Entitätsinstanz wird aus dem Cache gelöscht und der Löschvorgang wird einfach als erfolgreich gekennzeichnet.