1、以车的名义发送出去,而不是以驾驶员的方式发送出去
2、以驾驶员的名义发送出去,而不是以车的名义发送出去
我们当然不希望是采用第二种方式,因为那样不是很好,也不准确,比如一个驾驶员可以有几部车,如果以驾驶员的名义发出,别人可以能不知道是那不车有问题了,但是可以提供车的信息,但是如果是以车的名义发出,那就更加清晰明确了。所以我们希望是第一种方式。
如果以第一种方式,在SF中,也有两种方式实现
1、给车也注册一个chatter账户,然后有故障时,用车的chatter发送出去
2、不用注册chatter账户,而是通过自定义object,即将车定义为object,然后通过该车对应的object对象将消息发送出去
具体实现实录是,首先自定一个Car的对象,来保存车的相关信息,然后在车有故障时,找到对用的车后,就发送一条消息出去,这样就可以了。
我的方式是写一个触发器,然后监控该Car对象,如果有故障的车有信息更新,比如某个代表车有故障的字段信息有变更,我们就认为有故障了,此时就自动发送消息出去。
Car车的一些属性:
具体代码如下:
1、外部平台负责更新车的状态,比如java客户端作为主动更新的系统:比如当为VID1的车有故障时,我们会主动更新SF里car Object的数据信息
/** * * <pre><b>功能描述:</b>更新 * * @author :****(Kevin.xie) * <b>创建日期 :</b>2012-2-15 下午03:18:52 * * @throws ConnectionException * * <b>修改历史:</b>(修改人,修改时间,修改原因/内容) * * </pre> */ private static void update() throws ConnectionException { QueryResult queryResults = connection.query("SELECT Id FROM Car__c where VID__c = 'VID1' LIMIT 50"); System.out.println(queryResults == null ? "null" : queryResults.getSize() + ""); if (queryResults.getSize() > 0) { // 不能直接更新这个从数据库查处的对象,回报错误 SObject sObject = queryResults.getRecords()[0]; Car__c car = new Car__c(); car.setId(sObject.getId()); car.setCurrently_DTC__c("p2000--Test DTCs"); SaveResult[] results = connection.update(new SObject[] {car }); if (!results[0].isSuccess()) { System.out.println("Error updating user status: " + results[0].getErrors()[0].getMessage()); } else { System.out.println("User status successfully updated."); } System.out.println(); } }
2、在car object对象上创建一个触发器,让它自动发送消息到chatter组上
trigger CarTrigger on Car__c (after update) { List<FeedItem> feedItems = new List<FeedItem>(); Car__c oldCar = Trigger.old[0]; Car__c newCar = Trigger.new[0]; if(oldCar.Currently_DTC__c != newCar.Currently_DTC__c) { FeedItem fitem = new FeedItem(); fitem.type = 'LinkPost'; fitem.ParentId = newCar.id; //This is the url to take the user to the activity fitem.LinkUrl = '/' + newCar.id; //This is the title that displays for the LinkUrl fitem.Title = 'View'; fitem.Body = 'Currently DTCs: \n'+newCar.Currently_DTC__c; feedItems.add(fitem); } //Save the FeedItems all at once. if (feedItems.size() > 0) { //notice the false value. This will allow some to fail if Chatter isn't available on that object Database.insert(feedItems,false); } }
3、配置chatter跟踪该对象
3.1、开始chatter的自动跟踪,入下图
3.2、跟踪car 对象,注意不要勾选属性,否则勾选了那个属性后,在操作数据的时候,所有的变更操作动作都会显示在chatter页面上。
经过上面设置后,就可以看到效果(0008 和 0009就是具体的车了, Kevin和kevin.xie就是司机了):