`

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

 
阅读更多
应用中,需要有一个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的数据信息
   /**
     * 
     * <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就是司机了):



  • 大小: 55.4 KB
  • 大小: 20.8 KB
  • 大小: 63.9 KB
  • 大小: 44.1 KB
分享到:
评论

相关推荐

    sfdc-sobject-quick-panel:面向开发人员的 Salesforce 标准对象和自定义对象快速面板

    SFDC SObject 快速面板 用于 sfdc 开发的 Salesforce 标准对象和自定义对象快速面板。 @see 截图

    salesforce-calendar:基于 FullCalendar JavaScript 框架构建的自定义日历。 轻松自定义以使用自定义对象

    轻松自定义以使用自定义对象。 这是对 Cody Sechelski 的改编。 他的实现的主要问题是它没有处理超过 2000 条记录。 这是由于 Apex 解决方法,因为它保留了开始和结束变量,Cody 创建了一个重复表并将其解析为 ...

    Salesforce

    - **平台云(Platform Cloud)**:提供开发工具和API,允许用户构建自定义应用,集成现有系统,扩展Salesforce的功能。 **3. Salesforce的云计算优势** - **随时随地访问**:基于云端,员工可以从任何设备和地点...

    object-model-tool:从 Salesforce 元数据生成对象模型 ERD 图的可扩展工具

    介绍创建此工具是为了为 salesforce 中的自定义对象生成对象模型/ERD 图。 需要外部图表无法由内部 Salesforce 模式构建器或我能找到的任何其他工具填充。 因此,我构建了一个可扩展的轻量级工具来按功能区域生成和...

    Salesforce应用架构分析

    Salesforce 数据模型是基于对象的,允许用户自定义对象来存储特定业务信息。每个对象可以包含字段、关系和记录类型,类似于数据库中的表。对象之间可以通过关系字段建立联系,如主子关系、多对多关系等。此外,...

    Salesforce大全中文版

    文档首先介绍了用户指南,包括入门指南、个人设置、主页选项卡、客户、活动、联系人、联系人角色、合同、自定义对象记录、文档、电子邮件、列表视图、备注和附件、Salesforce Chatter、Salesforce CRM内容、...

    SalesForce - Metadata API Developer Guide.pdf

    Salesforce的Metadata API是一个强大的工具,允许开发者检索、部署、创建、更新或删除组织中的自定义化信息,如自定义对象定义和页面布局等。这个API的设计目的是用于管理自定义化设置,并构建能够管理元数据模型的...

    salesforce使用手册.pdf

    15. **自定义商机设置**:自定义商机阶段、流程和字段,以适应销售流程。 16. **获取 Web 商机**:集成网站表单,自动将在线请求转化为商机。 17. **设置分配规则和升级规则**:自动化商机分配和优先级提升,提高...

    salesforce管理面试题及答案.pdf

    在 Visualforce 中,MVC 模型被实现为三个对象:标准对象、自定义对象和三种新对象:页面、组件和控制器。页面和组件是应用程序设计的基本building blocks,它们使用 HTML 语言指定应用程序的界面外观,可以使用其他...

    Salesforce开发

    - Apex是Salesforce提供的类似Java的托管代码语言,用于实现业务逻辑和自定义操作。学习Apex的基础语法、类、方法、触发器和事务控制是关键。 - 错误处理和调试:理解和使用try-catch语句,以及如何在Apex Debug ...

    salesforce基础开发

    Salesforce基础开发关注于如何使用***平台来构建和扩展应用程序,以及如何进行应用程序设置和自定义。以下是一些Salesforce基础开发的关键知识点: ***站点:***允许企业通过自定义的入口网站为客户提供服务。通过...

    salesforce_developer

    5. 多对多关系和连接对象:Salesforce中的多对多关系通过创建连接对象(Junction Object)实现,这是一种特殊的自定义对象,用来连接两个对象并存储多个记录之间的关系信息。理解如何创建和实现多对多关系对于构建...

    salesforce crm中文手册

    - **自定义Salesforce** - **自定义概述**:介绍如何根据实际需求调整界面布局和功能模块。 - **自定义个人显示设置**:允许用户个性化自己的工作空间,如调整字体大小、背景颜色等。 - **自定义选项卡**:添加或...

    salesforce developer 401题库

    Salesforce Developer 401是Salesforce认证体系中的一个关键级别,主要测试开发者对Salesforce平台的理解和应用能力。以下是一些基于提供的题库内容的关键知识点: 1. 字段属性编辑: - 在页面布局中可以编辑的...

    Salesforce_REST_API

    此外,文档中还讨论了如何使用REST资源操作Salesforce中的对象和记录,包括列出可用的REST API版本、获取对象列表、检索对象元数据、获取对象的字段和其他元数据、从记录中获取字段值、从记录中获取附件内容、执行...

    salesForce-基本概念

    - **对象元数据表**:存储关于自定义对象的信息,如对象名称、标签等。 - **字段元数据表**:包含每个对象的字段定义,包括字段类型、长度等属性。 - **数据表**:存放实际的业务数据,每条记录对应一个特定的对象...

    Salesforce迁移到阿里云方案及方法论

    《Salesforce迁移到阿里云方案及方法论》 随着2023年12月18日阿里云版Salesforce的正式商用,国内Salesforce用户面临着一个重要任务:如何在法律法规的框架下,如《网络安全法》、《数据安全法》和《个人信息保护法...

    Salesforce对象和语言参考手册

    ### Salesforce对象和语言参考手册知识点概述 #### 一、Salesforce标准对象介绍 **1.1 产品(Products)** - **定义与用途**:在Salesforce中,“产品”对象用于存储与产品相关的所有信息,如名称、描述、定价等...

    salesforce approval processes

    具体步骤参见Salesforce在线帮助中的“定义自定义对象”和“定义自定义标签”部分。确保添加适当的字段,如开始日期、结束日期和员工姓名。 - 创建电子邮件模板以通知审批者有待审核的审批请求。确保包含一个审批...

Global site tag (gtag.js) - Google Analytics