Вопрос

Получение количества обращений

Добрый день!

Подскажите, пожалуйста, как получить количество новых(не обработанных) обращений в bpmonline 7.14 на С#?

 

Нравится

11 комментариев
Лучший ответ
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Case");
 
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Status.Id", *тут ID состояния обращения НОВОЕ*));
 
esq.AddColumn("Id");
var entities = esq.GetEntityCollection(UserConnection);
int count = entities.Count; //количество

Как вариант так

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Case");
 
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Status.Id", *тут ID состояния обращения НОВОЕ*));
 
esq.AddColumn("Id");
var entities = esq.GetEntityCollection(UserConnection);
int count = entities.Count; //количество

Как вариант так

Так будет плохо, что ради количества загружать коллекцию из 100500 элементов. Лучше c агрегацией:

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Case");
 
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Status.Id", *тут ID состояния обращения НОВОЕ*));
 
var countColumn = esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Id")).Name;
 
var entities = esq.GetEntityCollection(UserConnection);
int count = entities[0].GetTypedColumnValue<int>(countColumn); //количество

 

Спасибо, буду пробовать

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

я так понимаю, что что бы выполнить этот код, к проекту необходимо подключить библиотеки террасофт? 

Если я правильно понял, то они выгружаются из админ панели bpm?

А если нет доступа к ней, есть другие варианты где взять?

Разработку можно вести прямо в браузере, создав в БП блок-скрипт с этой логикой, а также взаимодействием с параметром процесса для передачи ответа.

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

дело в том, что мой аккаунт не имеет таких привилегий.

Коннекчусь к бпм след. образом:



    class Program

    {

        // HTTP-адрес приложения.

        private const string baseUri = "https://*********.ru/";

        // Контейнер для Cookie аутентификации bpm'online. Необходимо использовать в последующих запросах.

        // Это самый важный результирующий объект, для формирования свойств которого разработана

        // вся остальная функциональность примера.

        public static CookieContainer AuthCookie = new CookieContainer();

        // Строка запроса к методу Login сервиса AuthService.svc.

        private const string authServiceUri = baseUri + @"/ServiceModel/AuthService.svc/Login";



        // Выполняет запрос на аутентификацию пользователя.

        public static bool TryLogin(string userName, string userPassword)

        {

            // Создание экземпляра запроса к сервису аутентификации.

            var authRequest = HttpWebRequest.Create(authServiceUri) as HttpWebRequest;

            // Определение метода запроса.

            authRequest.Method = "POST";

            // Определение типа контента запроса.

            authRequest.ContentType = "application/json";

            // Включение использования cookie в запросе.

            authRequest.CookieContainer = AuthCookie;



            // Помещение в тело запроса учетной информации пользователя.

            using (var requestStream = authRequest.GetRequestStream())

            {

                using (var writer = new StreamWriter(requestStream))

                {

                    writer.Write(@"{

                    ""UserName"":""" + userName + @""",

                    ""UserPassword"":""" + userPassword + @"""

                    }");

                }

            }

и вот как мне после такого коннекта получить кол-во обращений?

Можно попробовать работать с обращениями по OData.

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

посмотрел, в примере на этой странице фигурирует юзинг

using Terrasoft.Sdk.Examples.CreatioServiceReference;

получается не выйдет и этим способом(

Для работы по OData не нужно специфических библиотек с сайта, этот класс генерируется автоматически:

Прокси–классы для клиента WCF могут быть созданы непосредственно из Visual Studio. Для этого необходимо выполнить последовательность действий:

  1. Щелкнуть правой клавишей мыши по проекту, в котором планируется реализация интеграции с Creatio, выбрать в контекстном меню пункт Add Service Reference…
  2. В открывшемся диалоговом окне в поле Address ввести полный адрес OData–сервиса EntityDataService.svc.
  3. Нажать на кнопку Go. В результате откроется окно аутентификации сервиса, в котором необходимо указать имя и пароль пользователя Creatio. Если аутентификация прошла успешно, в окне Servicesотобразятся поддерживаемые сервисом сущности.
  4. В поле Namespase указать имя пространства имен, в котором будут расположены сгенерированные прокси–классы. Например, creatioServiceReference. Ссылку на это пространство имен в дальнейшем необходимо добавить в блок using кода проекта.
  5. Нажать кнопку ОК, после чего будут сгенерированы прокси–классы. При этом в проект будет добавлен новый файл кода Reference.cs, содержащий описание прокси–классов, которые теперь могут использоваться для обращения и взаимодействия с ресурсами сервиса данных как с объектами.

Дмитрий А.,

Здравствуйте Дмитрий. Как вызвать 

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

 

Это C#-код, а у Вас на скриншоте — JS-схема. Никак.

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