Добрый день. 

Подскажите пожалуйста по поводу следующей ситуации: на стенде более 4к выполняющихся процессов. Сама ранняя запись от 21 года.

Как такое происходит? Разве после перезапуска приложения не убиваются запущенные процессы?

Нравится

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

Добрый день!



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

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

Всем добрый день. Хотелось бы узнать как можно настроить порядок отображения элементов UserTask в редакторе БП в секции UserActions.



Пробовал по-разному выставлять значение атрибута Position(объект SysProcessUserTask), после этого компилировал приложение, позиция элемента не изменялась

Нравится

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

Добрый день,

 

В версии 8.0.6 и ниже, увы, такой возможности нет. Запрос на выборку элементов происходит в all-combined в методе getSelectQuery из Terrasoft.manager.ProcessUserTaskSchemaManager. В нем нету условий сортировки полученного результата и он же дальше обрабатывается в all-combined.

 

Я зарегистрировал пожелание нашей команде R&D на добавление такой возможности в продукт. Спасибо за предложение по улучшению функционала.

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

Здраствуйте, есть бп который создает уведомление и показывает попап окно (из приложения Popup Window) для каждого участника активности. Раньше параметр To whom should the window be shown? - для которого нужно показать попап выбирала [#Системная переменная.Контакт текущего пользователя#]. Но сейчас попап не показывается пользователю, в случае если бп был создан не им. Пробовала варианты просто выбрать юзера(Объект администрирования-Контакт-Ид) и из справочника контактов. Может кто-то сталкивался с такой же проблемой?

Изображение удалено.

Нравится

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

Анастасия, добрый день!

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



Также очень частая проблема — это Adblock и прочие расширения браузера. 

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

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

Всем добрый день.

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



БП состоит из двух основных шагов - чтение данных, отправка Email.

Изображение удалено.

Нравится

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

А можете показать весь процесс через диаграмму выполнения? У меня такая проблема возникает, только если есть условия таймера, а так все письма всегда уходят.

Николай Ходаковский,

Денис Колесник,

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

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

Всем доброго дня! 

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

Нравится

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

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Литвинко Павел пишет:

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Здравствуйте,  получилось немного не так:

 

var list = Get<ICompositeObjectList<ICompositeObject>>("Units");

foreach (ICompositeObject item in list) {

    

    if (item.TryGetValue<string>("Name", out string value)) {

        Set<string>("ProcessSchemaParameter1", value);

   }

}

Спасибо за помощь!)

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

Вопрос собственно в заголовке, есть примеры что дергать? 

Нравится

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

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

Не совсем понял ваш вопрос, но начиная с версии 7.17.4 можно вызвать веб-сервис с помощью следующего кода:

 

using Terrasoft.Configuration.ServiceSchema;
 
//...
 
try {
    // Создаем экземпляр ServiceSchemaClient
    var client = ClassFactory.Get&lt;IServiceSchemaClient&gt;();
    // Настраиваем параметры вызова
    var parameters = new Dictionary&lt;string, object&gt;() {
        {"id", 1}, {"name", userName}
    };
    // Получаем результат выполнения
    var serviceResponse = client.Execute(UserConnection, serviceName, methodName, parameters);
} catch (Exception e) {
    // Обрабатываем ошибки
}

Также вам может помочь обсуждение тут.

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

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

мы питаемся в Бизнес процесс добавить подпроцесс, и когда передает только значение Лида, все ок,

но в подпроцессе у нас есть параметр, текстовый, и на него вылетает ошибка:

"Значение не может быть неопределенным. Имя параметра: format"

Пробовали и заполнять этот параметр значением по умолчанию в подпроцессе, и передавать значение с процесса, 

если он присутствует всегда одна и та же ошибка.



Версия: 7.15.4.3055

Прикрепленные файлы

Нравится

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

Уточните, у Вас параметр назвается format или Name? Или это два разных параметра?

Здравствуйте, параметр называется - Name, с названием format у меня ничего нет.

Уверены, что дело именно в этом подпроцессе? Если запускать его из другого процесса, тоже такая ошибка?

Если переименовать Name как-то иначе, то тоже?

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

В одном конкретном подпроцессе или в любом с любым параметром? Просто эти действия довольно обычны, если бы всегда при любом текстовом параметре любого подпроцесса была такая ошибка, это бы давно заметили.

А в логи системы (стандартно в текстовом файле Error.log на веб-сервере) при этом что-то падает? В консоли браузера нет дополнительной информации в момент ошибки?

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

Добрый день, коллеги. Хочу с вами поделиться моими идеями по поводу улучшений функциональности БП.

Привожу список того, что бы мне хотелось иметь в БП.

 

1. Отсутствие возможности комментирования. Необходимость возникает в средних и сложных БП с N > 20, где N - количество элементов в нем. Возникают недостатки: читабельности (неоднозначность в действиях); группировки (чтобы визульно можно было разделить элементы БП по группам).

 

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

 

3. Отсутствие простого завершающего события. Так как в БП может быть 2 и более потока, то необходимо для каждого из них возвращать свое завершающее событие. На данный момент реализована схема: либо все либо ничего. Т. е. результатом БП является единственный останов. Это мешает рассматривать БП как полноценную систему, умеющую хорошо работать с потоками - отсутствует возможность уничтожить отдельный поток. Например: есть N подпроцессов, которые нужно выполнить либо последовательно либо параллельно и отчитаться по каждому из них. На данный момент в Creatio требуется задействовать внешний объект, файл и т. п., для выполнения этого задания придется отдельно вводить понятия "экземпляр главного процесса" и "результат выполнения". В https://community.terrasoft.ru/questions/id-suschnosti-bp рекомендуют привязывать БП к экземпляру объекта, что не соответствует нашей задаче.

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

Илья, спасибо за пожелания.

По первому о комментариях уже была зарегистрирована такая идея.

По второму и третьему завёл.

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

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

Илья, можете ещё раз более подробно описать по второму пункту, что Вам требуется?

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

Создал веб-сервис опроса погоды. В выходных данных есть поля дат. Эти даты надо сконвертировать из int в DateTime.Изображение удалено.

Не могу понять, как обратиться к параметрам веб-сервиса из задания-сценария?

Set("dt", GetDt(Get<int>("WebService1.dt")));
Set("sys_sunrise", GetDt(Get<int>("WebService1.sys_sunrise")));
Set("sys_sunset", GetDt(Get<int>("WebService1.sys_sunset")));
return true;

 

Нравится

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

Можно точнее? Что значит из int в DateTime?

public DateTime GetDt(int unixDate)
{
    var dt = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
    dt = dt.AddSeconds(unixDate).ToLocalTime();
    return dt;
}

Стандартный метод преобразования unix long в DateTime.

Дамиан, Вы можете создать в БП параметры нужного типа и связать их со входящими параметрами веб-сервиса. Затем из скрипта работать уже с ними, используя Get.

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

Можете привести код или ссылки?

Дамиан, как работать с параметрами при помощи Get, есть тут.

Я имею в виду, что в дизайнере БП привязать параметр процесса к исходящему параметру веб-сервиса, а затем работать уже с ним.

 

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

Добрый день столкнулся с проблемой , что при выполнении бп выдало ошибку 

Terrasoft.Common.NullOrEmptyException: Невозможно получить экземпляр схемы типа "Terrasoft.Core.Process.PldLeadManagementIdentification2PaladinPackage3Schema"

   в Terrasoft.Core.SchemaManager`1.InitializeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)

   в Terrasoft.Core.SchemaManagerItem`1.get_Instance()

   в Terrasoft.Core.Process.BaseProcessElementFactory.CreateSubProcessInstance(ProcessSchemaSubProcess schemaSubProcess)

   в Terrasoft.Core.Process.ProcessElementFactory.CreateFlowElementInstance(ProcessSchemaBaseElement schemaElement)

   в Terrasoft.Core.Process.ProcessComponentSet.CreateFlowElementInstance(String schemaElementName, Boolean isReExecution)

   в Terrasoft.Core.Process.ProcessComponentSet.ForceGetFlowElementInstance(String schemaFlowElementName)

   в Terrasoft.Core.Process.ProcessComponentSet.Execute(String elementName, FlowContext flowContext)

   в Terrasoft.Core.Process.TaskService.Terrasoft.Core.Process.IHandler.Receive(ExecuteProcessElementRequest message)

   в Terrasoft.Core.Process.MediatorBuilder.Mediator.Send[TMessage](TMessage message)

   в Terrasoft.Core.Process.FlowVisitor.ProcessQueueItem(FlowVisitorQueueItem queueItem)

   в Terrasoft.Core.Process.FlowVisitor.Dequeue()

   в Terrasoft.Core.Process.FlowService.<>c__DisplayClass32_0..Receive>b__0()

   в Terrasoft.Core.Process.FlowService.InvokeWithHandleCancelRequestedEvent(FlowVisitor visitor, Action action)

   в Terrasoft.Core.Process.FlowService.Terrasoft.Core.Process.IHandler.Receive(ExecuteProcessElementResponse message)

   в Terrasoft.Core.Process.MediatorBuilder.Mediator.Send[TMessage](TMessage message)

   в Terrasoft.Core.Process.TaskService.ProcessFlowElementExecuted(Object sender, ProcessActivityAfterEventArgs args)

   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)

   в Terrasoft.Core.Process.ProcessUserTask.OnExecuted(ProcessActivityAfterEventArgs e)

   в Terrasoft.Core.Process.ProcessActivity.CompleteExecuting(Object[] parameters)

   в Terrasoft.Core.Process.Configuration.ActivityUserTask.CompleteExecuting(Object[] parameters)

   в Terrasoft.Core.Process.ProcessActivity.Complete(Object[] parameters)

   в Terrasoft.Core.Process.ProcessEngineImpl.CompleteExecutingInternal(Guid elementUId, IReadOnlyDictionary`2 parameterValues, ContinueProcessCommand command, Boolean removeMessageFromStore, Object[] parameters)





После обращение тп выяснилось, что в бп устарел метод GetParentApplicationUrl(HttpRequest) 

И посоветовали просто переименовать его в GetParentApplicationUrl(Terrasoft.Web.Http.Abstractions.HttpRequest)

Но проблема осталась, может кто сталкивался с такой проблемой ? 

Нравится

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

Максим, этот процесс Вы сами создавали? Из каких элементов он состоит, на каком вылетает ошибка? Процесс и его подпроцессы в отдельных схемах перед этим сохранили и публиковали?

 

Функция GetParentApplicationUrl, скорее всего, у Вас использована для получения адреса сайта.

Если просто закомментировать код с GetParentApplicationUrl или заменить его вызов на строку с реальным адресом (или читать из системной настройки), всё остальное работает?

 

А по поводу устарения, это относится к совместимости доработок с сайтами на Net Core, там нужно всё делать через классы из Terrasoft.Web.Http.Abstractions. Возможно, в новых версиях будет только так и работать.

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

Передавать нужно экземпляр класса HttpRequest из namespace Terrasoft.Web.Http.Abstractions, который можно определить так: HttpContext.Current.Request, например:

HttpRequest request = HttpContext.Current.Request;
applicationUrl = Terrasoft.Web.Common.WebUtilities.GetParentApplicationUrl(request);

При этом нужно добавить namespace "Terrasoft.Web.Http.Abstractions" и убрать "System.Web".



Вторая ошибка связана с LeadId  и появляется по причине использования неизвестного параметра. Получить параметр в методе можно так:

Get&lt;Guid&gt;("Код параметра")

 

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

Все прикрепили согласно инструкциям, заменили аргументы, но всеравно ловим ошибку непонятно из-за чего такое ощущение что просто не видит изменений

На всякий случай ещё раз сохраните и опубликуйте.

Откройте исходный код схемы и найдите строки с этими номерами.

Может, не везде в коде исправили.

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