Как скопировать схему.

Добрый день,
Как можно создать другую копию схемы процесса.
Например, есть процесс Test1, надо создать почти точно такjй же процесс Test2

Нравится

9 комментариев

А простое копирование сервиса диаграммы Вы не пробовали? потом в скопированом сервисе убираем или добавляем нужные элементы...
или у Вас БПМ-онлайн? или немного другая задача?

П.С. сорри, с утра туплю:smile: уже сама увидела, что BPM-online..

Здравствуйте!

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

Как написала Анна, в файле метаданных процесса достаточно поменять имя процесса (поле "А2" в начале файла) и его уникальный UId (это должен быть GUID). Хочу только подчеркнуть, что UId процесса в файле встречается много раз, так что менять его лучше всего в режиме "Поиск и замена" в каком-нибудь текстовом редакторе. Иначе рискуете получить не открывающуюся в дизайнере процессов схему.
метаданные схемы процесса

Аналогично копируется и схема страницы: выгужаем в md-файл. В начале файла можно увидеть старые значения Id, Name и Caption.

{
  "Id": "feab5118-585f-4729-8920-587088a5b4d4",
  "ManagerName": "PageSchemaManager",
  "StateInSolution": 0,
  "Name": "ContractEditPage",
  "Caption": "Страница карточки договора",
  "ParentId": "85086f2a-99e3-4268-860c-d26f53ec85dc",
  "MetaData": "{\r
\n  \"MetaData\"": {\r

Спасибо,
Только что протестировал, все хорошо работает.

И вопросы на засыпку
1. Получается также можно скопировать и страницы?
2. После создания копии проблем с оригиналом не будет? Например с уникальными гуидами элементов процесса

Пардон Саша,
Ваше сообщение увидел чуть позже

И последний вопрос:

Как правильно перенести разработки на тестовую базу?

Как у нас сейчас реализована архитектура:
1. База разработки
2. Тестовая база
3. Боевая

Доработки делаются на базе разработки, а потом админы каждую неделю обновляет тестовую(перенос разработки - на тест).
Но бывает, когда надо срочно перенести разработку.
Раньше делали экспорт - импорт - публикация. Но это засоряет сервер приложении при публикации и в таблице "SysSchemaInSolution" создаются 2 копии этого элемента (1- е при импорте, 2-е при публикации)
Потом стали публикавать через VS, чтобы темпы не засоряли сервер. Но изменения происходят после перезагрузки сервера приложении

Как правильно перенести изменения не затрагивая работающих пользователей???

"AlikBory" написал:
2. После создания копии проблем с оригиналом не будет? Например с уникальными гуидами элементов процесса

Если Вы не меняете оригинальный процесс, то проблем с ним не будет.
Если ошибетесь с подменой GUID-ов в копии, то можете получить копию, которую не сможет открыть Дизайнер процессов, или же она откроется, но будет иметь некорректные элементы или связи. Оригинальный процесс при этом не пострадает.

Менять в копии процесса GUID-ы элементов не обязательно, т.к. в текущей реализации важна их уникальность в пределах одной схемы процесса. Два разных процесса могут иметь элементы с одинаковыми Id. Учитывая высокую вероятность наделать ошибок при тотальной замене GUID-ов по всей схеме, я бы настоятельно не рекомендовал это делать :smile:

"AlikBory" написал:

Как правильно перенести разработки на тестовую базу?

Как правильно перенести изменения не затрагивая работающих пользователей???


Штатным режимом переноса изменений как раз является "экспорт-импорт-публикация". При такой операции новые версии схем подхватываются системой незаметно для других пользователей.
В таблице "SysSchemaInSolution" хранятся все версии всех схем. В результате имеется возможность откатить некорректные изменения.
Если количество старых версий схем в "SysSchemaInSolution" для Вас критично, старые версии можно чистить из этой таблицы. Номер версии хранится в колонке Version, чем больше число - тем новее версия. Главное - чтобы для каждой конфигурации оставалась хотя бы одна запись для каждой схемы.

Показать все комментарии