Можно ли программно выполнить этап бизнес-процесса от перевода состояния активности в выполнено до создания новой активности?

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

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

Нравится

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

Добрый день,

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

"Зарицкий Олег Васильевич" написал:

Добрый день,

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

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

Спасибо за ответ.

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

никак не можем понять в каком формате Quartz хранит свои отметки времени. В документации по нему вроде бы используется long timestamp (1342049220104), но в базе хранится в непонятном виде (635923508479220853).

подскажите, плз, очень надо для отладки

7,5 Pharma

Нравится

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

Дмитрий,

Вроде бы это ticks, т.е. через new DateTime(635923508479220853)
или

http://tickstodatetime.com/

Дмитрий,

Преобразовать время планировщика в привычный DateTime можно с помощью скрипта:
SELECT [SCHED_NAME],
[TRIGGER_NAME]
,[TRIGGER_GROUP]
,[JOB_NAME]
,[JOB_GROUP]
--,[DESCRIPTION]
,CAST([NEXT_FIRE_TIME]/864000000000.0 -693595.0 AS DATETIME) [NEXT_FIRE_TIME]
,CAST([PREV_FIRE_TIME]/864000000000.0 -693595.0 AS DATETIME) [PREV_FIRE_TIME]
,[PRIORITY]
,[TRIGGER_STATE]
,[TRIGGER_TYPE]
,CAST([START_TIME]/864000000000.0 -693595.0 AS DATETIME) [START_TIME]
,CAST([END_TIME]/864000000000.0 -693595.0 AS DATETIME) [END_TIME]
,[CALENDAR_NAME]
,[MISFIRE_INSTR]
,[JOB_DATA]
FROM[QRTZ_TRIGGERS]

спасибо, Дмитрий

спасибо, Олег)

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

Добрый день!

А можно разделить права на выгрузку в Excel по разделам? Сейчас права CanExportGrid даются сразу на все разделы.

Нравится

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

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

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

Добрый день!

Необходимо отправить сообщение из детали на карточку редактирования этой детали. Для этого использую "sandbox". Код:

addRecord: function(editPageUId) {
        this.sandbox.publish("PublishDetailName", "ilaySchema6Detail", [this.sandbox.id]);
        this.callParent(arguments);
}

subscribeSandboxEvents: function() {
        this.callParent(arguments);
        var detailId = "SectionModuleV2_ilayDiagnosisSection_CardModuleV2_detail_ilayRecomendation46fde591d61eilayRecomendationilayilayRecomendation1Page";
        this.sandbox.subscribe("PublishDetailName", this.getDetailNameFromWhoOpen, this, ["CardModuleV2_ilayDiagnosisPage_detail_ilayRecomendation46fde591d61eilayRecomendationilayilayRecomendation1Page"]);
},

getDetailNameFromWhoOpen: function(detailName) {
        var a = 5;
}

Не вызывается метод "getDetailNameFromWhoOpen", т.к. скорее всего неправильно задан 4-й параметр метода ["CardModuleV2_..."]. Подскажите, как быть!

Нравится

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

Здравствуйте.
Рекомендуем посмотреть соседнюю тему:
http://www.community.terrasoft.ru/forum/topic/15210

Эту тему находил, но там не совсем понятен принцип формирования тега (4-й параметр в методе "subscribe"). Также находил различные примеры в других проектах на 7.6 и 7.7 версиях, но какого-то определенного правила не нашел для того, чтобы правильно задать сигнатуры методов "sandbox" - каждый пример реализован слишком не так, как остальные.

Если конкретно рассмотреть код:

this.sandbox.subscribe("PublishDetailName", this.getDetailNameFromWhoOpen, this, ["CardModuleV2_..."]);

теоретически, 4-й параметр ["CardModuleV2_..."] является идентификатором именно этого сообщения, которое должно быть получено из:

this.sandbox.publish("PublishDetailName", "ilaySchema6Detail", [this.sandbox.id]);

, где этим идентификатором для метода "publish" является 3-й параметр.

Так ли это? Подчеркну, что задачей является передача сообщения из детали на карточку редактирования этой детали.

Да, Вы все поняли верно. При подписке на сообщение , массив идентификаторов передается четвертым параметром, а при публикации он передается 3-им. Для удачного получения сообщения один и тот же идентификатор должен присутствовать в обоих массивах.

Допустим так... А вот название этой переменной-идентификатора - оно какое-то особое по составу? Или можно абсолютно произвольным его задать? Суть в том, что при выполнении всего выше указанного, метод не вызывается! Почему, собственно, и была создана эта тема.

Не совсем понял про название переменной-идентификатора.

Вот рабочий пример кода для общения страницы редактирования с деталью:

Код для страницы контрагента.

Объявляем сообщение:

messages:{
	"PublishDetailName": {
		mode: Terrasoft.MessageMode.PTP,
		direction: Terrasoft.MessageDirectionType.SUBSCRIBE
	}
},

Подписываемся на сообщение в методе init:

methods: {
	init: function(){
		this.callParent(arguments);
		var sandboxId = this.sandbox.id + '_detail_LTSTestDetail';
		console.log(sandboxId);
		this.sandbox.subscribe("PublishDetailName", function(){
			this.set("Name", "Great");
		}, this, [sandboxId]);
	}
},

Код для страницы редактирования детали.

Объявляем сообщение:

messages: {
	"PublishDetailName": {
		mode: Terrasoft.MessageMode.PTP,
		direction: Terrasoft.MessageDirectionType.PUBLISH
	},
},

Подписываемся на событие и при определенном условии публикуем сообщение:

methods: {
	init: function(){
		this.callParent(arguments);
		var scope = this;
		var id = this.sandbox.id;
		var detailId = id.substring(0, id.indexOf('32c1bacf5d43LT'));
		console.log('detailId ' + detailId);
		this.on("change:LTSSTRING", function(){
			var val = this.get("LTSSTRING");
			if(val === 'test'){
				scope.sandbox.publish("PublishDetailName", { test: "test" }, [detailId]);
			}
		});
	}
},

В данном примере оба идентификатора равны CardModuleV2_a924f56e-85a8-4bd5-a388-0009571f7988_AccountPageV2_detail_LTSTestDetail

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

Как создать простой отчет в BPMonline 7.х Ondemand?
Какие есть инструменты для этого?
Заранее спасибо.

Нравится

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

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

Посмотрите в сторону печатных форм:
https://www.youtube.com/watch?v=H1at0EPvKpc

а где взять Конструктор печатных форм MS Word Report Designer??
Гугл к сожалению ничего не показал, или я плохо искал

"Радчук Виталий Владимирович" написал:а где взять Конструктор печатных форм MS Word Report Designer??

Вот этот вопрос отправляйте в суппорт, они вам пришлют его.

Здравствуйте, Виталий!

Получилось ли у Вас создать первый отчет?:)

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

Добрый день, Коллеги!
Подскажите пожалуйста, сталкивался ли кто-нибудь с обновлением bpm'online Realty 5.4.1.728 до 7 версии?
Я еще хочу прояснить, в версии 5, модуль для агенств недвижимости назывался realty а в 7 версии real estate. На сколько они совместимы и можно ли без проблем обновить первую на вторую?
Какие проблемы возникнут при обновлении?

Нравится

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

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

Обновление bpm'online Realty 5.X до 7-й версии - это проектное решение.

bpm'online realty 5.X и bpm'online real estate 7.X - это 2 разных программных продукта, потому сказать, что они однозначно совместимы нельзя.

Возможный вариант обновления может быть следующий на базе решения bpm'online real estate 7.X:

1. На уровне СУБД перенести данные основных таблиц, возможно, при необходимости доработать структуру таблиц в 7.X
2. Реализовать дополнительную функциональность, которая не вошла в bpm'online real estate 7.X

Спасибо большое, Алла за ответ!
Хотелось бы уточнить:
1. Решение realty на платформе bpm'online 7.Х отсутствует?
2. Единственный вариант перейти на версию 7.Х для агенства недвижимости это новое внедрение (bpm'online real estate) и разработка переноса данных с существующего решения в новое?

1. Да, отсутствует.
2. Для обсуждения возможных вариантов перехода на версию 7.X свяжитесь с менеджером Terrasoft, ответственным по Вашей компании.

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

Добрый день. Как реализовать кликабельную таблицу в BPM? Тобишь, в контейнер нужно выводить таблицу N*N, по клику на ячейку: получать ее индекс в таблице, данные из нее, перерисовывать таблицу.
Для того что бы это реализовать нужно описывать новую модель представления? Или уже есть "что-то" базовое, описанное, что можно использовать как основу?

Нравится

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

В процессе, в рамках одного "Задания-Сценария" идет цикл по строкам (продуктам).
По логике, в этом цикле идет запрос в другую сущность, и если ничего не возвращает, делает новую строку в той сущности.
Если находит, то делает апдейт найденной строки.

Вопрос: Если в списке строк попадутся обе ситуации, и при первом проходе будет создана нужная запись, то при втором проходе запрос ее не возвращает - это потому что entity.Save реально в базу изменения внесет только после окончания сценария, или даже всего процесса?
Или нужно просто ввести временной лаг после добавления записи, чтобы успела система все сохранить?

Нравится

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

Доброго дня!
Скажіть, будь ласка, чи можна отримати деяку інформацію по використанні карт в bpmonline 7.7(sdk або щось подібне)?

Нравится

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

Доброго вечора!
Чи є можливість після розмалювання карти модулем OsmMapsModule додавати свої маркери(мітки). Тобто у модулі OsmMapModule додати свої елементи управління на карту(checkboxes) і робити зміни на карті(додавати і видаляти мітки чи маркери)?

Здравствуйте, Роман!

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

Дякую!

Зробивши заміщення OsmMapsModule, є можливість змінити іконку маркера і відповідно показати на карті маркери з різними іконками(картинками) в залежності до адреси. Мені необхідно показати деякі адреси одною іконкою а другі адреси іншою іконкою?

Здравствуйте, Роман!

У каждого типа адреса иконка должна быть своя? По какому признаку система должна проставлять ту или иную иконку?

У мене є точки обслуговування які мають свою адресу. Кожна точка обслуговування може мати свій тип(банкомат, платіжки, послуги, mbox). Я так зрозумів що при формуванні обєкту адресів для карти(mapsData) в поле addressType можна вказати різні типи адресів? Бо зараз я передаю адреси в карту з addressType = "Фактический". Тоді які саме типи адресів я можу передавати щоб іконки були різного кольору?

Чи можливо взагалі в обєкт mapsData, в якому будуть адреса для карти , виставити для кожної адреси деяке поле яке б показало цю адресу(маркер) на карті іншим кольором?

API непосредственно OSM вы можете посмотреть на их сайте:
http://wiki.openstreetmap.org/wiki/Marker_API

Иконку подменить конечно можно, сейчас она устанавливается в схеме "OsmMapsModule", в методе getLeafletMarkersArray функцией getMarkerIcon из ресурсов схемы. Там же в getLeafletMarkersArray есть и координаты. Которые Вы можете проанализировать, запросами esq в бд. И взять из ресурсов ту или иную иконку в зависимости от Ваших условий.

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

Доброго дня! Чому не загружаються ресури схеми OsmMapModule після того, як я замістив її базову схему?

Здравствуйте, Роман!

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

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

Я замітив що при запуску карти для багатьох адрес(маркерів), приблизно 50, модуль карти OsmMapModule видає в консолі повідомлення стосовно методу getIsEmptyAddress для кожної адреси(маркеру), і це все довго обробляється, чи є можливість обійтися без цього методу і пришвидшити запуск карти з багатьма адресами або взагалі чи є можливість пришвидшити роботу запуску карти з багатьма точками до 1000?

Роман, здравствуйте!

Если я правильно понял, то сообщение «Метод getIsEmptyAddress устарел. Вместо него используйте AddressHelper.getIsEmptyAddress» является информативным. Данное предупреждение означает, что есть изменения в базовой конфигурации и если Вы будете в дальнейшем разрабатывать конфигурацию, то необходимо использовать метод «AddressHelper.getIsEmptyAddress».

Метод «getIsEmptyAddress» делает проверку если у записи адрес или нет, так как нельзя отправлять пустой запрос на сервис OSM.

Оптимизировать вряд ли получиться, так как OSM (https://www.openstreetmap.org/) сторонним сервисом с opensource. С нашей же стороны мы только отправляем запросы и ждет ответа, когда полностью прорисуется карта.

Доброго дня!
Для того щоб показати одну точку(маркер) на карті, необхідно передати такий масив address: ["Країна","Область","Місто","Вулиця"].
Мене цікавить поле для передачі вулиці. Чи іграє роль формат цього поля, тобто без слів вул., ул, пробіли між ними. Тому, що деякі вулиці які я передаю у форматі що на скіншоті. І в результаті маркери вставляються в одну точку по діагоналі

Роман, для корректного отображения необходимо, чтобы сервис "Openstreetmap" находил заданный адрес.
Строгого порядка нет. Поиск адреса зависит от работы самого сервиса Openstreetmap.

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

- задается значение в колонке «Адрес»;
- значение в данной колонки передается в сервис Openstreetmap;
- получаем ответ от сервиса;
- если адрес корректный, то карта отобразиться корректно.

Вы можете использовать https://www.openstreetmap.org для проверки корректности ввода адреса.
Примечание. Сервис OpenStreetMap дает возможность самим дополнять и редактировать карты.

Также документацию по OSM можете найти на официальном сайте - http://nominatim.openstreetmap.org/

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

Чи є можливість працювати з Google картами? Чи є готові схеми модулів?

Роман, здравствуйте!

Ранее приложение bpm’online работало с Google картами.
На данный момент этот функционал перекрыт OSM сервисом.

В приложении на данный момент еще присутствуют старые схемы для работы Google карт. Например, модуль «Модуль Google карт».

Для работы с Google картами приблизительно Вам необходимо:

- лицензия для того, чтобы Google разрешил использовать их функционал;
- убрать пакет OSM (экспериментальный вариант)или залочить/переопределить сервис, так как он перекрывает функционал Google карт;
- реализовать собственную интеграцию, так как старые схемы возможно не подойдут (например, Google изменил структуру интеграции с картами).

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

Возникла необходимость в такой детали.
В качестве детали "Счета в которых встречается продукт" Подошла деталь OpportunityProductDetailV2,
При штатном связывании отображает список продаж и даже позволяет "провалиться" в продажу по ссылке. (возможно не лучшее решение, но для решения задачи подходит).
А вот со списком заказов, в которых продукт встречается, штатные детали не подходят.
Просьба подсказать, есть ли готовое решение, или, если нет, указать кошерный путь к решению..

Нравится

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

Не знаю, насколько оптимален такой путь, но иногда я просто делаю VIEW с логикой внутри, затем регистрирую объект по этому VIEW, регистрирую деталь и уже использую на всю катушку.

Логика VIEW гораздо больше подаётся пониманию, к тому же её можно одновременно использовать в коде JS, в БП и в печатных формах.

Путь интересный.. а он возможен on-Demand? :) SqlExecutor позволяет создавать view?
На данный момент я разглядываю логику аналогичной детали с продажами, и пытаюсь понять ее логику, чтобы воспроизвести.. Но там как-то все нелинейно.. Подумаю насчет view.

"Шестаков Алексей Владимирович" написал:Путь интересный.. а он возможен on-Demand?

в bpm'online есть SQL-сценарии, которые позволяют в том числе создавать VIEW

Спасибо, такой вариант устраивает.

"Шестаков Алексей Владимирович" написал:SqlExecutor позволяет создавать view?

Он все позволяет, хоть drop :cool:

"Александр Кудряшов" написал:

Он все позволяет, хоть drop


А вот это уже настораживает :)

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