Вопрос

Добавление активности в бизнес процессе

Добрый день. Прощу помочь. Есть задача при каждом звонке нужно создать активность и отправлять уведомление супервизору группы. Мы создаем активность в бизнес процессе с помощью кода так: 

 

   var customQuery = new CustomQuery(userConnection);

  customQuery.SqlText = "SELECT * FROM Call";

 var activityData = new HashSet<(string callId, string ownerId)>();

 

using(DBExecutor dbExecutor = userConnection.EnsureDBConnection())

{

     while(reader.Read())

     {

         

        string _id = reader.IsDBNull(reader.GetOrdinal("Id")) ? string.Empty : reader.GetString(reader.GetOrdinal("Id"));

     string _ownerId =  reader.IsDBNull(reader.GetOrdinal("OwnerId")) ? string.Empty : reader.GetString(reader.GetOrdinal("OwnerId"));

       activityData.Add((_id, _ownerId));

     }

}

 

 

if (activityData.Count > 0)

{

    var activity = userConnection.EntitySchemaManager.GetInstanceByName("Activity");

    var entity = activity.CreateEntity(userConnection);

 

    foreach(var (callId, ownerId) in activityData)

   {

        entity.SetColumnValue("OwnerId", ownerId);

       entity.SetColumnValue("CallId", callId);

       entity.SetColumnValue("Title", "Новый звонок");

       entity.SetColumnValue("RemindToOwner", true);

      entity.SetColumnValue("RemindToOwnerDate", DateTime.Now);

      entity.SetDefColumnValues()

      entity.Save();

   }

}

 

В таком виде создается не все активности точнее если есть 3 новых звонка то создается только 2 хотя в hashset добавляется все данные. Но если переменные  activity и entity добавить внутрь цикла for то для 3 звонков создается 6. Прошу помочь почему так? 

 

Нравится

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

Добрый день, 

По вашему коду непонятно по какому условию reader читает данные. Если ваш SQL запрос только "SELECT * FROM Call", то это может создать уйму проблем.

В любом случае, не совсем понимаю для чего использовать именно скрипт-таску для создания активности. Поскольку вы и так используете БП, то есть куда лучший способ. В качестве сигнала старта укажите создание новой записи в объекте Call и далее создайте активность с помощью элемента "Добавить данные". Так будет куда проще, плюс, таким образом при новом входящем звонке система сразу же создаст активность.

Дима Вовченко,

Добрый день. При select мы берем некоторые колонки и используем эти колонки для поиска других данных. Если в качестве старта сигнал добавления и изменения записи то будет ли реагировать на создание и изменение прямо в таблицу? То есть у  нас создание записи происходит в cretio а оценка звонка (изменение записи)происходит прямо в таблицу(в базу)

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