salesforce里,以自定义对象发出消息的方法

http://xieyanhua.iteye.com/blog/1407358

应用中,需要有一个object(车)来发送一条消息通知大家,而不是通过账户来发出,比如在SF中,希望使用它的chatter功能,一个驾驶员在SF上有个chatter账户,驾驶员有台车,同时还有其他朋友之类的账户,大家系统车有故障时,大家都能看到。有两种方式可以实现: 

1、以车的名义发送出去,而不是以驾驶员的方式发送出去 
2、以驾驶员的名义发送出去,而不是以车的名义发送出去 

我们当然不希望是采用第二种方式,因为那样不是很好,也不准确,比如一个驾驶员可以有几部车,如果以驾驶员的名义发出,别人可以能不知道是那不车有问题了,但是可以提供车的信息,但是如果是以车的名义发出,那就更加清晰明确了。所以我们希望是第一种方式。 

如果以第一种方式,在SF中,也有两种方式实现 
1、给车也注册一个chatter账户,然后有故障时,用车的chatter发送出去 
2、不用注册chatter账户,而是通过自定义object,即将车定义为object,然后通过该车对应的object对象将消息发送出去 

具体实现实录是,首先自定一个Car的对象,来保存车的相关信息,然后在车有故障时,找到对用的车后,就发送一条消息出去,这样就可以了。 
我的方式是写一个触发器,然后监控该Car对象,如果有故障的车有信息更新,比如某个代表车有故障的字段信息有变更,我们就认为有故障了,此时就自动发送消息出去。 

Car车的一些属性: 



具体代码如下: 
1、外部平台负责更新车的状态,比如java客户端作为主动更新的系统:比如当为VID1的车有故障时,我们会主动更新SF里car Object的数据信息 

Java代码   收藏代码
  1. /** 
  2.   *  
  3.   * <pre><b>功能描述:</b>更新 
  4.   *  
  5.   * @author :****(Kevin.xie) 
  6.   * <b>创建日期 :</b>2012-2-15 下午03:18:52 
  7.   * 
  8.   * @throws ConnectionException 
  9.   * 
  10.   * <b>修改历史:</b>(修改人,修改时间,修改原因/内容) 
  11.   * 
  12.   * </pre> 
  13.   */  
  14.  private static void update() throws ConnectionException {  
  15.   
  16.      QueryResult queryResults = connection.query("SELECT Id FROM Car__c where VID__c = 'VID1' LIMIT 50");  
  17.      System.out.println(queryResults == null ? "null" : queryResults.getSize() + "");  
  18.      if (queryResults.getSize() > 0) {  
  19.            
  20.          // 不能直接更新这个从数据库查处的对象,回报错误  
  21.          SObject sObject = queryResults.getRecords()[0];  
  22.          Car__c car = new Car__c();  
  23.          car.setId(sObject.getId());  
  24.          car.setCurrently_DTC__c("p2000--Test DTCs");  
  25.            
  26.          SaveResult[] results = connection.update(new SObject[] {car });  
  27.            
  28.          if (!results[0].isSuccess()) {  
  29.                
  30.              System.out.println("Error updating user status: " + results[0].getErrors()[0].getMessage());  
  31.          } else {  
  32.                
  33.              System.out.println("User status successfully updated.");  
  34.          }  
  35.          System.out.println();  
  36.      }  
  37.  }  


2、在car object对象上创建一个触发器,让它自动发送消息到chatter组上 
Java代码   收藏代码
  1. trigger CarTrigger on Car__c (after update) {  
  2.     List<FeedItem> feedItems = new List<FeedItem>();  
  3.     Car__c oldCar = Trigger.old[0];  
  4.     Car__c newCar = Trigger.new[0];  
  5.       
  6.     if(oldCar.Currently_DTC__c != newCar.Currently_DTC__c) {  
  7.         FeedItem fitem = new FeedItem();  
  8.         fitem.type = 'LinkPost';  
  9.         fitem.ParentId = newCar.id;  
  10.          //This is the url to take the user to the activity  
  11.        fitem.LinkUrl = '/' + newCar.id;  
  12.          //This is the title that displays for the LinkUrl  
  13.         fitem.Title = 'View';   
  14.         fitem.Body = 'Currently DTCs: \n'+newCar.Currently_DTC__c;  
  15.         feedItems.add(fitem);  
  16.      }  
  17.        
  18.      //Save the FeedItems all at once.      
  19.      if (feedItems.size() > 0) {  
  20.        
  21.              //notice the false value. This will allow some to fail if Chatter isn't available on that object   
  22.              Database.insert(feedItems,false);  
  23.       }  
  24.  }  


3、配置chatter跟踪该对象 
3.1、开始chatter的自动跟踪,入下图 



3.2、跟踪car 对象,注意不要勾选属性,否则勾选了那个属性后,在操作数据的时候,所有的变更操作动作都会显示在chatter页面上。 



经过上面设置后,就可以看到效果(0008 和 0009就是具体的车了, Kevin和kevin.xie就是司机了): 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值