Настроен элементарный БП, который срабатывает по сигналу добавления файла активности(activityFile)и условие Загружен со значением "Да".
Действие, которое должно инициировать, является отправка входящего письма с вложением. Файл в активность загружается.
Почему он может не запускаться?
могут ли глушить другие аналогичные процесса, например из Exchange "Загрузить письма из Exchange".
Нравится
Либо не проходит по условиям (что маловероятно), либо файл в процессе отправки грузится в объект через insert, а не entity. Потестить: попробуйте закинуть что-нибудь в email на деталь файлы и ссылки и посмотреть, отрабатывает ли ваш бп.
И один бп глушить другой не может. Если одинаковые сигналы - запустятся оба.
В сигнале в условию установлено "Загружен" равно "ДА", есть настройка, отвечающее за это условие?
Без этого условия работает, БП запускается.
Ваш кейс работает отлично с условием "Загружен" равно Да.
Варфоломеев Данила,
я точно вижу по журналу БП, что с этим условием он не запускается, а с условием отрабатывает. По БД установлен ДА, в 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, и возникает ли.