Peter's Blog

「用有趣的方式看世界」

Tips for Crafting Efficient and Scalable Code in Salesforce

In this post, I will share tips on crafting efficient and scalable code in Salesforce. As an experienced developer, I have been involved in several Salesforce projects and written technical documen...

Salesforce 数据分析解决方案:Snowflake & Tableau

在 Salesforce 项目中,随着业务的不断增长,随之产生的数据量也越来越庞大,有的项目可能每年就会产生几千万甚至上亿条的数据,而这些数据随着时间推移逐渐变成历史数据,而这些数据也不想删除,因为历史数据可能还是要时常进行数据分析,产生各种报表,看看近几年的销售数据的走势。对于上亿条的数据,Salesforce 是没有办法保存的 ( 可以使用 Big Objects, 参考我之前的文章 )...

DataWeave in Apex

在 Apex 中处理基于文本的数据是一项相当普遍的任务,尤其是在系统集成中。然而,处理 JSON,XML 和 CSV 往往需要写大量的代码,并且也会导致性能问题,Salesforce 目前推出了 DataWeave in Apex(截至 2 月 2 号,仍处于测试阶段). DataWeave in Apex 的目标是能够在 Salesforce 中允许我们用 MuleSoft 的转换语言来处...

探讨使用 Salesforce Big Objects 进行数据归档的最佳实践

归档是一种将不常使用的数据从主数据库中移除的技术。通过归档,我们可以减少数据库存储空间,提高系统性能,降低存储成本,增加可用空间,提高数据安全性,提高数据准确性和可靠性。 随着企业数据量的不断增加,数据管理和存储已经成为一个重要的问题。而对于使用 Salesforce 服务更是如此,Salesforce Big Objects 是一种特殊数据对象,旨在解决企业面临的存储和管理数据的...

基于 Cohere(NLP 模型平台) 对 Salesforce Case 进行归类

我们使用 Salesforce 构建客户服务系统的时候,往往客服团队需要每天处理大量不同类型的 Cases, 那么根据 Case 类型的不同则需要不同的客服团队去处理,如果通过人工的方式对 Case 分门别类则会降低工作效率,降低客户的满意度,所以是否有一些方式可以基于现有的 Cases 数据建立数据模型,对之后新的 case 进行分析预测然后自动分类型,这样的话也能提高整个客服团队的服务效...

在 VS Code 中使用 Apex Debugger

在我们的日常开发中,调试 apex 的最常见做法是使用调试日志。然而,Salesforce 提供了对你调试代码很有用的一些其他方案。可以像 Java, Golang, PHP 那样通过断点调试自己的 code. Apex Interactive Debugger, 也叫 Apex Debugger, 允许客户使用 VS Code 作为客户端,在沙盒和 scratch orgs 中实时调试他...

在 Apex 中使用 JWT Flow

在之前的文章中介绍了什么是 JWT Token, 以及如何创建 JWT Token, 并通过 JWT Token 获取 Salesforce 访问令牌,今天主要介绍如何在 Salesforce Apex 类中使用同样的功能。目前 Salesforce 只支持 Java Keystore(JKS) 格式,用于将私钥/公钥对 (含证书) 导入 Salesforce org 中。 将私钥/公钥对...

Salesforce OAuth: JWT Bearer 流程

JWT Bearer Flow 是一种 OAuth 流程,其中外部应用程序 (也称为客户端) 向 Salesforce 发送一个称为 JWT 的签名 JSON 字符串,以获得一个访问令牌(access token). 然后外部应用程序可以使用该访问令牌来读取和写入 Salesforce 中的数据。 与其他一些 OAuth 流程不同的是,JWT 流程不需要最终用户操作。外部应用程序发送 JW...

使用 MuleSoft Anypoint Studio 同步 Salesforce 数据至 Postgres

在本教程中,我们将学习如何从在 Salesforce 中订阅 Change Data Capture(CDC) 事件然后利用 MuleSoft 平台将数据同步至外部数据库 (本示例为 Postgres). 本教程主要包括: 在 Salesforce 的联系人对象上发布一个 change data capture 事件 使用 Salesforce Connector 设置 Repl...

「译」Salesforce 中的执行上下文

本篇文章的译文内容节选自「Advanced Apex Programming - Fifth Edition」第一章的第一部分 - Thinking in Apex, 该书的作者是 Dan Appleman. 个人感觉这本书写的不错,但是国内目前没有发现有中文版本,所以就尝试着翻译这本书,该书共有三大章节,13 个小节,只在自己空闲的时间翻译一点,目前第一章的进度大概在 70% 左右,不过由...

探讨 Salesforce 中的 QA 自动化测试

当 Salesforce 于 2000 年 2 月份首次推出 CRM 服务时,它只是一个用于存储客户信息和跟踪销售机会的数据库。如今,它几乎无人不晓,因为从销售和市场营销到运营和财务的各种部门都依赖 Salesforce 来推动业务发展。现在,每个 ORG 都有自己独特的工作流程,自定义对象和众多第三方集成,以满足其业务需求。这些定制优化了流程和功能,但在没有测试自动化的情况下部署这些功能到...

Apex Trigger 中的递归调用现象

递归 Trigger 对 Salesforce 开发人员来说是个大问题。我们总是希望在 Salesforce 中避免递归调用 Trigger. 但是,如果我们有一个庞大的功能复杂的 Org, 其中有多个带有父子关联的记录更新的触发器,包括 Process builder 和 Workflow field updates 等。那么我们就会很容易面临递归调用 Trigger 的问题。 因此,今...

Apex 中的 Abstract, Virtual, Interface

Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which can contain data and code. The data is in the form of fields (often known as attributes or pr...

Salesforce DevOps Center 入门指南

DevOps Center 是 Salesforce 在 2022 年 6 月发布的一个新工具。简单地说,这个工具允许你将元数据从一个 Salesforce Org 部署到另一个。例如,将自定义对象,Apex Class,Profiles 等从沙盒部署到生产。传统上,我们使用Change Sets来执行这项任务。 目前较为常用的针对 Salesforce 项目部署方案有如下几种: ...

探讨 Salesforce DevOps Center

DevOps Center is all about change and release management and introducing DevOps best practices to our entire community, regardless of where you fall on the low-code to pro-code spectrum – Karen ...