您在此处:
使用远程操作从 Omniscript 调用 Apex
使用远程元素从 Omniscript 调用 Apex 类,并使用 Omniscript 的 JSON 作为输入。
在开始前,请在 Salesforce 中创建 Apex 类,以从 Omniscript 调用。在 SOQL 查询中包含 ID。该字段是必填项,因为 Apex 类保留查询,并根据实际执行的内容序列化数据。
-
在步骤前、步骤中或步骤后添加远程元素,以在 Omniscript 中加载数据或发送数据。
Omniscript 的数据 JSON 作为输入发送。
- 在远程类字段中,输入操作调用的 Apex 类的名称。
-
在远程方法字段中,输入操作调用的类的方法。例如 —
validateAddress。 - 如果需要,启用调用长期运行的操作的从属集成程序,以使用 Apex 继续。
-
在转换前和转换后 Omnistudio 数据映射器界面中,可以选择在远程操作之前或之后运行的数据映射器转换界面。
请参阅 Omnistudio 数据映射器。
-
使用远程超时属性更改操作超时前的时间。在元素中,单击编辑属性为 JSON,在
remoteTimeout属性中,设置以毫秒为单位的时间。默认超时是30,000,或 30 秒。最大值是120,000,即 120 秒。 - 在远程操作中配置其他属性。
- 通过选择调用模式,选择操作的响应行为。
-
当调用模式设置为非阻止时,使用默认值的元素将不会收到响应,因为该元素在响应返回之前加载。您必须配置这些属性,以将响应映射到元素:
-
响应 JSON 节点:VlocityNoRootNode
-
响应 JSON 路径:接收值的 Omniscript 元素的名称。
-
在故障排除 Omniscript 中,callOut1 远程操作元素调用外部系统来检查资产是否仍在保修范围内。该示例引用了Omniscript故障排除以及OmniCallout和DataObjectService Apex类。
它实施远程OmniCallout类和远程checkWarrantyStatus方法。由于这是 Omniscript 示例,因此该方法包含硬编码响应:

callOut2 远程操作调用 returnItemOrder 方法,该方法又调用调用调用 Heroku 实例的 DataObjectService 类,以返回订单号:

以下类结构可用于调用外部系统:
global with sharing class CustomClassName implements NS.VlocityOpenInterface
{
global CustomClassName() {}
global Boolean invokeMethod(String methodName, Map<String,Object> inputMap, Map<String,Object> outMap, Map<String,Object> options) {
Boolean result = true;
try{
if(methodName.equals('customMethodName')){
// your implementation, use outMap to send response back to OmniScript
}
}
else if(methodName.equals('customMethodName2')){
// your implementation, use outMap to send response back to OmniScript
}
} catch(Exception e){
result = false;
}
return result;
}
}

