Привет. 
Заметил что время от времени БП который выполняется 30сек начал выполняться в несколько раз больше (270, 626, 1160 cек.) а по диаграммам всё нормально и ошибок нету.
Как уже понятно, это был элемент - обработка таймера. 

Что скажете? 

7.16.4

Нравится

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

Андрей, обратите внимание на недавнюю аналогичную тему. Возможно, и Вам поможет такое изменение config-файла.

Андрей, обратите внимание на недавнюю аналогичную тему. Возможно, и Вам поможет такое изменение config-файла.

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

Спасибо, попробую.

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

Всем привет!

 

Есть БП довольно простой. 

До таймера все работает как положено, а после таймера ничего не происходит.

Без таймера все работает отлично, но он тут очень необходим.

Нравится

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

Михаил, причины могут быть различными.

Например,  если есть большое количество процессов, которые используют таймер (и, следовательно, планировщик), то может быть, сейчас очередь планировщика перегружена, что и могло вызвать проблемы с зависанием процессов. В таком случае нужно увеличить threadCount во внешнем Web.config с 5, например, до 10. Стандартно там:

<add key="quartz.threadPool.threadCount" value="5" />

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

Михаил, подскажите, пожалуйста, удалось ли решить проблему.

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

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

Вопрос:

Для условного потока элемента «Выполнить задачу» в конструкторе бизнес-процессов, доступен следующий вариант результатов условного потока (см. рисунок), данное отображение работало до версии 7.8 для нашего пользовательского элемента «Действие процесса» разработанного на основе элемента «Выполнить задачу», можно ли как-нибудь сделать такое же отображение для текущей версии BPM?

Ответ:

Для того, чтобы реализовать функционал на подобии элемента "Выполнить задачу" для пользовательского элемента, рекомендуется ознакомиться с реализацией в исходном коде элемента "ActivityUserTask" (метод GetResultParameterAllValues).

Нравится

Поделиться

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

 Добрый день!

Возникла необходимость указания значений кастомных колонок при создании активности элементом "Выполнить задачу". Нужно, чтобы сразу при открытии пользователю карточки этой активности там уже были нужные значения в пользовательских колонках (На основе их будет приниматься решение о состоянии активности). Как я понял, пользовательскими средствами это сделать нельзя, нужно использовать мини-сценарий "После сохранения активности" в расширенном режиме. После этого я столкнулся с проблемой, которую описывает Михаил в посте https://community.terrasoft.ru/questions/vypolnit-zadacu-i-dobavit-dann… то есть ограниченность контекста выполнения этого скрипта. На данный момент у меня не получается заставить работать даже простой

 

var userConnection = Get<UserConnection>("UserConnection");

Потому как "Get" не существует в данном контексте. Мне же хотелось использовать параметры процесса и запросы в базу в этом сценарии. По совету Михаила передал в текстовом виде параметр процесса в Переменную "Контекст выполнения" элемента, но не понимаю на данном этапе, как получить из него значение в сценарии и распарсить в GUID.

Подскажите, пожалуйста, кто побеждал эту проблему, как работать с ESQ, переменными самого элемента "Выполнить задачу" и параметрами процесса в сценарии "После сохранения активности"? 

Нравится

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

Олег, добрый день.

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

При небольшом количестве кастомных полей такой подход мне кажется более оптимальным.

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

Добрый день, Андрей!

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

Андронов Олег Алексеевич,

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

Но если Вы всё же хотите именно в рамках сценария После сохранения Активности, то алгоритм примерно следующий:

Создать параметр процесса, заполнить, передать его в Контекст выполнения в Выполнить задачу, а в сценарии обращаться напрямую к параметру:

var TitleFromExecutionContext = ExecutionContext;//Здесь в ExecutionContext передали ранее параметр процесса
var update = new Update(UserConnection, "Activity")
        .Set("Title", Column.Parameter(TitleFromExecutionContext)).
        Where("Id").IsEqual(Column.Parameter(CurrentActivityId));
        update.Execute();

 

Удачи в реализации.

Андронов Олег Алексеевич,

Доброго дня, скажите, получилось ли решить Вашу задачу? Каким способом?
У меня сейчас такая же, и это совсем беда))

Наверно, лучше писать такие вопросы Олегу в личку. Никто, кроме Вас, не знает подробностей задачи и чем не подходят советы Андрея.

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

У меня реализована система интеграции через EntityDataService, и когда данные приходят в интеграционные сущности, запускается БП по сигналу и обрабатывает данные. Иногда возникает странная ошибка 

Terrasoft.Common.ItemNotFoundException: Элемент с именем "UsrIntMyTable" не найден в
Terrasoft.Core.ManagerItemCollection`1.GetByName(String name) в
Terrasoft.Core.Manager`2.GetInstanceByName(String name) в
Terrasoft.Core.Entities.EntitySchemaQuery..ctor(EntitySchemaManager entitySchemaManager, String sourceSchemaName) в
Terrasoft.Core.Process.UsrMyProcessing.ScriptTask1Execute(ProcessExecutingContext context) в
Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

где UsrIntMyTable - моя интеграционная таблица в БД, которой соответствует объект в конфигураторе (или наоборот).

БП всегда отрабатывает одинаково, но ошибка случается иногда. При этом, что самое обидное, данные по сути теряются, т.к. не обрабатываются.

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

var userConnection = UserConnection;
var DealEsq = new EntitySchemaQuery(userConnection.EntitySchemaManager,"UsrIntMyTable");

Буду благодарен за любые советы на тему что это и как это поправить.

Нравится

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

Добрый день

Единственное предположение в том, что в эти моменты производится компиляция. Проверьте это предположение

"За ширмой" происходит следующее:

EntitySchemaManager ищет созданный инстанс, если его нет, то создает (new UsrIntMyTable). И вот, если его в сборке нет, то создать его возможности нет

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

Добрый день,
Используя стандартный элемент БП "Страница редактирования" открываю страницу редактирования, создаю новую запись, указываю ей данные, проблема в следующем при создании состояние указываю из справочника "Не начата", но если пользователь при переходе на данный элемент изменяет какие нибудь другие поля и нажимает "Сохранить" активности автоматически присваивается состояние "Завершена", как это изменить?
По БП пользователь должен только ознакомится с данными и при необходимости их поправить, но состояние должно остаться "Не начата", т.к. это активность на следующий день

Нравится

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

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

В настройках этого элемента есть поле "Считать элемент выполненным, если объект соответствует условиям". Вы можете настроить условия, без выполнения которых активность будет считаться невыполненной.

Для решения Вашей задачи Вы также можете использовать следующую последовательность элементов:
1) Страница редактирования.
2) Изменить данные (меняем состояние задачи на "Не начата").
3) Промежуточный обрабатывающий сигнал - ожидаем изменение состояния активности на конечное.

Второе решение - использовать элемент "Задача".

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

Добрый день,
Использую стандартный элемент БП Чтение данных, нужно выбрать звонки из Активностей, в которых начало меньше или равно текущей дате/времени, ставлю такое условие, но вытягиваются звонки у которых значение больше текущей даты/времени. Собственно вопрос в чем проблема, стандартный элемент не умеет сравнивать DateTime?
Причем дату сравнивает нормально, а вот по времени сравнение не идет.
1

Нравится

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

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

Элемент "Читать данные" умеет это делать. Проблема в другом:biggrin:

Поле "Ответственный" смотрит в [dbo].[Contact]. Значение "Текущий пользователь" берется из [dbo].[SysAdminUnit]. Поле "Ответственный" необходимо сравнивать со значением "Контакт текущего пользователя".

С этим фильтром хоть какие-то активности подтягиваются?

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

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

Правильно ли я понимаю, что "Текущее значение даты времени" - это параметр процесса? Каким значением заполняется этот параметр?

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