Auf Englisch lesen

Freigeben über


Fehlerfreie Formular-ALM für Modellgesteuerte App aufrechterhalten

Dieser Artikel enthält Informationen zu den verschiedenen Szenarien zum Implementieren und Praktizieren eines fehlerfreien Application Lifecycle Managements (ALM) zum Anpassen von Formularen in Ihren Modellgesteuerten App-Lösungen.

In den folgenden Abschnitten wird beschrieben, wie die Formularzusammenführung funktioniert und wie Anpassungen verwaltet werden. Die grundlegenden Entwicklungsszenarien mit Empfehlungen für die Aufrechterhaltung eines erfolgreichen ALM für ein Modellgesteuertes App-Formular werden in jedem der folgenden Abschnitte ausführlich behandelt. Jedes Szenario umfasst Schritte, die Sie befolgen müssen, um beim Aktualisieren Ihrer Lösung oder Modellgesteuerten App einen geeigneten ALM-Prozess zu implementieren.

Ein neues Formular erstellen und es mit mehreren verwalteten Lösungen aufrechterhalten

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Erstellen Sie ein neues Formular namens FormA in Ihrer Entwicklungsumgebung und nehmen Sie Anpassungen am Formular vor.
  2. Erstellen Sie eine neue Lösung (mit dem Namen Lösung A in der folgenden Abbildung) in der Entwicklungsumgebung, die eine nicht verwaltete Lösung ist, und fügen Sie Ihr neues Formular hinzu. Exportieren Sie die Lösung als verwaltet. Mit diesem Schritt wird eine full FormXml für das Formular exportiert.
  3. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung aus Schritt 2, wodurch FormA in der Testumgebung erstellt wird. Im unteren Diagramm wird FormA in der Testumgebung erstellt und die UI für das Formular zeigt für Field1 und Field2 an, dass Lösung A dem Formular hinzugefügt wurde.
  4. Wenn Sie das in Schritt 1 erstellte Formular mithilfe einer neuen Entwicklungsumgebung (Quellumgebung) weiter anpassen, importieren Sie die verwaltete Lösung A, die Sie in Schritt 2 erstellt haben, und stellen Sie sicher, dass die von Ihnen verwendete Entwicklungsinstanz über FormA in einem verwalteten Zustand verfügt. Wie in der Abbildung unten gezeigt, wird die verwaltete Lösung A in die Entwicklungsumgebung importiert und das Formular wird angepasst, indem aktive Anpassungen erstellt werden. Anschließend kann FormA dann zu einer neuen nicht verwalteten Lösung hinzugefügt werden (Lösung B im Diagramm) und als verwaltete Lösung aus der Entwicklungsumgebung exportiert werden. Mit diesem Schritt wird eine differential (diff) FormXml für das Formular exportiert.
  5. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung (Lösung B) aus Schritt 4. Wie im folgenden Diagramm gezeigt, fügt Lösung B ein neues Field3 zu FormA hinzu und entfernt Field2, das von Lösung A hinzugefügt wurde. Die Benutzeroberfläche für das Formular in der Testumgebung zeigt nun Field3 und Field1 im Formular an, jedoch nicht Field2 nach der Zusammenführung.

Diagramm mit Szenario 1 für Formular-ALM

Fehlerhaftes Beispiel für dieses Szenario

Wie aus dem folgenden Diagramm ersichtlich, ist es keine gute ALM-Praxis, mehrere verwaltete Lösungen aus der Entwicklungsumgebung zu erstellen, in der sich die Basislösung (Lösung A) in einem nicht verwalteten Status befindet. Dies liegt daran, dass beim Erstellen einer anderen nicht verwalteten Lösung (Lösung B) für das nicht verwaltete Formular die FormXml als full FormXml anstatt als Diff-FormXml exportiert wird, wie im obigen gültigen Szenario gezeigt. Anschließend werden Änderungen wie das Entfernen einer Spalte nicht wirksam.

Fehlerhaftes Beispiel für Formular-ALM für dieses Szenario

Ein neues Formular erstellen und Anpassungen mit Patches und Upgrades vornehmen

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Erstellen Sie ein neues Formular namens FormA in Ihrer Entwicklungsumgebung und nehmen Sie Anpassungen am Formular vor.

  2. Erstellen Sie eine Lösung (mit dem Namen Lösung A in der folgenden Abbildung), die eine nicht verwaltete Lösung ist, und fügen Sie Ihr neues Formular hinzu. Exportieren Sie die Lösung als verwaltet. Mit diesem Schritt wird eine full FormXml für das Formular exportiert.

  3. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung aus Schritt 2, wodurch das Formular in der Testumgebung erstellt wird. Im unteren Diagramm wird FormA in der Testumgebung erstellt und die UI für das Formular zeigt für Field1 und Field2 an, dass Lösung A dem Formular hinzugefügt wurde.

  4. Wenn Sie das in Schritt 1 erstellte Formular mithilfe von Patches weiter anpassen, verwenden Sie dieselbe Umgebung, in der sich Lösung A in einem nicht verwalteten Status befindet. Erstellen Sie einen Patch für die Lösung und passen Sie das Formular an. Exportieren Sie danach den Patch als verwaltete Lösung. Mit diesem Schritt wird eine full formXml für das Formular exportiert.

  5. Importieren Sie in Ihrer Testumgebung die verwaltete Patch-Lösung aus Schritt 4. Wie in der folgenden Abbildung dargestellt, fügt der Patch für Lösung A dem FormA ein neues Field3 hinzu und entfernt Field2, das von Lösung A hinzugefügt wurde.

    Hinweis

    Patches mit vollständigem formXml werden immer mit der Basisebene verglichen, aus der das Patch erstellt wurde, und ignorieren alle Zwischenpatches zwischen der Basisebene und dem aktuellen Patch. Demzufolge wird Field2 entfernt, da es in der Basisebene Lösung A besteht und die Entfernung erkannt wird. Andererseits wird Field3 durch diese Patchlösung hinzugefügt und kann durch nachfolgende Patches nicht entfernt werden. Somit sind Felder, die durch Patchlösungen hinzugefügt werden, von Grund auf additiv.

  6. Wenn Sie das in Schritt 1 erstellte Formular mithilfe von Upgrades weiter anpassen, verwenden Sie dieselbe Umgebung, in der sich Lösung A in einem nicht verwalteten Status befindet. Klonen Sie Lösung A, um die Upgrade-Lösung zu erstellen und das Formular anzupassen. Exportieren Sie dann das Upgrade Lösung A als verwaltete Lösung. Mit diesem Schritt wird eine full FormXml für das Formular exportiert.

  7. Importieren Sie in Ihrer Testumgebung das verwaltete Upgrade Lösung A aus Schritt 6. Wie im folgenden Diagramm gezeigt, fügt das Upgrade Lösung A ein neues Field4 zu FormA hinzu und entfernt Field2, das von Lösung A hinzugefügt wurde. Die Benutzeroberfläche für das Formular in der Testumgebung zeigt nun Field1, Field3 und Field4 im Formular an, aber Field2 wird entfernt, nachdem das Formular aus dem Import zusammengeführt wird.

Diagramm mit Szenario 2 für Formular-ALM

Ein vorhandenes verwaltetes Formular anpassen und es mit mehreren verwalteten Lösungen aufrechterhalten

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Bearbeiten Sie ein vorhandenes verwaltetes Formular mit dem Namen FormB in diesem Beispiel in Ihrer Entwicklungsumgebung und nehmen Sie Anpassungen am Formular vor. Beachten Sie, dass Lösung A die bereits für das Formular in der Entwicklungsumgebung installierte verwaltete Lösung ist.
  2. Erstellen Sie eine neue Lösung (Lösung B im unteren Diagramm), bei der es sich um eine nicht verwaltete Lösung handelt, und fügen Sie FormB hinzu. Exportieren Sie die Lösung als verwaltet. Mit diesem Schritt wird eine differential (diff) FormXml für das Formular exportiert.
  3. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung aus Schritt 2, wodurch eine zweite Lösungsebene für das Formular erstellt wird. Im Diagramm unten erhält FormB die zusammengeführten Änderungen aus Lösung A und Lösung B in der Testumgebung und die Benutzeroberfläche für das Formular zeigt Field1 und Field3 im Formular, jedoch nicht Field2 an, das von Lösung B entfernt wurde.
  4. Wenn Sie das in Schritt 1 angepasste Formular mit neuen verwalteten Lösungen weiter anpassen, stellen Sie sicher, dass Sie eine neue Entwicklungsumgebung verwenden, die über FormB in einem verwalteten Zustand verfügt. Wie im Diagramm unten gezeigt, werden die verwalteten Lösungen Lösung A und Lösung B in die neue Entwicklungsumgebung importiert. FormB wird angepasst, indem aktive Anpassungen erstellt werden, die dann zu einer neuen Lösung (Lösung C im Diagramm) hinzugefügt und als verwaltete Lösung exportiert werden können.
  5. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung C aus Schritt 4. Wie im folgenden Diagramm gezeigt, fügt Lösung C ein neues Field4 zu FormB hinzu und entfernt Field3, das von Lösung B hinzugefügt wurde. Die Benutzeroberfläche für das Formular in der Testumgebung zeigt nun Field1 und Field4 im Formular, aber nicht Field2 und Field3 an.

Diagramm mit Szenario 3 für Formular-ALM

Fehlerhaftes Beispiel für dieses Szenario

Wie aus dem folgenden Diagramm ersichtlich, ist es keine gute ALM-Praxis, mehrere verwaltete Lösungen aus der Entwicklungsumgebung zu erstellen, die eine weitere nicht verwaltete Lösung enthält, die für dasselbe Formular erstellt wurde. Beachten Sie, dass sich Lösung B in einem nicht verwalteten Status befindet. Wenn Sie eine andere nicht verwaltete Lösung (Lösung C) für FormB erstellen, wird FormXml als diff FormXml exportiert, wie in Schritt 4 im obigen Szenario gezeigt. Aber FormB enthält auch die Änderungen von Lösung B, die von Ihren neuen Änderungen überschrieben wird.

Beispielsweise wird wie unten angezeigt, Field3 zu FormB in Lösung B hinzugefügt. Aber wenn Sie nun eine neue Lösung C in dieser Umgebung erstellen, in der sich Lösung B in einem nicht verwalteten Status befindet, und Field3 entfernen, wird auch Field3 in der Entwicklungsumgebung entfernt. Field3 wird beim Exportieren der Lösung nicht im Diff-FormXml verfolgt, da die Änderung zum Hinzufügen und Entfernen dieser Spalte im selben aktiven Ebene vorgenommen wurde. Das heißt, wenn die verwaltete Lösung C in die Testumgebung importiert wird, rendert das Formular trotzdem Feld3, da diff FormXml es nie als entfernt aufzeichnet (wie es in Schritt 5 im oben beschriebenen Szenario für eine fehlerfreie Formular-ALM entfernt wurde). Wenn Sie Ihre Formularanpassungen auf diese Weise vornehmen, sind die Entwicklungsumgebung und die Testumgebung inkonsistent.

Ein weiteres Beispiel für eine fehlerhafte Formular-ALM für dieses Szenario

Ein vorhandenes verwaltetes Formular anpassen und es mit Patches und Upgrades aufrechterhalten

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Passen Sie ein vorhandenes verwaltetes Formular mit dem Namen FormB in diesem Beispiel in Ihrer Entwicklungsumgebung an, und nehmen Sie Anpassungen am Formular vor. Beachten Sie, dass Lösung A die bereits für das Formular in der Entwicklungsumgebung installierte verwaltete Lösung ist.

  2. Erstellen Sie eine Lösung (Lösung B), bei der es sich um eine nicht verwaltete Lösung handelt, und fügen Sie FormB hinzu. Exportieren Sie die Lösung als verwaltet. Mit diesem Schritt wird eine diff FormXml für das Formular exportiert.

  3. Importieren Sie in Ihrer Testumgebung die verwaltete Lösung B aus Schritt 2, wodurch eine zweite Lösungsebene für das Formular erstellt wird. Im Diagramm unten erhält FormB die zusammengeführten Änderungen aus Lösung A und Lösung B in der Testumgebung. Außerdem zeigt die Benutzeroberfläche für FormB Field1 und Field3 auf dem Formular, aber nicht Field2 an, das von Lösung B entfernt wurde.

  4. Wenn Sie das in Schritt 1 angepasste Formular mithilfe einer Patch-Lösung weiter anpassen, können Sie dieselbe Entwicklungsumgebung wie in Schritt 1 verwenden, wobei Lösung B sich in einem nicht verwalteten Status befindet. Wie im Diagramm unten gezeigt, befindet sich Lösung A in einem verwalteten Status und Lösung B in einem nicht verwalteten Status. Das Formular wird weiter angepasst und Sie erstellen einen Patch für Lösung B, indem Sie dieser Lösung Ihr Formular hinzufügen und es als verwaltete Patch-Lösung exportieren. Mit diesem Schritt wird eine diff FormXml exportiert.

  5. Importieren Sie in Ihrer Testumgebung die verwaltete Patch-Lösung B aus Schritt 4. Wie in der folgenden Abbildung dargestellt, fügt der Patch für Lösung B FormB ein neues Field4 hinzu und entfernt Field3, das von Lösung B hinzugefügt wurde.

    Hinweis

    Patches sind von Natur aus additiv und können keine Komponenten wie Spalten aus dem Formular entfernen. Daher wird Field3 nicht aus dem Formular entfernt. Die Benutzeroberfläche für das Formular in der Testumgebung zeigt nun Field1, Field3 und Field4 im Formular, aber nicht Field2 an.

  6. Wenn Sie das in Schritt 1 erstellte Formular mithilfe von Upgrades weiter anpassen, verwenden Sie dieselbe Umgebung, in der sich Lösung B in einem nicht verwalteten Status befindet. Klonen Sie Lösung B, um die Upgrade-Lösung zu erstellen und FormB anzupassen. Exportieren Sie das Upgrade als verwaltete Lösung. Mit diesem Schritt wird eine diff FormXml für das Formular exportiert.

  7. Importieren Sie in Ihrer Testumgebung die verwaltete Upgrade-Lösung Lösung B aus Schritt 6. Wie im folgenden Diagramm gezeigt, fügt das Upgrade für Lösung B ein neues Field5 zu FormB hinzu und entfernt Field3, das von Lösung B hinzugefügt wurde. Die Benutzeroberfläche für das Formular in der Testumgebung zeigt nun Field1, Field4 und Field5 im Formular an, aber Field2 und Field3 wurden entfernt.

Bearbeiten Sie ein vorhandenes verwaltetes Formular mithilfe des Patch- und Upgrade-Diagramms.

Nicht verwaltete Lösungen und Anpassungen für ein neues Formular in mehreren Entwicklungsumgebungen aufrechterhalten

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Erstellen Sie in Entwicklungsumgebung 1 ein neues FormA, und nehmen Sie die Anpassungen im Formular vor.
  2. Erstellen Sie eine neue Lösung (mit dem Namen Lösung A in der folgenden Abbildung), die eine nicht verwaltete Lösung ist, und fügen Sie Ihr neues Formular hinzu. Exportieren Sie die Lösung als nicht verwaltet. Mit diesem Schritt wird eine full FormXml für das Formular exportiert.
  3. Importieren Sie in Entwicklungsumgebung 2 die nicht verwaltete Lösung aus Schritt 2. Dadurch wird ein Formular in der Entwicklungsumgebung 2 erstellt. Im unteren Diagramm wird FormA erstellt und die UI für das Formular zeigt für Field1 und Field2 an, dass Lösung A dem Formular hinzugefügt wurde.
  4. Sie passen das Formular in Entwicklungsumgebung 2 weiter an, indem Sie aktive Anpassungen in der Umgebung vornehmen, wie das Hinzufügen einer neuen Spalte mit dem Namen Field3. FormA zeigt jetzt Feld1, Feld2 und Feld3.
  5. In Ihrer Entwicklungsumgebung 1 können Sie das Formular weiter anpassen, indem Sie Field4 hinzufügen. Die Benutzeroberfläche für das Formular in Entwicklungsumgebung 1 zeigt nun Field1, Field2 und Field4 an.
  6. Exportieren Sie die nicht verwaltete Lösung A mit den in Schritt 5 vorgenommenen Änderungen. Mit diesem Schritt wird eine full FormXml für das Formular exportiert.
  7. Importieren Sie in Entwicklungsumgebung 2 das nicht verwaltete Upgrade für Lösung A aus Schritt 6. Da die zu importierende Lösung die vollständige FormXml für FormA enthält, überschreibt es die aktive in Entwicklungsumgebung 1 vorgenommene Anpassung. Das Formular zeigt nun nur noch Field1, Field2 und Field4, aber nicht Field3 an, das die zusätzliche aktive in Entwicklungsumgebung 1 vorgenommene Anpassung war. Dieses Verhalten tritt bei jedem nicht verwalteten Lösungsimport auf, der über das full FormXml für das Formular verfügt.

Nicht verwaltete Lösungen in mehreren Umgebungen

Nicht verwaltete Lösungen und Anpassungen für ein vorhandenes Formular in mehreren Entwicklungsumgebungen aufrechterhalten

Führen Sie diese Schritte aus, um eine fehlerfreie Formular-ALM für dieses Szenario zu implementieren.

  1. Passen Sie in der Entwicklungsumgebung 1 ein vorhandenes Formular mit dem Namen FormB in diesem Beispiel an. Führen Sie dann Anpassungen im Formular durch.
  2. Erstellen Sie eine Lösung (Lösung B im unteren Diagramm), bei der es sich um eine nicht verwaltete Lösung handelt, und fügen Sie FormB hinzu. Exportieren Sie die Lösung als nicht verwaltet. Mit diesem Schritt wird eine diff FormXml für das Formular exportiert.
  3. Importieren Sie in Entwicklungsumgebung 2 die nicht verwaltete Lösung aus Schritt 2, wodurch eine zweite Lösungsebene für das Formular erstellt wird. Die Benutzeroberfläche von FormB zeigt nach der Formularzusammenführung Field1, Field2 und Field3 an.
  4. Sie passen das Formular in Entwicklungsumgebung 2 weiter an, indem Sie aktive Anpassungen in der Umgebung vornehmen, wie das Hinzufügen einer neuen Spalte mit dem Namen Field4. FormB zeigt jetzt Feld1, Feld2, Feld3 und Feld4.
  5. In Ihrer Entwicklungsumgebung 1 können Sie das Formular weiter anpassen, indem Sie eine neue Spalte mit dem Namen Field5 hinzufügen. Die Benutzeroberfläche für das Formular in Entwicklungsumgebung 1 zeigt nun Field3 und Field5 an.
  6. Exportieren Sie die nicht verwaltete Lösung B mit den in Schritt 5 vorgenommenen Änderungen. Mit diesem Schritt wird eine diff FormXml für das Formular exportiert.
  7. Importieren Sie in Entwicklungsumgebung 2 das nicht verwaltete Upgrade für Lösung B aus Schritt 6. Da die zu importierende Lösung die diff FormXml für FormB enthält, führt es die aktive in Entwicklungsumgebung 1 vorgenommene Anpassung zusammen. Das Formular zeigt nun Field1, Field2, Field3, Field4 und Field5 an. Dieses Verhalten tritt bei jedem nicht verwalteten Lösungsimport auf, der über das diff FormXml für das Formular verfügt.
  8. Wenn die Formularzusammenführung in Schritt 7 nicht Ihren Anforderungen entspricht, obwohl Sie ein diff FormXml mit der nicht verwalteten Lösung importieren und die aktiven Anpassungen überschreiben möchten, die in Entwicklungsumgebung 2 vorgenommen wurden, dann entfernen Sie die aktive Ebene für FormB. Weitere Infomationen: Eine nicht verwaltete Ebene entfernen.
  9. Exportieren Sie die nicht verwaltete Lösung B mit den in Schritt 5 vorgenommenen Änderungen. Mit diesem Schritt wird eine diff FormXml für das Formular exportiert.
  10. Importieren Sie in Entwicklungsumgebung 2 das nicht verwaltete Upgrade für Lösung B aus Schritt 9. Da es für das Formular in Entwicklungsumgebung 2 (siehe Schritt 8) keine aktive Ebene für das Formular gibt, werden alle Änderungen für die nicht verwaltete Lösung B importiert, obwohl Sie diff FormXml für FormB importieren. Das Formular zeigt nur Field1, Field2, Field3 und Field5 an. Dieses Verhalten tritt bei jedem nicht verwalteten Lösungsimport auf, der über das diff FormXml für das Formular verfügt. Dies ist das gleiche Ergebnis wie Schritt 7 im Szenario Nicht verwaltete Lösungen und Anpassungen für ein vorhandenes Formular über mehrere Entwicklungsumgebungen hinweg aufrechterhalten.

Diagramm zum Szenario 6 für Application Lifecycle Management

Full und differential form XML

Jedes exportierte Lösungspaket enthält die Datei „customizations.xml“. Wenn ein Formular in eine Lösung eingebunden wird, ist die zugehörige Formulardefinition in den FormXml-Abschnitten der Datei „customizations.xml“ vorhanden. FormXml kann entweder full oder differential (diff) sein.

Full FormXml

Die FormXml, die Sie beim Exportieren einer Lösung für ein Formular in einem nicht verwalteten Status erhalten, heißt full FormXml. „Full“ bedeutet, dass es die gesamte Formulardefinition enthält. Wenn Sie ein neues Formular erstellen und exportieren, ist das Formular immer ein full FormXml, da sich das Formular in der Umgebung, aus der Sie exportieren, in einem nicht verwalteten Status und auch in einem Erstellungsstatus befindet. Wenn Sie weitere Lösungen aus derselben Umgebung exportieren, enthalten diese auch eine full FormXml. Da das Attribut solutionaction eine diff FormXml angibt, enthält die full FormXml in der Datei „customization.xml“ in der Lösung, die Sie exportieren, keine solutionaction-Attribute.

Differential (diff) FormXml

Die FormXml, die Sie beim Exportieren einer Lösung für ein Formular in einem verwalteten Status erhalten, heißt differential oder diff FormXml. Diff bedeutet, dass FormXml nur die Änderungen enthält, die in den aktiven Anpassungen in dieser Umgebung vorgenommen wurden, und nicht die gesamte Formulardefinition. Wenn Sie ein vorhandenes verwaltetes Formular anpassen und exportieren, ist das Formular immer ein diff FormXml, da es nur die daran vorgenommenen aktiven Änderungen enthält. Das diff FormXml in der Datei „customization.xml“ in der Lösung, die Sie exportieren, enthält solutionaction-Attribute, die die Art der Änderungen definieren, wie Hinzugefügt, Entfernt, Geändert.

Diff FormXml stellt sicher, dass Ihre Lösung nur die Änderungen ausdrückt, die Ihre App benötigt, und weniger von Änderungen anderer Ebenen beeinflusst wird. Diff FormXml macht die Lösung auch weniger sperrig und hilft, sie schneller zu importieren.

Siehe auch

Empfehlungen für eine gesunde Form von ALM