DEX450

Module 9: Apex Class Essentials

课程介绍

今天我们来聊聊Apex类的备忘录教学要点。Apex类是Salesforce平台上的一种编程语言,它允许我们创建自定义的业务逻辑和功能。理解Apex类的基础知识对于在Salesforce中进行开发非常重要。 首先,Apex类是一种面向对象的编程语言,这意味着它使用对象和类来组织代码。每个类可以包含变量、方法、构造函数等。变量用于存储数据,方法用于执行操作,而构造函数则用于初始化对象。 在Apex中,类可以定义为公共的(public)或私有的(private)。公共类可以被其他类访问,而私有类只能在定义它的类内部访问。此外,Apex类还可以实现接口,这允许类遵循特定的行为模式。 接下来,我们来看看如何定义一个简单的Apex类。首先,你需要使用关键字“public class”后跟类名来声明一个类。然后,你可以在类体内定义变量和方法。例如: ```apex public class MyFirstClass { // 定义一个变量 public String myVariable; // 定义一个方法 public void myMethod() { System.debug('Hello, Salesforce!'); } } ``` 在这个例子中,我们定义了一个名为`MyFirstClass`的公共类,它包含一个公共变量`myVariable`和一个公共方法`myMethod`。方法`myMethod`在被调用时,会在调试日志中打印出“Hello, Salesforce!”。 最后,记住Apex类在Salesforce中是非常强大的工具,它们可以帮助你自动化业务流程、集成外部系统以及创建复杂的业务逻辑。掌握Apex类的基础知识,将为你打开Salesforce开发的大门。 希望这些信息对你有帮助,如果你有任何问题,随时提问!

课程章节

本课程共有 23 个章节

  • 1

    Module 9: Apex Class Essentials

    第 239 页

    今天我们来聊聊Apex类的备忘录教学要点。Apex类是Salesforce平台上的一种编程语言,它允许我们创建自定义的业务逻辑和功能。理解Apex类的基础知识对于在Salesforce中进行开发非常重要。 首先,Apex类是一种面向对象的编程语言,这意味着它使用对象和类来组织代码。每个类可以包含变量、方法、构造函数等。变量用于存储数据,方法用于执行操作,而构造函数则用于初始化对象。 在Apex中,类可以定义为公共的(public)或私有的(private)。公共类可以被其他类访问,而私有类只能在定义它的类内部访问。此外,Apex类还可以实现接口,这允许类遵循特定的行为模式。 接下来,我们来看看如何定义一个简单的Apex类。首先,你需要使用关键字“public class”后跟类名来声明一个类。然后,你可以在类体内定义变量和方法。例如: ```apex public class MyFirstClass { // 定义一个变量 public String myVariable; // 定义一个方法 public void myMethod() { System.debug('Hello, Salesforce!'); } } ``` 在这个例子中,我们定义了一个名为`MyFirstClass`的公共类,它包含一个公共变量`myVariable`和一个公共方法`myMethod`。方法`myMethod`在被调用时,会在调试日志中打印出“Hello, Salesforce!”。 最后,记住Apex类在Salesforce中是非常强大的工具,它们可以帮助你自动化业务流程、集成外部系统以及创建复杂的业务逻辑。掌握Apex类的基础知识,将为你打开Salesforce开发的大门。 希望这些信息对你有帮助,如果你有任何问题,随时提问!

    查看详情
  • 2

    Module Objectives - 240

    第 240 页

    同学们,今天我们来回顾一下这个模块的主要内容。首先,我们要一起看看本模块涉及的对象。这些对象是我们解决问题的关键。还记得那些蓝框里的业务问题吗?我们就是通过在这个模块中构建的触发器来解决这些问题的。 这个模块是“基本”模块,所以我们的重点是回顾如何创建Apex类的基础知识。Apex类是Salesforce开发中的核心部分,掌握好这些基础知识对我们后续的学习非常重要。 不过,这里我要提醒大家,虽然我们在这个模块中会学到很多有用的知识,但并不是所有的提示和技巧都会在这里透露。为什么呢?因为我们在后面的模块中还会用到它们,到时候我们会更深入地探讨和应用这些技巧。 所以,大家现在要做的就是打好基础,理解并掌握这些基本概念和操作。这样,当我们在后续模块中遇到更复杂的内容时,就能更好地应对了。好了,让我们开始吧!

    查看详情
  • 3

    Module Agenda - 241

    第 241 页

    同学们,今天我们来聊聊Salesforce中的Apex类。Apex类是Salesforce平台上的一种编程语言,它允许我们创建自定义的业务逻辑和功能。我们可以把它想象成一个工具箱,里面装满了各种工具,帮助我们完成特定的任务。 首先,我们要定义Apex类。定义Apex类就像是在创建一个新的工具箱。我们需要给它一个名字,然后决定这个工具箱里要放哪些工具。这些工具就是类中的方法,每个方法都可以执行特定的操作。 接下来,我们要确定Apex类的数据访问权限。这就像是在决定谁可以使用这个工具箱。我们可以设置权限,确保只有特定的人或角色可以访问和使用这个类中的方法。这样可以保护我们的数据安全,防止未经授权的访问。 总结一下,Apex类是Salesforce中非常强大的工具,通过定义类和设置权限,我们可以创建出符合我们业务需求的自定义功能。希望今天的讲解能帮助大家更好地理解Apex类的基本概念。如果有任何问题,随时提问哦!

    查看详情
  • 4

    Where is a Class Defined?

    第 242 页

    今天我们来聊聊Salesforce中的“包”这个概念。你可以把包想象成一个盒子,这个盒子里可以装很多东西,小到一个小小的组件,大到一整套相关的应用。当你创建了一个包之后,你可以把它分享给其他的Salesforce用户或者组织,甚至可以是公司外部的用户和组织。 现在,包有两种主要的形式:非托管包和托管包。 首先,我们来说说非托管包。这种包通常用来分发一些开源项目或者应用模板,给开发者提供一些基础的构建模块。当你从非托管包中安装了一些组件后,你可以在你的组织里对这些组件进行编辑。但是,创建和上传这个非托管包的开发者,他们无法控制这些已经安装的组件,也不能对它们进行更改或升级。所以,如果你想把组件从沙箱环境迁移到生产环境,非托管包并不是一个好的选择。这时候,你应该使用更改集。 接下来是托管包。这种包通常是由Salesforce的合作伙伴用来向客户分发和销售应用的。这些包必须从Developer Edition组织中创建。通过AppExchange和许可证管理应用(LMA),开发者可以向应用出售和管理基于用户的许可证。托管包还有一个很大的优点,就是它们是完全可升级的。为了确保升级过程顺利,你不能进行一些破坏性的更改,比如删除对象或字段。 如果你想了解更多关于包的信息,可以参考这个资源链接:[Salesforce帮助文档](https://help.salesforce.com/apex/HTViewHelpDoc?id=sharing_apps.htm&language=en)。 希望这些信息对你有帮助!如果你有任何问题,随时问我哦。

    查看详情
  • 5

    Apex Class Use Cases

    第 243 页

    今天我们来聊聊Apex类的一些常见用例。Apex类是Salesforce中非常强大的工具,它们可以帮助我们封装和重用业务逻辑。让我们从几个常见的场景开始。 首先,,通过触发器调用Apex类,。触发器是在数据库操作(如插入、更新、删除)发生时自动执行的代码。但是,触发器中的逻辑如果过于复杂,会变得难以维护。这时候,我们可以把复杂的逻辑放到Apex类中,然后在触发器里调用这个类。这样不仅让代码更清晰,还能让逻辑更容易测试和重用。 接下来,,封装可重复使用的测试数据,。在编写测试类时,我们经常需要创建一些测试数据。如果每次都手动创建这些数据,不仅麻烦,还容易出错。我们可以把这些数据生成逻辑封装到一个Apex类的方法中,这样每次测试时只需要调用这个方法,就能快速生成所需的测试数据。 再来,,控制Visualforce页面,。Visualforce页面是Salesforce中的自定义用户界面。有时候,我们需要在页面上执行一些复杂的逻辑,比如根据用户输入动态改变页面内容。这些逻辑可以放在Apex类中,然后在Visualforce页面的控制器中调用。这样可以让页面的逻辑更清晰,也更容易维护。 然后,,测试,。Apex类的一个重要用途是编写测试代码。Salesforce要求我们为所有Apex代码编写测试类,以确保代码的质量和覆盖率。我们可以把测试逻辑封装到Apex类中,这样不仅能让测试代码更模块化,还能提高测试的效率和可维护性。 最后,,建模数据和动作,。Apex类可以用来定义数据模型和业务逻辑。比如,我们可以创建一个类来表示一个复杂的业务对象,然后在这个类中定义各种操作这些对象的方法。这样可以让我们的代码更符合面向对象的设计原则,也更容易扩展和维护。 总结一下,Apex类的主要用途是封装和重用业务逻辑。无论是通过触发器调用、生成测试数据、控制Visualforce页面,还是编写测试代码,Apex类都能帮助我们让代码更清晰、更易于维护。记住,只有两种方式可以保存Apex代码:触发器或类。所以,类是用来处理所有不需要由触发器完成的逻辑的。 希望这些内容对你有帮助!如果有任何问题,随时问我哦!

    查看详情
  • 6

    Apex Class Use Cases (cont.)

    第 244 页

    今天我们来聊聊Salesforce中的Apex类继承,以及如何使用它来让我们的代码更加灵活和强大。 首先,想象一下你有一个基础的模板,这个模板定义了一些通用的行为或属性。然后,你希望基于这个模板创建一些更具体的版本,每个版本都有自己独特的特性。这就是继承的用武之地。在Apex中,我们可以通过创建虚拟类或抽象类来实现这一点。 虚拟类是可以被其他类继承的类。它们可以包含具体的方法实现,也可以包含抽象方法,这些抽象方法需要在子类中被具体实现。虚拟类的一个好处是,它们可以被实例化,也就是说,你可以直接创建虚拟类的对象。 抽象类则更进一步,它们不能被实例化。抽象类通常用于定义一个基础框架,要求子类必须实现某些方法。这样,抽象类确保了所有子类都遵循一定的规则或模式。 除了虚拟类和抽象类,Apex还支持接口。接口是一种特殊的类,它只定义了方法的签名,而不包含任何实现。实现接口的类必须提供这些方法的具体实现。接口是一种强大的工具,它允许不同的类以相同的方式被使用,即使它们的内部实现完全不同。 在实际开发中,你可能会遇到需要将一种类型的对象转换为另一种类型的情况。这就是所谓的“类型转换”或“casting”。在Apex中,你可以通过类型转换来访问特定类的特有方法或属性。 最后,我提供了一些资源链接,你可以通过这些链接深入了解虚拟类、接口以及类型转换的更多细节。这些资源将帮助你更好地理解这些概念,并在实际开发中应用它们。 希望今天的讲解能帮助你更好地理解Apex中的继承和接口。如果你有任何问题,随时提问,我会在这里帮助你。

    查看详情
  • 7

    Module Agenda - 245

    第 245 页

    同学们,今天我们来聊聊Salesforce中的Apex类。Apex类是Salesforce平台上的一种编程语言,它允许我们创建自定义的业务逻辑和功能。想象一下,Apex类就像是你在厨房里用的食谱,它告诉Salesforce如何准备和处理数据。 首先,我们来看看如何定义一个Apex类。定义一个Apex类就像是在写一个新的食谱。你需要给它一个名字,然后列出所有的配料(也就是变量)和步骤(也就是方法)。例如,你可以创建一个名为“CustomerService”的类,里面包含处理客户数据的方法。 接下来,我们要确定Apex类的数据访问权限。这就像是决定谁能进厨房使用你的食谱。在Salesforce中,你可以通过设置类的访问修饰符(如public、private等)来控制谁可以访问这个类。例如,如果你想让所有的用户都能使用这个类,你可以把它设为public。 最后,我们来看看如何使用Apex类。一旦你定义了一个Apex类,你就可以在Salesforce的其他地方调用它,比如在触发器、Visualforce页面或者Lightning组件中。这就像是你按照食谱做菜,然后把菜端给客人享用。 好了,这就是我们今天关于Apex类的基础知识。希望你们能像掌握新食谱一样,掌握Apex类的使用。下次我们会深入探讨更多高级功能,记得回来哦!

    查看详情
  • 8

    Defining an Apex Class

    第 246 页

    让我们来聊聊Apex类的基本结构。Apex类是Salesforce中用来封装数据和行为的核心构建块。你可以把它想象成一个蓝图,定义了对象的结构和行为。 首先,我们来看一个简单的Apex类定义: ```apex public class MyClass { DataType memberVariable; DataType memberProperty { get; set; } public MyClass() { // 构造器逻辑 } public void memberMethod() { // 方法逻辑 } } ``` ### 1. ,访问修饰符:谁可以看到这个类?, - `public`:这个关键字表示这个类可以被其他Apex类或外部系统访问。如果你想让这个类在整个应用中可见,就用`public`。 - 如果没有指定访问修饰符,默认是`private`,意味着这个类只能在同一个命名空间或包内访问。 ### 2. ,共享:类可以看到哪些记录?, - `with sharing` 或 `without sharing`:这两个关键字决定了类在执行时是否遵循用户的记录访问权限。 - `with sharing`:类会遵循用户的记录访问权限,只能看到用户有权访问的记录。 - `without sharing`:类会忽略用户的记录访问权限,可以看到所有记录,即使这些记录对用户是不可见的。 ### 3. ,成员变量, - 成员变量是类中存储数据的部分。你可以有0个或多个成员变量。比如`DataType memberVariable;`就是一个成员变量,它存储了某种类型的数据。 ### 4. ,构造器, - 构造器是用来初始化类的实例的。你可以有0个或多个构造器。比如`public MyClass()`就是一个构造器,它在创建类的实例时执行一些初始化逻辑。 ### 5. ,属性, - 属性是类中用来封装数据的特殊方法。你可以有0个或多个属性。比如`DataType memberProperty { get; set; }`就是一个属性,它允许外部代码读取或设置这个值。 ### 6. ,方法, - 方法是类中定义行为的部分。你可以有0个或多个方法。比如`public void memberMethod()`就是一个方法,它定义了类可以执行的某些操作。 ### 教学要点 - 这个幻灯片的主要目的是让你了解Apex类的基本结构。我们希望你掌握以下几点: - 类可以是`public`的,这样其他代码可以访问它。 - 类可以包含成员变量、构造器、属性和方法。 - 我们会在后续的课程中详细介绍访问修饰符和记录访问权限。 ### 资源 - 如果你想深入了解Apex类的属性,可以参考这个链接:[Apex Classes and Properties](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_properties.htm) 希望这些内容能帮助你更好地理解Apex类的基本概念!如果有任何问题,随时问我哦!

    查看详情
  • 9

    Accessing an Apex Class or Class Member

    第 247 页

    让我们来聊聊Salesforce Apex中的访问修饰符。想象一下,你有一个班级,这个班级里有不同的学生和老师。访问修饰符就像是班级的门锁,它决定了谁可以进入班级,谁可以看到班级里的东西。 首先,访问修饰符决定了类或类成员的访问范围。也就是说,它控制着哪些代码可以访问这个类或类的成员。比如,有些班级可能只允许本班的学生进入,而有些班级可能允许全校的学生进入。 接下来,修饰符是按照从上到下的顺序列出的,从限制性最低到限制性最高。这就像是班级的门锁有不同的级别,有的锁很容易打开,有的锁则需要更多的权限才能打开。 然后,成员的限制性可以与定义它们的类一样或更严格,但限制性不能更小。这就像是班级里的学生,他们的权限不能超过班级的权限。如果班级的门锁很严格,那么学生也不能随便带外人进来。 最后,默认情况下,成员是私人的。这意味着如果你不特别说明,那么班级里的东西只有班级内部的人才能看到和使用。这就像是班级里的私人物品,只有班级成员才能使用。 所以,当你编写Apex代码时,记得使用合适的访问修饰符来控制你的类和成员的可见性,就像管理班级的门锁一样,确保只有合适的人才能访问。

    查看详情
  • 10

    Applying Static and Final to a Class Member

    第 248 页

    今天我们来聊聊在Apex编程中,如何使用`FINAL`和`STATIC`这两个关键字来定义“常数”。这里的“常数”指的是那些一旦设定后就不应该被改变的变量。 首先,我们来看`FINAL`关键字。当你用`FINAL`来定义一个变量时,这个变量就变成了一个“最终”的变量。这意味着,一旦你给这个变量赋值后,你就不能再改变它的值了。你可以在声明这个变量的时候直接给它赋值,或者在类的构造函数中给它赋值。但是,一旦赋值完成,这个变量的值就固定了,不能再被修改。 接下来是`STATIC`关键字。`STATIC`用于定义那些属于类本身,而不是类的某个特定实例的变量。这意味着,无论你创建了多少个类的实例,这个`STATIC`变量都只有一个副本,所有的实例共享这个变量。你可以在静态初始化代码块中给`STATIC`变量赋值,但是你不能在构造函数中给它赋值。这是因为构造函数是在创建类的实例时调用的,而`STATIC`变量是属于类本身的,不是属于某个实例的。 总结一下,`FINAL`用于定义那些一旦赋值后就不能再改变的变量,而`STATIC`用于定义那些属于类本身的变量。这两个关键字可以帮助你更好地控制变量的作用域和生命周期,使你的代码更加安全和易于维护。 希望这个解释能帮助你理解`FINAL`和`STATIC`在Apex中的应用。如果你有任何问题,随时提问!

    查看详情
  • 11

    Applying Access Modifiers

    第 249 页

    让我们来聊聊应用访问修改器这个教学点。首先,想象一下你有一个房间,房间里有一些家具和装饰品。现在,这个房间就是你的类(Class),而家具和装饰品就是类里面的方法和变量。 在这个房间里,有些家具是你想让所有人都能看到的,比如客厅的沙发,这就是公共的(Public)。而有些家具是你不想让别人看到的,比如卧室里的床,这就是私有的(Private)。 现在,我们来看一下代码。在7A行,我把一个公共方法改成了私有方法。这就好比你突然把客厅的沙发搬到了卧室,并且关上了卧室的门。这样一来,外面的人就看不到沙发了,也就不能使用它了。 所以,当触发器(Trigger)试图调用这个私有方法时,它就会遇到一个错误,因为触发器看不到这个方法,就像外面的人看不到卧室里的沙发一样。这就是为什么类保存正确,但触发器会产生“方法不可见”的错误。 总结一下,应用访问修改器就是控制谁可以看到和使用类里面的方法和变量。公共的(Public)是所有人都能看到的,而私有的(Private)是只有类内部才能看到的。希望这个比喻能帮助你更好地理解这个概念。

    查看详情
  • 12

    9-1: Define an Apex Class

    第 250 页

    同学们,今天我们来学习如何定义Apex类,并且通过触发器来触发这个类。我们的目标是让触发器更加易于阅读和维护。这个过程大概需要15分钟,所以请大家集中注意力。 首先,Apex类是Salesforce中用来封装业务逻辑的一种方式。你可以把它想象成一个工具箱,里面装满了各种工具(方法),这些工具可以帮助我们完成特定的任务。 接下来,我们需要创建一个Apex类。这个类将包含一些方法,这些方法会在触发器被触发时执行。这样做的好处是,我们可以把复杂的逻辑从触发器中移出来,放到类里面,这样触发器就会变得简洁明了。 然后,我们需要从触发器触发这个类。触发器是Salesforce中用来在记录被插入、更新或删除时自动执行代码的一种机制。我们可以在触发器中调用我们刚刚创建的类中的方法,这样当触发器被触发时,类中的方法就会被执行。 最后,我们需要测试这个触发器。测试是非常重要的,因为它可以确保我们的代码按预期工作。我们可以编写测试类来模拟触发器的触发情况,并验证类中的方法是否正确执行。 通过这个过程,我们不仅创建了一个Apex类,还通过触发器触发了它,并且进行了测试。这样,我们的触发器就变得更加易于阅读和维护了。 好了,这就是我们今天的内容。希望大家能够理解并掌握如何定义Apex类,并通过触发器来触发它。如果有任何问题,欢迎随时提问。

    查看详情
  • 13

    Module Agenda - 251

    第 251 页

    同学们,今天我们来聊聊Salesforce中的Apex类。Apex类是Salesforce平台上的一种编程语言,它允许我们创建自定义的业务逻辑和功能。想象一下,Apex类就像是你在厨房里用的食谱,它告诉Salesforce如何一步步地完成特定的任务。 首先,我们要定义Apex类。这就像是在写一个新的食谱。你需要给这个食谱起个名字,然后列出所有的配料和步骤。在Apex中,我们使用关键字`class`来定义一个类,然后给它一个名字。例如: ```apex public class MyFirstClass { // 这里我们会添加方法和变量 } ``` 接下来,我们要确定Apex类的数据访问权限。这就像是你决定谁可以看你的食谱。在Salesforce中,我们可以通过访问修饰符来控制谁可以访问这个类。比如,`public`意味着任何地方都可以访问这个类,而`private`则意味着只有这个类内部可以访问。 ```apex public class MyFirstClass { // 这个类可以被任何地方访问 } private class MySecretClass { // 这个类只能在这个文件内部访问 } ``` 最后,我们要使用Apex类。这就像是你按照食谱做菜。你可以创建这个类的实例,然后调用它的方法来执行特定的任务。 ```apex MyFirstClass myObject = new MyFirstClass(); // 现在我们可以使用myObject来调用类中的方法 ``` 记住,Apex类是一个非常强大的工具,它可以帮助我们自动化复杂的业务流程,提高工作效率。希望你们能通过这个模块,掌握Apex类的基本知识,为以后更深入的学习打下坚实的基础。

    查看详情
  • 14

    Reviewing Data Access

    第 252 页

    让我们来回顾一下在Salesforce中如何控制和管理数据访问。这主要涉及到三个关键功能:对象凭证、字段级安全性和共享及所有权模式。 首先,,对象凭证,决定了用户是否有权限访问特定的表,也就是我们说的对象。比如,如果你想让用户查看客户信息,他们必须首先有权限访问“客户”这个对象。 接下来是,字段级安全性,,这决定了用户是否有权限查看或编辑表中的特定列,也就是字段。例如,即使一个用户可以访问客户对象,他们可能没有权限查看客户的敏感信息,如社会安全号码。 最后,,共享和所有权模式,决定了用户是否有权限访问特定的行,也就是记录。这意味着即使一个用户可以访问客户对象和所有字段,他们可能只能看到他们自己创建或共享给他们的客户记录。 为了确保终端用户能够查看特定记录上的特定字段,他们必须同时具备对对象的读取权限、对字段的读取权限以及对记录的读取权限。 现在,让我们回答两个问题: 1. ,对象凭证和字段级安全性有什么共同之处?, 两者都是在配置文件和权限集上定义的。这意味着你可以通过设置用户配置文件或权限集来控制用户对对象和字段的访问权限。此外,这两种设置都被Apex代码忽略,这意味着在Apex代码中,你可以访问任何对象和字段,而不受这些设置的限制。 2. ,Apex的操作与数据访问有什么关系?, Apex通过SOQL(Salesforce Object Query Language)和DML(Data Manipulation Language)操作来访问和修改数据。SOQL用于查询数据,而DML用于插入、更新和删除数据。这些操作允许开发者在Apex代码中直接与数据库交互,不受对象凭证和字段级安全性的限制。 希望这些信息能帮助你更好地理解Salesforce中的数据访问控制。如果你有更多问题,随时提问!

    查看详情
  • 15

    An Apex Class…

    第 253 页

    让我们来聊聊Apex类和它在Salesforce中的一些特性。首先,Apex类是Salesforce平台上的一种编程语言,它允许开发者创建复杂的业务逻辑和自定义功能。 现在,我们来看一下Apex类如何处理对象CRED。简单来说,Apex类可以设置为忽略对象CRED。这意味着,当你在Apex代码中操作数据时,比如执行SOQL查询或使用点符号穿越对象关系,Apex类不会考虑对象CRED的限制。这给了开发者更大的灵活性,但也意味着需要更加小心地处理数据访问权限。 接下来,我们谈谈Apex类如何处理运行用户的记录级访问。Apex类可以被编程为尊重或忽略运行用户在数据操作期间的记录级访问。这意味着,你可以选择让Apex代码在执行时考虑当前用户的权限,或者完全忽略这些权限。这取决于你的业务需求和安全性考虑。 最后,我们来看一下Apex类如何处理字段级安全性(FLS)。Apex类会忽略FLS,这意味着无论字段的访问权限如何设置,Apex代码都可以访问和修改这些字段。这再次强调了在编写Apex代码时需要谨慎,确保不会无意中暴露或修改敏感数据。 总结一下,本幻灯片的目的是表明Apex仅尊重记录级共享模型。这意味着Apex类在处理数据时,主要关注的是记录级别的访问控制,而不是对象或字段级别的安全性。理解这一点对于在Salesforce平台上开发安全且高效的应用程序至关重要。希望这些信息对你有所帮助!

    查看详情
  • 16

    Using the With/Without Sharing Keyword Phrase

    第 254 页

    让我们来聊聊Salesforce中的共享关键字,特别是`WITH SHARING`和`WITHOUT SHARING`,以及`inherited sharing`的使用。 首先,`WITH SHARING`和`WITHOUT SHARING`这两个关键字是用来控制Apex类中的记录访问权限的。简单来说,`WITH SHARING`意味着这个类会遵循Salesforce的共享规则,也就是说,用户只能看到他们有权限看到的记录。而`WITHOUT SHARING`则相反,它允许类绕过这些共享规则,访问所有记录,无论用户是否有权限。 现在,让我们谈谈`inherited sharing`。这个关键字是Salesforce引入的一个新特性,它的目的是让类的行为更加灵活和明确。当你使用`inherited sharing`时,这个类会根据调用它的类的共享模式来决定自己的行为。如果调用它的类使用了`WITH SHARING`,那么这个类也会遵循共享规则;如果调用它的类使用了`WITHOUT SHARING`,那么这个类就会绕过共享规则。 这里有一个重要的区别:如果一个类没有明确声明`WITH SHARING`或`WITHOUT SHARING`,那么它默认是不安全的,也就是说,它不会自动遵循共享规则。但是,如果你使用了`inherited sharing`,那么这个类默认会遵循共享规则,除非它被明确地从没有共享的上下文中调用。 总结一下,使用`inherited sharing`可以让你的代码更加安全和灵活,因为它会根据上下文自动调整行为,同时也能帮助你通过Salesforce的安全审查。这对于开发Lightning组件、Visualforce页面、Apex REST服务等场景非常有用。 希望这个解释能帮助你更好地理解这些共享关键字的作用和区别。如果有任何疑问,随时提问!

    查看详情
  • 17

    Enforcing Ownership and the Sharing Model

    第 255 页

    让我们来聊聊Salesforce中的强制所有权和共享模型,以及它们如何影响数据的访问权限。 首先,强制所有权意味着在Salesforce中,每个记录都必须有一个所有者。这个所有者通常是创建记录的用户,或者是被指定为记录所有者的用户。所有权决定了谁可以查看和编辑记录。 共享模型则是Salesforce用来控制用户对记录的访问权限的机制。它允许记录所有者与其他用户或用户组共享记录,即使这些用户不是记录的所有者。 现在,假设我们有110个帐户记录,其中有50个记录对某个用户具有读取访问权限。这意味着这个用户只能看到这50个记录,而不能看到其他的60个记录。 接下来,我们来看两个示例方法:fetchAccounts(A)和fetchAccounts(B)。 在顶部(A)示例中的fetchAccounts()方法,如果这个方法尊重共享模型,那么它将只返回用户有权限访问的50个s对象。这是因为共享模型限制了用户只能访问他们有权限的记录。 而在底部(B)示例中的fetchAccounts()方法,如果这个方法忽视共享模型,那么它将返回所有的110个s对象,无论用户是否有权限访问这些记录。这是因为忽视共享模型意味着不考虑用户的访问权限,直接返回所有记录。 所以,答案是: - 顶部(A)示例中的fetchAccounts()将返回50个s对象。 - 底部(B)示例中的fetchAccounts()将返回110个s对象。 这个例子很好地展示了强制所有权和共享模型如何影响用户对数据的访问权限。希望这个解释能帮助你更好地理解这些概念!

    查看详情
  • 18

    Does this Class Respect the Running User's Sharing Model?

    第 256 页

    让我们来聊聊这个课程是否尊重正在运行的用户的共享模式。首先,我们要明白一个关键点:在这个课程中,我们没有特别指定“带共享”或“不带共享”的关键字。这意味着什么呢?这意味着这个类的行为会根据它被调用的方式来决定是否尊重共享模式。 简单来说,如果这个类是在一个尊重共享模式的上下文中被调用,那么它就会遵循用户的共享设置。反之,如果它是在一个不关心共享模式的上下文中被调用,那么它就会忽略这些设置。所以,这个课程的设计是非常灵活的,它会根据实际的使用场景来决定如何处理共享模式。 希望这个解释能帮助你更好地理解这个课程的设计思路。如果你还有任何疑问,随时告诉我哦!

    查看详情
  • 19

    Using SObject and Field Describe Information

    第 257 页

    今天我们来聊聊如何在Salesforce中使用Apex描述信息来避免硬编码,并且如何利用这些信息来检查用户的访问权限。 首先,什么是硬编码呢?简单来说,硬编码就是在代码中直接写入一些固定的值,比如对象名称、字段标签等。这样做虽然简单,但有一个很大的问题:如果这些值在Salesforce中发生了变化,比如字段标签被修改了,那么你的代码就会出错,需要手动去修改代码中的这些固定值。这显然不是一个好的做法。 那么,如何避免硬编码呢?我们可以使用Apex的描述信息(Describe Information)来动态获取这些元数据信息。Salesforce提供了一个强大的工具,叫做“动态描述信息”,它允许我们在代码中动态地获取对象和字段的详细信息,比如字段的标签、字段的大小、字段的类型、字段是否可搜索等等。 举个例子,假设你想获取一个对象的字段标签,你可以使用`Schema.DescribeFieldResult`类来获取这个字段的描述信息,然后通过`getLabel()`方法来获取字段的标签。这样,即使字段的标签在Salesforce中被修改了,你的代码也不需要做任何改动,因为它总是动态地获取最新的标签。 接下来,我们再来看看如何利用这些描述信息来检查用户的访问权限。在Salesforce中,不同的用户可能对同一个对象或字段有不同的访问权限。比如,有些用户可以创建新记录,有些用户只能查看记录,有些用户则不能访问某些字段。 通过Apex的描述信息,我们可以动态地检查用户是否有权限执行某些操作。比如,你可以使用`Schema.DescribeSObjectResult`类来获取对象的描述信息,然后通过`isCreateable()`、`isUpdateable()`等方法来检查用户是否有权限创建或更新记录。同样地,你也可以使用`Schema.DescribeFieldResult`类来检查用户是否有权限访问某个字段。 总结一下,使用Apex的描述信息可以帮助我们避免硬编码,使代码更加灵活和可维护。同时,它还可以帮助我们动态地检查用户的访问权限,确保我们的应用程序在安全性方面做得更好。 希望这些内容对你有帮助!如果你有任何问题,随时问我。

    查看详情
  • 20

    Enforcing Object and Field Security

    第 258 页

    今天我们来聊聊Salesforce中的对象和字段安全,这是一个非常重要的主题,尤其是在开发Apex代码时。 首先,我们要明白,Apex代码默认是在“系统模式”下运行的。这意味着,Apex代码可以访问所有的对象和字段,不管当前用户是否有权限。这听起来很方便,对吧?因为这样代码可以轻松地满足业务需求。但是,这也带来了一些安全风险。 所以,作为Salesforce开发人员,我们需要仔细考虑我们的业务需求。我们需要问自己:我们的代码是否需要强制执行对象和字段级别的权限检查?如果答案是“是”,那么我们就需要使用Apex的描述信息来确定当前用户的访问级别。这样,我们就可以确保代码只访问用户有权访问的数据。 特别是对于那些在AppExchange上提供托管包的独立软件开发商(ISV),这一点尤为重要。他们必须始终强制执行CRUD(创建、读取、更新、删除)和FLS(字段级安全)检查,除非他们能在安全审查期间向Salesforce提供强有力的理由,说明为什么不需要这样做。 总结一下,虽然Apex在系统模式下运行很方便,但我们不能忽视安全性。我们需要根据业务需求来决定是否需要强制执行权限检查,并在必要时使用Apex的描述信息来确保代码的安全性。 如果你对这个主题感兴趣,可以访问这个链接了解更多信息:[Enforcing CRUD and FLS](https://developer.salesforce.com/page/Enforcing_CRUD_and_FLS)。 希望这个讲解对你有帮助!如果有任何问题,随时问我哦。

    查看详情
  • 21

    Key Takeaways - 259

    第 259 页

    让我们来聊聊Salesforce中的Trigger和Apex类的关键要点,我会尽量用简单易懂的方式来解释。 首先,,Trigger的用途,。Trigger是Salesforce中的一种自动化工具,它可以在某些事件发生时自动执行代码。比如,当你在系统中创建、更新或删除一条记录时,Trigger可以自动触发一些操作。它的主要目的是在数据发生变化时,自动执行一些业务逻辑,而不需要手动干预。 接下来,,业务逻辑应封装在Apex类中,。这是什么意思呢?简单来说,就是不要把所有的代码都写在Trigger里面。Trigger应该只负责触发事件,而具体的业务逻辑(比如计算、验证、数据处理等)应该放在Apex类中。这样做的好处是,代码更清晰、更容易维护,也更容易复用。 然后,,类之间的继承,。在Apex中,你可以使用抽象类或虚拟类来实现类之间的继承。继承的意思是,一个类可以从另一个类“继承”属性和方法。这样,你可以创建一个通用的类,然后让其他类继承它,避免重复写代码。 再来说说,访问修饰符,。访问修饰符决定了Apex类、方法或变量的可见性。比如,你可以用`public`、`private`、`protected`等关键字来控制谁可以访问这些代码。`public`表示所有人都可以访问,`private`表示只有类内部可以访问,`protected`表示只有子类可以访问。 接下来是,共享关键字,。在Apex中,你可以使用`with sharing`或`without sharing`来控制类可以访问的数据。`with sharing`表示类会遵循用户的权限设置,只能访问用户有权访问的数据;`without sharing`则表示类可以访问所有数据,不受用户权限的限制。 最后,,强制执行对象和字段级访问,。这是开发人员的责任。在Apex类中,你需要确保代码不会绕过Salesforce的安全设置,比如对象和字段的权限。即使你在代码中写了访问某些数据的逻辑,也要确保这些逻辑符合系统的安全规则。 总结一下,Trigger是用来在数据变化时自动执行代码的工具,而业务逻辑应该放在Apex类中。通过继承、访问修饰符和共享关键字,你可以更好地控制代码的可见性和数据访问权限。同时,开发人员有责任确保代码符合Salesforce的安全规则。 希望这些解释对你有帮助!如果有任何问题,随时问我哦!

    查看详情
  • 22

    Knowledge Check - 260

    第 260 页

    让我们来一一解答这些问题,确保你能够轻松理解。 1. ,哪个访问修饰符表示只能在您的应用程序或命名空间内访问的类?, - 答案是,“无需共享”,。这个访问修饰符意味着类只能在你的应用程序或命名空间内部访问,外部无法直接访问。 2. ,哪个关键字短语确保Apex类可以访问数据库中的所有记录?, - 答案是,“公开”,。使用`public`关键字可以让Apex类访问数据库中的所有记录,无论这些记录的共享设置如何。 3. ,可以使用什么来实现Apex类之间的继承?, - 答案是,“界面和虚拟类”,。通过使用`interface`和`virtual`类,你可以实现Apex类之间的继承。`virtual`类允许其他类继承它,而`interface`则定义了一组方法,任何实现该接口的类都必须提供这些方法的具体实现。 4. ,哪个关键字表示只能分配类中的变量在声明中还是在类的构造器中?, - 答案是,“最终”,。使用`final`关键字声明的变量只能在声明时或类的构造器中进行赋值,之后不能再修改。 希望这些解释能帮助你更好地理解这些概念!如果有任何疑问,随时问我哦。

    查看详情
  • 23

    Trailhead Homework - 261

    第 261 页

    今天我们来聊聊关于Salesforce Trailhead的家庭作业。Trailhead是一个非常棒的学习平台,特别是对于那些想要复习和提升PD1(Platform Developer 1)技能的同学来说。今天,我给大家推荐两个特别有用的Trailhead模块,它们能帮助你们更深入地理解我们课堂上讨论的一些关键概念。 第一个模块是关于数据安全的。在这个模块中,你们将学习如何在Salesforce中保护数据,确保只有合适的人才能访问敏感信息。这是非常重要的,因为数据安全是任何系统的基础。你们可以通过这个链接访问这个模块:[数据安全模块](https://trailhead.salesforce.com/en/modules/data_security)。 第二个模块是关于数据泄露防护的。这个模块会教你们如何防止数据泄露,确保公司的信息不会被未经授权的人获取。这对于维护公司的声誉和客户的信任至关重要。你们可以通过这个链接访问这个模块:[数据泄露防护模块](https://trailhead.salesforce.com/modules/data-leak-prevention)。 这两个模块都是家庭作业,所以请你们在课后完成。它们不仅能帮助你们巩固课堂上学到的知识,还能让你们在实际操作中更好地理解和应用这些概念。记得,学习是一个持续的过程,Trailhead是一个很好的工具,可以帮助你们不断提升自己的技能。 好了,今天的家庭作业就介绍到这里。希望大家能够认真完成,并在学习过程中发现更多的乐趣和挑战。如果有任何问题,随时可以来找我讨论。加油!

    查看详情