Información general sobre eliminación de dependencias

Los componentes de la solución a menudo dependen de otros componentes. No puede eliminar cualquier componente de la solución que tenga dependencia de otro componente de la solución. Las dependencias son registros creados automáticamente por el marco de soluciones para evitar que los componentes requeridos se eliminen mientras uno o más componentes dependientes aún incluyen referencias a ellos. Un ejemplo de dependencia es el siguiente: dado que se requiere un campo para que funcione un formulario, si alguna vez intenta ejecutar una acción que resultará en la eliminación de ese campo, el formulario dejará de funcionar.

Nota

En este articulo, eliminar significa que el componente queda completamente eliminado del sistema.

En este artículo, discutiremos cómo manejar estas dependencias y las estrategias que puede usar para eliminar las dependencias que ya no necesita.

Dependencias de componentes no administrados frente a componentes administrados

Primero, es importante comprender que las dependencias solo evitan operaciones que eliminarán un componente necesario. Las acciones que pueden eliminar un componente son diferentes, dependiendo de si está o no administrado.

Componentes no administrados

Estos componentes están representados por una única capa en la solución activa. Cualquier operación de Eliminar en uno de estos componentes da como resultado la eliminación completa del componente.

Componentes administrados

La eliminación de componentes administrados depende de múltiples factores: el número de capas de solución, la posición relativa de la capa que se está desinstalando y los editores de componentes. Por ejemplo, cuando se elimina un componente, considere los siguientes escenarios y cuál será el comportamiento esperado cuando desinstale las diversas capas.

Escenarios de ejemplo

Los siguientes escenarios de ejemplo ilustran lo que sucede con las capas de solución cuando se desinstalan las soluciones.

Escenario 1: desinstalar una única capa de solución

Desinstalar con una sola capa.

La desinstalación de la Solución 1 provoca la eliminación de un componente, porque es la única capa del componente.

Escenario 2: desinstalar capas de soluciones de diferentes editores

Desinstalar con dos capas: editor diferente.

  • Desinstalar la Solución 2 no causa la eliminación de un componente. Solo se eliminará esa capa.
  • La desinstalación de la Solución 1 provoca la eliminación de un componente, porquela acción sucede en la capa base. De hecho, la Solución 1 no se puede desinstalar en este escenario, porque una solución de un editor diferente extiende el componente.

Escenario 3: desinstalar varias capas de soluciones de diferentes editores

Desinstalar con múltiples capas: editor diferente.

  • Desinstalar la Solución 3 no causa la eliminación de un componente. Solo se eliminará esa capa.
  • Desinstalar la Solución 2 no causa la eliminación de un componente. Solo se eliminará esa capa.
  • La desinstalación de la Solución 1 no causa la eliminación de un componente, porque en este caso hay otra solución del mismo editor (Editor A = Editor C). La plataforma elimina la capa de la solución 1 y la reemplaza con la capa de la solución 3.

Escenario 4: desinstalar capas de solución en una personalización no administrada

Desinstalar con dos capas: personalización no administrada.

  • Desinstalar la capa Activa (no administrada) no causa la eliminación de un componente. Solo se eliminará esa capa. Tenga en cuenta que no puede desinstalar la solución Activa, pero puede eliminar componentes utilizando la función Eliminar personalización Activa.
  • Desinstalar la Solución 1 causa la eliminación de un componente. La acción ocurre en la capa base. A diferencia del escenario 2, puede desinstalar la solución 1. La solución Activa no se considera una extensión, y ambas capas se eliminarán.

Mostrar página de dependencias

El comando Mostrar dependencias enumera las dependencias de la solución o componente de solución seleccionado. Puede ser invocado:

  • Seleccionando Mostrar dependencias en la página de soluciones.
  • Seleccionando Avanzado>Mostrar dependencias dentro de una solución cuando se selecciona un componente de la solución.
  • Se intenta desinstalar una solución, lo que hará que la plataforma detecte que existen dependencias.

Desde la página Dependencias puede abrir, eliminar o eliminar el componente. Más información: Ver dependencias de un componente

Diagnóstico de dependencias

Tengamos en cuenta el escenario siguiente. La siguiente organización tiene dos soluciones: Solución - Flujo de trabajo y Solución - Entidad personalizada.

Lista de soluciones con dos soluciones.

El propietario de la organización decidió que ya no se necesitaba Solución - Entidad personalizada, intentó eliminarlo y se le presentó la siguiente página:

Detalles de dependencia al intentar eliminar una solución.

Sin entrar en detalles, podemos concluir que la desinstalación de la solución está tratando de eliminar una entidad llamada Entidad personalizada y tres campos (Entidad personalizada, Nombre y Campo numérico) y los cuatro componentes tienen dependencias.

Nota

La desinstalación de la solución podría eliminar más componentes, pero como no tienen dependencias, no aparecerán en la lista.

El siguiente paso es comprobar el vínculo Capas de soluciones (columna de más a la derecha) para cada dependencia. Esto le ayudará a decidir qué hacer para quitar la dependencia.

La siguiente figura muestra detalles de dependencia entre la Entidad (Entidad personalizada) y el Proceso (Flujo de trabajo de pruebas).

Detalles de dependencia de entidad personalizada.

Según los datos que se muestran, puede ver que el componente dependiente pertenece a una solución llamada SolutionWorkflow. Para eliminar esta dependencia, podemos:

  • Actualice la definición del flujo de trabajo en SolutionWorkflow, eliminando cualquier referencia a la entidad o sus subcomponentes. Luego, Actualizar o Mejorar la solución.
  • Desinstalar la solución SolutionWorkflow.
  • Elimine el flujo de trabajo de una nueva versión de la solución SolutionWorkflow y luego realice una Actualización.

Debido a que cualquier componente dependiente puede evitar la eliminación de la solución, le recomendamos que compruebe todas las dependencias y realice todos los cambios necesarios en una sola operación.

La siguiente figura muestra detalles de dependencia entre la Entidad (Entidad personalizada) y una aplicación basada en modelo (Mi aplicación).

Dependencia entre Entidad (Entidad personalizada) y Aplicación (Mi aplicación).

Según los datos que se muestran, puede ver que el componente dependiente pertenece a una solución denominada Activa. Esto indica que la dependencia se creó al importar una solución no administrada o mediante una personalización no administrada que se ejecutó a través de la interfaz de usuario o API moderna.

Para eliminar esta dependencia, puede:

  • Edite la definición de la aplicación basada en modelo para eliminar cualquier referencia a la entidad o sus subcomponentes. Debido a que las aplicaciones basadas en modelo admiten la publicación, debe publicar sus cambios.
  • Eliminar la aplicación basada en modelo.

Nota

Desinstalar una solución no administrada no es una opción para eliminar esta dependencia, porque las soluciones no administradas son solo un medio de agrupar componentes.

Acciones para eliminar una dependencia administrada

Las dependencias administradas son aquellas en las que el componente dependiente está asociado a un solución administrada. Para resolver este tipo de dependencia, debe actuar sobre la solución donde se agregó el componente. Esa acción puede ser diferente según lo que intente hacer.

Si está intentando desinstalar una solución

Siga estos pasos:

  1. En la organización de destino, inspeccione el vínculo Capas de solución para encontrar cuál es la solución mejor en la lista del componente dependiente.
  2. En la organización fuente, prepare una nueva versión de esa solución donde la solución no contenga el componente dependiente o tenga una versión actualizada del componente dependiente que no contenga referencias al componente necesario. Su objetivo es eliminar cualquier referencia a los componentes necesarios en la nueva versión de la solución.
  3. Exporte la nueva versión de la solución.
  4. En la organización de destino, mejore esa solución.
  5. Vuelva a intentar la desinstalación.

Si está intentando actualizar una solución

En este caso, debe confirmar que deseaba eliminar el componente necesario (recuerde que las dependencias solo se aplican en los componentes que se están eliminando).

Si no desea eliminar el componente, puede corregir la nueva versión de la solución agregando nuevamente el componente, haciendo lo siguiente:

  1. En la organización de destino, desinstale la solución por etapas (la solución que termina en _Upgrade).
  2. En la organización de origen, agregue los componentes necesarios de nuevo a la solución.
  3. Exporte la nueva versión.
  4. Reintente la actualización.

Si la eliminación es intencional, debe eliminar la dependencia. Pruebe los pasos descritos en la sección anterior, "Si está intentando desinstalar una solución".

Capas y dependencias

Los componentes dependientes pueden estar en capas, por lo que es posible que deba cambiar más de una solución para eliminar por completo una dependencia. El marco de dependencia solo calcula dependencias entre las capas superiores para los componentes necesarios y dependientes. Eso significa que debe trabajar desde la parte superior hasta la parte inferior de las soluciones del componente dependiente.

Tenga en cuenta el escenario siguiente:

Elegir una solución a desinstalar.

Intenta desinstalar Solución - Entidad personalizada y la operación está bloqueada por dependencias.

Dependencias que bloquean la desinstalación de la solución.

Comience a diagnosticar la dependencia seleccionando Capas de solución en el atributo new_numberfield. Ve la siguiente pantalla:

Dependencia entre el atributo new_numberfield y el flujo de trabajo Flujo de trabajo de prueba.

Debido a que las dependencias se crean solo entre las capas superiores de cada componente, el primer paso es tratar la dependencia entre el atributo new_numberfield de SolutionCustomEntity y el flujo de trabajo Flujo de trabajo de prueba de SolutionWorkflow3.

Para quitar la dependencia, decide desinstalar SolutionWorkflow3. Lo hace, pero cuando intenta desinstalar la solución una vez más, aparece la misma página de dependencias:

Dependencias que bloquean la desinstalación de la solución: entidad personalizada.

Sin embargo, el atributo new_numberfield ya no aparece, pese a que existía en más capas.

Acciones para eliminar una dependencia no administrada

Para eliminar dependencias no administradas, debe actuar directamente sobre los componentes, no en las soluciones a las que pertenecen. Por ejemplo, si desea eliminar las dependencias entre un atributo y un formulario, debe editarlo en le Editor de formularios y eliminar el atributo del formulario. La dependencia se eliminará después de seleccionar Guardar y Publicar.

Nota

  • El comando Mostrar dependencias le permite tomar medidas para ver, eliminar la dependencia, editar el componente o eliminar el componente. Más información: Ver dependencias de un componente
  • También puede eliminar el componente dependiente. Esa acción elimina todas las dependencias, junto con el componente.

Para ver las dependencias de un componente, desde el área Soluciones, abra la solución que desee, seleccione los tres puntos verticales junto al componente y luego seleccione Avanzado>Mostrar dependencias.

La página de dependencias tiene dos partes distintas:

  • Componentes dependientes: una lista de componentes que dependen del campo seleccionado. En otras palabras, estos componentes tendrán este campo como su componente requerido.
  • Componentes necesarios: una lista de componentes que este campo necesita para funcionar. En otras palabras, estos componentes tendrán este campo como su componente dependiente.

Dependencias de componente.

Consulte también