Всем привет.

Версия 7.11.0.3122

Товарищи возникла проблема.

Пеезжаем на другой сервер, crm систему перенесли,базу тоже. В систему пускает, данные показывает.

Но перестали отображаться "Автогенерируемые страницы" в бизнес процессах. По журналу видно, что бц работает и висит на автогенерируемой странице, которая собственно требует от пользователя, какого-то выбора в рамках бизнес логики.

Компиляция, перегенерация  нифига не помогают.

Помогите пжлста

Нравится

1 комментарий

Имеются две среды, две базы на двух разных машинах. Базы отличаются друг от друга. На одной машине у меня есть пакеты разработки, которые я могу менять. Как мне их правильно перенести на другую базу на другую машину, чтобы они там остались доступны мне для изменения? SVN Server есть

Нравится

4 комментария
Лучший ответ

Попробуйте настроить работу с SVN для обоих сред. Подробнее смотрите здесь.

Попробуйте настроить работу с SVN для обоих сред. Подробнее смотрите здесь.

Алла Савельева,

то есть разработка далее будет идти только в файловой системе?

Линар Аминев,

А что Вас смущает в разработке в файловой системе?

Алла Савельева,

да в целом ничего. будем значит в файловой системе. спасибо за ответ)

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

Коллеги всем доброго времени суток.

Подскажите есть ли возможность переноса настроек прав доступа  на объекты с песочницы на прод, что бы не выполнять обно и тоже по нескольку раз.

Нравится

2 комментария
Лучший ответ

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

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

Коллеги, доброго дня!

Может, кто-то сталкивался с подобной задачей, прошу подсказать ньюансы:

1. В продакшн среде есть бизнес-процесс, который активно используется в кейсах разделов, вручную и т.д.

2. При реализации нового функционала я создал новую версию работающего процесса в пакете-наследнике от пакета с процессом и пакета с новым функционалом.

Цель - оставить запущенные экземпляры на старой реализации процесса, а новые с момента обновления запускать на новой реализации. 

3. Сейчас я должен перенести новую версию процесса в рамках обновления, но немного паникую: не нужно ли каких-либо дополнительных действий с моей стороны?

Какие-либо данные или скрипты привязать к пакету или определённую последовательность действий соблюсти, может какое-то специфичное состояние системы при переносе требуется?

Кто-нибудь сталкивался? как прошло?

Нравится

1 комментарий

См. статью «Версионность процессов»:

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

При изменении схемы процесса автоматически создается его новая версия. Новая версия процесса замещает предыдущие его версии везде, где используется схема этого процесса (например, в подпроцессах). При этом ранее запущенные экземпляры процесса продолжают работу в той версии, в которой были запущены.

При сохранении изменений в процессе выполняется проверка:

 

  1. есть ли запущенные экземпляры процесса;

  2. доступен ли для изменений пакет, в котором находится процесс;

  3. выполнялся ли экспорт бизнес-процесса.

Если пакет процесса недоступен для изменений, система предложит сохранить новую версию бизнес-процесса. После подтверждения будет выполнено сохранение новой версии в пакет, указанный в системной настройке [Текущий пакет].

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

Добрый день!

Столкнулись со странным поведением системы при переносе новых страниц редактирования для раздела Продукты. 

Аналитик добавил отдельные страницы редактирования для разных типов продуктов. На его локальном стенде все окей.

Но после переноса пакета через svn на тестовую среду, в кнопке добавления продукта появляется следующее http://prntscr.com/jixdiu

Более того, зависимость страницы редактирования от типа не отображается в мастере раздела http://prntscr.com/jixfxu и в настройках страницы меняется radiobutton на "Использовать одну страницу для всех записей"

Такое ощущение, что мастер при добавлении страниц редактирования для уже существующих в базовой версии разделов не может корректно выполнить привязку данных. При проверке привязки система выдает предупреждение, что эти данные привязаны в других пакетах(в тех где реализована базовая логика изменяемы разделов).

Кто сталкивался с подобным кейсом и как его можно решить?

Нравится

1 комментарий

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

На локальном стенде добавил рабочее место мобильного приложения. В отдельном пакете создавал пользовательские схемы мобильных настроек разделов и прочее. Появилась необходимость воспользоваться мобильным приложением, подключаясь к другому стенду.

Подскажите, пожалуйста, какая правильная последовательность действий в данном случае?

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

Спасибо!

Нравится

1 комментарий

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

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

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

Добрый день, коллеги!

В локальной среде разработки (7.10) создал отдельный пакет, в его зависимости добавил пакет UIv2.

С помощью мастера разделов создал в этом пакете новый раздел. После выгрузки пакета с помощью WorkSpaceConsole и его успешной загрузки в тестовую среду (on-cloud) пытаюсь открыть созданный раздел. В консоли отладчика в браузере получаю такую ошибку:

user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: https://xyz.bpmonline.com/0/configuration/b58905880bd3ab7635160eaf12f09e...
line: 21689
column: 29
message: Uncaught TypeError: Cannot read property 'extendParent' of undefined
date: Thu Jun 01 2017 13:02:22 GMT+0300 (RTZ 2 (зима))
stack: TypeError: Cannot read property 'extendParent' of undefined

Вот как выглядит ошибка в отладчике

Вот как выглядит JS-объект, на котором происходит ошибка из-ха того, что поле schemaStructure undefined

Прежде чем задавать этот вопрос, ознакомился с постом на схожую тему https://community.terrasoft.ru/forum/topic/25523

проверил данные в БД, все необходимые записи в таблицах есть.

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

Заранее благодарен за ответ.

Нравится

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

Андрей,

проверьте всё ли в порядке с наследованием пакетов на той среде, где Вы загрузили новый раздел. Не отличается ли наследование с продуктовой средой :wink:

Алла, проверил, проблем с наследованием пакетов нет. Полагаю, что если такие проблемы были бы, система не сообщила бы об успешной установке пакетов. Ошибка в чем-то другом.

Алла, проверил, проблем с наследованием пакетов нет. Полагаю, что если такие проблемы были бы, система не сообщила бы об успешной установке пакетов. Ошибка в чем-то другом.

Добрый день. Проблема, судя по всему, даже не с наследованием. Попробуйте сгенерировать исходные коды, а также скомпилировать.

После всего вышеописанного внесите изменения в любой пользовательский js файл (вплоть до добавления пробела), а затем сохраните о выполните очистку кэша браузера.

Илья, спасибо за ответ.

Выполнил все точно в указанном порядке. К сожалению не помогло, ошибка прежняя.

Здравствуйте,
Сложно в таком случае подсказать в чем проблема, если это не иерархия и не проблема кеширования. Напишите в поддержку с предоставлением доступа к сайту, что бы они посмотрели в чем там дело.
support@terrasoft.ru

Здравствуйте.
По-моему необходимо перегрузить приложение в IIS
Если есть возможность, проверьте на "чистом" приложении локально, а затем попросите поддержку перезагрузить сайт вручную

Роман, добрый день!

Ошибка воспроизводится на разных серверах, рестарт IIS, перезапуск процесса w3wp не помогают. Пока обошел ошибку тем, что создал вручную новый клиентский модуль - наследника от "Базовая схема раздела (NUI)". С ним ошибок нет. Жду развернутого ответа от поддержки.

из-за старой баги, в системе оставались схемы с одинаковыми заголовками в разных базовых пакетах.
Багу устранили, но последствия могут остаться.
Посмотрите, нет ли у вас в "исходном" приложении нескольких схем с заголовком "Базовая схема раздела" в разных пакетах. Возможно мастер "подхватил" не ту схему.

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

Добрый день!

Подскажите, пожалуйста, как переносить между приложениями

  1. настройки колонок реестра у разделов, справочников, деталей
  2. сами справочники. Объект переносится решением, но сам справочник нет

также возникла проблема с настройкой колонок справочника в рамках одного приложения:

  1. пользователь1 настроил колонки кастомного справочника
  2. нажал на кнопку "Сохранить для всех пользователей"
  3. Пользователь2 очистил кеш и перезашел в систему.
  4. Настройка пользователя1 у него не отобразилась.

почему настройки первого пользователя не отобразились у второго?

Используем BPM'Online 7.10.0.1742

Нравится

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

"Zaitova Liubov" написал:настройки колонок реестра у разделов, справочников, деталей

переносом данных таблицы SysProfileData
"Zaitova Liubov" написал:сами справочники. Объект переносится решением, но сам справочник нет

переносом данных таблицы Lookup

"Zaitova Liubov" написал:почему настройки первого пользователя не отобразились у второго?

Вероятно потому что у пользователя2 была своя настройка колонок, если под пользователем есть собственная запись по данному реестру в SysProfileData, настройки сис.админа (настройки для всех) игнорируются

вот тут
для вас будет много полезной информации, в т.ч. смотрите там комментарии от пользователя Андросов Дмитрий

"Максим Шевченко" написал:
Zaitova Liubov пишет:

настройки колонок реестра у разделов, справочников, деталей

переносом данных таблицы SysProfileData

Zaitova Liubov пишет:

сами справочники. Объект переносится решением, но сам справочник нет

переносом данных таблицы Lookup

Zaitova Liubov пишет:

почему настройки первого пользователя не отобразились у второго?

Вероятно потому что у пользователя2 была своя настройка колонок, если под пользователем есть собственная запись по данному реестру в SysProfileData, настройки сис.админа (настройки для всех) игнорируются


Спасибо!

"Максим Шевченко" написал:
Zaitova Liubov пишет:

настройки колонок реестра у разделов, справочников, деталей

переносом данных таблицы SysProfileData

Zaitova Liubov пишет:

сами справочники. Объект переносится решением, но сам справочник нет

переносом данных таблицы Lookup

Zaitova Liubov пишет:

почему настройки первого пользователя не отобразились у второго?

Вероятно потому что у пользователя2 была своя настройка колонок, если под пользователем есть собственная запись по данному реестру в SysProfileData, настройки сис.админа (настройки для всех) игнорируются


Спасибо!

"Севостьянов Илья Сергеевич" написал:

вот тут

для вас будет много полезной информации, в т.ч. смотрите там комментарии от пользователя Андросов Дмитрий


спасибо!

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

Зачастую приложение разработанное на BPMOnline, как и последующие его доработки требуется предоставлять в виде "all inclusive", т.е. всё что нужно, в т.ч. и настройки и бэкраунд-данные должны быть в Ваших пакетах, и единственное что остается сделать клиенту или его специалистам - это установить их. Но в части механизма переноса данных в самой архитектуре приложения есть проблемные моменты, в основном часто встречающиеся юзкейсы:

1) Перенос/инсталляция элементов организационной структуры, или изменений в ней через пакет.
проблематика: Через "Данные" не переносятся, подключить их в пакет у Вас конечно получится с кучей связей, но при установке вас ожидает фиаско, в первую очередь потому, что требуется четкое соблюдение порядка добавления записей, в таблице SysAdminUnits есть внутренние связи FK между колонками Id и ParentId (значение одной колонки ссылается на значение из другой колонки этой же таблицы). Этими значениями определяется иерархия, по этому Вам необходимо добавлять записи в соответствии с их положением в дереве: от корня в глубь.
совет: организовывайте вашу структуру в мастере в том числе проставьте галочки на "Есть руководители" (т.к. создается отельный орг.юнит), после чего в любом удобном инструменте просмотра таблиц БД, в таблице SysAdminUnits отсортируйте записи по колонке "CreatedOn" в порядке возрастания, и в таком виде экспортируйте INSERT инструкции для каждой записи отдельным блоком.
PS: так же зачастую требуется перенос значений из таблиц SysAdminUnitsInRole (пользователи включенные в орг.юнит), и SysFuncRoleInOrgRole (связи орг.юнитов друг с другом),
а перед инсталяцией орг.юнитов пользователей - сначала инсталируйте контакты с которыми они будут связаны.

2) Перенос/инсталляция настроек рабочих мест, или изменений в них через пакет.
проблематика: По той причине что организационную структуру Вы через данные не переносите, настройка рабочих мест просто не даст Вам создать данные так, как вы не включаете в виде данных необходимые значения для орг.юнитов.
PS: Сами рабочие места, и даже разделы вы можете перенести через данные,
но если вам нужны данные о пользователях группах пользователей в раб.местах - тут только SQL-скрипт. Так что лучше уж тогда все переносить в скрипте.

3) Перенос/инсталляция настройки колонок в реестрах, деталях, окнах выбора и т.д.
проблематика: Через "Данные" не переносятся, т.к. содержат бинарные данные в 2-х колонках (ObjectData, ObjectDifference) таблицы SysProfileData по какой-то причине не включаются в пакет вместе с данными, и аналогично предыдущему пункту вы можете создать такие "Данные", но при инсталляции получите записи с пустыми вышеупомянутыми колонками.
совет: Опять же настраиваем "ручками в системе" потом отлавливаем новые записи в любом SQL-view, дампим записи (их будет 2-3 на каждый элемент настройки колонок) в блоках INSERT, но в данном случае не забудьте, что вам при инсталляции надо будет проверить существуют ли в таблице записи с такими же соотношениями колонок "Key" - "ContactId" и удалить их (не обновлять) если они есть после чего вставлять Ваши записи.

Вообщем у Вас может получиться объемистая часть данных которые надо включать в пакеты в виде SQL-скрипта. И идеальный подход для этого конечно использование подхода "Вставить, а если существует - обновить".
Так вот TSQL не предлагает каких либо "сахарных" инструкций aka MySQL UPSERT или PostgreSQL ON DUPLIKATE KEY
В TSQL ближайший аналог это монстроузный MERGE который можно использовать для реализации вышеупомянутого подхода, ну конечно можно еще c использование IF EXISTS писать еще более "монструозные простыни", и даже делать SELECT->FOR-IF-UPDATE/INSERT но это уж простите меня - совсем "нубство".
Первый взгляд на MERGE вас конечно немного испугает и заставит пропотеть, особенно учитывая тот факт что вам не обойтись без многократного описания колонок и их соотношений, а в большинстве таблиц с которыми Вам его надо будет применять - более 10-ти колонок. :) а Вам понадобится их перечисление в 4-х местах в разном виде.
Но на помощь нам приходят современные средства разработки !
Итак... вот вам пошаговый рецепт составления такого скрипта на примере составления MERGE для переноса/обновления из таблицы SysAdminUnits в среде Jetbrains DataGrip (если вы или Ваши друзья коллеги студенты IT-смежной специальности, Вы без проблем получите ключ на год на весь пантеон из продуктов, WebStrom просто незаменим для JavaScript, особенно в свете того что с 7.10 версии наконец-то можно работать с пакетами в файловом режиме)
PS: наверняка в SQL Managment Studio можно обвеситься плагинами и получить аналогичную функциональность (я сейчас про некоторые хоткеи и мультикурсорность, которые и есть суть - все сильно упрощают), если это так - прошу знатоков отписаться в комментариях что для этого потребуется, или же подтвердить что там так не выйдет.
Итак поехали:
Копируем шаблон конструкции

DROP TABLE IF EXISTS #Temp;
CREATE TABLE #Temp
(

);

MERGE TargetTable AS dst
USING #Temp AS src
ON (dst.Id=src.Id)
WHEN MATCHED THEN
    UPDATE SET

WHEN NOT MATCHED BY TARGET THEN
    INSERT
    (

    )
    VALUES (

    );
GO

ДАЛЬНЕЙШИЕ ИЗОБРАЖЕНИЯ ЭТО GIF-АНИМАЦИЯ, CLICKайте и ПРОСМАТРИВАЙТЕ
Открываем необходимую таблицу в структуре и переходим к ее определению (вкладка DDL)
поиск в боковой схеме - простой набор символов с клавиатуры при выделении любой таблицы
открытие таблицы - F4


и копируем определение колонок в определение колонок временной таблицы шаблона, даем временной таблице осмысленное имя,

и вот тут начнется "магия" мультиселекта это IDE
Alt+j (установка мультикурсорности на обнаруженных паттернах выделенного фрагмента)
Нам необходимо избавиться в обявлении колонок от значений "по умолчанию" (не знаю почему, но с этим иногда бывают проблемы, в контексте нашей задачи, проще избавиться, чтобы наверняка).
А так же удалем FK определения они нам само собой тоже не нужны

При помощи мощи мультиселекта и хоткеев паттерного выделения (выделить слово, добить/убрать из выделения символ) "творим магию"

обратите внимание на то, что лишние запятые изначально оставляются чтобы все строки соответствовали паттерну, а потом удаляются, остается установить имя целевой таблицы.
и вот мы получили вот такой вот скрипт
DROP TABLE IF EXISTS #TempSysAdminUnits;
CREATE TABLE #TempSysAdminUnits
(
  Id UNIQUEIDENTIFIER PRIMARY KEY NOT NULL,
  CreatedOn DATETIME2,
  CreatedById UNIQUEIDENTIFIER,
  ModifiedOn DATETIME2,
  ModifiedById UNIQUEIDENTIFIER,
  Name NVARCHAR(250) NOT NULL,
  Description NVARCHAR(250) NOT NULL,
  ParentRoleId UNIQUEIDENTIFIER,
  ContactId UNIQUEIDENTIFIER,
  TimeZoneId NVARCHAR(250) NOT NULL,
  UserPassword NVARCHAR(250) NOT NULL,
  SysAdminUnitTypeValue INT NOT NULL,
  AccountId UNIQUEIDENTIFIER,
  Active BIT NOT NULL,
  LoggedIn BIT NOT NULL,
  SynchronizeWithLDAP BIT NOT NULL,
  LDAPEntry NVARCHAR(250) NOT NULL,
  LDAPEntryId NVARCHAR(250) NOT NULL,
  LDAPEntryDN NVARCHAR(500) NOT NULL,
  IsDirectoryEntry BIT NOT NULL,
  ProcessListeners INT NOT NULL,
  SysCultureId UNIQUEIDENTIFIER,
  LoginAttemptCount INT NOT NULL,
  SourceControlLogin NVARCHAR(250) NOT NULL,
  SourceControlPassword NVARCHAR(250) NOT NULL,
  PasswordExpireDate DATETIME2,
  HomePageId UNIQUEIDENTIFIER,
  ConnectionType INT NOT NULL,
  UnblockTime DATETIME2,
  ForceChangePassword BIT NOT NULL,
  LDAPElementId UNIQUEIDENTIFIER,
  DateTimeFormatId UNIQUEIDENTIFIER,
);

MERGE SysAdminUnits AS dst
USING #TempSysAdminUnits AS src
ON (dst.Id=src.Id)
WHEN MATCHED THEN
    UPDATE SET
      dst.CreatedOn=src.CreatedOn,
      dst.CreatedById=src.CreatedById,
      dst.ModifiedOn=src.ModifiedOn,
      dst.ModifiedById=src.ModifiedById,
      dst.Name=src.Name,
      dst.Description=src.Description,
      dst.ParentRoleId=src.ParentRoleId,
      dst.ContactId=src.ContactId,
      dst.TimeZoneId=src.TimeZoneId,
      dst.UserPassword=src.UserPassword,
      dst.SysAdminUnitTypeValue=src.SysAdminUnitTypeValue,
      dst.AccountId=src.AccountId,
      dst.Active=src.Active,
      dst.LoggedIn=src.LoggedIn,
      dst.SynchronizeWithLDAP=src.SynchronizeWithLDAP,
      dst.LDAPEntry=src.LDAPEntry,
      dst.LDAPEntryId=src.LDAPEntryId,
      dst.LDAPEntryDN=src.LDAPEntryDN,
      dst.IsDirectoryEntry=src.IsDirectoryEntry,
      dst.ProcessListeners=src.ProcessListeners,
      dst.SysCultureId=src.SysCultureId,
      dst.LoginAttemptCount=src.LoginAttemptCount,
      dst.SourceControlLogin=src.SourceControlLogin,
      dst.SourceControlPassword=src.SourceControlPassword,
      dst.PasswordExpireDate=src.PasswordExpireDate,
      dst.HomePageId=src.HomePageId,
      dst.ConnectionType=src.ConnectionType,
      dst.UnblockTime=src.UnblockTime,
      dst.ForceChangePassword=src.ForceChangePassword,
      dst.LDAPElementId=src.LDAPElementId,
      dst.DateTimeFormatId=src.DateTimeFormatId
WHEN NOT MATCHED BY TARGET THEN
    INSERT
    (
      Id,
      CreatedOn,
      CreatedById,
      ModifiedOn,
      ModifiedById,
      Name,
      Description,
      ParentRoleId,
      ContactId,
      TimeZoneId,
      UserPassword,
      SysAdminUnitTypeValue,
      AccountId,
      Active,
      LoggedIn,
      SynchronizeWithLDAP,
      LDAPEntry,
      LDAPEntryId,
      LDAPEntryDN,
      IsDirectoryEntry,
      ProcessListeners,
      SysCultureId,
      LoginAttemptCount,
      SourceControlLogin,
      SourceControlPassword,
      PasswordExpireDate,
      HomePageId,
      ConnectionType,
      UnblockTime,
      ForceChangePassword,
      LDAPElementId,
      DateTimeFormatId
    )
    VALUES (
      src.Id,
      src.CreatedOn,
      src.CreatedById,
      src.ModifiedOn,
      src.ModifiedById,
      src.Name,
      src.Description,
      src.ParentRoleId,
      src.ContactId,
      src.TimeZoneId,
      src.UserPassword,
      src.SysAdminUnitTypeValue,
      src.AccountId,
      src.Active,
      src.LoggedIn,
      src.SynchronizeWithLDAP,
      src.LDAPEntry,
      src.LDAPEntryId,
      src.LDAPEntryDN,
      src.IsDirectoryEntry,
      src.ProcessListeners,
      src.SysCultureId,
      src.LoginAttemptCount,
      src.SourceControlLogin,
      src.SourceControlPassword,
      src.PasswordExpireDate,
      src.HomePageId,
      src.ConnectionType,
      src.UnblockTime,
      src.ForceChangePassword,
      src.LDAPElementId,
      src.DateTimeFormatId
    );
GO

потратив на его составление менее 5-ти минут :)
Ну а далее в этот скрипт перед операцией MERGE перенесите INSERT конструкциями, то что требуется изменив назначение на временную таблицу

Вуаля... итого 5-7 минут и готово.
Другими способами и копипастой, такой скриптик писать с таким огромным разношерстным объявлением - минут 20-30 :)
Так что юзайте возможности современных средств разработки коллеги.

Нравится

3 комментария

мы на 79 переносили оргструктуру, пользователей и даже права на объекты через данные
там есть два момента:
1) надо сбросить, а после установки пакета вернуть, триггер TRSysAdminUnitRoot (без триггера не было проблем с установкой SysAdminUnit - я так понимаю механизм установки следит за порядком SAME REFERENCE записей)
2) (не уверен надо ли это вообще)) следить за порядком установки (он алфавитный) - контакты перед пользователями, роли перед пользователями и вхождениями ролей в роли и пользователей в роли (SysUserInRole, т.к. SysAdminUnitsInRole - заполняется в процессе актуализации оргструктуры см сленд пункт)
3) после установки пакета выполнить tsp_ActualizeAdminUnitInRole, просто чтобы не забыть сделать это вручную
4) осторожнее с корневыми ролями и Supervisor'ом

и вроде с SysProfileData тоже не было проблем

"Андросов Дмитрий" написал:3) после установки пакета выполнить tsp_ActualizeAdminUnitInRole, просто чтобы не забыть сделать это вручную

Да, это важное и полезное дополнение :)
Спасибо.

"Андросов Дмитрий" написал:(не уверен надо ли это вообще)) следить за порядком установки (он алфавитный)

ну вот это прям сомнительное утверждение :)
Ну если я конечно понимаю о чем идет речь.
Так как у потомка в колонке ParentId идет FK на Id этой-же таблицы, т.е. порядок просто ОБЯЗАН быть соблюден, иначе лови ошибки FK инсерта строк на уровне таблицы SysAdminUnit, при установке через данные именно в этом и проблема:
Мы профилировали запросы и там INSERT идет через перечисление VALUES а не каждая строка отдельной инструкцией... (так что тут фактически повезет / не повезет как сортируются значения в перечислении мне не ведомо да и мы в любом случае не можем это контролировать)

"Севостьянов Илья Сергеевич" написал:да и мы в любом случае не можем это контролировать

мы можем контролировать порядок иначе:
создаем данные на корневые роли, называем "SysAdminUnit1Roles"
далее на роли второго уровня, называем "SysAdminUnit2Roles"
далее на третий, называем "SysAdminUnit3Roles" и т.д.
[странно, но мы переносили 5ти уровневую оргструктуру в одних данных, поэтому и сомневался - не разбирает ли установщик данных, что в рамках одних данных установить сначала?]
после этого на самих пользователей "SysAdminUnit999Users" (контакты пользователей установили ранее)
после этого на SysUserInRole для переноса вхождения пользователей в группы

я имел ввиду, что во время установки по алфавиту упорядочиваются не записи, а схемы данных

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

Добрый день!

Подскажите, пожалуйста, на что влияет количество пакетов? Будет ли тормозить продакш среда из-за этого или увеличивается только время компиляции?

Можно ли переносить пакеты между средами частично? Допустим пакет содержит схему1, объект1, процесс1 и объект2, схему2.
Схема1, объект1 и процесс1 готовы к переносу, а схема2, объект2 - нет.
Я могу перенести на рабочую среду только Схему1, объект1 и процесс1 из пакета?

Нравится

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

Здравствуйте, Любовь!

В зависимости от количества пакетов и их содержимого, действительно, будет увеличиваться время компиляции. На производительность количество пакетов не влияет, но, если выполнять компиляцию в рабочее время, когда идет нагрузка на сервер, тогда будут наблюдаться проблемы с производительностью. Поэтому мы рекомендуем выполнять обновление рабочей среды и компиляцию в нерабочее время, когда нагрузка на сервер минимальна.

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

"Савельева Алла" написал:

Здравствуйте, Любовь!

В зависимости от количества пакетов и их содержимого, действительно, будет увеличиваться время компиляции. На производительность количество пакетов не влияет, но, если выполнять компиляцию в рабочее время, когда идет нагрузка на сервер, тогда будут наблюдаться проблемы с производительностью. Поэтому мы рекомендуем выполнять обновление рабочей среды и компиляцию в нерабочее время, когда нагрузка на сервер минимальна.

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


Спасибо!

"Савельева Алла" написал:Частичный перенос возможен, если Вы выполняете перенос с помощью SVN. В этом случае обязательным условием является наличие одного и того же пакета и совпадание их версий на Ваших средах.

Подскажите, пожалуйста, как создать новую версию пакета? ни на community,ни на академии не нашла информации по этому вопросу

Также не могу сообразить, как сделать частичную фиксацию в SVN . В самом UI можно зафиксировать только пакет целиком, отдельно файлы нельзя. Это делается через файловую систему или visual studio?
Или частичный перенос не обеспечивается частичной фиксацией в svn?

"Zaitova Liubov" написал:Подскажите, пожалуйста, как создать новую версию пакета?

Создать новую версию пакета можно 2-мя способами:
1) в конфигурации bpm'online создаете новый пакет с таким же названием и указываете номер версии;
2) для существующего пакета версию можно изменить на уровне базы данных - в таблице SysPackage поле Version.

"Zaitova Liubov" написал:Также не могу сообразить, как сделать частичную фиксацию в SVN . В самом UI можно зафиксировать только пакет целиком, отдельно файлы нельзя. Это делается через файловую систему или visual studio?

Первый раз нужно зафиксировать в svn пакет целиком. Фиксация пакетов выполняется через конфигурацию bpm'online или файловую систему по выбору разработчика. Мы рекомендуем делать это через конфигурацию bpm'online.

"Zaitova Liubov" написал:Или частичный перенос не обеспечивается частичной фиксацией в svn?

В UI у Вас есть возможность снять блокировку для измененной схемы, в таком случае она не попадет в пакет заливки. В пакет попадут только заблокированные схемы.

Обращаю Ваше внимание, что ответ на данный вопрос подразумевает использование версии не ниже bpm'online 7.9.0.

"Савельева Алла" написал:Создать новую версию пакета можно 2-мя способами:
1) в конфигурации bpm'online создаете новый пакет с таким же названием и указываете номер версии;
2) для существующего пакета версию можно изменить на уровне базы данных - в таблице SysPackage поле Version.

1) создать пакет с таким же названием, но с другой версией мне не дала система. вышла ошибка, что пакет с таким названием уже существует.

2) Поменяла версию в базе данных с 1.0.0 на 1.2.0. Попыталась зафиксировать пакет в хранилище - вышла ошибка, что такого пути нет http://ххх/view/head/packageD/branches/1.2.0. Создала папку 1.2.0 по указанному пути вручную. При попытке зафиксировать пакет в хранилище выходит ошибка "При работе с хранилищем произошла ошибка". в журнале событий ошибок нет
Как правильно организовать работу с версиями?
Нам они нужны, например, чтобы делать хотфиксы

Здравствуйте, Любовь!

Для консультации по возникающей у Вас ошибке с работой SVN обратитесь, пожалуйста, в службу поддержки - напишите письмо на support@terrasoft.ru с детальным описанием ошибки (со скриншотами) и последовательностью действий, которая привела к её возникновению.

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