2016-06-27 2 views
4

Я использую Sitecore 8.1 с включенным xDB (MongoDB). Я хотел бы сохранить пользовательские роли посещающих пользователей в xDB, поэтому я могу агрегировать эти данные в своих отчетах. Эти роли могут меняться со временем, поэтому один пользователь может иметь один набор ролей в определенный момент времени и другой набор ролей в более позднее время.Хранение пользовательских временных данных в Sitecore xDB

Я мог бы хранить и сохранять эти пользовательские роли как пользовательские грани в объекте Contact, но поскольку они могут измениться для посещения пользователем для посещения, я потеряю исторические данные, если я обновляю данные в фасет каждый раз, когда войдите в систему (fx. Я не буду знать, какие роли у данного пользователя есть, при определенном посещении).

Вместо этого я мог бы создать пользовательский IElement для моих данных фасет и сохранить роли вместе с меткой времени, когда данные роли были зарегистрированы, но эту модель можно будет обрабатывать на этапе отчетности, где мне понадобится для соединения данных взаимодействия с данными роли на основе временных меток каждый раз, когда я создаю отчет.

Возможно ли сохранить эти пользовательские данные в xDB в чем-то другом, чем в коллекции контактов? Могу ли я хранить пользовательские данные в коллекции взаимодействия? Существует свойство, называемое Tracker.Current.Session.Interaction.CustomValues, которое похоже на то, что мне нужно, но если я буду хранить данные здесь, смогу ли я выполнить надлежащую агрегацию/отчетность по данным? Любые другие подходы, о которых я не думал?

+0

Дайте мне время, и я исследую, можете ли вы расширить коллекцию взаимодействий и как близко это расширять контактную коллекцию. –

+0

@ebug Итак, вы пытались использовать «CustomValues» вместе с советами из моего ответа? –

+0

Нет, извините, не успел проверить. Но кажется, что ты прав. Я обязательно сделаю свой голос, когда он будет протестирован – ebug

ответ

1

CustomValues ​​

Да, CustomValues словарь это то, что я хотел бы использовать в вашем случае. Этот словарь будет сериализован в MongoDB как вложенный документ каждого взаимодействия (если словарь не пуст).

Также обратите внимание, что поскольку CustomValues является членом базового класса Sitecore.Analytics.Model.Entity, этот словарь доступен во многих других классах данных xDB. Например, вы можете сохранить пользовательские значения в PageData и PageEventData объектах.

Поскольку CustomValues принимает объект любого класса, ваш класс пользовательских данных требуются некоторые дополнительные вещи для того, чтобы успешно сохраненные и впоследствии загружены из MongoDB:

  1. Он должен быть отмечен как [Serializable].
  2. Он должен быть зарегистрирован в драйвере MongoDB так:

    using Sitecore.Analytics.Data.DataAccess.MongoDb; 
    
    // [...] 
    
    MongoDbObjectMapper.Instance.RegisterModelExtension<YourCustomClassName>(); 
    

    Это должно быть сделано только один раз в жизни приложения - например, в процессоре initialize трубопровода.

Ваше собственное хранилище

Конечно, вы не должны использовать API Sitecore для хранения пользовательских данных. Таким образом, альтернативой было бы вручную сохранять данные в пользовательскую коллекцию MongoDB или таблицу SQL. Затем вы можете прочитать эти данные в своем агрегированном процессоре, найдя его по идентификатору обработанного в настоящее время взаимодействия.

Преимущество этого подхода заключается в том, что вы можете определить, где и как хранятся ваши данные. Недостатком является дополнительная работа по внедрению и обслуживанию этого хранилища данных.

Смежные вопросы