# Подключение и настройка проекта

## Добавление проекта в редактор <a href="#adding-project-to-editor" id="adding-project-to-editor"></a>

### Добавление проекта <a href="#adding-project" id="adding-project"></a>

Для добавления проекта в редактор перейдем в меню **File -> New -> Workflow Project**.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FWIIh3NlLXyyWTSPOJWt9%2F08.png?alt=media&#x26;token=62ff4ccd-8a1a-4228-97a1-06dd73373bae" alt=""><figcaption></figcaption></figure>

Если в меню нет пункта Workflow Project, то можно выбрать пункт Project и в открывшемся окне выбрать нужный тип проекта:

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2F4W1HOgYvA1Z4TRL1iJei%2Fimage.png?alt=media&#x26;token=9e786d03-9d4e-47ef-aa3f-4bede44530ec" alt=""><figcaption></figcaption></figure>

Откроется окно создания нового проекта:

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FyGT7tbvyKA0oKnoce08s%2Fimage.png?alt=media&#x26;token=4f56a02a-7d09-4671-b0f6-acac76ae9c83" alt=""><figcaption></figcaption></figure>

Чтобы добавить существующий проект в редактор, снимем галочку **Use default location** и в поле **Location** укажем путь до папки **..\Template\Projects\1. Template\Forms** учебного проекта.

В поле **Project name** укажем имя проекта, которое будет отображаться в окне Navigator редактора Workflow Editor.

Поле **Project type** указывает редактору, какую схему нужно использовать при работе с файлами проекта, чтобы делать корректные подсказки синтаксиса. Тип проекта можно будет переключить в процессе работы, через контекстное меню на кнопке **Switch project type**:

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2FDxCr5CC4VaQCv66RnmJV%2Fimage.png?alt=media&#x26;token=2a5df8ed-fdd0-4772-b780-770647a46d8e" alt=""><figcaption></figcaption></figure>

Жмем Finish, чтобы завершить добавление проекта в редактор.

В окне Project Explorer отображается наш проект, содержащий один файл стартовой формы:

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2FSE0EUM1SRfYxoMPknTHo%2Fimage.png?alt=media&#x26;token=7bcdd745-4a80-4e6a-9d09-aa46613c6c99" alt=""><figcaption></figcaption></figure>

### Добавление серверного XML-файла <a href="#adding-server-xml-file" id="adding-server-xml-file"></a>

Добавим к проекту серверный XML-файл. Для этого просто перетащим его из окна Проводника на наш проект в окне Navigator. В открывшемся окне File Operation выбираем пункт Link to files а остальные настройки оставим по умолчанию. Жмем OK.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FALCHWQS5Chrrm1yptqZL%2Fimage.png?alt=media&#x26;token=41d3280b-e9b0-4c93-ac56-6d42f927dbea" alt=""><figcaption></figcaption></figure>

Теперь нам нужно привязать к проекту серверный XML-файл - это необходимо, чтобы редактор мог подсказывать имена SQL-запросов, описанных в этом файле, когда будем создавать загружающие соединения с данными в файлах форм, а так же имена команд, реализованных на стороне сервера.

Сделать это можно в свойствах проекта, для этого перейдем в меню **Project -> Properties**:

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2F2BxW15KqSLUtDzUA80gD%2Fimage.png?alt=media&#x26;token=4cce6400-bc41-487b-8677-d9f4fc707ef9" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Свойства проекта можно открыть через контекстное меню, кликнув правой кнопкой мыши по имени проекта в окне Project Explorer, и выбрав пункт Properties.
{% endhint %}

И в открывшемся окне свойств проекта в левой части перейдем к секции **Workflow Settings**.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2Fziek7WWRGHTTdmE3EjBa%2Fimage.png?alt=media&#x26;token=ab94c91a-11c9-44e2-b574-50ddea280228" alt=""><figcaption></figcaption></figure>

В правой части окна в блоке Forms так же есть настройка для задания типа проекта.

В блоке Workflows нажмем кнопку Add new workflow.

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2FW36SRTyMFpoYPvriVPQe%2Fimage.png?alt=media&#x26;token=37a3dfdc-b342-46ac-90a0-1a7791d1586b" alt=""><figcaption></figcaption></figure>

* **File**: - имя серверного XML-файла;
* **Name**: имя процесса, с которым связан серверный файл.

В открывшемся окне Workflow жмем кнопку Browse. В новом окне Files видим все файлы в проекте.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FjgZ7sXwGSraWb6KX9Lvy%2Fimage.png?alt=media&#x26;token=909c8cc4-e295-445a-baf7-2d86b4a4a84b" alt=""><figcaption></figcaption></figure>

Выберем серверный XML-файл и жмем OK. В окне Workflow видим выбранный серверный файл и связанный с ним процесс.

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2F65EZ71ik1zNBNnAwY44p%2Fimage.png?alt=media&#x26;token=accedfa3-19b1-43fd-af23-0ec776b9ba2f" alt=""><figcaption></figcaption></figure>

Жмем OK.

В окне свойств проекта в таблице добавится серверный файл:

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FDyXKVGkEpyi2sAGUHda3%2Fimage.png?alt=media&#x26;token=4756466c-c7d0-45ec-9f8d-11e577fc2dec" alt=""><figcaption></figcaption></figure>

Жмем OK. Теперь серверный XML-файл привязан к проекту.

## Обзор структуры кода <a href="#code-structure-overview" id="code-structure-overview"></a>

В этом разделе кратко рассмотрим основные элементы xml-кода для серверного файла и файлов форм. Подробное описание всех тэгов можно найти в справочнике по серверной части и десктопной части.

{% embed url="<https://wfsys.gitbook.io/workflow-forms-syntax/>" %}

{% embed url="<https://wfsys.gitbook.io/workflow-engine-syntax/>" %}

### Серверный xml-файл <a href="#server-xml-file" id="server-xml-file"></a>

Краткий шаблон основных элементов серверной части:

```xml
<?xml version="1.0"?>
<Workflow Schema="">
  <SqlQueries>
    <SqlQuery Name="">
      <Text></Text>
    </SqlQuery>
  </SqlQueries>

  <AccessPoints>
    <AccessPoint Name="" />
  </AccessPoints>

  <Permissions>
    <Permission Name="">
      <AccessPoint Name="" />
      <SqlQuery Name="" />
    </Permission>
  </Permissions>
  
  <Roles>
    <Role Name="">
      <Permissions></Permissions>
    </Role>
  </Roles>

  <Groups>
    <Group Name="">
      <Roles></Roles>
    </Group>
  </Groups>
</Workflow>
```

Необязательный тэг [`<SqlQueries>`](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/sql_queries) - список тэгов [`<SqlQuery>`](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/sql_queries/sql_query), каждый из которых описывает SQL-запрос на получение или изменение данных, хранящихся в базе данных. Один тэг `<SqlQuery>` может содержать последовательность SQL-запросов, которые будут выполняться в рамках одной транзакции.

{% hint style="info" %}
Транзакция - набор операций по работе с базой данных, объединенных в одну атомарную единицу. Если транзакция выполнена успешно, все модификации данных, сделанные в течение транзакции, принимаются и сохраняются в базе данных. Если в результате выполнения транзакции происходят ошибки и должна быть произведена отмена или выполнен откат, все модификации данных будут отменены.
{% endhint %}

Необязательный тэг [\<AccessPoints>](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/access_points) - список точек доступа, которые предоставляют пользователям доступ к элементам форм.

Необязательный тэг [\<Permissions>](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/permissions) - список разрешений на выполнение запросов и команд, а так же точек доступа.

Необязательный тэг [`<Roles>`](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/roles) - список ролей, представляющих наборы разрешений.

Необязательный тэг [`<Groups>`](https://wfsys.gitbook.io/workflow-engine-syntax/workflow_engine/groups) - список групп пользователей с наборами ролей.

### Xml-файл формы <a href="#form-xml-file" id="form-xml-file"></a>

Краткий шаблон основных элементов xml-файла форм десктопного приложения:

```xml
<?xml version="1.0"?>
<Form Name="" Width="" Height="" BackColor="" StartPosition="" StatusBar="">
  <Parameters>
    <Parameter Name=""></Parameter>
  </Parameters>

  <Appearance>
    <Colors>
      <Color Name="" Red="" Green="" Blue="" Alpha="" />
    </Colors>
    <FontStyles>
      <FontStyle Name="" Font="" Size="" />
    </FontStyles>
  </Appearance>

  <DataConnections></DataConnections>

  <Conditions>
    <Condition Name="" Type="" Assembly="Conditions" />
  </Conditions>

  <Commands>
    <Command Name="" Type="" Assembly="Commands" />
  </Commands>
  
  <Executions>
    <Execution>
      <ConditionExpression></ConditionExpression>
      <Commands></Commands>
    </Execution>
  </Executions>

  <MyObjects>
    <MyObject Name="" Type="" Assembly="BaseControls">
      <Top></Top>
      <Left></Left>
      <Height></Height>
      <Width></Width>
    </MyObject>
  </MyObjects>
</Form>
```

Корневым элементом файла является тэг [`<Form>`](https://wfsys.gitbook.io/workflow-forms-syntax/#attributes_form), его атрибуты описывают основные свойства формы.

Необязательный тэг [`<Parameters>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/parameters) - список параметров формы, с помощью которых можно передавать данные между формами или хранить промежуточные расчеты на самой форме.

Необязательный тэг [`<Appearance>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/appearance) - список шрифтов и цветов для графических элементов формы.

Необязательный тэг [`<DataConnections>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/dataconnections) - список соединений с данными для загрузки данных с сервера или сохранения данных на сервере.

Необязательный тэг [`<Conditions>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/conditions) - список событийных условий (например, [CellDoubleClickCondition](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/conditions/event_condition/cell_double_click_condition) или [FormLoadedCondition](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/conditions/event_condition/form_loaded_condition)) и условий сравнений (например, [EqualCondition ](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/conditions/comparison_condition/equal_condition)или [IsNullOrEmptyCondition](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/conditions/comparison_condition/is_null_or_empty_condition)).

Необязательный тэг [`<Commands>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/commands) - список команд, выполняемых на стороне клиента.

Необязательный тэг [`<Executions>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/executions) - конструкции выполнения команд по&#x20;

Необязательный тэг [`<MyObjects>`](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects) - список объектов формы, таких как поля ввода ([TextBox](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/textbox) и [NumericBox](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/numericbox)), таблицы ([DatabaseTable](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/databasetable)) или переменных ([Variable](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/variable)).

Чтобы отключить следование структуры кода в окне Outline за кодом в окне редактирования, можно кликнуть по кнопке **View Menu** и в контекстном меню отключим **Link with Editor**:

<figure><img src="https://2982419670-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw42gvnbAkwAz4lPHWZM0%2Fuploads%2FBwUZmvc7E9NRgUUrtvvO%2Fimage.png?alt=media&#x26;token=0edbd321-7faa-4c97-a40f-b88294fbfae2" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wfsys.gitbook.io/workflow-technology/setting-up-dev-environment/create_project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
