Добрый день, подскажите как можно сменить порт 5000 при запуске creatio командой: 
COMPlus_ThreadPool_ForceMinWorkerThreads=100 dotnet Terrasoft.WebHost.dll

Нравится

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

Добрый день

В файле appSettings.json, в корневой папке

Добрый день

В файле appSettings.json, в корневой папке

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

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

Нравится

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

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

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

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

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

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

Всем доброго времени суток!
Столкнулся с проблемой, при сохранении Entity на событийном слое не срабатывает асинхронные операции.

Сохранение происходит в классе обработчике который подписан на очередь Rabbit

Выдает следующую ошибку:

EntityEventAsyncExecutor SendMessage - OnSavedMyEntityAsyncOperations
System.InvalidOperationException: Не удалось получить контекст выполнения фоновой операции. Для сервисов без авторизации необходимо вызвать Terrasoft.Web.Common.SessionHelper.SpecifyWebOperationIdentity.
   в Terrasoft.Core.ServiceBus.BusUtils.CreateUserContext(String userName, String sessionId, Guid externalAccessId)
   в Terrasoft.WebApp.ActorSystem.UserContextProvider.GetUserContext()
   в Terrasoft.ActorSystem.ActorReference.Tell(AppContextMessage message)
   в Terrasoft.Core.ActorSystem.Entities.EntityEventAsyncExecutor.SendMessage(Object parameters, Type operationType)

Как бороться с такой проблемой, может кто знает?

Спасибо!

Нравится

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

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

 

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

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

Всем привет!

 

Только знакомлюсь с платформой. Получил задачу в рамках которой необходимо написать Excel-файл, переданный в мой веб-сервис. До этого использовал для таких вещей OLEDB. Написал код, скомпилировал и через Postman решил его проверить. Получил только ошибку:

 

The server encountered an error processing the request. The exception message is 'The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.'. See server logs for more details.

 

Возможность разработки в файловой системе отключена. Кто-нибудь подскажет, что делать? Если нет возможности использовать OLEDB, то, возможно, есть другие варианты?

Нравится

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

Добрый день, Константин!

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

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

Всем доброго времени суток!

Нужна консультация.

У нас возникла необходимость обрабатывать большие коллекции Entity(изменять значение поля и обновлять) при этом что бы был задействован событийный слой.

Решили данным способом:

var bc = new BlockingCollection<Entity>();
// Наполнение коллекции
.....
Parallel.ForEach(bc, new ParallelOptions {
   MaxDegreeOfParallelism = Environment.ProcessorCount
}, entity => entity.UpdateInDB(false));

Вопрос в следующем будем ли мы ловить локи при использовании UserConnection entity, не создавая нового?
Подобные случаи с локами были на версии 7.8.


 

Нравится

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

Алексей, здравствуйте!

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

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

Мне нужен фильтр в C# коде
Что-то вроде:

var activity = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity"); //Активность
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Equal, "Type",  "id типа")); // тип активности - email
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Recepient",  "my_email@gmail.com")); // кому-мне
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_dad_email@gmail.com")); // от отца
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_mum_email@gmail.com")); // от матери
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_sister_email@gmail.com")); // от сестры
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_brother_email@gmail.com")); // от брата

нужен такой фильтр:
тип активности-email && кому-мне && (от отца || от матери || от сестры || от брата)

Как добавить логические операторы чтобы получить такой фильтр?
Или может быть надо по другому?

Нравится

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

 Что то типо такого?

activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  new string[] { "my_dad_email@gmail.com", "my_mum_email@gmail.com", "my_sister_email@gmail.com", "my_brother_email@gmail.com"}));

Колногоров Роман Андреевич,

выдает ошибку 

Условие типа "Contain" не может содержать более одного выражения в правой части
обойтись без Contain не получиться

Попробуйте через createColumnInFilterWithParameters

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

Как вызывать из JS я знаю, но тут понадобилось вызвать из C#

Нравится

2 комментария
var property = "PropertyValue";				
ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("ProcessName");
				bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);
				if(canUseFlowEngine) {
					var flowEngine = new FlowEngine(UserConnection);
					var param = new Dictionary<string, string>();
					param["Property"] = property;
					flowEngine.RunProcess(schema, param);
				} else {
					Process process = schema.CreateProcess(UserConnection);
					process.SetPropertyValue("Property", property);
					process.Execute(UserConnection);
				}

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

Трефилов Павел Сергеевич,

Добрый день!

Подскажите почему возникает ошибка.

Показать все комментарии
using Terrasoft.Common;
new LocalizableString(UserConnection.Workspace.ResourceStorage, "ИмяКласса",
					"LocalizableStrings.TestMessageBody.Value").ToString();

 

Нравится

Поделиться

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

Добрый день, всем. Очень долго выполняются запросы связанные с UpdateQuery, SelectQuery, InsertQuery. Кто-нибудь сталкивался с этим? Какие пути использовали, для нахождения проблемы?

Нравится

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

Для анализа запросов есть профайлер в mssql. Запускаете профайлере, делаете запрос из клиентской части. Смотрите какой sql для select получается в профайлере.

Еще может быть, что у вас тормозит обмен по websocket. Надо посмотреть в консоль разработчика в браузере, нет ли там ошибки с подключение к websocket.

И еще creatio требовательна к ресурсам, если вам кажется что все работает медленно, то стоит проанализировать производительность ваших серверов.

Для анализа запросов есть профайлер в mssql. Запускаете профайлере, делаете запрос из клиентской части. Смотрите какой sql для select получается в профайлере.

Еще может быть, что у вас тормозит обмен по websocket. Надо посмотреть в консоль разработчика в браузере, нет ли там ошибки с подключение к websocket.

И еще creatio требовательна к ресурсам, если вам кажется что все работает медленно, то стоит проанализировать производительность ваших серверов.

В profiler смотрел, запросы выполняются за доли миллисекунд.
Websocket работает отлично.
Запросы выполняются долго в момент переключения состояния Обращения, вот что заметил. Пока не отлаживал сам процесс перехода состояний, но может уже кто-то сталкивался с этим.

Саид Иманмагомедов,

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

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

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

Как создать задачу на визирование в коде?

Нравится

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

EntitySchema invoiceVisaSchema = UserConnection.EntitySchemaManager.GetInstanceByName("InvoiceVisa");
Entity invoiceVisa = invoiceVisaSchema.CreateEntity(UserConnection);
invoiceVisa.SetDefColumnValues();
invoiceVisa.SetColumnValue("Objective", "Требуется утверждение");
invoiceVisa.SetColumnValue("VisaOwnerId", new Guid("7F3B869F-34F3-4F20-AB4D-7480A5FDF647"));
invoiceVisa.SetColumnValue("StatusId", new Guid("3462594D-77A7-4B0A-874A-6D8B54B293BC"));
invoiceVisa.SetColumnValue("InvoiceId", new Guid("3C2B6D9F-4C1E-4364-99F2-53956562B606"));
invoiceVisa.Save();

 

аналог элемент процесса

EntitySchema invoiceVisaSchema = UserConnection.EntitySchemaManager.GetInstanceByName("InvoiceVisa");
Entity invoiceVisa = invoiceVisaSchema.CreateEntity(UserConnection);
invoiceVisa.SetDefColumnValues();
invoiceVisa.SetColumnValue("Objective", "Требуется утверждение");
invoiceVisa.SetColumnValue("VisaOwnerId", new Guid("7F3B869F-34F3-4F20-AB4D-7480A5FDF647"));
invoiceVisa.SetColumnValue("StatusId", new Guid("3462594D-77A7-4B0A-874A-6D8B54B293BC"));
invoiceVisa.SetColumnValue("InvoiceId", new Guid("3C2B6D9F-4C1E-4364-99F2-53956562B606"));
invoiceVisa.Save();

 

аналог элемент процесса

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