Mantemento de ALM en bo estado para formularios de aplicacións controladas por modelos
Este artigo ofrécelle información sobre os distintos escenarios sobre como implementar e practicar unha xestión saudable do ciclo de vida de aplicacións (ALM) para personalizar formularios nas solucións de aplicacións baseadas en modelos.
As seguintes seccións describen como funciona a combinación de formularios e como manter as personalizacións. Os escenarios básicos de desenvolvemento con recomendacións para manter un ALM con éxito para un formulario de aplicación baseado en modelos están cubertos en detalle dentro de cada sección das facilitadas a continuación. Todos os escenarios inclúen os pasos a seguir que poden axudalo a implementar un proceso ALM adecuado cando se actualiza a solución ou a aplicación baseada en modelos.
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
- CreE un novo formulario chamado FormA no seu contorno de desenvolvemento e realice personalizacións no formulario.
- Cree unha nova solución (chamada Solución A no seguinte diagrama) no contorno de desenvolvemento, que será unha solución sen xestionar e engada o seu novo formulario. Exporte a solución como xestionada. Este paso exporta un FormXml completo para o formulario.
- No seu contorno de proba, importe o solución administrada do paso 2, que crea FormA no contorno de proba. No seguinte diagrama, FormA créase no contorno de proba e a interface de usuario para o formulario mostra a Campo1 e Campo2 a Solución A engadida ao formulario.
- Cando personalice máis o formulario que creou no paso 1 usando un novo ambiente de desenvolvemento (orixe), importe a Solución A xestionada creado no paso 2, asegúrese de que a instancia de desenvolvemento que está a usar ten FormA nun estado xestionado. Como se mostra no seguinte diagrama, a Solución A xestionada impórtase no contorno de desenvolvemento e personalízase o formulario creando personalizacións activas. Entón, FormA pódese engadir a unha nova solución non xestionada (Solución B no diagrama) e exportar como solución administrada do contorno de desenvolvemento. Este paso exporta un FormXml diferencial (diff) para o formulario.
- No seu contorno de proba, importe a solución administrada (Solución B) do paso 4. Como se mostra no seguinte diagrama, Solución B está engadindo un novo Field3 a FormA e eliminando Field2, que foi engadido por Solución A. Agora a IU do formulario no contorno de proba mostra Field3 e Field1 no formulario pero non Field2 despois da fusión.
Como se ve no seguinte diagrama, non é unha práctica ALM positiva crear varias solucións xestionadas a partir do contorno de desenvolvemento onde a solución base (Solución A) está nun estado sen xestionar. Isto ocorre porque, cando crea outra solución non xestionada (Solución B) para o formulario non xestionado, o FormXml expórtase como FormXml completo, en lugar dun FormXml diff como se mostra no escenario válido anterior. Posteriormente, cambios como eliminar unha columna non terán efecto.
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
Cree un novo formulario chamado FormA no seu contorno de desenvolvemento e realice personalizacións no formulario.
Cree unha nova solución (chamada Solución A no seguinte diagrama), que será unha solución sen xestionar e engada o seu novo formulario. Exporte a solución como xestionada. Este paso exporta un FormXml completo para o formulario.
No seu contorno de proba, importe o solución administrada do paso 2, que crea o formulario no contorno de proba. No seguinte diagrama, FormA créase no contorno de proba e a interface de usuario para o formulario mostra a Campo1 e Campo2 a Solución A engadida ao formulario.
Cando personalice máis o formulario que creou no Paso 1 usando parches, use o mesmo ambiente onde Solución A está nun estado non xestionado e cree un parche para a solución e personalice o formulario. A continuación, exporte o parche como solución administrada. Este paso exporta un formXml completo para o formulario.
No seu contorno de proba, importe a solución de parche administrada do paso 4. Como se mostra no seguinte diagrama, o parche Solución A está engadindo un novo Field3 a FormA e eliminando Field2, que foi engadido por Solución A.
Nota
Os parches que conteñen full formXml compáranse sempre coa capa base da que se creou o parche e ignoran os parches intermedios entre a base e o parche actual. Como resultado, elimínase Campo2 xa que existe na capa base Solución A e detéctase a eliminación. Por outra banda, esta solución de parche engade Campo3 e non se pode eliminar mediante parches posteriores. Así, os campos engadidos a través de solucións de parche son de natureza aditiva.
Cando personalice máis o formulario que creou no Paso 1 usando actualizacións, use o mesmo ambiente onde Solución A está nun estado non xestionado e clone Solución A para crear a solución de actualización e personalice o formulario. Despois, exporte a actualización da Solución A como solución administrada. Este paso exporta un FormXml completo para o formulario.
No seu contorno de proba, importe a actualización da Solución A administrada desde o paso 6. Como se mostra no seguinte diagrama, a actualización da Solución A está engadindo un novo Field4 a FormA e eliminando Field2, que foi engadido por Solución A. Agora a IU do formulario no contorno de proba mostra Field1, Field3 e Field4 no formulario, pero Field2 eliminarase unha vez combinado o formulario desde a importación.
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
- Edite un formulario xestionado existente, chamado FormaB neste exemplo, no seu contorno de desenvolvemento e realice personalizacións no formulario. Teña en conta que a solución A é o solución administrada xa instalada para o formulario no contorno de desenvolvemento.
- Cree unha nova solución (chamada Solución B no seguinte diagrama), que será unha solución sen xestionar e engada FormB. Exporte a solución como xestionada. Este paso exporta un FormXml diferencial (diff) para o formulario.
- No seu contorno de proba, importe o solución administrada do paso 2, que crea unha segunda capa de solución para o formulario. No diagrama seguinte, FormB obtén os cambios combinados da Solución A e a Solución B no contorno de proba e a IU do formulario mostra Field1 e Field3 no formulario, pero non Field2, que foi eliminado pola Solución B.
- Cando personalice máis o formulario que personalizou no paso 1 usando novas solucións xestionadas, asegúrese de usar un novo ambiente de desenvolvemento que teña FormB nun estado xestionado. Como se mostra no seguinte diagrama, as solucións administradas Solución A e Solución B impórtanse no novo ambiente de desenvolvemento. FormB personalízase creando personalizacións activas, que despois se poden engadir a unha nova solución (Solución C no diagrama) e exportarse como solución administrada.
- No seu contorno de proba, importe a Solución C administrada do paso 4. Como se mostra no seguinte diagrama, Solución C está engadindo un novo Field4 a FormB e eliminando Field3, que foi engadido por Solución B. Agora a IU do formulario no contorno de proba mostra Field1 e Field4 no formulario pero non Field2 e Field3.
Como se ve no seguinte diagrama, non é unha práctica ALM positiva crear varias solucións xestionadas a partir do contorno de desenvolvemento que contén outra solución non administrada creada por vostede para o mesmo formulario. Teña en conta que Solución B está en estado non xestionado. Cando crea outra solución non xestionada (Solución C) para FormB, o FormXml exportarase como un FormXml diff como se mostra no paso 4 no escenario anterior. Pero, FormB tamén contén os cambios de Solución B, que serán sobrescritos cos seus novos cambios.
Por exemplo, como se ve no seguinte diagrama, Field3 engádese a FormB en Solución B. Pero agora cando crea unha nova Solución C neste ambiente, con Solución B en estado non xestionado e elimina Field3, Field3 tamén se eliminará no contorno de desenvolvemento. Field3 non se realizará un seguimento no Diff FormXml cando se exporte a solución, xa que o cambio de engadir e eliminar esta columna realizouse no mesmo capa activo. Iso significa que cando a Solución C administrada se importa no contorno de proba, o formulario aínda procesará o Field3 porque o FormXml diff nunca o rexistra como eliminado (como se eliminou no paso 5 no escenario ALM de formulario en bo estado anterior). Se realiza as personalizacións do formulario deste xeito, o ambiente de desenvolvemento será incompatible co ambiente de proba.
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
Personalice un formulario xestionado existente, chamado FormB neste exemplo, no seu contorno de desenvolvemento e realice personalizacións no formulario. Teña en conta que a solución A é a solución administrada xa instalada para o formulario no contorno de desenvolvemento.
Cree unha solución (chamada Solución B), que será unha solución sen xestionar e engada FormB. Exporte a solución como xestionada. Este paso exporta un FormXml diff para o formulario.
No seu contorno de proba, importe a solución B administrada do paso 2, que crea unha segunda capa de solución para o formulario. No seguinte diagrama, FormB obtén os cambios combinados de Solución A e Solución B no contorno de proba. Ademais, a IU para FormB mostra Field1 e Field3 no formulario pero non Field2, que foi eliminado por Solución B.
Cando personalice máis o formulario que personalizou no Paso 1 usando unha solución de parches, pode usar o mesmo ambiente de desenvolvemento que o paso 1 no que Solución B existe nun estado non xestionado. Como se mostra no seguinte diagrama, Solución A está nun estado xestionado e Solución B está nun estado sen xestionar. O formulario está máis personalizado e crea un parche para Solución B engadindo o seu formulario a esta solución e exportándoo como solución de parches xestionada. Este paso exporta un FormXml diff.
No seu contorno de proba, importe a solución B de parche administrada do paso 4. Como se mostra no seguinte diagrama, o parche Solución B está engadindo un novo Field4 a FormB e eliminando Field3, que foi engadido por Solución B.
Nota
Os parches teñen un carácter aditivo e non poden eliminar compoñentes, como columnas, do formulario. Entón, Field3 non se eliminará do formulario. Agora a IU do formulario no contorno de proba mostra Field1, Field3 e Field4 no formulario, pero non Field2.
Cando personalice máis o formulario que creou no Paso 1 usando actualizacións, use o mesmo ambiente onde Solución B está nun estado non xestionado e clone Solución B para crear a solución de actualización e personalice o FormB. Exporte a actualización como solución administrada. Este paso exporta un FormXml diff para o formulario.
No seu contorno de proba, importe a solución administrada Solución B do paso 6. Como se mostra no seguinte diagrama, Actualización de solución B está engadindo un novo Field5 a FormB e eliminando Field3, que foi engadido por Solución B. Agora a IU do formulario no contorno de proba mostra Field1, Field4 e Field5 no formulario pero Field2 e Field3 elimínanse.
Manter solucións e personalizacións non xestionadas para un novo formulario en múltiples contornos de desenvolvemento
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
- En Contorno de desenvolvemento 1, cree un novo FormA e leve a cabo personalizacións no formulario.
- Cree unha nova solución (chamada Solución A no seguinte diagrama), que será unha solución sen xestionar e engada o seu novo formulario. Exporte a solución como non xestionada. Este paso exporta un FormXml completo para o formulario.
- En Contorno de desenvolvemento 2, importe a solución non xestionada desde o paso 2, que crea o formulario en Contorno de desenvolvemento 2. No seguinte diagrama, FormA créase e a interface de usuario para o formulario mostra a Campo1 e Campo2 a Solución A engadida ao formulario.
- Personalizará o formulario en Contorno de desenvolvemento 2 facendo personalizacións activas no contorno, como engadir unha nova columna chamada Field3. FormA agora mostra Campo1, Campo2 e Campo 3.
- No seu Contorno de desenvolvemento 1, tamén personalizará o formulario engadindo Field4. Agora a IU do formulario no contorno de desenvolvemento 1 mostra Field1, Field2 e Field4.
- Exporte a Solución A sen xestionar cos cambios realizados no paso 5. Este paso exporta un FormXml completo para o formulario.
- No Contorno de desenvolvemento 2, importe a Actualización da solución A sen administrar do paso 6. Dado que a solución que está a importar contén o FormXml completo para FormA, sobrescribe a personalización activa feita en Contorno de desenvolvemento 1. Polo tanto, o formulario agora só mostra Field1, Field2 e Field4, pero non Field3, que foi a personalización activa adicional feita en Contorno de desenvolvemento 1. Este comportamento prodúcese con calquera importación de solución non xestionada que teña o FormXml completo para o formulario.
Manter solucións e personalizacións non xestionadas para un formulario existente en múltiples contornos de desenvolvemento
Siga estes pasos para implementar ALM de formulario en bo estado para este escenario.
- En Contorno de desenvolvemento 1, personalice un formulario existente, chamado FormB neste exemplo. A continuación, realice personalizacións no formulario.
- Cree unha solución (chamada Solución B no seguinte diagrama), que será unha solución sen xestionar e engada FormB. Exporte a solución como non xestionada. Este paso exporta un FormXml diff para o formulario.
- No Contorno de desenvolvemento 2, importe a solución sen administrar do paso 2, que crea unha segunda capa de solución para o formulario. A IU de FormB mostra Field1, Field2 e Field3 despois da combinación de formularios.
- Personalizará o formulario en Contorno de desenvolvemento 2 facendo personalizacións activas no contorno, como engadir unha nova columna chamada Field4. FormularioB agora mostra Campo1, Campo2, Campo3 e Campo 4.
- No Contorno de desenvolvemento 1, tamén personalizará o formulario engadindo unha nova columna chamada Field5. Agora a IU do formulario no contorno de desenvolvemento 1 mostra Field3 e Field5.
- Exporte a Solución B sen xestionar cos cambios realizados no paso 5. Este paso exporta un FormXml diff para o formulario.
- No Contorno de desenvolvemento 2, importe a Actualización da solución B sen administrar do paso 6. Dado que a solución que está a importar contén o FormXml diff para FormB, combinarase coa personalización activa feita en Contorno de desenvolvemento 1. Polo tanto, agora o formulario mostra Field1, Field2, Field3, Field4 e Field5. Este comportamento prodúcese con calquera importación de solución non xestionada que teña o FormXml diff para o formulario.
- Se a combinación de formularios no paso 7 non é o que desexa, aínda que estea a importar un FormXml diff coa solución non xestionada e desexa poder sobrescribir as personalizacións activas feitas no Contorno de desenvolvemento 2, despois elimine a capa activa de FormB. Máis información: Elimina unha capa non xestionada.
- Exporte a Solución B sen xestionar cos cambios realizados no paso 5. Este paso exporta un FormXml diff para o formulario.
- No Contorno de desenvolvemento 2, importe a Actualización da solución B sen administrar do paso 9. Xa que non hai ningunha capa activa para o formulario en Contorno de desenvolvemento 2, (ver o paso 8), todos os cambios da Solución B non administrada son importados aínda que estea a importar FormXml diff para FormB. Polo tanto, agora o formulario mostra só Field1, Field2, Field3 e Field5. Este comportamento prodúcese con calquera importación de solución non xestionada que teña o FormXml diff para o formulario. Este é o mesmo resultado que o paso 7 do escenario Manter solucións e personalizacións non xestionadas para un formulario existente en múltiples contornos de desenvolvemento.
Todos os paquetes de solucións exportados inclúen un ficheiro customisations.xml. Sempre que se inclúe un formulario nunha solución, a definición de formulario relacionada existe nas seccións FormXml do ficheiro customisations.xml. FormXml pode ser completo ou diferencial (diff).
O FormXml que obtén ao exportar unha solución para un formulario nun estado non xestionado chámase FormXml completo. Completo significa que contén toda a definición do formulario. Cando cree un novo formulario e o exporte, o formulario sempre será un FormXml completo porque o formulario do contorno desde o que exporta está nun estado non xestionado e tamén está nun estado de creación. Se exporta máis solucións desde este mesmo contorno, tamén incluirán un FormXml completo. Porque o atributo solutionaction
indica un FormXml diferencial, o FormXml completo do ficheiro customization.xml na solución que exporta non conterá ningún atributo de solutionaction
.
O FormXml que obtén ao exportar unha solución para un formulario nun estado xestionado chámase FormXml diferencial ou diff. Diff significa que FormXml contén só os cambios realizados nas personalizacións activas dese contorno e non a definición completa do formulario. Cando personalice un formulario xestionado existente e o exporte, o formulario sempre será un FormXml diff porque só conterá os cambios activos que se lle fixeron. O FormXml diff no ficheiro customization.xml na solución que exporte conterá atributos solutionaction
que definen cales son os cambios, como Engadido, Eliminado e Modificado.
FormXml diff garante que a súa solución só expresará os cambios que precisa a súa aplicación e se verá afectada menos polos cambios doutras capas. FormXml diff tamén fai a solución menos voluminosa e axuda a importala máis rápido.