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

Нравится

4 комментария
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.

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

Добрый день!

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

Pavel Litvinovich,

уточните, какая именно ошибка возникает, если навести на подчёрнутый участок кода? Что происходит при попытке скомпилировать этот код?

Олег Нефедьев,

Спасибо! Уже разобрался.

 

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

Как кодом пишется фильтр "содержит"? Такой как на скриншотеИзображение удалено.

Чаше всего используется фильтр 

var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Country.Name", "Испания");

а как написать "содержит"?

если можно, то с примером на той же Испании и на JS и на C#

Спасибо

Нравится

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

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

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

Благодарю

Карабаева Марина,

Добрый день.

Уточните, что Вы имеете в виду? Этот фильтр применяется для EntitySchemaQuery при формировании запроса. Более детально по ссылке.

Mykhailo Storozhuk,

Мне важно найти область кода, в которой я бы смогла сделать его замену чтоб в итоге фильтр функционировал именно в таком формате, как "содержит", а не "начинается с".

Mykhailo Storozhuk, Михаил, могли бы помочь мне в данном вопросе?

Карабаева Марина,

Вам необходимо изменить значение по умолчанию системной настройки 

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

Mykhailo Storozhuk,

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

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

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

Нравится

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

Дмитрий, здравствуйте!



С версии 7.17.1 была изменена лога уведомлений.

Ранее уведомления получал только пользователь, которого упомянули в сообщении или поставили отметку "Мне нравится".



С версии 7.17.1 если пользователь подписан на обновление ленты по записи, то он будет получать уведомления о всех комментариях в ленте - точечно можно отписаться от ленты через "Действие" на странице редактирования "Отписаться от обновлений ленты" Чтобы полностью отключить функционал в системе - достаточно деактивировать процесс "Notify of new social messages". Если нужно управлять доступностью функционала на уровне пользователей - надо добавить функциональность как фичу для нужного пользователя и выключить "NotifyOfNewSocialMessages".





P.S. Пользователь подписывается на обновлении ленты записи при любом взаимодействии с этой записью.

Дмитрий, здравствуйте!



С версии 7.17.1 была изменена лога уведомлений.

Ранее уведомления получал только пользователь, которого упомянули в сообщении или поставили отметку "Мне нравится".



С версии 7.17.1 если пользователь подписан на обновление ленты по записи, то он будет получать уведомления о всех комментариях в ленте - точечно можно отписаться от ленты через "Действие" на странице редактирования "Отписаться от обновлений ленты" Чтобы полностью отключить функционал в системе - достаточно деактивировать процесс "Notify of new social messages". Если нужно управлять доступностью функционала на уровне пользователей - надо добавить функциональность как фичу для нужного пользователя и выключить "NotifyOfNewSocialMessages".





P.S. Пользователь подписывается на обновлении ленты записи при любом взаимодействии с этой записью.

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

Добрый день!



Два вопроса по таймеру в процессах:



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



2. Можно ли задавать время запуска в системных настройках?

Нравится

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

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

А зачем тогда настройка часового пояса в стартовом сигнале процесса Timer?

 

Владимир Соколов,

Добрый день!

Можно задавать время в формате UTC для таймера, тогда вопросов с часовыми поясами вообще не будет.

 

Подобные примеры доступны в статьях на академии: 

https://academy.terrasoft.ua/docs/user/biznes_processy/primery_nastrojk…

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

Добрый день, разворачиваем систему на centos, при попытке сборки сталкиваюсь с проблемой пакетов, самому не удалось найти альтернатив с пакетами, может кто сталкивался с подобным. Буду благодарен за помощь.

Содержимое докер файла стандартное:

 

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base

EXPOSE 5000 5002

RUN apt-get update && \

    apt-get -y --no-install-recommends install \

    libgdiplus \

    libc6-dev && \

    apt-get clean all && \

    rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app

COPY . ./

FROM base AS final

WORKDIR /app

ENV ASPNETCORE_ENVIRONMENT Development

ENV TZ US/Eastern

ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base

EXPOSE 5000 5002

RUN apt-get update && \

apt-get -y --no-install-recommends install \

libgdiplus \

libc6-dev && \

apt-get clean all && \

   rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app

COPY . ./

FROM base AS final

WORKDIR /app

ENV ASPNETCORE_ENVIRONMENT Development

ENV TZ US/Eastern

ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]



P.S. dotnet 3.1 установлен, что может быть не так?



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

Нравится

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

Добрый день! Как можно получить установочный файл BPMonline Messaging Service Install.msi 

 

Нравится

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

Коллеги, добрый день

Есть потребность привязать старт Бизнес-Процесса к окончанию процедуры Импорта данных

С учетом того, что импорт может производиться в разные разделы (Контакты/Контрагенты/...) — нужно понимать, какой именно объект служил конечной точкой



Вопрос:

Подскажите, пожалуйста, можно ли на уровне Бизнес-процесса получить информацию о том, куда был совершен импорт файла? Есть ли в БД таблица, содержащая поле, в котором бы хранилось подобное значение?

Нравится

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

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

 

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

Показать все комментарии
Работаю с FastReport (Создание провайдера данных отчета) и возник вопрос. 
Как найти Guid entitySchemaUId? 
В примере который есть (Знаменательные события контакта(пример)) указано 
private readonly Guid _contactEntitySchemaUId = new Guid("41af89e9-750b-4ebb-8cac-ff39b64841e");

Когда, создаю по примеру, то требуется поменять Guid, то откуда беру (из объекта к прим.: (0/ClientApp/#/EntitySchemaDesigner/41af89e9-750b-4ebb-8cac-ff39b64841ec) не правильно, т.к. при попытке печати отчета выходит ошибка неполадки сервераИзображение удалено.

Нравится

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

SQL:

select UId
from SysSchema
where Name = 'Contact' and ExtendParent = 0



C#:

UserConnection.EntitySchemaManager.GetInstanceByName("Contact").UId

 

Добрый день.

 

Получить UId схемы можно запросом из таблицы:

select UId
from SysSchema
where Caption = N'<Заголовок схемы>'

 

SQL:

select UId
from SysSchema
where Name = 'Contact' and ExtendParent = 0



C#:

UserConnection.EntitySchemaManager.GetInstanceByName("Contact").UId

 

Алла Савельева, 

не совсем правильно, так как ваш запрос вернет несколько строк, для каждой замещенной схемы. А нужно взять UId самого базового объекта.

Владислав Литвинчук,

привет , а что будет самым базовым объектом для Lead , я перебирал буквально каждый , но не с одним фаст репорт не заработал, просто выдает ошибку загрузки и все, хотя в примере из академии на объекте контакта все норм

Где ExtendParent = 0, как в моем запросе выше.

Владислав Литвинчук,

проставила вместо 0 false, иначе выдавал ошибку 

Он выдал две записи, какую все же из них следует выбрать?

Анастасия Демидова,

0 - MS, false - Postgre скорее всего.

Данный запрос не может выдать 2 записи. В системе сожет быть только 1 схема объекта без наследования.

Можно скриншот запроса и результата выборки?

Владислав Литвинчук,

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

Здравствуйте. В компании внедряется решение по взысканию. Есть потребность в А/Б тестировании стратегий, (он же Champion-Challenger).

Вопрос: имеется ли в Сreatio функционал для такого тестирования?



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

Пробовал использовать дату рождения "заканчивается на 1", это позволяет выбрать клиентов по 10%. Но по условию теста нужно 15%.

Подскажите у кого какой опыт в тестировании стратегий. 

 

Нравится

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

Как получить и обработать результирующие параметры при вызове БП из кода?

В версии 7.17.1 обещали получение параметров из интерпретируемого процесса, но примеров как и что нету. Запуск я проводил с помощью класса FlowEngine и метода RunProcess.

В sdk по классу flowengine ничего не добавилось.

Нравится

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

FlowEngine - устаревший класс и он не рекомендуется к использованию.

Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

string processName = "UsrCustomProcess";
string paramName = "UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Необходимо указание типа параметра
int result = processExecutor.Execute<int>(processName, paramName);

Пример запуска с получением нескольких параметров:

string processName = "UsrCustomProcess";
string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

 

FlowEngine - устаревший класс и он не рекомендуется к использованию.

Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

string processName = "UsrCustomProcess";
string paramName = "UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Необходимо указание типа параметра
int result = processExecutor.Execute<int>(processName, paramName);

Пример запуска с получением нескольких параметров:

string processName = "UsrCustomProcess";
string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

 

n.isaev,

А как передать в словарь <стринг, стринг> в качестве стринга коллекцию элементов как параметр? 

Андрей, Вы можете сериализовать коллекцию в JSON и передать как параметр.

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