Добрый день, подскажите в чем может быть проблема есть БП в котором открываются кастомные страницы по нажатию на кнопки, через раз стопорится на элементе ПРИВЯЗАТЬ ПРОЦЕСС К ОБЪЕКТУ в журнале пишет что выполняется на диаграмме показывает что остановился на этом элементе при это переход по страницам не происходит вечный спинер и в консоли ошибка :

Uncaught TypeError: Cannot set property 'showNextPrcEl' of undefined

Нравится

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

На привязке стопорится, если Id, который привязывается, не определён. 

На привязке стопорится, если Id, который привязывается, не определён. 

Дмитрий, слишком мало информации, чтобы сходу назвать причину. Для начала, проверьте, дело в элементе привязки или в визуальных с окнами и кнопками, разнеся их отдельно. Возможно, действительно, как пишет Владимир, некорректно передаётся Id в элемент привязки.

 

Сам по себе LinkEntityToProcessUserTask устроен несложно, он вызывают функцию привязки, сделанную в ядре.

if (EntitySchemaId == Guid.Empty || EntityId == Guid.Empty) {
	return false;
}
Guid sysSchemaId;
var entitySchemaIdParameter = new QueryParameter(EntitySchemaId);
var sysSchemaViewSelect = new Select(UserConnection).
		Top(1).
		Column("UId").
	From("VwSysSchemaInWorkspace").
	Where("Id").IsEqual(entitySchemaIdParameter).
	Or("UId").IsEqual(entitySchemaIdParameter) as Select;
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection()) {
	using (var reader = sysSchemaViewSelect.ExecuteReader(dbExecutor)) {
		while (reader.Read()) {
			sysSchemaId = UserConnection.DBTypeConverter.DBValueToGuid(reader[0]);
			UserConnection.IProcessEngine.LinkProcessToEntity(Owner, sysSchemaId, EntityId);
		}
	}
}
return true;

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

 

Можно попробовать отладиться или добавить в код действия логирование, чтобы выяснить, доходит ли вообще до вызова LinkProcessToEntity.

 

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

Владимир Соколов,

спасибо за подсказку буду проверять

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

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

Нравится

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

Имеет ли данные элемент влияние какое-то на работу процесса?

- нет

Будет ли разница работы процесса с этим элементом и без него?

- нет (ну несчитая доп записи в БД)

И Если в нескольких процессах, которые запускают один другого, проставить "Привязать процесс к объекту" то повлияет ли это на производительность или на что-то еще?

- влияние на производительность практически не заметна, зато может существенно помочь при разрешении проблем в работе БП

Добрый день. Это полезный элемент для анализа журнала. Позволяет понять по какой записи был запущен процесс или какие использовал во время своей работы. Работает следующим образом: Указываете схему и ID записи в элементе "Привязать процесс к объекту". Далее в карточке лога журнала процесса можно увидеть запись на детали "Связанные объекты".

Пащенко Александр Сергеевич,

Спасибо за цитирование академии, но вопрос бы другой

Имеет ли данные элемент влияние какое-то на работу процесса?

- нет

Будет ли разница работы процесса с этим элементом и без него?

- нет (ну несчитая доп записи в БД)

И Если в нескольких процессах, которые запускают один другого, проставить "Привязать процесс к объекту" то повлияет ли это на производительность или на что-то еще?

- влияние на производительность практически не заметна, зато может существенно помочь при разрешении проблем в работе БП

Григорий Чех,

Спасибо большое за разъяснения, теперь понятно

А можно как-то найти все процессы, связанные с конкретным объектом?

Можно поискать по исходному коду схем процессов упоминания этого объекта.

Владимир Соколов,

Можно, например зная id объекта можно выбрать все БПшки привязанные к нему как то так 

SELECT  * FROM SysProcessEntity s
  LEFT JOIN SysProcessData ssd ON ssd.id=s.SysProcessId
  LEFT JOIN SysSchema ss ON ss.id=ssd.SysSchemaId
  WHERE s.EntityId='b34351c0-04b9-4786-8458-06ee55fc92c9'

 

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