Прочитать на английском

Поделиться через


Обслуживание работоспособного ALM для форм приложений на основе модели

В этой статье представлена информация о различных сценариях реализации и практики работоспособного управления жизненным циклом приложений (ALM) для настройки форм в решениях приложений на основе модели.

В следующих разделах описывается, как работает слияние форм и как поддерживать настройки. Базовые сценарии разработки с рекомендациями по поддержанию успешного ALM для формы приложения на основе модели подробно описаны в каждом следующем разделе. Каждый сценарий включает в себя шаги, которые помогут вам реализовать правильный процесс ALM при обновлении решения или приложения на основе модели.

Создание новой формы и ее обслуживание с помощью нескольких управляемых решений

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. Создайте новую форму с именем FormA в вашей среде разработки и внесите изменения в форму.
  2. Создайте новое решение (названное Решение А на диаграмме ниже) в среде разработки, которая будет неуправляемым решением, и добавьте новую форму. Экспортируйте решение как управляемое. Этот шаг экспортирует полный FormXml для формы.
  3. В своей тестовой среде импортируйте управляемое решение из шага 2, который создает FormA в тестовой среде. На диаграмме ниже FormA создается в тестовой среде, и пользовательский интерфейс формы показывает Field1 и Field2 что Решение А добавлено в форму.
  4. При дальнейшей настройке формы, созданной на шаге 1 с использованием новой среды разработки (исходной), импортируйте управляемое Решение А, созданное на шаге 2, убедитесь, что в используемом вами экземпляре разработки есть FormA в управляемом состоянии. Как показано на диаграмме ниже, управляемое Решение А импортируется в среду разработки, и форма настраивается, создавая активные настройки. Потом, FormA затем можно добавить в новое неуправляемое решение (Решение B на диаграмме) и экспортируется как управляемое решение из среды разработки. Этот шаг экспортирует дифференциальную (diff) FormXml для формы.
  5. В вашей тестовой среде импортируйте управляемое решение (Решение B) из шага 4. Как показано на диаграмме ниже Решение B добавляет новый Field3 к FormA и удаление Field2, который был добавлен Решение А. Пользовательский интерфейс формы в тестовой среде теперь показывает Field3 а также Field1 в форме, но не Field2 после слияния.

Сценарий 1 формирует диаграмму ALM.

Неработоспособный пример для этого сценария

Как видно на диаграмме ниже, создание нескольких управляемых решений из среды разработки, в которой базовое решение (Решение А) находится в неуправляемом состоянии. Это потому, что при создании другого неуправляемого решения (Решение B) для неуправляемой формы FormXml экспортируется как полный FormXml, а не как diff FormXml, как показано в допустимом сценарии выше. Впоследствии такие изменения, как удаление столбца, не вступят в силу.

Неработоспособный пример формы ALM для этого сценария.

Создание новой формы и внесение изменений с помощью исправлений и обновлений

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. Создайте новую форму с именем FormA в вашей среде разработки и внесите изменения в форму.

  2. Создайте решение (Решение А на диаграмме ниже), которая будет неуправляемым решением, и добавьте новую форму. Экспортируйте решение как управляемое. Этот шаг экспортирует полный FormXml для формы.

  3. В своей тестовой среде импортируйте управляемое решение из шага 2, который создает форму в тестовой среде. На диаграмме ниже FormA создается в тестовой среде, и пользовательский интерфейс формы показывает Field1 и Field2 что Решение А добавлено в форму.

  4. При дальнейшей настройке формы, созданной на шаге 1, с помощью исправлений используйте ту же среду, где Решение А находится в неуправляемом состоянии, создайте исправление для решения и настройте форму. Затем экспортируйте исправление как управляемое решение. Этот шаг экспортирует полный formXml для формы.

  5. В вашей тестовой среде импортируйте управляемое решение исправление из шага 4. Как показано на диаграмме ниже, исправление Решение А добавляет новый Field3 в FormA и удаление Field2, который был добавлен с помощью Решение А.

    Примечание

    Исправления, содержащие полный formXml всегда сравниваются с базовым слоем, из которого был создано исправление, и игнорируют любые промежуточные исправления между базовым и текущим исправлением. Как результат, Field2 удаляется, так как оно существует в базовом слое Решение А и удаление обнаружено. С другой стороны, Field3 добавляется этим решением исправления и не может быть удалено последующими исправлениями. Таким образом, поля, добавленные с помощью решений исправлений, являются дополняющими по своей природе.

  6. При дальнейшей настройке формы, созданной на шаге 1, с помощью обновлений используйте ту же среду, где Решение А находится в неуправляемом состоянии и клонируйте Решение A, чтобы создать обновленное решение и настройте форму. Затем экспортируйте обновление Решение А как управляемое решение. Этот шаг экспортирует полный FormXml для формы.

  7. В вашей тестовой среде импортируйте обновление управляемое Решение A из шага 6. Как показано на диаграмме ниже обновление Решение A добавляет новый Field4 к FormA и удаление Field2, который был добавлен Решение А. Пользовательский интерфейс формы в тестовой среде теперь показывает Field1, Field3 и Field4 в форме, но Field2 будет удален после того, как форма будет объединена из импорта.

Сценарий 2 формирует диаграмму ALM.

Настройка существующей управляемой формы и ее обслуживание с помощью нескольких управляемых решений

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. Редактировать существующую управляемую форму с именем FormB в этом примере в вашей среде разработки и выполните настройку формы. Обратите внимание, что решение A — это управляемое решение, уже установленный для формы в среде разработки.
  2. Создайте решение (Решение B на диаграмме ниже), которая будет неуправляемым решением, и добавьте FormB. Экспортируйте решение как управляемое. Этот шаг экспортирует дифференциальную (diff) FormXml для формы.
  3. В вашей тестовой среде импортируйте управляемое решение из шага 2, таким образом создавая второй слой решения для формы. На приведенной ниже схеме FormB получает объединенные изменения из Решения A и Решения B в тестовой среде, а пользовательский интерфейс для формы показывает Field1 и Field3 в форме, но не Field2, которое было удалено Решением B.
  4. При дальнейшей настройке формы, настроенной на шаге 1, с использованием новых управляемых решений, убедитесь, что используется новая среда разработки, у которой есть FormB в управляемом состоянии. Как показано на схеме ниже, управляемые решения Решение А и Решение B импортируются в новую среду разработки. Форма B настраивается путем создания активных настроек, которые затем можно добавить в новое решение (Решение C на схеме) и экспортировать как управляемое решение.
  5. В вашей тестовой среде импортируйте управляемое Решение C из шага 4. Как показано на схеме ниже Решение C добавляет новый Field4 к FormB и удаление Field3, который был добавлен Решением B. Пользовательский интерфейс формы в тестовой среде теперь показывает Field1 и Field4 в форме, но не Field2 и Field3.

Сценарий 3 формирует диаграмму ALM.

Неработоспособный пример для этого сценария

Как показано на диаграмме ниже, создание нескольких управляемых решений из среды разработки, которая содержит другое неуправляемое решение, созданное вами для той же формы, не является работоспособным. Обратите внимание, что Решение B находится в неуправляемом состоянии. При создании другого неуправляемого решения (Решение C) для FormB, FormXml экспортируется как diff FormXml, как показано в шаге 4 в приведенном выше сценарии. Но, FormB также содержит изменения из Решение B, который будет перезаписан вашими новыми изменениями.

Например, как показано на диаграмме ниже, Поле3 добавлен к FormB в Решение B. Но теперь, когда вы создаете новый Решение C в этой среде, с Решение B в неуправляемом состоянии и удалите Field3, Field3 также будут удалены в среде разработки. Поле3 не будет отслеживаться в diff FormXml при экспорте решения, поскольку изменение добавления и удаления этого столбца было сделано в том же активном слой. Это означает, что управляемое Решение C импортируется в тестовую среду, форма по-прежнему будет отображать Field3 потому что diff FormXml никогда не записывает его как удаленный (например, он был удален на шаге 5 в сценарии ALM работоспособной формы выше). Выполнение настроек формы таким образом приведет к несовместимости среды разработки с тестовой средой.

Другой пример неработоспособной формы ALM для этого сценария.

Настройка существующей управляемой формы и ее обслуживание с помощью исправлений и обновлений

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. Настраивать существующую управляемую форму с именем FormB в этом примере в вашей среде разработки и выполните настройку формы. Обратите внимание, что Решение A — это управляемое решение, уже установленный для формы в среде разработки.

  2. Создайте решение (Решение B), которое будет неуправляемым решением, и добавьте FormB. Экспортируйте решение как управляемое. Этот шаг экспортирует diff FormXml для формы.

  3. В вашей тестовой среде импортируйте управляемое Решение B из шага 2, таким образом создавая второй слой решения для формы. На диаграмме ниже FormB получает объединенные изменения из Решение А и Решение B в тестовой среде. Кроме того, пользовательский интерфейс для FormB показывает Field1 и Field3 в форме, но не Field2, которое было удалено Решением B.

  4. При дальнейшей настройке формы, которую вы настроили на шаге 1, с помощью решения исправления, вы можете использовать ту же среду разработки, что и на шаге 1, где Решение B существует в неуправляемом состоянии. Как показано на схеме ниже, Решение А находится в управляемом состоянии и Решение B находится в неуправляемом состоянии. Форма дополнительно настраивается, и вы создаете сохранение для Решение B добавление вашей формы в это решение и экспорт ее как управляемого исправления. Этот шаг экспортирует diff FormXml.

  5. В вашей тестовой среде импортируйте управляемое исправление Решение B из шага 4. Как показано на схеме ниже, Исправление Решение B добавляет новый Field4 в FormB и удаление Field3, который был добавлен с помощью Решение B.

    Примечание

    Исправления являются аддитивными по своей природе и не могут удалять из формы такие компоненты, как столбцы. Так, Field3 не будет удален из формы. Пользовательский интерфейс формы в тестовой среде теперь показывает Field1, Field3, и Field4 в форме, но не Field2.

  6. При дальнейшей настройке формы, созданной на шаге 1, с помощью обновлений используйте ту же среду, где Решение B находится в неуправляемом состоянии и клонируйте Решение B, чтобы создать обновленное решение и настройте FormB. Экспортируйте обновление как управляемое решение. Этот шаг экспортирует diff FormXml для формы.

  7. В вашей тестовой среде импортируйте обновление управляемого Решения B из шага 6. Как показано на схеме ниже Обновление Решение B добавляет новый Field5 к FormB и удаление Field3, который был добавлен Решением B. Пользовательский интерфейс формы в тестовой среде теперь показывает Field1, Field4 и Field5 в форме, но Field2 и Field3 удалены.

Отредактируйте существующую управляемую форму, используя схему исправлений и обновлений.

Поддержка неуправляемых решений и настроек для новой формы в нескольких средах разработки

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. В среде разработки 1 создайте FormA и выполните настройки в форму.
  2. Создайте решение (Решение А на диаграмме ниже), которая будет неуправляемым решением, и добавьте новую форму. Экспортируйте решение как неуправляемое. Этот шаг экспортирует полный FormXml для формы.
  3. В Среда разработки 2, импортируйте неуправляемое решение из шага 2, который создает форму в Среда разработки 2. На диаграмме ниже FormA создается и пользовательский интерфейс формы показывает Field1 и Field2 что Решение А добавлено в форму.
  4. Вы дополнительно настраиваете форму в Среда разработки 2 внося активные настройки в среду, такие как добавление нового столбца с именем Field3. ФормаA теперь отображает Field1, Field2 и Поле3.
  5. В вышей Среда разработки 1, вы также можете настроить форму, добавив Field4. Пользовательский интерфейс для формы в Среда разработки 1 теперь показывает Field1, Field2, а также Field4.
  6. Экспорт неуправляемого Решение А с изменениями, внесенными на шаге 5. Этот шаг экспортирует полный FormXml для формы.
  7. В Среда разработки 2 импортируйте неуправляемое Обновление Решение A из шага 6. Поскольку решение, которое вы импортируете, содержит полный FormXml для FormA, он перезаписывает активную настройку, сделанную в Среда разработки 1. Итак, форма теперь показывает только Field1, Field2, а также Field4, но не Field3, которая была дополнительной активной настройкой, выполненной в Среда разработки 1. Такое поведение наблюдается при импорте любого неуправляемого решения, содержащего полный FormXml для формы.

Неуправляемые решения в нескольких средах.

Поддержка неуправляемых решений и настроек для существующей формы в нескольких средах разработки

Выполните следующие действия, чтобы реализовать работоспособную форму ALM для этого сценария.

  1. В Среда разработки 1, настроить существующую форму с именем FormB в этом примере. Затем выполните настройку формы.
  2. Создайте решение (Решение B на схеме ниже), которая будет неуправляемым решением, и добавьте FormB. Экспортируйте решение как неуправляемое. Этот шаг экспортирует diff FormXml для формы.
  3. В Среда разработки 2 импортируйте неуправляемое решение из шага 2, таким образом создавая второй слой решения для формы. В FormB пользовательский интерфейс показывает Field1, Field2, а также Field3 после слияния формы.
  4. Вы дополнительно настраиваете форму в Среда разработки 2 внося активные настройки в среду, такие как добавление нового столбца с именем Field4. FormB теперь показывает Поле1, Поле2, Поле3 и Поле4.
  5. В Среда разработки 1, вы также можете настроить форму, добавив новый столбец с именем Field5. Пользовательский интерфейс для формы в Среда разработки 1 теперь показывает Field3, и Field5.
  6. Экспорт неуправляемого Решение B с изменениями, внесенными на шаге 5. Этот шаг экспортирует diff FormXml для формы.
  7. В Среда разработки 2 импортируйте неуправляемое Обновление Решение B из шага 6. Поскольку решение, которое вы импортируете, содержит diff FormXml для FormB, он объединится с активной настройкой, выполненной в Среда разработки 1. Итак, форма теперь показывает Field1, Field2, Field3, Field4 и Field5. Такое поведение наблюдается для импорта любого неуправляемого решения, содержащего diff FormXml для формы.
  8. Если слияние форм на шаге 7 — это не то, что вам нужно, даже если вы импортируете diff FormXml с неуправляемым решением и хотите иметь возможность перезаписать активные настройки, сделанные в Среда разработки 2, затем удалите активный слой для FormB. Больше информации: Удалить неуправляемый слой.
  9. Экспорт неуправляемого Решение B с изменениями, внесенными на шаге 5. Этот шаг экспортирует diff FormXml для формы.
  10. В Среда разработки 2 импортируйте неуправляемое Обновление Решение B из шага 9. Поскольку нет активного слоя для формы в Среда разработки 2, (см. шаг 8), все изменения из неуправляемого Решение B импортируются, даже если вы импортируете diff FormXml для FormB. Итак, форма теперь показывает только Field1, Field2, Field3 и Field5. Такое поведение наблюдается для импорта любого неуправляемого решения, содержащего diff FormXml для формы. Это тот же результат, что и на шаге 7 в сценарий Поддержка неуправляемых решений и настроек для существующей формы в нескольких средах разработки.

Сценарий 6 формирует диаграмму управления жизненным циклом приложения.

Полная и дифференциальная форма XML

Каждый пакет экспортированного решения включает файл customizations.xml. Каждый раз, когда форма включается в решение, соответствующее определение формы существует в разделах FormXml файла customizations.xml. FormXml может быть полным или же дифференциальным (diff).

Полный FormXml

FormXml, который вы получаете при экспорте решения для формы в неуправляемом состоянии, называется полный FormXml. Полный означает, что он содержит все определение формы. Когда вы создаете новую форму и экспортируете ее, форма всегда будет полным FormXml, потому что форма в среде, из которой вы экспортируете, находится в неуправляемом состоянии, а также в состоянии создания. Если вы экспортируете какие-либо другие решения из этой же среды, они также будут включать полный FormXml. Поскольку атрибут solutionaction указывает на diff FormXml, полный FormXml в файле customization.xml в экспортируемом решении не будет содержать никаких атрибутов solutionaction.

Дифференциальный (diff) FormXml

FormXml, который вы получаете при экспорте решения для формы в управляемом состоянии, называется дифференциальный или diff FormXml. Diff означает, что FormXml содержит только изменения, внесенные в активные настройки в этой среде, а не все определение формы. Когда вы настраиваете существующую управляемую форму и экспортируете ее, форма всегда будет diff FormXml, потому что она будет содержать только активные изменения, внесенные в нее. Файл diff FormXml в файле customization.xml в экспортируемом решении будет содержать атрибуты solutionaction, определяющие изменения, например Добавлен, Удаленный, Изменено.

Diff FormXml гарантирует, что ваше решение будет отражать только те изменения, которые необходимы вашему приложению, и на него меньше повлияют изменения с других уровней. Diff FormXml также делает решение менее громоздким и ускоряет его импорт.

См. также

Рекомендации для здоровой формы ALM