即将登陆 Salesforce AppExchange

面向 Salesforce 开发人员和架构师的 MultiDatePick

日历如何融入您的组织:设置存放在哪里、屏幕 Flow 能拿回什么、Flow 可以循环的 Apex 类型、安全机制如何运作,以及如何在组织之间迁移配置。

MultiDatePick 的设计初衷是让管理员无需开发人员。本页面向开发人员或架构师仍需参与的场景:审查软件包、围绕它构建 Flow,或在沙盒之间迁移其设置。

软件包包含哪些内容

组成部分作用
Date 组件选择多个日期、拖选范围、添加循环模式。按日期或按范围各保存一条记录,或把日期返回给屏幕 Flow。
Date Time 组件日期加时间段,所有日期共用或每个日期单独设置,并检查冲突。按日期、按时间块各保存一条记录,或保存为一条父记录加子块。
Booking 组件预订会议室、设备、车辆或人员(任意对象,包括 User),支持容量、营业时间、屏蔽日期和预订规则。
设置向导一个用于编写配置的 Lightning 选项卡,提供实时预览以及 JSON 导入和导出。
Flow 操作Parse Date Entries from JSON 和 Format MultiDatePick Time Range,适用于自行保存记录的 Flow。
权限集MultiDatePick - Setup、MultiDatePick - User、MultiDatePick - All Access,以及用于公开站点的 MultiDatePick - Guest。

设置存放在哪里

每个保存的设置都是一条自定义元数据记录:Config__mdt 存放设置,Config_Extension__mdt 以 JSON 形式在 Settings__c 中存放较新的设置。页面或 Flow 屏幕上的组件通过 Config Name 指定所用配置;在组件上另外设置的任何属性都会覆盖配置中的文本和数字值。

  • 可部署:配置就是元数据,因此可以像其他元数据一样通过变更集、Salesforce CLI 或您的 CI/CD 流水线迁移。
  • 可移植:向导可以把配置导出为 JSON 并导入到另一个组织,同时映射该组织中缺失的对象或字段。
  • 可审查:每个设置一条记录,可在设置中直接查看,因此任何变更都会体现在差异对比中。

您的数据始终属于您

日历读写的是您自己的对象。没有需要同步的 MultiDatePick 数据模型,没有外部服务,也没有标注(callout):所选内容会成为您所选对象上的普通记录,并写入您映射的字段(日期、结束日期、开始和结束时间、状态、名称、资源)。这些对象上的触发器、Flow、验证规则和报表照常运行。

屏幕 Flow 输出

把组件放到 Flow 屏幕上,设置 Config Name,然后在该屏幕之后读取以下输出:

输出类型包含内容
Selected Dates文本集合每个所选日期,格式为 YYYY-MM-DD。循环处理即可为每个日期创建一条记录。
Date Ranges JSON文本开启 Output Date Ranges as JSON 时,输出所选的日期范围,每个范围包含开始日期和结束日期。
Dates With Times JSON文本Date Time 组件:每个日期及其开始和结束时间。
Successful Bookings Count数字Booking 组件:本次保存创建的预订数量。

向 Parent Record Id 传入一条记录,日历就会显示该记录已有的日期,并能自行保存新日期。如果想改由 Flow 保存,请在向导中选择由我的 Flow 保存:日历会隐藏自己的保存按钮,只把所选内容交给 Flow。

在 Flow 中循环处理所选内容

对于 JSON 输出,Parse Date Entries from JSON 操作会把文本转换成 Flow 可以循环的集合,无需编写 Apex:

Apex 定义的类型字段
MultiDatePickEntryCollectiondata(条目)、totalCount、success、errorMessage
MultiDatePickEntryfromDate、toDate、startTime、endTime、resourceId、resourceName、bookingStatus、relatedRecordId、label

屏幕 Flow 指南逐步讲解循环的做法,Flow 循环文章提供三个入门 Flow,您可以用 VS Code 部署。

安全模型

  • 每次查询和保存都在用户模式下运行:对象权限、字段级安全性和共享规则都按使用日历的人生效,包括公开站点上的访客用户。
  • 数据不会离开组织:没有标注(callout),没有外部服务器,也没有子处理方。
  • 已通过 Salesforce 安全审查。详情请见信任与安全页面。
  • 无障碍:依据 WCAG 2.1 A 和 AA 级标准的 VPAT 2.5 报告,见无障碍页面。

把设置从沙盒迁移到生产环境

  1. 在沙盒中构建和测试,使用设置向导。
  2. 迁移配置:用您常用的工具部署其 Config__mdt 和 Config_Extension__mdt 记录,或在向导中导出为 JSON,再导入生产环境。
  3. 迁移使用该配置的页面或 Flow。组件按名称引用配置,因此其他内容都无需改动。
  4. 分配权限集给使用它的人员,公开站点则分配 MultiDatePick - Guest。

开发人员常见问题

使用 MultiDatePick 需要编写 Apex 吗?

不需要。组件自行加载和保存记录;需要自行保存的 Flow 可使用软件包随附的 Parse Date Entries from JSON 操作,无需自定义 Apex。

配置可以走 CI/CD 吗?

可以。每个配置都是一条自定义元数据记录(Config__mdt,较新的设置位于 Config_Extension__mdt),因此可以像其他元数据一样部署。

MultiDatePick 会为我的数据新增对象吗?

不会。它保存到您选择的对象中,您的记录、自动化和报表都保持原样。

它如何处理时区和语言?

日期和时间按每个用户的 Salesforce 时区和区域设置显示,界面已翻译成九种语言。