Adding/Removing pzl-Component to the Pzl-Container

Материал из wikiru.visual-prolog.com

Автор: Виктор Юхтенко

It is recommended to make the adding the plz-component to the pzl-Container using the Elementary PzlStudio. The manual performing this operation using the IDE may lead to the non-correspondence of some necessary links in the projects.

Any entity may be a pzl-container - an executable application or it may be a dll-container. To make the adding operation you choose the Visual Prolog project, which is a pzl-container. If it is the main application, then the pzlPort must be added to it before. If it is the DLL, then it must be actually the pzl-container based on DLL.

Further you choose a pzl-component package and you may choose any of ways to add the pzl-component to the pzl-container: as the original pzl-component or it will be added as the pzl-component delegate (proxy).

You may also make a conversion of the status of the pzl-components, which was included to the pzl-container before. The status "original" may be converted to the status "proxy". The back operation is available also.

After the operation performing is complete you may come back to the Visual Prolog IDE and work with the modified project.


Операции над Pzl-Компонентами в Pzl-Контейнерах - добавление, удаление и изменение статуса не рекомендуется делать в IDE системы Visual Prolog. Выполнение таких операций вручную с использованием IDE может привести к рассогласованию необходимых связей.

Однако компиляция проектов, содержащих Pzl-Компоненты, должна производится в IDE, при этом следует выполнять рекомендации, приведенные ниже.

Вызов операции

Операции над Pzl-Компонентой в Pzl-Контейнере (добавление, удаление и изменение статуса производятся с помощью одной и той же формы, вызываемой через меню Tools/Add/Component To Container. Проект контейнера должен быть сохранен средствами IDE (Ctrl-S). Закрывать проект не обязательно.

PzlStudio AddComponentDialog.png

Для подготовки к выполнению операции в форме должны быть выбраны Pzl-Контейнер (Container Project), которому соответствует файл проекта .prj6 и Pzl-Компонента (Component Package), которой соответствует Файл пакета компоненты .pack.

Pzl-контейнером может быть как главное приложение, так и DLL-контейнер. Если контейнером является главное исполняемое приложение, то в него предварительно должен быть добавлен PzlPort. Если это DLL - то это должен быть именно Pzl-контейнер на основе DLL, созданный с помощью интрумента Elemntary PzlStudio.

Дальнейшие действия определяются тем, какая операция должна быть выполнена.

Выполнение операции

Выполнение операции осуществляется по нажатию одной из кнопок на панели:

  • Add As Original - добавить в качестве оригинала
  • Add As Proxy - Добавить в качестве представителя (Proxy)
  • Remove - удалить
  • Convert To Proxy - преобразовать в представителя (Proxy)

После выполнения операции в Oкне Cообщений (Messages) появляется отчет о выполнении операции.

После выполнения операции следует перейти к IDE системы Visual Prolog, открыть проект (если он не открыт) и откомпилировать. Детали выполнения операций и рекоментации приведены ниже.

Добавление

Не имеет значения, является ли pzl-Контейнер пустым или в нем уже содержатся другие Pzl-Компоненты. Главное - добавляемая компонента до этого не должна содержаться в данном контейнере.

pzl-Компонента добавляется либо как оригинальная компонента, либо как представитель pzl-Компоненты (proxy).

Если компонента добавляется как оригинальная компонента, то все другие классы могут ее использовать, создавая ее экземпляры и выполняя все, предусмотренные ее интерфейсами, действия. Для этого нажимается кнопка Add As Original (Добавить как оригинальную).

Если Вы добавляете в данный контейнер представителя Pzl-Компоненты, то это означает, что эта pzl-Компонента находится в каком-либо контейнере (Вы можете не знать, где именно), а все классы данного контейнера взаимодействуют с ней через ее представителя, находящегося в данном контейнере. В этом случае нажимается кнопка Add As Proxy (Добавить как представителя).

Сообщение в Окне сообщений подтвердит выполнение операции.

PzlStudio ComponentAddedAsOriginalMSG.png

Откройте проект с помощью IDE (если он не открыт) и откомпилируйте его.

В процессе компиляции возможны следующие ситуации:

  1. При добавлении в качестве оригинала:
    1. Если добавленный Pzl-компонент не использует другие Pzl-компоненты,
      то все предолжения IDE по включению в проект других пакетов, используемых Pzl-Компонентом, можно принимать без опасений.
    2. Если добавленный Pzl-компонент использует другие Pzl-компоненты, не включенные
      к моменту компиляции в проект Pzl-Контейнера, то необходимо отказаться от предложения IDE по включению такой компоненты в данный проект.
      Включение таких дополнительных Pzl-Компонент следует произвести только с помощью Elementary PzlStudio.
  2. При добавлении в качестве представителя проблем не должно быть. Этот случай подпадает под действие правила 1.1, приведенного выше.

Удаление

Удаление pzl-Компоненты из Pzl-Контейнера рекомендуется осуществлять с помощью Elementary PzlStudio. Выполнение такой операции вручную с использованием IDE может привести к рассогласованию необходимых связей.

После выполнения операции в Окне Сообщений появляется отчет о выполнении операции

PzlStudio ComponentRemovedSuccessfulyMSG.png

Теперь следует вернуться к IDE, если проект контейнера был ранее открыт, или в IDE открыть модифицированный проект.

После удаления pzl-Компоненты следует произвести полную перекомпиляцию проекта с использованием Rebuild All.

Удаление pzl-Компоненты может привести к нарушению целостности проекта Pzl-Контейнера. Это справедливо, если какие-либо пакеты содержат обращения к удаленной Pzl-компоненте. Строго говоря, удаление Pzl-Компоненты в таких случаях является некорректной операцией. Правильнее было бы изменить статус pzl-Компоненты, преобразовав ее в представителя (Proxy).

Преобразование не требуется, если одновременно с удалением данной Pzl-компоненты из данного Pzl-контейнера синхронно удаляютя и пакеты, обращающиеся к ней.

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

Изменение Статуса pzl-Компоненты

Pzl-Компонента может иметь статус Ориганал или Представитель (Proxy).

При добавлении Pzl-Компоненты в Pzl-Контейнер статус компоненты определяется типом операции: добавление в качестве Оригинала или в качестве Представителя.

Пользуясь Elementary PzlStudio, Вы можете изменить статус pzl-Компоненты с оригинального на Proxy и обратно.

Конвертация в Proxy

Изменение статуса с оригинального на Proxy производится простым нажатием на кнопку Convert To Proxy (Преобразовать в Proxy). В Окне сообщений появится отчет о выполнении операции.

PzlStudio ConvertOriginalToProxyMSG.png

Теперь надо перейти к IDE и откомпилировать проект.

Конвертация в Оригинал

Форма не имеет явной операции по преобразованию ствтуса Pzl-Компоненты с Proxy на Оригинал. Однако выполнение операции Add As Original, несмотря на присутствие Pzl-компоненты в Pzl-контейнере, установит статус Pzl-Компоненты Оригинал. Отчет в Окне Сообщений покажет:

PzlStudio ConvertProxyToOriginalMSG.png

Теперь надо перейти к IDE и откомпилировать проект.

References