building-omnistudio-integration-procedure
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesebuilding-omnistudio-integration-procedure: OmniStudio Integration Procedure Creation and Validation
building-omnistudio-integration-procedure:OmniStudio Integration Procedure的创建与验证
Expert OmniStudio Integration Procedure (IP) builder with deep knowledge of server-side process orchestration. Create production-ready IPs that combine DataRaptor/Data Mapper actions, Apex Remote Actions, HTTP callouts, conditional logic, and nested procedure calls into declarative multi-step operations.
拥有深厚服务器端流程编排知识的资深OmniStudio Integration Procedure(简称IP)构建专家。可创建生产级IP,将DataRaptor/Data Mapper动作、Apex Remote Actions、HTTP调用、条件逻辑和嵌套流程调用整合为声明式多步骤操作。
Scope
范围
- In scope: Creating well-structured Integration Procedures from requirements; selecting and wiring element types (DataRaptor, Remote Action, HTTP, Conditional Block, Loop, Set Values, nested IP); dependency validation; error handling patterns; 110-point scoring; deployment and activation
- Out of scope: Building OmniScripts (use ), creating Data Mappers directly (use
building-omnistudio-omniscript), designing FlexCards (usebuilding-omnistudio-datamapper), mapping full dependency trees (usebuilding-omnistudio-flexcard), deploying metadata to org (useanalyzing-omnistudio-dependencies)deploying-metadata
- 涵盖范围:根据需求创建结构清晰的Integration Procedure;选择并连接各类元素(DataRaptor、Remote Action、HTTP、条件块、循环、赋值、嵌套IP);依赖验证;错误处理模式;110分制评分;部署与激活
- 排除范围:构建OmniScript(请使用)、直接创建Data Mapper(请使用
building-omnistudio-omniscript)、设计FlexCard(请使用building-omnistudio-datamapper)、映射完整依赖树(请使用building-omnistudio-flexcard)、将元数据部署到组织(请使用analyzing-omnistudio-dependencies)deploying-metadata
Required Inputs
必填输入项
- Purpose: What business process is this IP orchestrating? (e.g., "onboard a new account", "process an order")
- Target objects / data sources: Which Salesforce objects, external APIs, or both?
- Type / SubType naming: PascalCase pair that uniquely identifies the IP (e.g., ,
Type=OrderProcessing)SubType=Standard - Target org alias: Authenticated org alias for deployment (e.g., )
myDevOrg
- 用途:此IP要编排的业务流程是什么?(例如:“新客户开户”、“订单处理”)
- 目标对象/数据源:涉及哪些Salesforce对象、外部API,或两者皆有?
- 类型/子类型命名:唯一标识IP的帕斯卡命名对(例如:,
Type=OrderProcessing)SubType=Standard - 目标组织别名:用于部署的已认证组织别名(例如:)
myDevOrg
Quick Reference
快速参考
Scoring: 110 points across 6 categories. Thresholds: ✅ 90+ (Deploy) | ⚠️ 67-89 (Review) | ❌ <67 (Block - fix required)
评分规则:6个类别总计110分。阈值:✅ 90分及以上(可部署) | ⚠️ 67-89分(需审核) | ❌ 低于67分(需修复,禁止部署)
Core Responsibilities
核心职责
- IP Generation: Create well-structured Integration Procedures from requirements, selecting correct element types and wiring inputs/outputs
- Element Composition: Assemble DataRaptor actions, Remote Actions, HTTP callouts, conditional blocks, loops, and nested IP calls into coherent orchestrations
- Dependency Analysis: Validate that referenced DataRaptors, Apex classes, and nested IPs exist and are active before deployment
- Error Handling: Enforce try/catch patterns, conditional rollback, and response validation across all data-modifying steps (DML — Data Manipulation Language)
- IP生成:根据需求创建结构清晰的Integration Procedure,选择正确的元素类型并连接输入/输出
- 元素组合:将DataRaptor动作、Remote Actions、HTTP调用、条件块、循环和嵌套IP调用整合为连贯的编排流程
- 依赖分析:部署前验证引用的DataRaptor、Apex类和嵌套IP是否存在且处于激活状态
- 错误处理:在所有数据修改步骤(DML——数据操作语言)中强制使用try/catch模式、条件回滚和响应验证
CRITICAL: Orchestration Order
重要提示:编排顺序
analyzing-omnistudio-dependencies -> building-omnistudio-datamapper -> building-omnistudio-integration-procedure -> building-omnistudio-omniscript -> building-omnistudio-flexcard (you are here: building-omnistudio-integration-procedure)
Data Mappers referenced by the IP must exist FIRST. Build and deploy DataRaptors/Data Mappers before the IP that calls them. The IP must be active before any OmniScript or FlexCard can invoke it.
analyzing-omnistudio-dependencies -> building-omnistudio-datamapper -> building-omnistudio-integration-procedure -> building-omnistudio-omniscript -> building-omnistudio-flexcard(当前阶段:building-omnistudio-integration-procedure)
IP引用的Data Mapper必须先存在。在调用它们的IP构建完成前,需先构建并部署DataRaptor/Data Mapper。IP必须处于激活状态,才能被OmniScript或FlexCard调用。
Key Insights
关键要点
| Insight | Details |
|---|---|
| Chaining | IPs call other IPs via Integration Procedure Action elements. Output of one step feeds input of the next via response mapping. Design data flow linearly where possible. |
| Response Mapping | Each element's output is namespaced under its element name in the response JSON. Use |
| Caching | IPs support platform cache for read-heavy orchestrations. Set |
| Versioning | Type/SubType pairs uniquely identify an IP. Use SubType for versioning (e.g., |
Core Namespace Discriminator: OmniStudio Core stores both Integration Procedures and OmniScripts in the table. Use or to filter IPs. Without a filter, queries return mixed results.
OmniProcessIsIntegrationProcedure = trueOmniProcessType = 'Integration Procedure'CRITICAL — Creating IPs via Data API: When creating OmniProcess records, setto make the record an Integration Procedure. TheIsIntegrationProcedure = truepicklist is computed from this boolean and cannot be set directly. Also,OmniProcessTypeis a required field onName(not documented in standard OmniStudio docs). UseOmniProcessfor creation — thesf api request rest --method POST --body @file.jsonflag cannot handle JSON textarea fields likesf data create record --values.PropertySetConfig
| 要点 | 详细说明 |
|---|---|
| 链式调用 | IP通过Integration Procedure Action元素调用其他IP。上一步的输出通过响应映射传入下一步的输入。尽可能设计线性数据流。 |
| 响应映射 | 每个元素的输出在响应JSON中以元素名称为命名空间。使用 |
| 缓存 | IP支持针对读密集型编排的平台缓存。在流程的PropertySet中设置 |
| 版本控制 | 类型/子类型对唯一标识一个IP。使用子类型进行版本控制(例如: |
核心命名空间区分:OmniStudio Core将Integration Procedure和OmniScript都存储在表中。使用或来筛选IP。如果不添加筛选条件,查询结果会包含两种类型的记录,导致结果不准确。
OmniProcessIsIntegrationProcedure = trueOmniProcessType = 'Integration Procedure'重要提示——通过Data API创建IP:创建OmniProcess记录时,需设置,才能将该标记为Integration Procedure。IsIntegrationProcedure = true下拉选项是由该布尔值自动计算生成,无法直接设置。此外,OmniProcessType是Name的必填字段(标准OmniStudio文档未提及)。请使用OmniProcess进行创建——sf api request rest --method POST --body @file.json参数无法处理sf data create record --values这类JSON文本域字段。PropertySetConfig
Workflow Design (5-Phase Pattern)
工作流设计(五阶段模式)
Phase 1: Requirements Gathering
阶段1:需求收集
Before building, evaluate alternatives: Sometimes a single DataRaptor, an Apex service, or a Flow is the better choice. IPs are optimal when you need declarative multi-step orchestration with branching, error handling, and mixed data sources.
Ask the user to gather:
- Purpose and business process being orchestrated
- Target objects and data sources (Salesforce objects, external APIs, or both)
- Type/SubType naming (e.g., ,
Type=OrderProcessing)SubType=Standard - Target org alias for deployment
Then: Check existing IPs via CLI query (see CLI Commands below), identify reusable DataRaptors/Data Mappers, and review dependent components with analyzing-omnistudio-dependencies.
构建前评估替代方案:有时单个DataRaptor、Apex服务或Flow是更优选择。当您需要具备分支逻辑、错误处理和混合数据源的声明式多步骤编排时,IP是最佳选择。
请用户收集以下信息:
- 要编排的业务流程及用途
- 目标对象和数据源(Salesforce对象、外部API,或两者皆有)
- 类型/子类型命名(例如:,
Type=OrderProcessing)SubType=Standard - 用于部署的目标组织别名
后续操作:通过CLI查询检查现有IP(见下方CLI命令),识别可复用的DataRaptor/Data Mapper,并使用analyzing-omnistudio-dependencies技能审核依赖组件。
Phase 2: Design & Element Selection
阶段2:设计与元素选择
| Element Type | Use Case | PropertySet Key |
|---|---|---|
| DataRaptor Extract Action | Read Salesforce data | |
| DataRaptor Load Action | Write Salesforce data | |
| DataRaptor Transform Action | Data shaping/mapping | |
| Remote Action | Call Apex class method | |
| Integration Procedure Action | Call nested IP | |
| HTTP Action | External API callout | |
| Conditional Block | Branching logic | -- |
| Loop Block | Iterate over collections | -- |
| Set Values | Assign variables/constants | -- |
Naming Convention: using PascalCase. Element names within the IP should describe their action clearly (e.g., , , ).
[Type]_[SubType]GetAccountDetailsValidateInputCreateOrderRecordData Flow: Design the element chain so each step's output feeds naturally into the next step's input. Map outputs explicitly rather than relying on implicit namespace merging.
| 元素类型 | 使用场景 | PropertySet关键字 |
|---|---|---|
| DataRaptor Extract Action | 读取Salesforce数据 | |
| DataRaptor Load Action | 写入Salesforce数据 | |
| DataRaptor Transform Action | 数据格式化/映射 | |
| Remote Action | 调用Apex类方法 | |
| Integration Procedure Action | 调用嵌套IP | |
| HTTP Action | 外部API调用 | |
| Conditional Block | 分支逻辑 | -- |
| Loop Block | 遍历集合 | -- |
| Set Values | 分配变量/常量 | -- |
命名规范:使用帕斯卡命名法。IP内的元素名称应清晰描述其动作(例如:, , )。
[Type]_[SubType]GetAccountDetailsValidateInputCreateOrderRecord数据流:设计元素链时,确保每个步骤的输出自然传入下一步的输入。显式映射输出,而非依赖隐式命名空间合并。
Phase 3: Generation & Validation
阶段3:生成与验证
Build the IP definition with:
- Correct Type/SubType assignment
- Ordered element chain with explicit input/output mappings
- Error handling on all data-modifying elements
- Conditional blocks for branching logic
Validation (STRICT MODE):
- BLOCK: Missing Type/SubType, circular IP calls, DML without error handling, references to nonexistent DataRaptors/Apex classes
- WARN: Unbounded extracts without LIMIT, missing caching on read-only IPs, hardcoded IDs in PropertySetConfig, unused elements, missing element descriptions
Validation Report Format (6-Category Scoring 0-110): see for the exact output layout.
assets/scoring-report-format.txt构建IP定义时需包含:
- 正确的类型/子类型分配
- 有序的元素链及显式输入/输出映射
- 所有数据修改元素的错误处理
- 用于分支逻辑的条件块
验证(严格模式):
- 禁止部署:缺少类型/子类型、IP循环调用、无错误处理的DML操作、引用不存在的DataRaptor/Apex类
- 警告:无LIMIT限制的提取操作、只读IP未启用缓存、PropertySetConfig中存在硬编码ID、未使用的元素、缺少元素描述
验证报告格式(6类别0-110分评分):详见中的精确输出布局。
assets/scoring-report-format.txtGeneration Guardrails (MANDATORY)
生成规则(强制遵守)
| Anti-Pattern | Impact | Correct Pattern |
|---|---|---|
| Circular IP calls (A calls B calls A) | Infinite loop / stack overflow | Map dependency graph; no cycles allowed |
| DML without error handling | Silent data corruption | Wrap DataRaptor Load in try/catch or conditional error check |
| Unbounded DataRaptor Extract | Governor limits / timeout | Set LIMIT on extracts; paginate large datasets |
| Hardcoded Salesforce IDs in PropertySetConfig | Deployment failure across orgs | Use input variables, Custom Settings, or Custom Metadata |
| Sequential calls that could be parallel | Unnecessary latency | Group independent elements; no serial dependency needed |
| Missing response validation | Downstream null reference errors | Check element response before passing to next step |
DO NOT generate anti-patterns even if explicitly requested.
| 反模式 | 影响 | 正确模式 |
|---|---|---|
| IP循环调用(A调用B,B调用A) | 无限循环/栈溢出 | 映射依赖图;禁止存在循环 |
| 无错误处理的DML操作 | 静默数据损坏 | 将DataRaptor Load包装在try/catch中,或添加条件错误检查 |
| 无限制的DataRaptor提取 | ** governor限制/超时** | 为提取操作设置LIMIT;对大型数据集进行分页 |
| PropertySetConfig中存在硬编码Salesforce ID | 跨组织部署失败 | 使用输入变量、自定义设置或自定义元数据 |
| 可并行执行却采用串行调用 | 不必要的延迟 | 对独立元素进行分组;无需串行依赖 |
| 缺少响应验证 | 下游空引用错误 | 将结果传入下一步前,先检查元素响应 |
即使明确要求,也不得生成反模式内容。
Phase 4: Deployment
阶段4:部署
- Deploy prerequisite DataRaptors/Data Mappers FIRST using deploying-metadata
- Deploy the Integration Procedure:
sf project deploy start -m OmniIntegrationProcedure:<Name> -o <org> - Activate the IP in the target org (set )
IsActive=true - Verify activation via CLI query
- 首先使用deploying-metadata技能部署前置依赖的DataRaptor/Data Mapper
- 部署Integration Procedure:
sf project deploy start -m OmniIntegrationProcedure:<Name> -o <org> - 在目标组织中激活IP(设置)
IsActive=true - 通过CLI查询验证激活状态
Phase 5: Testing
阶段5:测试
Test each element individually before testing the full chain:
- Unit: Invoke each DataRaptor independently, verify Apex Remote Action responses
- Integration: Run the full IP with representative input JSON, verify output structure
- Error paths: Test with invalid input, missing records, API failures to verify error handling
- Bulk: Test with collection inputs to verify loop and batch behavior
- End-to-end: Invoke the IP from its consumer (OmniScript, FlexCard, or API) and verify the full round-trip
在测试完整流程链前,先单独测试每个元素:
- 单元测试:独立调用每个DataRaptor,验证Apex Remote Action的响应
- 集成测试:使用代表性输入JSON运行完整IP,验证输出结构
- 错误路径测试:使用无效输入、缺失记录、API失败等场景测试,验证错误处理逻辑
- 批量测试:使用集合输入测试,验证循环和批处理行为
- 端到端测试:从IP的消费者(OmniScript、FlexCard或API)调用IP,验证完整往返流程
Scoring Breakdown
评分细则
110 points across 6 categories:
6个类别总计110分:
Design & Structure (20 points)
设计与结构(20分)
| Criterion | Points | Description |
|---|---|---|
| Type/SubType naming | 5 | Follows convention, descriptive, versioned appropriately |
| Element naming | 5 | Clear, action-oriented names on all elements |
| Data flow clarity | 5 | Linear or well-documented branching; explicit input/output mapping |
| Element ordering | 5 | Logical execution sequence; no unnecessary dependencies |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| 类型/子类型命名 | 5 | 符合规范、描述清晰、版本控制合理 |
| 元素命名 | 5 | 所有元素名称清晰且面向动作 |
| 数据流清晰度 | 5 | 线性或有完整文档说明的分支逻辑;显式输入/输出映射 |
| 元素排序 | 5 | 执行顺序符合逻辑;无不必要的依赖 |
Data Operations (25 points)
数据操作(25分)
| Criterion | Points | Description |
|---|---|---|
| DataRaptor references valid | 5 | All referenced bundles exist and are active |
| Extract operations bounded | 5 | LIMIT set on all extracts; pagination for large datasets |
| Load operations validated | 5 | Input data validated before DML; required fields checked |
| Response mapping correct | 5 | Outputs correctly mapped between elements |
| Data transformation accuracy | 5 | Transform actions produce expected output structure |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| DataRaptor引用有效 | 5 | 所有引用的bundle均存在且处于激活状态 |
| 提取操作有限制 | 5 | 所有提取操作均设置LIMIT;对大型数据集进行分页 |
| 加载操作已验证 | 5 | DML操作前验证输入数据;检查必填字段 |
| 响应映射正确 | 5 | 元素间输出映射正确 |
| 数据转换准确 | 5 | Transform动作生成预期的输出结构 |
Error Handling (20 points)
错误处理(20分)
| Criterion | Points | Description |
|---|---|---|
| DML error handling | 8 | All DataRaptor Load actions have error handling |
| HTTP error handling | 4 | All HTTP actions check status codes and handle failures |
| Remote Action error handling | 4 | Apex exceptions caught and surfaced |
| Rollback strategy | 4 | Multi-step DML has conditional rollback or compensating actions |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| DML错误处理 | 8 | 所有DataRaptor Load动作均有错误处理 |
| HTTP错误处理 | 4 | 所有HTTP动作均检查状态码并处理失败场景 |
| Remote Action错误处理 | 4 | 捕获Apex异常并反馈 |
| 回滚策略 | 4 | 多步骤DML操作有条件回滚或补偿动作 |
Performance (20 points)
性能(20分)
| Criterion | Points | Description |
|---|---|---|
| No unbounded queries | 5 | All extracts have reasonable LIMIT values |
| Caching applied | 5 | Read-only procedures use platform cache where appropriate |
| Parallel execution | 5 | Independent elements not serialized unnecessarily |
| No redundant calls | 5 | Same data not fetched multiple times across elements |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| 无无限制查询 | 5 | 所有提取操作均设置合理的LIMIT值 |
| 已应用缓存 | 5 | 只读流程在合适场景下使用平台缓存 |
| 并行执行 | 5 | 独立元素未被不必要地串行化 |
| 无冗余调用 | 5 | 同一数据未在多个元素中重复获取 |
Security (15 points)
安全(15分)
| Criterion | Points | Description |
|---|---|---|
| No hardcoded IDs | 5 | IDs passed as input variables or from metadata |
| No hardcoded credentials | 5 | API keys/tokens use Named Credentials or Custom Settings |
| Input validation | 5 | User-supplied input sanitized before use in queries or DML |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| 无硬编码ID | 5 | ID通过输入变量或元数据传入 |
| 无硬编码凭据 | 5 | API密钥/令牌使用命名凭据或自定义设置 |
| 输入验证 | 5 | 用户提供的输入在用于查询或DML前已被清理 |
Documentation (10 points)
文档(10分)
| Criterion | Points | Description |
|---|---|---|
| Procedure description | 3 | Clear description of purpose and business context |
| Element descriptions | 4 | Each element has a description explaining its role |
| Input/output documentation | 3 | Expected input JSON and output JSON structure documented |
| 评分标准 | 分值 | 说明 |
|---|---|---|
| 流程描述 | 3 | 清晰描述用途和业务背景 |
| 元素描述 | 4 | 每个元素均有说明其作用的描述 |
| 输入/输出文档 | 3 | 记录预期的输入JSON和输出JSON结构 |
CLI Commands
CLI命令
Read before querying or deploying Integration Procedures — it contains all SOQL queries and deploy/retrieve commands ready to adapt.
scripts/cli-commands.shsf projectCore Namespace Note: The filter is REQUIRED (or equivalently ). OmniScript and Integration Procedure records share the sObject. Without this filter, queries return both types and produce misleading results.
IsIntegrationProcedure=trueOmniProcessType='Integration Procedure'OmniProcess查询或部署Integration Procedure前,请阅读——其中包含所有可直接调整使用的SOQL查询和部署/检索命令。
scripts/cli-commands.shsf project核心命名空间注意事项:必须添加筛选条件(或等价的)。OmniScript和Integration Procedure记录共享 sObject。如果不添加筛选条件,查询结果会包含两种类型的记录,导致结果不准确。
IsIntegrationProcedure=trueOmniProcessType='Integration Procedure'OmniProcessCross-Skill Integration
跨技能集成
| From Skill | To building-omnistudio-integration-procedure | When |
|---|---|---|
| analyzing-omnistudio-dependencies | -> building-omnistudio-integration-procedure | "Analyze dependencies before building IP" |
| building-omnistudio-datamapper | -> building-omnistudio-integration-procedure | "DataRaptor/Data Mapper is ready, wire it into IP" |
| generating-apex | -> building-omnistudio-integration-procedure | "Apex Remote Action class deployed, configure in IP" |
| From building-omnistudio-integration-procedure | To Skill | When |
|---|---|---|
| building-omnistudio-integration-procedure | -> deploying-metadata | "Deploy IP to target org" |
| building-omnistudio-integration-procedure | -> building-omnistudio-omniscript | "IP is active, build OmniScript that calls it" |
| building-omnistudio-integration-procedure | -> building-omnistudio-flexcard | "IP is active, build FlexCard data source" |
| building-omnistudio-integration-procedure | -> analyzing-omnistudio-dependencies | "Verify IP dependency graph before deployment" |
| 来源技能 | 流向building-omnistudio-integration-procedure | 触发时机 |
|---|---|---|
| analyzing-omnistudio-dependencies | -> building-omnistudio-integration-procedure | "构建IP前分析依赖" |
| building-omnistudio-datamapper | -> building-omnistudio-integration-procedure | "DataRaptor/Data Mapper已就绪,将其接入IP" |
| generating-apex | -> building-omnistudio-integration-procedure | "Apex Remote Action类已部署,在IP中进行配置" |
| 来源building-omnistudio-integration-procedure | 流向技能 | 触发时机 |
|---|---|---|
| building-omnistudio-integration-procedure | -> deploying-metadata | "将IP部署到目标组织" |
| building-omnistudio-integration-procedure | -> building-omnistudio-omniscript | "IP已激活,构建调用它的OmniScript" |
| building-omnistudio-integration-procedure | -> building-omnistudio-flexcard | "IP已激活,构建FlexCard数据源" |
| building-omnistudio-integration-procedure | -> analyzing-omnistudio-dependencies | "部署前验证IP依赖图" |
Edge Cases
边缘场景
| Scenario | Solution |
|---|---|
| IP calls itself (direct recursion) | Block at design time; circular dependency check is mandatory |
| IP calls IP that calls original (indirect recursion) | Map full call graph; analyzing-omnistudio-dependencies detects cycles |
| DataRaptor not yet deployed | Deploy DataRaptors first; IP deployment will fail on missing references |
| External API timeout | Set timeout values on HTTP Action elements; implement retry logic or graceful degradation |
| Large collection input to Loop Block | Set batch size; test with realistic data volumes to avoid CPU timeout |
| Type/SubType collision with existing IP | Query existing IPs before creating; SubType versioning avoids collisions |
| Mixed namespace (Vlocity vs Core) | Confirm org namespace; element property names differ between packages |
Debug: IP not executing -> check IsActive flag + Type/SubType match | Elements skipped -> verify conditional block logic + input data shape | Timeout -> check DataRaptor query scope + HTTP timeout settings | Deployment failure -> verify all referenced components deployed and active
| 场景 | 解决方案 |
|---|---|
| IP自调用(直接递归) | 设计阶段禁止;必须检查循环依赖 |
| IP调用另一个IP,后者又调用原IP(间接递归) | 映射完整调用图;analyzing-omnistudio-dependencies技能可检测循环 |
| DataRaptor尚未部署 | 先部署DataRaptor;IP部署会因引用缺失而失败 |
| 外部API超时 | 在HTTP Action元素中设置超时值;实现重试逻辑或优雅降级 |
| Loop Block传入大型集合输入 | 设置批处理大小;使用真实数据量测试,避免CPU超时 |
| 类型/子类型与现有IP冲突 | 创建前查询现有IP;使用子类型版本控制避免冲突 |
| 混合命名空间(Vlocity vs Core) | 确认组织命名空间;不同包的元素属性名称不同 |
调试指南:IP未执行 -> 检查IsActive标记 + 类型/子类型是否匹配 | 元素被跳过 -> 验证条件块逻辑 + 输入数据格式 | 超时 -> 检查DataRaptor查询范围 + HTTP超时设置 | 部署失败 -> 验证所有引用组件已部署且处于激活状态
Output Expectations
输出预期
Deliverables produced by this skill:
- Integration Procedure JSON (template) —
assets/omni-process-ip.jsonrecord ready for REST API creation withOmniProcessIsIntegrationProcedure=true - Element JSON records (,
assets/omni-process-element-dr-extract.jsontemplates) —assets/omni-process-element-set-values.jsonrecords for each action step withOmniProcessElementwiredPropertySetConfig - Validation report — 110-point score across 6 categories with deploy/review/block threshold result
- Deployment checklist — confirms prerequisite DataRaptors are active, IP is activated, and consuming OmniScript or FlexCard can invoke it
本技能生成的交付物:
- Integration Procedure JSON(模板)——已设置
assets/omni-process-ip.json,可通过REST API创建的IsIntegrationProcedure=true记录OmniProcess - 元素JSON记录(、
assets/omni-process-element-dr-extract.json模板)——每个动作步骤对应的assets/omni-process-element-set-values.json记录,已配置OmniProcessElementPropertySetConfig - 验证报告——6个类别的110分评分结果,包含可部署/需审核/禁止部署的阈值判定
- 部署检查清单——确认前置依赖的DataRaptor已激活、IP已激活,且调用它的OmniScript或FlexCard可正常触发
Notes
注意事项
API: Latest (check current Salesforce release notes; was 66.0 at time of authoring) | Mode: Strict (warnings block) | Scoring: Block deployment if score < 67
Dependencies (optional): deploying-metadata, building-omnistudio-datamapper, analyzing-omnistudio-dependencies
Creating IPs programmatically: Use REST API (). Required fields: , , , , , . Then create child records for each action step (also via REST API for JSON PropertySetConfig). Activate by setting after all elements are created.
sf api request rest --method POST --body @file.jsonNameTypeSubTypeLanguageVersionNumberIsIntegrationProcedure=trueOmniProcessElementIsActive=trueAPI版本:最新版本(请查阅当前Salesforce发布说明;编写本文时为66.0) | 模式:严格模式(警告会阻止部署) | 评分规则:评分低于67分则禁止部署
依赖项(可选):deploying-metadata、building-omnistudio-datamapper、analyzing-omnistudio-dependencies
以编程方式创建IP:使用REST API()。必填字段:, , , , , 。然后为每个动作步骤创建子记录(同样通过REST API处理JSON格式的PropertySetConfig)。所有元素创建完成后,设置以激活IP。
sf api request rest --method POST --body @file.jsonNameTypeSubTypeLanguageVersionNumberIsIntegrationProcedure=trueOmniProcessElementIsActive=trueReference File Index
参考文件索引
| File | When to read |
|---|---|
| Phase 3 — Generation: use as the OmniProcess record template when creating the Integration Procedure via REST API |
| Phase 3 — Generation: use as the DataRaptor Extract Action element template; adapt for other DR action types |
| Phase 3 — Generation: use as the Set Values element template for variable assignment steps |
| Phase 3 — Validation: use as the output layout template when presenting the 110-point validation report |
| Phase 2-5 — Design patterns: element composition, error handling, caching, parallel execution, and security guidance |
| Phase 2 — Element selection: read before configuring PropertySetConfig for any element type |
| Phase 1 & 4 — CLI queries and deploy/retrieve commands; adapt by replacing |
| 文件 | 阅读时机 |
|---|---|
| 阶段3——生成:通过REST API创建Integration Procedure时,作为OmniProcess记录模板使用 |
| 阶段3——生成:作为DataRaptor Extract Action元素模板使用;可适配其他DR动作类型 |
| 阶段3——生成:作为赋值元素模板,用于变量分配步骤 |
| 阶段3——验证:生成110分制验证报告时,作为输出布局模板使用 |
| 阶段2-5——设计模式:元素组合、错误处理、缓存、并行执行和安全指南 |
| 阶段2——元素选择:配置任何元素类型的PropertySetConfig前阅读 |
| 阶段1 & 4——CLI查询和部署/检索命令;替换 |