Mantenimiento de ALM correcta de formulario de aplicación basada en modelo
Este artículo le proporciona información sobre los diversos escenarios sobre cómo implementar y mantener el buen funcionamiento de la administración del ciclo de vida de las aplicaciones (ALM) para personalizar formularios en sus soluciones de aplicaciones basadas en modelo.
Las siguientes secciones describen cómo funciona la combinación de formularios y cómo mantener las personalizaciones. Los escenarios de desarrollo básicos con recomendaciones para mantener un buen ALM para un formulario de aplicación basada en modelo se tratan en detalle en cada una de las secciones que siguen. Cada escenario incluye pasos a seguir que pueden ayudarlo a implementar un proceso de ALM adecuado al actualizar su solución o aplicación basada en modelo.
Siga estos pasos para implementar ALM correctamente para este escenario.
- Cree un nuevo formulario llamado FormA en su entorno de desarrollo y realice personalizaciones en el formulario.
- Cree una nueva solución (llamada SolutionA en el diagrama siguiente) en el entorno de desarrollo, que será una solución no administrada y agregue su nuevo formulario. Exporte la solución como administrada. Este paso exporta un FormXml completo para el formulario.
- En su entorno de prueba, importe el solución administrada del paso 2, que crea FormA en el entorno de prueba. En el siguiente diagrama, el formulario FormA se crea en el entorno de prueba y la interfaz de usuario del formulario muestra los campos Field1 y Field2 que agregó al formulario SolutionA.
- Cuando personalice aún más el formulario que creó en el paso 1 utilizando un nuevo entorno de desarrollo (fuente), importe la Solución A administrada creada en el paso 2, asegúrese de que la instancia de desarrollo que está utilizando tenga FormA en un estado administrado. Como se muestra en el diagrama a continuación, SolutionA administrada se importa en el entorno de desarrollo y el formulario se personaliza creando personalizaciones activas. Luego, FormA se puede agregar a una nueva solución no administrada (Solución B en el diagrama) y se exporta como solución administrada desde el entorno de desarrollo. Este paso exporta un FormXml diferencial para el formulario.
- En su entorno de prueba, importe la solución administrada (SolutionB) del paso 4. Como se muestra en el siguiente diagrama SolutionB agrega un nuevo Field3 a FormA y quita Field2, que fue agregado por SolutionA. La interfaz de usuario del formulario en el entorno de prueba ahora muestra Field3 y Field1 en el formulario pero no Field2 después de la combinación.
Como se ve en el diagrama a continuación, no es una práctica correcta de ALM crear múltiples soluciones administradas desde el entorno de desarrollo donde la solución básica (SolutionA) está en un estado no administrado. Esto se debe a que, cuando crea otra solución no administrada (SolutionB) para el formulario no administrado, FormXml se exporta como FormXml completo, en lugar de FormXml diferencial como se muestra en el escenario válido anterior. Posteriormente, los cambios como eliminar una columna no surtirán efecto.
Creación de un nuevo formulario y realización de personalizaciones mediante parches y actualizaciones
Siga estos pasos para implementar ALM correctamente para este escenario.
Cree un nuevo formulario llamado FormA en su entorno de desarrollo y realice personalizaciones en el formulario.
Cree una solución (llamada SolutionA en el diagrama siguiente), que será una solución no administrada y agregue su nuevo formulario. Exporte la solución como administrada. Este paso exporta un FormXml completo para el formulario.
En su entorno de prueba, importe el solución administrada del paso 2, lo que creará el formulario en el entorno de prueba. En el siguiente diagrama, FormA se crea en el entorno de prueba y la interfaz de usuario del formulario muestra Field1 y Field2 que agregó al formulario SolutionA.
Cuando personalice más el formulario que creó en el Paso 1 usando parches, use el mismo entorno donde SolutionA está en un estado no administrado y cree un parche para la solución y personalice el formulario. Después, exporte el parche como una solución administrada. Este paso exporta un FormXml completo para el formulario.
En su entorno de prueba, importe la solución con el parche administrada del paso 4. Como se muestra en el diagrama siguiente, el parche de SolutionA agrega un nuevo Field3 a FormA y elimina Field2, que fue agregado por SolutionA.
Nota
Parches que contienen formXml completo siempre se comparan con la capa base a partir de la cual se creó el parche e ignoran cualquier parche intermedio entre la base y el parche actual. Como resultado, Field2 se elimina ya que existe en la capa base Solución A y se detecta la eliminación. Por otro lado, Field3 se agrega con esta solución de parche y no se puede eliminar con parches posteriores. Por lo tanto, los campos agregados a través de soluciones de parche son de naturaleza aditiva.
Cuando personalice más el formulario que creó en el Paso 1 usando actualizaciones, use el mismo entorno donde SolutionA está en un estado no administrado y clone SolutionA para crear la actualización de la solución y personalice el formulario. Después, exporte la actualización de SolutionA como una solución administrada. Este paso exporta un FormXml completo para el formulario.
En su entorno de prueba, importe la actualización de SolutionA administrada del paso 6. Como se muestra en el siguiente diagrama, la actualización de SolutionA agrega un nuevo Field4 a FormA y quita Field2, que fue agregado por SolutionA. La interfaz de usuario del formulario en el entorno de prueba ahora muestra Field1, Field3 y Field4 en el formulario, pero se quitará Field2 después de que el formulario se combine en la importación.
Personalización de formulario existente administrado y su mantenimiento usando múltiples soluciones administradas
Siga estos pasos para implementar ALM correctamente para este escenario.
- Edite un formulario administrado existente, llamado FormB en este ejemplo, en su entorno de desarrollo y realice personalizaciones en el formulario. Tenga en cuenta que la solución A es el solución administrada ya instalada para el formulario en el entorno de desarrollo.
- Cree una nueva solución (llamada SolutionB en el diagrama siguiente), que es una solución administrada y agregue su nuevo formulario FormB. Exporte la solución como administrada. Este paso exporta un FormXml diferencial para el formulario.
- En su entorno de prueba, importe la solución administrada del paso 2, lo que creará una segunda capa de la solución para el formulario. En el diagrama siguiente, FormB obtiene los cambios combinados de SolutionA y SolutionB en el entorno de prueba y la interfaz de usuario del formulario muestra Field1 y Field3 en el formulario, pero no Field2, que lo eliminó SolutionB.
- Cuando personalice más el formulario que personalizó en el Paso 1 con nuevas soluciones administradas, asegúrese de usar un nuevo entorno de desarrollo que tenga FormB en un estado administrado. Como se muestra en el diagrama a continuación, las soluciones administradas SolutionA y SolutionB se importan en el nuevo entorno de desarrollo. El FormB se personaliza creando personalizaciones activas, que luego pueden agregarse a una nueva solución (Solución C en el diagrama) y exportarse como solución administrada.
- En su entorno de prueba, importe la solución administrada SolutionC del paso 4. Como se muestra en el siguiente diagrama SolutionC agrega un nuevo Field4 a FormB y quita Field3, que fue agregado por SolutionB. La interfaz de usuario del formulario en el entorno de prueba ahora muestra Field1 y Field4 en el formulario pero no Field2 y Field3.
Como se ve en el diagrama a continuación, no es una práctica correcta de ALM crear múltiples soluciones administradas desde el entorno de desarrollo que contengan otra solución administrada que haya creado para el mismo formulario. Tenga en cuenta que la solución SolutionB está en estado no administrado. Cuando crea otra solución no administrada (SolutionC) para FormB, FormXml se exporta como un FormXml diferencial como se muestra en el paso 4 en el escenario anterior. Pero, FormB también contiene los cambios de SolutionB, que se sobrescribirán con los nuevos cambios.
Por ejemplo, como se ve en el diagrama a continuación, Field3 se agrega a FormB en SolutionB. Pero ahora, cuando crea un nueva solución SolutionC en este entorno, con SolutionB en estado no administrado y elimina Field3, Field3 también se eliminará en el entorno de desarrollo. El campo3 no se rastreará en el FormXml diff cuando se exporte la solución, ya que el cambio de agregar y eliminar esta columna se realizó en el mismo capa activo. Eso significa que cuando la solución SolutionC administrada se importa en el entorno de prueba, el formulario seguirá representando el campo Field3 porque el FormXml diferencial nunca lo registra como eliminado (como se eliminó en el paso 5 en el escenario de ALM de formulario correcta anterior). Si personaliza su formulario de esta manera hará que el entorno de desarrollo sea inconsistente con el entorno de prueba.
Personalización de formulario existente administrado y su mantenimiento usando parches y actualizaciones
Siga estos pasos para implementar ALM correctamente para este escenario.
Personalice un formulario administrado existente, llamado FormB en este ejemplo, en su entorno de desarrollo y realice personalizaciones en el formulario. Tenga en cuenta que la solución SolutionAes el solución administrada ya instalada para el formulario en el entorno de desarrollo.
Cree una nueva solución (SolutionB), que será una solución no administrada y agregue un formulario FormB. Exporte la solución como administrada. Este paso exporta un FormXml diferencial para el formulario.
En su entorno de prueba, importe la solución administrada SolutionB del paso 2, lo que creará una segunda capa de la solución para el formulario. En el siguiente diagrama, FormB obtiene los cambios combinados de SolutionA y SolutionB en el entorno de prueba. Además, la interfaz de usuario para FormB muestra Field1 y Field3 en el formulario pero no Field2, que fue eliminado por SolutionB.
Cuando personaliza aún más el formulario que personalizó en el Paso 1 utilizando una solución con parches, puede usar el mismo entorno de desarrollo que el paso 1 donde SolutionB existe en un estado no administrado. Como se muestra en el diagrama a continuación, SolutionA está en un estado administrado y SolutionB está en un estado no administrado. El formulario se personaliza aún más y usted crea un parche para SolutionB agregando su formulario a esta solución y exportándolo como una solución de parche administrada. Este paso exporta un FormXml diferencial.
En su entorno de prueba, importe la solución con el parche administrada SolutionB del paso 4. Como se muestra en el diagrama siguiente, el parche de SolutionB agrega un nuevo campo Field4 a FormB y elimina Field3, que fue agregado por SolutionB.
Nota
Los parches son de naturaleza aditiva y no pueden eliminar componentes, como columnas, del formulario. Entonces, Field3 no se eliminará del formulario. La interfaz de usuario del formulario en el entorno de prueba ahora muestra Field1, Field3 y Field4 en el formulario, pero no Field2.
Cuando personalice más el formulario que creó en el Paso 1 usando actualizaciones, use el mismo entorno donde SolutionB está en un estado no administrado y clone SolutionB para crear la actualización de la solución y personalice el FormB. Exporte la actualización como una solución administrada. Este paso exporta un FormXml diferencial para el formulario.
En su entorno de prueba, importe la solución administrada SolutionB de actualización del paso 6. Como se muestra en el siguiente diagrama, la actualización de SolutionB agrega un nuevo Field5 a FormB y quita Field3, que fue agregado por SolutionB. La interfaz de usuario del formulario en el entorno de prueba ahora muestra Field1 y Field4 y Field5 en el formulario, pero no Field2 y Field3.
Mantener soluciones no administradas y personalizaciones para un nuevo formulario en múltiples entornos de desarrollo.
Siga estos pasos para implementar ALM correctamente para este escenario.
- En Entorno de desarrollo 1, cree un nuevo formulario llamado FormA y realice personalizaciones en el formulario.
- Cree una solución (llamada SolutionA en el diagrama siguiente), que será una solución no administrada y agregue su nuevo formulario. Exporte la solución como no administrada. Este paso exporta un FormXml completo para el formulario.
- En Entorno de desarrollo 2, importe la solución no administrada del paso 2, que crea el formulario en Entorno de desarrollo 2. En el siguiente diagrama, el formulario FormA se crea y la interfaz de usuario del formulario muestra los campos Field1 y Field2 que agregó al formulario SolutionA.
- Puede personalizar aún más el formulario en Entorno de desarrollo 2 realizando personalizaciones activas en el entorno, como agregar una nueva columna denominada Field3. FormA ahora muestra Campo1, Campo2 y Campo3.
- En sus Entorno de desarrollo 1, también personaliza más el formulario añadiendo Field4. La interfaz de usuario del formulario Entorno de desarrollo 1 ahora muestra Field1, Field2, y Field4.
- Exporte la solución SolutionA no administrada con los cambios realizados en el paso 5. Este paso exporta un FormXml completo para el formulario.
- En Entorno de desarrollo 2, importe la actualización de SolutionA administrada del paso 6. Dado que la solución que está importando contiene el FormXml completo para FormA, sobrescribe la personalización activa realizada en Entorno de desarrollo 1. Entonces, el formulario ahora solo muestra Field1, Field2, y Field4, pero no Field3, que fue la personalización activa adicional realizada en Entorno de desarrollo 1. Este comportamiento se produce con cualquier importación de solución no administrada que tenga el FormXml completo para el formulario.
Mantener soluciones no administradas y personalizaciones para un formulario existente en múltiples entornos de desarrollo.
Siga estos pasos para implementar ALM correctamente para este escenario.
- En Entorno de desarrollo 1, personalice un formulario existente, llamado FormB en este ejemplo. Luego, realice personalizaciones en el formulario.
- Cree una nueva solución (llamada SolutionB en el diagrama siguiente), que será una solución no administrada y agregue FormB. Exporte la solución como no administrada. Este paso exporta un FormXml diferencial para el formulario.
- En el Entorno de desarrollo 2, importe la solución no administrada del paso 2, lo que creará una segunda capa de la solución para el formulario. La interfaz de usuario de FormB muestra Field1, Field2, y Field3 después de la combinación de formularios.
- Puede personalizar aún más el formulario en Entorno de desarrollo 2 realizando personalizaciones activas en el entorno, como agregar una nueva columna denominada Field4. El FormularioB ahora muestra Campo1, Campo2, Campo3 y Campo4.
- En Entorno de desarrollo 1, también personaliza más el formulario añadiendo una nueva columna llamada Field5. La interfaz de usuario del formulario Entorno de desarrollo 1 ahora muestra Field3 y Field5.
- Exporte la solución SolutionB no administrada con los cambios realizados en el paso 5. Este paso exporta un FormXml diferencial para el formulario.
- En Entorno de desarrollo 2, importe la actualización de SolutionB administrada del paso 6. Dado que la solución que está importando contiene el FormXml diferencial para FormB, se combinará con personalización activa realizada en Entorno de desarrollo 1. Por tanto, el formulario ahora muestra Field1, Field2, Field3, Field4 y Field5 Este comportamiento se produce para cualquier importación de solución no administrada que tenga el FormXml diferencial para el formulario.
- Si la combinación de formularios del paso 7 no es lo que desea a pesar de que está importando un FormXml diferencial con la solución no administrada y desea poder sobrescribir las personalizaciones activas realizadas en Entorno de desarrollo 2, elimine la capa activa para FormB. Más información: Eliminar una capa no administrada.
- Exporte la solución SolutionB no administrada con los cambios realizados en el paso 5. Este paso exporta un FormXml diferencial para el formulario.
- En Entorno de desarrollo 2, importe la actualización de SolutionB administrada del paso 9. Dado que no hay una capa activa para el formulario en Entorno de desarrollo 2 (consulte el paso 8), todos los cambios de la solución no administrada SolutionB se importan aunque esté importando FormXml diferencial paraFormB. Por tanto, el formulario ahora solo muestra Field1, Field2, Field3 y Field5. Este comportamiento se produce para cualquier importación de solución no administrada que tenga el FormXml diferencial para el formulario. Este es el mismo resultado que el paso 7 en el escenario Mantener soluciones no administradas y personalizaciones para un formulario existente en múltiples entornos de desarrollo.
Cada paquete de solución exportado incluye un archivo customizations.xml. Siempre que se incluye un formulario en una solución, la definición del formulario relacionado existe dentro de las secciones de FormXml del archivo customizations.xml. FormXml puede ser completo o diferencial.
El FormXml que obtiene al exportar una solución para un formulario en un estado no administrado se llama FormXml completo. Completo significa que contiene la definición completa del formulario. Cuando crea un nuevo formulario y lo exporta, el formulario siempre será un FormXml completo porque el formulario en el entorno desde el que está exportando se encuentra en un estado no administrado y también en un estado de creación. Si exporta más soluciones desde este mismo entorno, también incluirán un FormXml completo. Dado que el atributo solutionaction
indica un FormXml diferencial, el FormXml completo en el archivo customization.xml de la solución que exporta no contendrá ningún atributo solutionaction
.
El FormXml que obtiene cuando exporta una solución para un formulario en un estado administrado se llama FormXml diferencial. Diferencial significa que FormXml contiene solo los cambios realizados en las personalizaciones activas en ese entorno y no la definición completa del formulario. Cuando personaliza un formulario administrado existente y lo exporta, el formulario siempre será un formulario FormXml diferencial porque solo contendrá los cambios activos realizados. El FormXml diferencial en el archivo customization.xml de la solución que exporta contendrá atributos solutionaction
que definen cuáles son los cambios, como Agregado, Eliminado, Modificado.
El FormXml diferencial garantiza que su solución solo expresará los cambios que su aplicación necesita y se verá menos afectada por los cambios de otras capas. El FormXml diferencial también hace que la solución sea menos voluminosa y ayuda a importar más rápido.