`

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
分享到:
评论

相关推荐

    WarehouseApp:glassjar2014 实例上的 Salesforce 应用程序

    通过Apex,开发者可以创建自定义触发器、类、方法和批处理作业,以扩展Salesforce的功能,满足特定的业务需求。在WarehouseApp中,我们可以看到Apex被用来实现诸如库存更新、订单状态变更和自动化工作流等复杂逻辑。...

    Stream.apex:在Apex中构建同步流

    在Stream.apex中,流是事件驱动的对象列表。 我们可以在流上链接操作,并且流将通过所有操作一一发出事件。 这样,流不会像大多数其他列表操作那样创建中间列表,并且效率更高。依存关系Stream.apex拥有依赖 。 在...

    speed-dial:灵感源自材料设计的快速拨号LWC

    {名称:字符串,图标:字符串} [] 输入3-6个对象的数组,表示您可以执行的操作buttonclick:{详细信息} 输出发出单击的按钮的name主题化我使用来定义组件的样式,以便可以像使用新的一样自定义组件的主题。...

    Apex-Limit-Class:https

    在Salesforce平台上,Apex是基于Java语法的托管在服务器端的编程语言,用于构建自定义业务逻辑。Apex Limit Class通常是指一个特定的类,它用于管理Apex代码的执行限制。Salesforce为Apex提供了严格的执行限制,以...

    win7修复本地系统工具

    win7修复本地系统工具

    《自动化专业英语》04-Automatic-Detection-Block(自动检测模块).ppt

    《自动化专业英语》04-Automatic-Detection-Block(自动检测模块).ppt

    《计算机专业英语》chapter12-Intelligent-Transportation.ppt

    《计算机专业英语》chapter12-Intelligent-Transportation.ppt

    西门子S7-1200博图平台下3轴伺服螺丝机程序解析与应用

    内容概要:本文详细介绍了基于西门子S7-1200博图平台的3轴伺服螺丝机程序。该程序使用SCL语言编写,结合KTP700组态和TIA V14及以上版本,实现了对X、Y、Z三个轴的精密控制。文章首先概述了程序的整体架构,强调了其在自动化控制领域的高参考价值。接着深入探讨了关键代码片段,如轴初始化、运动控制以及主程序的设计思路。此外,还展示了如何通过KTP700组态实现人机交互,并分享了一些实用的操作技巧和技术细节,如状态机设计、HMI交互、异常处理等。 适用人群:从事自动化控制系统开发的技术人员,尤其是对西门子PLC编程感兴趣的工程师。 使用场景及目标:适用于希望深入了解西门子S7-1200博图平台及其SCL语言编程特点的学习者;旨在帮助读者掌握3轴伺服系统的具体实现方法,提高实际项目中的编程能力。 其他说明:文中提供的代码示例和设计理念不仅有助于理解和学习,还能直接应用于类似的实际工程项目中。

    MATLAB仿真:非线性滤波器在水下长基线定位(LBL)系统的应用与比较

    内容概要:本文详细探讨了五种非线性滤波器(卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)、粒子滤波(PF)和变维卡尔曼滤波(VDKF))在水下长基线定位(LBL)系统中的应用。通过对每种滤波器的具体实现进行MATLAB代码展示,分析了它们在不同条件下的优缺点。例如,KF适用于线性系统但在非线性环境中失效;EKF通过雅可比矩阵线性化处理非线性问题,但在剧烈机动时表现不佳;UKF利用sigma点处理非线性,精度较高但计算量大;PF采用蒙特卡罗方法,鲁棒性强但计算耗时;VDKF能够动态调整状态维度,适合信标数量变化的场景。 适合人群:从事水下机器人(AUV)导航研究的技术人员、研究生以及对非线性滤波感兴趣的科研工作者。 使用场景及目标:①理解各种非线性滤波器的工作原理及其在水下定位中的具体应用;②评估不同滤波器在特定条件下的性能,以便为实际项目选择合适的滤波器;③掌握MATLAB实现非线性滤波器的方法和技术。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者更好地理解和实现这些滤波器。此外,还讨论了数值稳定性问题和一些实用技巧,如Cholesky分解失败的处理方法。

    VMware-workstation-full-14.1.3-9474260

    VMware-workstation-full-14.1.3-9474260

    DeepSeek系列-提示词工程和落地场景.pdf

    DeepSeek系列-提示词工程和落地场景.pdf

    javaSE阶段面试题

    javaSE阶段面试题

    《综合布线施工技术》第5章-综合布线工程测试.ppt

    《综合布线施工技术》第5章-综合布线工程测试.ppt

    安川机器人NX100使用说明书.pdf

    安川机器人NX100使用说明书.pdf

    S7-1200 PLC改造M7120平面磨床电气控制系统:IO分配、梯形图设计及组态画面实现

    内容概要:本文详细介绍了将M7120型平面磨床的传统继电器控制系统升级为基于西门子S7-1200 PLC的自动化控制系统的过程。主要内容涵盖IO分配、梯形图设计和组态画面实现。通过合理的IO分配,确保了系统的可靠性和可维护性;梯形图设计实现了主控制逻辑、砂轮升降控制和报警逻辑等功能;组态画面则提供了友好的人机交互界面,便于操作和监控。此次改造显著提高了设备的自动化水平、运行效率和可靠性,降低了维护成本。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和控制系统设计的专业人士。 使用场景及目标:适用于需要进行老旧设备升级改造的企业,旨在提高生产设备的自动化水平和可靠性,降低故障率和维护成本。具体应用场景包括但不限于金属加工行业中的平面磨床等设备的控制系统改造。 其他说明:文中还分享了一些实际调试中的经验和技巧,如急停逻辑的设计、信号抖动的处理方法等,有助于读者在类似项目中借鉴和应用。

    chromedriver-linux64-136.0.7103.48.zip

    chromedriver-linux64-136.0.7103.48.zip

    IMG_20250421_180507.jpg

    IMG_20250421_180507.jpg

    《网络营销策划实务》项目一-网络营销策划认知.ppt

    《网络营销策划实务》项目一-网络营销策划认知.ppt

    Lianantech_Security-Vulnerabil_1744433229.zip

    Lianantech_Security-Vulnerabil_1744433229

    MybatisCodeHelperNew2019.1-2023.1-3.4.1.zip

    MybatisCodeHelperNew2019.1-2023.1-3.4.1

Global site tag (gtag.js) - Google Analytics