Вопрос

Не запускается БП активности

Настроен элементарный БП, который срабатывает по сигналу добавления файла активности(activityFile)и условие Загружен со значением "Да".

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

Почему он может не запускаться?

могут ли глушить другие аналогичные процесса, например из Exchange "Загрузить письма из Exchange".

Нравится

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

Либо не проходит по условиям (что маловероятно), либо файл в процессе отправки грузится в объект через insert, а не entity. Потестить: попробуйте закинуть что-нибудь в email на деталь файлы и ссылки и посмотреть, отрабатывает ли ваш бп. 

И один бп глушить другой не может. Если одинаковые сигналы - запустятся оба.

В сигнале в условию установлено "Загружен" равно "ДА", есть настройка, отвечающее за это условие?

Без этого условия работает, БП запускается.

Ваш кейс работает отлично с условием "Загружен" равно Да.

Это поле в ActivityFile. По-умолчанию оно true

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

я точно вижу по журналу БП, что с этим условием он не запускается, а с условием отрабатывает. По БД установлен ДА, в 0 он вроде не был, мгновенно создается с единичкой, в объекте тоже Да. Какая причина тогда?

Так а что мешает запускать без этого условия, а потом в процессе проверять поле и если что — завершать?

Зверев Александр

как обходное решение подойдет. причина так и осталась за кадром.

По поводу причины как раз ясно. Это поле заполняется функцией SaveAttachmentData из схемы ExchangeUtility:

var fileRepository = ClassFactory.Get<FileRepository>(new ConstructorArgument("userConnection", userConnection));
var fileEntityInfo = new FileEntityUploadInfo("ActivityFile", activityFileId, null) {
		Content = new MemoryStream(content),
		TotalFileLength = content.Length
};
fileRepository.UploadFile(fileEntityInfo, false);
var update = new Update(userConnection, "ActivityFile")
		.Set("Uploaded", Column.Parameter(true))
		.Where("Id").IsEqual(Column.Parameter(activityFileId));
update.Execute();

Там используется Update, то есть логика на Entity на нём не сработает.

Более того, когда запустился БП по самой загрузке файла, которую вызвали первые строки, нет гарантии на 100%, что на тот момент Update уже прошёл. Хотя, скорее всего, пока процесс будет запускаться, он уже отработает, но мало ли.

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

Зверев Александр,

спасибо за разъяснение, а как тогда он игнорирует значение по умолчанию в объекте ActivityFile ?

Судя по коду функции GetFileEntity в схеме FileUploader, должен учитывать. Нужно смотреть в отладчике и профайлере, на каком этапе там возникает 0, и возникает ли.

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