Эта статья морально устарела :( . Приглашаю продолжить ваше знакомство с Salesforce на нашем Форуме!
Вы наверняка замечали, что в SalesForce есть система общения (Chatter) и в ней есть лента пользователя, вот она:
Если сравнивать к примеру с соц. сетями, то это "стена" человека. Тут можно постить сообщения, файлы, выкладывать ссылки и другое (подробнее на скриншоте снизу):
По сути про ручное добавление записей тут писать нечего, если вы "поиграетесь" с вкладкой "Chatter" хотя бы 5 минут, то для вас все станет понятным.
Давайте рассмотрим более интересный вариант. К примеру, когда в вашем магазине, созданном в рамках системы (можно и в виде сайта) необходимо пользователю при покупке товара автоматически на стену постить какой товар он купил, когда купил, с какой скидкой и сколько он в итоге должен заплатить за него (вы можете придумать другую ситуацию).
Рассмотрим один из методов реализации:
Т.к. в рамках моей системы, при покупке товара, создается соответствующая запись для объекта Order, то с ней и будем работать. Для того, что бы нам отследить момент покупки. т.е. момент добавления записи к объекту Order можно использовать триггер на событие after insert.
Для того, что бы создать триггер переходим в раздел:
Setup / Create / Object / Имя_вашего_объекта / блок_с_триггерами
trigger AddFeed on Order__c (after insert) { //создаем триггер и указываем на каком событии ему отрабатывать
for(Order__c newOrder : Trigger.new){ // для каждого объекта в триггере
if (Schema.SObjectType.User.isFeedEnabled()){ // если разрешено постить сообщения, то:
// Вытягиваем из БД необходимые поля:
List<Order__c> orders = [SELECT id, Product__r.Name__c, Final_Cost__c, Discount__r.Pese__c, CreatedBy.Name FROM Order__c WHERE id =: newOrder.id];
// Формируем строку
String setBody = 'User: ' + orders[0].CreatedBy.Name + ' by product: ' + orders[0].Product__r.Name__c + ' with Discout: ' + orders[0].Discount__r.Pese__c + '% and Final Cost: ' + orders[0].Final_Cost__c ;
// Задаем текст сообщения:
String body = String.valueOf(setBody);
// Создаем новое сообщение:
sObject fItem = (sObject)System.Type.forName('FeedItem').newInstance();
// Для текущего юзера:
fitem.put('ParentId' ,UserInfo.getUserId()); // or Account or Contact or Opportunity Id
fItem.put('Body' , body); // добавляем сообщение в body
insert fItem; // выводим сообщение на странице
}
}
}