Peter's Blog

「用有趣的方式看世界」

探讨使用 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流程不需要最终用户操作. 外部应用程序发送 JWT...

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

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

「译」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 项目部署方案有如下几种: DevOps C...

探讨 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 ...

使用 User Mode 保护你的 Apex 代码

我们知道, 在默认情况下, Apex 代码以系统模式(System Mode)运行, 这意味着它具有比运行代码的用户更高的权限, 因此在执行代码的时候将忽略当前用户的权限, 这样一来, 即使运行的用户没有访问某个对象的权限, 但他们也能访问该对象. 如果应用程序构建不当, 这可能对于数据库的记录来说是一个安全风险. 有人可能会删除记录,即使他/她对该对象没有删除权限. 这篇文章将解释用户模式...

理解 JavaScript 中的 Async/Await

async/await 是以更舒适的方式使用 promise 的一种特殊语法. 在 Salesforce 中, 如果你有开发过 lwc 相关的组件, 想必应该使用过 Async/Await 语法. 其实在 JavaScript 中做异步开发时,我们通常会毫不犹豫的使用 Async/Await. 不管是并发还是串行, Async/Await 都能处理的很好, 而且还保证了代码的可读性...

「译」代码重构的原则和意义?

译自: https://www.techtarget.com/searchapparchitecture/definition/refactoring 什么是重构? 重构是对代码进行重新组织的过程, 但不改变它的原始功能. 重构的目标是通过进行许多小的改变来改进内部代码, 而不会改变代码的外部行为. 计算机程序员和软件开发人员重构代码以改进软件的设计,结构和实现. 重构提高了代...