面向 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 定义的类型 | 字段 |
|---|---|
MultiDatePickEntryCollection | data(条目)、totalCount、success、errorMessage |
MultiDatePickEntry | fromDate、toDate、startTime、endTime、resourceId、resourceName、bookingStatus、relatedRecordId、label |
屏幕 Flow 指南逐步讲解循环的做法,Flow 循环文章提供三个入门 Flow,您可以用 VS Code 部署。
安全模型
- 每次查询和保存都在用户模式下运行:对象权限、字段级安全性和共享规则都按使用日历的人生效,包括公开站点上的访客用户。
- 数据不会离开组织:没有标注(callout),没有外部服务器,也没有子处理方。
- 已通过 Salesforce 安全审查。详情请见信任与安全页面。
- 无障碍:依据 WCAG 2.1 A 和 AA 级标准的 VPAT 2.5 报告,见无障碍页面。
把设置从沙盒迁移到生产环境
- 在沙盒中构建和测试,使用设置向导。
- 迁移配置:用您常用的工具部署其
Config__mdt和Config_Extension__mdt记录,或在向导中导出为 JSON,再导入生产环境。 - 迁移使用该配置的页面或 Flow。组件按名称引用配置,因此其他内容都无需改动。
- 分配权限集给使用它的人员,公开站点则分配 MultiDatePick - Guest。
开发人员常见问题
使用 MultiDatePick 需要编写 Apex 吗?
不需要。组件自行加载和保存记录;需要自行保存的 Flow 可使用软件包随附的 Parse Date Entries from JSON 操作,无需自定义 Apex。
配置可以走 CI/CD 吗?
可以。每个配置都是一条自定义元数据记录(Config__mdt,较新的设置位于 Config_Extension__mdt),因此可以像其他元数据一样部署。
MultiDatePick 会为我的数据新增对象吗?
不会。它保存到您选择的对象中,您的记录、自动化和报表都保持原样。
它如何处理时区和语言?
日期和时间按每个用户的 Salesforce 时区和区域设置显示,界面已翻译成九种语言。