Loading...
Loading...
Compare original and translation side by side
omnistudio-flexcard-generateomnistudio-integration-procedure-generateomnistudio-dependencies-analyzeplatform-metadata-deployomnistudio-flexcard-generateomnistudio-integration-procedure-generateomnistudio-dependencies-analyzeplatform-metadata-deploy| Input | Description | Default |
|---|---|---|
| Type | Process category (e.g., | None — required |
| SubType | Specific variation (e.g., | None — required |
| Language | Locale for the OmniScript | |
| Purpose | Business process this OmniScript guides | None — required |
| Target org | Org alias for deployment | Current default org |
| Data sources | Objects/APIs to query or update | Identify from requirements |
| 输入项 | 描述 | 默认值 |
|---|---|---|
| Type | 流程类别(例如 | 无 — 必填 |
| SubType | 具体变体(例如 | 无 — 必填 |
| Language | OmniScript的区域语言 | |
| Purpose | 该OmniScript所引导的业务流程 | 无 — 必填 |
| Target org | 部署目标组织的别名 | 当前默认组织 |
| Data sources | 需要查询或更新的对象/API | 根据需求确定 |
| Insight | Details |
|---|---|
| Type/SubType/Language triplet | Uniquely identifies an OmniScript. All three values are required and form the composite key. Example: Type= |
| PropertySetConfig | JSON blob containing all element configuration — layout, data binding, validation rules, conditional visibility. This is where the real logic lives |
| Core namespace | OmniProcess with |
| Element hierarchy | Elements use Level/Order fields for tree structure. Level 0 = Steps, Level 1+ = elements within steps. Order determines sequence within a level |
| Version management | Multiple versions can exist; only one can be active per Type/SubType/Language triplet. Activate via the |
| Data JSON | OmniScripts pass a single JSON data structure through all steps. Elements read from and write to this shared JSON via merge field syntax |
| 要点 | 详情 |
|---|---|
| Type/SubType/Language三元组 | 唯一标识一个OmniScript。三个值均为必填项,共同构成复合键。示例:Type= |
| PropertySetConfig | 包含所有元素配置的JSON对象——布局、数据绑定、验证规则、条件可见性。核心逻辑均在此处定义 |
| 核心命名空间 | OmniProcess的 |
| 元素层级 | 元素使用Level/Order字段构建树形结构。Level 0 = 步骤,Level 1+ = 步骤内的元素。Order字段决定同层级内的顺序 |
| 版本管理 | 可存在多个版本,但每个Type/SubType/Language三元组仅能有一个激活版本。通过 |
| 数据JSON | OmniScript在所有步骤中传递单个JSON数据结构。元素通过合并字段语法读取和写入该共享JSON |
ServiceRequestEnrollmentClaimSubmissionNewCaseUpdateAddressFileAppealEnglishServiceRequestEnrollmentClaimSubmissionNewCaseUpdateAddressFileAppealEnglish| Element Type | Purpose | Key Config |
|---|---|---|
| Step | Top-level container for a group of UI elements; each Step is a page in the wizard | |
| Conditional Block | Show/hide a group of elements based on conditions | |
| Loop Block | Iterate over a data list and render elements for each item | |
| Edit Block | Inline editing container for tabular data | |
| 元素类型 | 用途 | 关键配置 |
|---|---|---|
| Step | 一组UI元素的顶级容器;每个Step对应向导中的一个页面 | |
| Conditional Block | 根据条件显示/隐藏一组元素 | |
| Loop Block | 遍历数据列表并为每个条目渲染元素 | |
| Edit Block | 表格数据的内联编辑容器 | |
| Element Type | Purpose | Key Config |
|---|---|---|
| Text | Single-line text input | |
| Text Area | Multi-line text input | |
| Number | Numeric input with optional formatting | |
| Date | Date picker | |
| Date/Time | Date and time picker | |
| Checkbox | Boolean toggle | |
| Radio | Radio button group for single selection | |
| Select | Dropdown selection | |
| Multi-select | Multiple item selection | |
| Type Ahead | Search/autocomplete input | |
| Signature | Signature capture pad | |
| File | File upload | |
| Currency | Currency input with locale formatting | |
| Email input with format validation | | |
| Telephone | Phone number input with masking | |
| URL | URL input with format validation | |
| Password | Masked text input | |
| Range | Slider input | |
| Time | Time picker | |
| 元素类型 | 用途 | 关键配置 |
|---|---|---|
| Text | 单行文本输入 | |
| Text Area | 多行文本输入 | |
| Number | 带可选格式的数值输入 | |
| Date | 日期选择器 | |
| Date/Time | 日期时间选择器 | |
| Checkbox | 布尔值开关 | |
| Radio | 单选按钮组 | |
| Select | 下拉选择框 | |
| Multi-select | 多选选择框 | |
| Type Ahead | 搜索/自动补全输入框 | |
| Signature | 签名捕获面板 | |
| File | 文件上传 | |
| Currency | 带区域格式的货币输入 | |
| 带格式验证的邮箱输入 | | |
| Telephone | 带掩码的电话号码输入 | |
| URL | 带格式验证的URL输入 | |
| Password | 掩码文本输入 | |
| Range | 滑块输入 | |
| Time | 时间选择器 | |
| Element Type | Purpose | Key Config |
|---|---|---|
| Text Block | Static content display (HTML supported) | |
| Headline | Section heading | |
| Aggregate | Calculated summary display | |
| Disclosure | Expandable/collapsible content | |
| Image | Image display | |
| Chart | Data visualization | |
| 元素类型 | 用途 | 关键配置 |
|---|---|---|
| Text Block | 静态内容展示(支持HTML) | |
| Headline | 章节标题 | |
| Aggregate | 计算结果汇总展示 | |
| Disclosure | 可展开/折叠内容 | |
| Image | 图片展示 | |
| Chart | 数据可视化 | |
| Element Type | Purpose | Key Config |
|---|---|---|
| DataRaptor Extract Action | Pull data from Salesforce | |
| DataRaptor Load Action | Push data to Salesforce | |
| Integration Procedure Action | Call server-side Integration Procedure | |
| Remote Action | Call Apex @RemoteAction or REST | |
| Navigate Action | Page navigation or redirection | |
| DocuSign Envelope Action | Trigger DocuSign envelope | |
| Email Action | Send email | |
| 元素类型 | 用途 | 关键配置 |
|---|---|---|
| DataRaptor Extract Action | 从Salesforce拉取数据 | |
| DataRaptor Load Action | 向Salesforce推送数据 | |
| Integration Procedure Action | 调用服务器端Integration Procedure | |
| Remote Action | 调用Apex @RemoteAction或REST接口 | |
| Navigate Action | 页面导航或重定向 | |
| DocuSign Envelope Action | 触发DocuSign信封 | |
| Email Action | 发送邮件 | |
| Element Type | Purpose | Key Config |
|---|---|---|
| Set Values | Variable assignment and data transformation | |
| Validation | Input validation rules with custom messages | |
| Formula | Calculate values using formula expressions | |
| Submit Action | Final submission of collected data | |
| 元素类型 | 用途 | 关键配置 |
|---|---|---|
| Set Values | 变量赋值与数据转换 | |
| Validation | 带自定义提示的输入验证规则 | |
| Formula | 使用公式表达式计算值 | |
| Submit Action | 收集数据的最终提交 | |
scripts/check-duplicate-omniscript.sh <Type> <SubType> <Language> <org>Score: 102/120 ---- Very Good
-- Design & Structure: 22/25 (88%)
-- Data Integration: 18/20 (90%)
-- Error Handling: 17/20 (85%)
-- Performance: 18/20 (90%)
-- User Experience: 17/20 (85%)
-- Security: 10/15 (67%)scripts/check-duplicate-omniscript.sh <Type> <SubType> <Language> <org>Score: 102/120 ---- Very Good
-- Design & Structure: 22/25 (88%)
-- Data Integration: 18/20 (90%)
-- Error Handling: 17/20 (85%)
-- Performance: 18/20 (90%)
-- User Experience: 17/20 (85%)
-- Security: 10/15 (67%)sf org display -o <org>scripts/deploy-omniscript.sh <Name> <Type> <SubType> <org>sf org display -o <org>scripts/deploy-omniscript.sh <Name> <Type> <SubType> <org>| Anti-Pattern | Impact | Correct Pattern |
|---|---|---|
| Circular OmniScript embedding | Infinite rendering loop | Map dependency tree; never embed A in B if B embeds A |
| Unbounded DataRaptor Extract | Performance degradation | Add filter conditions; limit returned records |
| Missing input validation | Bad data entry | Add Validation elements or |
| Hardcoded Salesforce IDs | Deployment failure across orgs | Use merge fields or Custom Settings/Metadata |
| Integration Procedure (IP) Action without error handling | Silent failures | Configure |
| Large images in Text Blocks | Slow page load | Use Image elements with optimized URLs |
| Too many elements per Step | Poor user experience | Limit to 7-10 input elements per Step |
| Missing conditional visibility | Irrelevant fields shown | Use |
| 反模式 | 影响 | 正确模式 |
|---|---|---|
| OmniScript循环嵌入 | 无限渲染循环 | 映射依赖树;若B嵌入A,则禁止A嵌入B |
| 无限制的DataRaptor Extract | 性能下降 | 添加过滤条件;限制返回记录数量 |
| 缺失输入验证 | 数据录入错误 | 添加Validation元素或在输入项上设置 |
| 硬编码Salesforce ID | 跨组织部署失败 | 使用合并字段或自定义设置/元数据 |
| 无错误处理的Integration Procedure (IP) Action | 静默失败 | 在PropertySetConfig中配置 |
| Text Block中使用大图片 | 页面加载缓慢 | 使用Image元素并优化URL |
| 单个Step包含过多元素 | 用户体验差 | 每个Step最多包含7-10个输入元素 |
| 缺失条件可见性 | 显示无关字段 | 使用 |
| Check | Points | Criteria |
|---|---|---|
| Type/SubType/Language set correctly | 5 | All three fields populated with meaningful values |
| Step organization | 5 | Logical grouping, 7-10 elements per step max |
| Element naming | 5 | Descriptive names following |
| Conditional logic | 5 | Proper use of Conditional Blocks and |
| Version management | 5 | Clean version history, only one active version |
| 检查项 | 分值 | 标准 |
|---|---|---|
| Type/SubType/Language设置正确 | 5 | 三个字段均填充有意义的值 |
| Step组织合理 | 5 | 逻辑分组,每个Step最多包含7-10个元素 |
| 元素命名规范 | 5 | 采用 |
| 条件逻辑正确 | 5 | 合理使用Conditional Blocks和 |
| 版本管理规范 | 5 | 清晰的版本历史,仅一个激活版本 |
| Check | Points | Criteria |
|---|---|---|
| DataRaptor references valid | 5 | All Extract/Load bundles exist and are active |
| Integration Procedure references valid | 5 | All IP actions reference active IPs |
| Input/Output maps correct | 5 | Data flows correctly between elements and actions |
| Data prefill configured | 5 | Initial data loaded before user interaction |
| 检查项 | 分值 | 标准 |
|---|---|---|
| DataRaptor引用有效 | 5 | 所有Extract/Load bundle均存在且已激活 |
| Integration Procedure引用有效 | 5 | 所有IP动作均引用已激活的IP |
| 输入/输出映射正确 | 5 | 元素与动作之间的数据流正确 |
| 数据预填充配置完成 | 5 | 用户交互前已加载初始数据 |
| Check | Points | Criteria |
|---|---|---|
| Action elements have error handling | 5 | |
| User-facing error messages | 5 | Clear, actionable error text |
| Validation on required inputs | 5 | All required fields have validation rules |
| Fallback behavior defined | 5 | Graceful handling when data sources return empty |
| 检查项 | 分值 | 标准 |
|---|---|---|
| 动作元素配置错误处理 | 5 | 所有IP/DR动作均配置 |
| 用户友好的错误提示 | 5 | 清晰、可执行的错误文本 |
| 必填输入项验证 | 5 | 所有必填字段均配置验证规则 |
| 定义 fallback 行为 | 5 | 数据源返回空值时的优雅处理 |
| Check | Points | Criteria |
|---|---|---|
| No unbounded data fetches | 5 | All DataRaptor Extracts have filters/limits |
| Lazy loading configured | 5 | Action elements fire on step entry, not OmniScript load |
| Element count per Step reasonable | 5 | No Step with >15 elements |
| Conditional rendering used | 5 | Elements hidden when not applicable (not just invisible) |
| 检查项 | 分值 | 标准 |
|---|---|---|
| 无无限制的数据获取 | 5 | 所有DataRaptor Extract均配置过滤/限制条件 |
| 配置懒加载 | 5 | 动作元素在Step进入时触发,而非OmniScript加载时 |
| 单个Step元素数量合理 | 5 | 无Step包含超过15个元素 |
| 使用条件渲染 | 5 | 不适用的元素被隐藏(而非仅不可见) |
| Check | Points | Criteria |
|---|---|---|
| Logical step flow | 5 | Steps follow natural task progression |
| Input labels and help text | 5 | All inputs have clear labels and contextual help |
| Navigation controls | 5 | Back, Next, Cancel, Save for Later configured appropriately |
| Responsive layout | 5 | Elements configured for mobile and desktop breakpoints |
| 检查项 | 分值 | 标准 |
|---|---|---|
| 步骤流逻辑合理 | 5 | 步骤遵循自然任务流程 |
| 输入标签与帮助文本 | 5 | 所有输入项均有清晰的标签和上下文帮助 |
| 导航控件配置合理 | 5 | 返回、下一步、取消、稍后保存等控件配置得当 |
| 响应式布局 | 5 | 元素适配移动端和桌面端断点 |
| Check | Points | Criteria |
|---|---|---|
| No sensitive data in client-side JSON | 5 | Passwords, SSNs, tokens kept server-side |
| IP actions use server-side processing | 5 | Sensitive logic in Integration Procedures, not client OmniScript |
| Field-level access respected | 5 | Data access matches user profile/permission set |
| 检查项 | 分值 | 标准 |
|---|---|---|
| 客户端JSON无敏感数据 | 5 | 密码、社保号、令牌等数据保留在服务器端 |
| IP动作使用服务器端处理 | 5 | 敏感逻辑放在Integration Procedures中,而非客户端OmniScript |
| 遵守字段级访问权限 | 5 | 数据访问与用户配置文件/权限集匹配 |
scripts/cli-reference.shundefinedscripts/cli-reference.shundefined
---
---| From Skill | To omnistudio-omniscript-generate | When |
|---|---|---|
| omnistudio-dependencies-analyze | -> omnistudio-omniscript-generate | "Analyze dependencies before building OmniScript" |
| omnistudio-datamapper-generate | -> omnistudio-omniscript-generate | "DataRaptor ready, build the OmniScript that uses it" |
| omnistudio-integration-procedure-generate | -> omnistudio-omniscript-generate | "IP ready, wire it into the OmniScript action" |
| From omnistudio-omniscript-generate | To Skill | When |
|---|---|---|
| omnistudio-omniscript-generate | -> omnistudio-flexcard-generate | "Build FlexCard that launches this OmniScript" |
| omnistudio-omniscript-generate | -> platform-metadata-deploy | "Deploy OmniScript to target org" |
| omnistudio-omniscript-generate | -> omnistudio-dependencies-analyze | "Map full dependency tree before deployment" |
| omnistudio-omniscript-generate | -> omnistudio-integration-procedure-generate | "Need a new IP for this OmniScript action" |
| omnistudio-omniscript-generate | -> omnistudio-datamapper-generate | "Need a DataRaptor for data prefill" |
| 来源技能 | 目标技能:omnistudio-omniscript-generate | 触发时机 |
|---|---|---|
| omnistudio-dependencies-analyze | -> omnistudio-omniscript-generate | "构建OmniScript前分析依赖关系" |
| omnistudio-datamapper-generate | -> omnistudio-omniscript-generate | "DataRaptor已就绪,构建使用它的OmniScript" |
| omnistudio-integration-procedure-generate | -> omnistudio-omniscript-generate | "IP已就绪,将其关联到OmniScript动作" |
| 来源技能:omnistudio-omniscript-generate | 目标技能 | 触发时机 |
|---|---|---|
| omnistudio-omniscript-generate | -> omnistudio-flexcard-generate | "构建启动该OmniScript的FlexCard" |
| omnistudio-omniscript-generate | -> platform-metadata-deploy | "将OmniScript部署到目标组织" |
| omnistudio-omniscript-generate | -> omnistudio-dependencies-analyze | "部署前映射完整依赖树" |
| omnistudio-omniscript-generate | -> omnistudio-integration-procedure-generate | "为该OmniScript动作创建新IP" |
| omnistudio-omniscript-generate | -> omnistudio-datamapper-generate | "为数据预填充创建DataRaptor" |
| Issue | Resolution |
|---|---|
| Multi-language OmniScript | Create separate versions per Language with shared Type/SubType; use translation workbench for labels |
| Embedded OmniScript data passing | Map parent data JSON keys to child OmniScript input via |
| Large Loop Block datasets | Paginate or limit DataRaptor results; consider server-side filtering in Integration Procedure (IP) |
| OmniScript in FlexCard flyout | Ensure FlexCard passes required context data; test flyout sizing |
| Community/Experience Cloud deployment | Verify OmniScript component is available in Experience Builder; check guest user permissions |
| Save & Resume (Save for Later) | Configure |
| Versioning conflicts | Deactivate old version before activating new; never have two active versions for same Type/SubType/Language triplet |
| Custom LWC in OmniScript | Register LWC as OmniScript-compatible; follow |
| Namespaced orgs | If deploying into a managed OmniStudio package org, prefix bundle names and API names with the appropriate namespace (e.g., |
| |
references/best-practices.md| 问题 | 解决方案 |
|---|---|
| 多语言OmniScript | 为每种语言创建单独版本,共享Type/SubType;使用翻译工作台处理标签 |
| 嵌入式OmniScript数据传递 | 通过 |
| Loop Block大型数据集 | 分页或限制DataRaptor结果;考虑在Integration Procedure (IP)中进行服务器端过滤 |
| FlexCard弹出层中的OmniScript | 确保FlexCard传递所需上下文数据;测试弹出层尺寸 |
| Community/Experience Cloud部署 | 验证OmniScript组件在Experience Builder中可用;检查访客用户权限 |
| 保存并恢复(稍后保存) | 配置 |
| 版本冲突 | 激活新版本前停用旧版本;同一Type/SubType/Language三元组不得有两个激活版本 |
| OmniScript中的自定义LWC | 注册LWC为OmniScript兼容;遵循 |
| 命名空间组织 | 若部署到托管OmniStudio包组织,需为bundle名称和API名称添加适当的命名空间前缀(例如 |
| |
references/best-practices.mdomnistudio-datamapper-generateomnistudio-integration-procedure-generateplatform-metadata-deployomnistudio-flexcard-generateomnistudio-dependencies-analyzesf api request rest --method POST --body @file.jsonNameTypeSubTypeLanguageVersionNumberIsIntegrationProcedure=falseOmniProcessTypesf data create record --valuesPropertySetConfigOmniProcessElementomnistudio-datamapper-generateomnistudio-integration-procedure-generateplatform-metadata-deployomnistudio-flexcard-generateomnistudio-dependencies-analyzesf api request rest --method POST --body @file.jsonNameTypeSubTypeLanguageVersionNumberIsIntegrationProcedure=falseOmniProcessTypesf data create record --valuesPropertySetConfigOmniProcessElementassets/omni-process-omniscript.jsonassets/omni-process-element-step.jsonassets/omni-process-element-text-block.jsonassets/omni-process-omniscript.jsonassets/omni-process-element-step.jsonassets/omni-process-element-text-block.json| File | When to read |
|---|---|
| Phase 2 — Element selection: read before configuring PropertySetConfig for any element type |
| Phase 2-5 — Design patterns: read for step design, data prefill, validation, navigation, performance, and troubleshooting guidance |
| Phase 3 — Generation: use as the OmniProcess record template when building the OmniScript via REST API |
| Phase 3 — Generation: use as the Step (Level=0) OmniProcessElement record template |
| Phase 3 — Generation: use as the Text Block element template; adapt for other display element types |
| Phase 3 — Run before creating a new OmniScript to verify no duplicate Type/SubType/Language exists |
| Phase 4 — Run to deploy OmniScript and verify activation; includes prerequisite checks and error recovery |
| Any phase — Full CLI command reference for querying, retrieving, deploying, and verifying OmniScripts |
| 文件 | 阅读时机 |
|---|---|
| 阶段2 —— 元素选择:配置任何元素类型的PropertySetConfig前阅读 |
| 阶段2-5 —— 设计模式:获取步骤设计、数据预填充、验证、导航、性能和故障排查指导时阅读 |
| 阶段3 —— 生成:通过REST API构建OmniScript时作为OmniProcess记录模板使用 |
| 阶段3 —— 生成:作为Step(Level=0)OmniProcessElement记录模板使用 |
| 阶段3 —— 生成:作为Text Block元素模板使用;可适配其他显示元素类型 |
| 阶段3 —— 创建新OmniScript前运行,验证是否存在重复的Type/SubType/Language组合 |
| 阶段4 —— 运行以部署OmniScript并验证激活状态;包含前置检查和错误恢复逻辑 |
| 任意阶段 —— 查询、检索、部署和验证OmniScript的完整CLI命令参考 |