Вопрос

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

Добрый день!

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

 

У меня такой же вопрос

9 комментариев
Лучший ответ
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, содержащий описание прокси–классов, которые теперь могут использоваться для обращения и взаимодействия с ресурсами сервиса данных как с объектами.
Войдите или зарегистрируйтесь, чтобы комментировать