Вопрос

Добрый день.

Есть ситуация: две группы разработчиков работают над одним bpm-проектом решая при этом разные задачи.

Подскажите, как можно организовать процесс разработки в этом случае? Получится ли использовать несколько SVN-репозиториев (branches у каждой команды разработки и trunk-ветка)? Какие еще можно использовать подходы и программы для групповой разработки bpm'online?

У меня такой же вопрос

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

1) Если товарищи в одной комнате и работают в разных схемах, то в принципе можно создать 1 ветку и в ней работать. Будут, конечно, ситуации вида "Ваня! Отпусти схему, мне надо метод перенести!". Но в целом для небольшой группы сойдет.

2) По поводу разных веток - да. Делаете trunk, в bpm привязываете trunk-ветку, в ней создаёте пакет. Далее в svn копируете пакет по разным веткам, ведёте разработку, сливаете всё снова в trunk, в bpm обновляете пакет. Ну это в общих словах.

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

1) Если товарищи в одной комнате и работают в разных схемах, то в принципе можно создать 1 ветку и в ней работать. Будут, конечно, ситуации вида "Ваня! Отпусти схему, мне надо метод перенести!". Но в целом для небольшой группы сойдет.

2) По поводу разных веток - да. Делаете trunk, в bpm привязываете trunk-ветку, в ней создаёте пакет. Далее в svn копируете пакет по разным веткам, ведёте разработку, сливаете всё снова в trunk, в bpm обновляете пакет. Ну это в общих словах.

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

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

В обзоре пакета обновление https://academy.terrasoft.ru/documents/obzor-paketa-obnovleniy-bpmonlin… написано что есть появилась возможность как-то настроить выполнение бизнес-процесса в фоновом режиме, но на академии не нашла описание того, как это сделать.

Каким же образом все-таки это сделать?

У меня такой же вопрос

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

Ксения, видимо, речь об этом:

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

  • Если для элемента процесса снят признак [Выполнять следующие элементы в фоновом режиме], то при переходе процесса на следующие шаги, предполагающие участие пользователя (например, заполнение страницы записи), будут открыты соответствующие страницы редактирования. Например, если элемент [Открыть страницу редактирования] расположен на диаграмме процесса после элемента, для которого снят признак [Выполнять следующие элементы в фоновом режиме], то для пользователя сразу же откроется соответствующая страница редактирования.

  • Если для элемента процесса установлен признак [Выполнять следующие элементы в фоновом режиме], то все следующие шаги, требующие участия пользователя, отобразятся на вкладке [Задачи по бизнес-процессам] коммуникационной панели. Такие задачи (например, открытие страниц) не начнут выполняться, пока пользователь не кликнет по ним на вкладке [Задачи по бизнес-процессам]. При этом все действия системы будут выполнены в фоновом режиме без отображения маски загрузки, чтобы пользователь не ожидал завершения процесса. Например, если элемент [Открыть страницу редактирования] расположен на диаграмме процесса после элемента, для которого установлен признак [Выполнять следующие элементы в фоновом режиме], то новая задача по бизнес-процессам отобразится на коммуникационной панели пользователя. Если на диаграмме процесса после такого элемента следуют требующие сложных и длительных расчетов элементы из группы [Действия системы], то такие расчеты будут выполнены в фоновом режиме, а маска загрузки отображаться не будет. Такой вариант может вызвать задержку выполнения процесса, если пользователь, ответственный за выполнение действия по процессу, в момент создания задач по бизнес-процессу не вошел в систему.

Признак [Выполнять следующие элементы в фоновом режиме] может быть установлен:

  • Для всех элементов из группы [Действия пользователя].

  • Для всех элементов из группы [Начальные события], кроме элемента [Стартовый таймер]. По умолчанию признак установлен для начального события [Сигнал].

  • Признак установлен и недоступен для редактирования для элементов [Обработка сигнала] и [Обработка таймера] группы [Промежуточные события].

 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, подскажите.

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

Появляется в полях типа "справочник" если ввести значение, которого нет, то платформа предлагает это значение создать, что нам не нужно.

Нужно именно убрать данную опцию, а не отключить права.

У меня такой же вопрос

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

как вариант заместить BasePageV2, код

define("BasePageV2", [],
	function() {
		return {
			messages: {},
			mixins: {},
			attributes: {},
			modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
			methods: {
				onLookupDataLoaded: function(config) {
					config.collection.each(function (item) {
						var key = item.get("value");
						config.objects[key] = item.model.attributes;
					}, this);
				}
			},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	});

 

В своё время получили ответ, что убрать невозможно.
В итоге сделали в карточках (не в справочниках) хоть одно обязательное поле кроме главного. Тогда хотя бы не "по-тихому" создается новая запись, а пользователь осознанно и ответственно нажимает Save

Варфоломеев Данила пишет:
как вариант заместить BasePageV2, код

А это можно сделать для конкретных  lookup'ов?

Владимир Соколов пишет:
А это можно сделать для конкретных lookup'ов?

В config.columnName приходит название колонки, так что в теории - да.

Варфоломеев Данила,

 Большое спасибо, все получилось

 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Есть кастомный раздел "Каталог услуг".

Есть БП, в котором ставится Активность "Согласовать Каталог услуг" как в этой Активности указать связь с "Каталогом услуг" по аналогии с "контактами" "контрагентами" и т.д.

Какие объекты нужно заместить?

В какие из замещенных объектов нужно изменить?

и что нужно изменить?

У меня такой же вопрос

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

Евгений, здравствуйте.

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

- добавить элемент Добавить данные, объект = Активность, для созданного поля заполнить Каталог услуг

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

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

Логвин Андрей Витальевич,

Спасибо, понимаю, что решение рабочее.

А если мне нужно в мини карточку активности выводить это связанное поле? + по результату активности, процесс выполняет тот или иной шаг, как с этим быть?

Евгений.,

По поводу миникраточки - для этого необходимо замещать карточку ActivityMiniPage, выводя на нее созданное поле.
Информацию можно по работе с миникарточкой можно найти на Академии.
По второму вопросу - исходящие потоки с условием на результат Активности можно добавить только в рамках элемента Выполнить задачу.
Для того, чтобы в этом элементе отображалась колонка (в блоке Связи), необходимо в БД явно указать связь. Реализация рассматривалась на community.
Запись связи вносится в таблицу entityConnection, где SysEntitySchemaUid - uid объекта Активности (можно определить в sysschema по колонке name),
ColumnUid - uid кастомной колонки в объекта Активности (например, можно найти в метаданных объекта).

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

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Коллеги, а вы знаете о том, что на Академии Terrasoft есть запись вебинара для разработчиков приложений marketplace?

Информация о том, с чего начать разработку приложений, собрана в удобном формате в 2-часовом ролике:

  • Общие сведения о bpm'online marketplace
  • Настройка профиля для разработчика
  • Заказ сайта для разработки
  • Рекомендации по созданию приложений
  • Выполнение разработки приложения
  • Проверка на тестовом сайте
  • Регистрация решения в Личном кабинете
  • Публикация приложения в marketplace

Надеемся, он будет вам полезен!

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Друзья, коллеги-разработчики Marketplace обратились c вопросом. Подскажите, кто-нибудь, куда копать? :)

 

Нужно получить доступ к ConfigurationConstants

в коде раздела добавили

define("kitmediaCallhelper1Section", ["performancecountermanager", "ConfigurationConstants","jQuery"], function (performanceManager, ConfigurationConstants,$) {

но ConfigurationConstants не доступен, в то же время остальные модули доступны.

В зависимостях пакета Base, Core, Lead, NUI

 

У меня такой же вопрос

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

Алексей, связано это с тем, что если в модуле нигде не используется переменная (в нашем случае ConfigurationConstants), то она и не инициализируется на странице. Если в init прописать использование ConfigurationConstants, то она становится видимой и ее можно использовать.
Однако, обращаю ваше внимание, что в ассинхронных функциях обратного вызова (например, в вашем случае это анонимная функция, которая передается в this.callParent(...)) переменная ConfigurationConstants не будет видна, т.к. выполнение init уже будет завершено без ожидания завершения ассинхронного вызова. В этом случае вы можете использовать код:
var ConfigurationConstants​​​​​​​ = require("ConfigurationConstants"​​​​​​​);

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

Подскажите как можно скрыть (не отображать) кнопку определенным ролям?

У меня такой же вопрос

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

Добрый день

Задачу можно решить 2-мя вариантами:

1. Больше кода

  • определить роль текущего пользователя, реализовав запрос в БД;
  • обернуть этот запрос в метод, который должен отрабатывать в методе init вашей карточки (раздела). Если работа метода будет асинхронной, то изначальную инициализацию атрибута нужно будет сделать в false;
  • добавить собственный атрибут в модель, к примеру isButtonVisible
  • в diff прописать операцию merge для этой кнопки, указав visible: {bindTo: "isButtonVisible"}
  • в зависимости от результата запроса устанавливать значение атрибута

2. Меньше кода

  • создаем операцию в разделе "Доступ к операциям", к примеру HaseButton;
  • настраиваем доступ к операции по ролям;
  • gовторяем все, что описано в варианте 1 (кроме написания запроса к БД), но с модификациями:

               - создаем метод, который определяет наличие права             

                  (.../RightsService/GetCanExecuteOperations)

               - по результату заполняем атрибут IsButtonVisible

Спасибо, пока реализовали через процесс.

Который считывает входит пользователь в группу или нет, а дальше ветвление, если входит то процесс по кнопке выполнянется, если не входит не выполняется

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Нужно сделать фильтрацию фильтра.

В выделенную часть нужно вывести только сотрудников, как это реализовать. 

Заранее благодарен.

У меня такой же вопрос

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

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

Или вооружиться напильником и сломать пару модулей (гуглите "simpleFilter" по конфигурации + можно в quickFilter ещё заглянуть). Ну это прям если совсем надо.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Кто поможет решить вопрос с запуском TS 3.3.2 на машине с Windows 10?
После логина выдается ошибка "Automation server can't create object", после чего программа запускается дальше. Запускается As Administrator и пробовал с разными уровнями совместимости.

Вторая проблема - это печать word-отчетов на Word 2016. Библиотеки Office зарегистрировались, Add-Ins'ы Terrasoft в Word показываются, но из самого Terrasoft word-отчеты не запускаются: "Microsoft Word is not setup in your system"

Спасибо за помощь

У меня такой же вопрос

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

1. Нужно первый раз запустить с правами администратора Windows.
2. Нужно зайти в TSAdmin и вписать в конфигурации номер версии Office 16.0 , подробнее см. тут.
16.0

"Зверев Александр" написал:1. Нужно первый раз запустить с правами администратора Windows.

Да, так и запускаем - ошибка всё равно появляется.

"Зверев Александр" написал:2. Нужно зайти в TSAdmin и вписать в конфигурации номер версии Office 16.0

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

"Владимир Соколов" написал:Да, так и запускаем - ошибка всё равно появляется.

Значит, чего-то не хватает на уровне Windows, не создаётся COM-объект.

"Владимир Соколов" написал:С остальными будем разбираться

Это может быть что угодно в самом коде, генерирующем отчёт.
Или неверный формат файла-шаблона. Например, нет листа в Excel с нужным названием или что-то аналогичное в Word.
Лучше всего пошагово пройти в отладчике.

"Зверев Александр" написал:Значит, чего-то не хватает на уровне Windows, не создаётся COM-объект.

А как-то можно понять, чего именно? Или это всё танцы с бубном?

Принципиальных запретов на работу в Windows 10 нет, хотя она и не гарантируется. Ведь разработка 3.Х прекратилась раньше, чем вышла эта версия Windows.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

На окне редактирования добавила поле типа LookupDataControl.
Данное поле предназначено только для выбора значения из выпадающего списка, чтобы передать выбранное значение как параметр.
DatasetLink этого поля имеет не стандартное название dlData, а dlUsageRange. Данное поле не активно на карточке редактирования.

Фильтрую датасет:

var UsageRangeDataset = Self.ComponentsByName('dlUsageRange').Dataset;
UsageRangeDataset.Close();
ApplyDatasetFilter(UsageRangeDataset, 'ID', 999, true);   // 999-фиктивное значение, чтобы при открытии окна, поле было пустым. ID имеет тип int
UsageRangeDataset.Open();

Когда выбираю значение из списка, генерируется ошибка: Catastrophic failure

Вопрос: Как открыть это поле?

У меня такой же вопрос

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

Марина, мне кажется, для Ваших целей нужно использовать не LookupDataControl, а LookupControl.
Там указывается LookupDatasetLink, а выбранное из него значение хранится в свойствах Value и DisplayValue компонента.

Здравствуйте Александр. Спасибо.

Войдите или зарегистрируйтесь, чтобы комментировать