Добрый день. Прощу помочь. Есть задача при каждом звонке нужно создать активность и отправлять уведомление супервизору группы. Мы создаем активность в бизнес процессе с помощью кода так:
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. Прошу помочь почему так?
Нравится
Добрый день,
По вашему коду непонятно по какому условию reader читает данные. Если ваш SQL запрос только "SELECT * FROM Call", то это может создать уйму проблем.
В любом случае, не совсем понимаю для чего использовать именно скрипт-таску для создания активности. Поскольку вы и так используете БП, то есть куда лучший способ. В качестве сигнала старта укажите создание новой записи в объекте Call и далее создайте активность с помощью элемента "Добавить данные". Так будет куда проще, плюс, таким образом при новом входящем звонке система сразу же создаст активность.
Дима Вовченко,
Добрый день. При select мы берем некоторые колонки и используем эти колонки для поиска других данных. Если в качестве старта сигнал добавления и изменения записи то будет ли реагировать на создание и изменение прямо в таблицу? То есть у нас создание записи происходит в cretio а оценка звонка (изменение записи)происходит прямо в таблицу(в базу)