第三十章 开发Productions - ObjectScript Productions - 定义业务操作 - 调用适配器方法
调用适配器方法
最常见的是,业务操作不包含用于与外部系统通信的逻辑。相反,业务操作使用处理此逻辑的出站适配器。一旦业务操作与出站适配器相关联,它就会调用适配器的方法来发送和接收数据。有关调用适配器方法的详细信息,请参阅从业务主机访问属性和方法。
向生产中的目标发送请求
尽管业务操作主要负责向特定的外部应用程序传递请求,但它也可以根据需要向其他业务操作或业务流程发送消息。要将消息发送到生产中的目标,请调用 SendRequestSync()
、SendRequestAsync()
或 SendDeferredResponse()
。
Ens.BusinessOperation
定义了一个可以使用的附加方法:DeferResponse()
。
DeferResponse() 方法
此方法中返回一个 %Status,指示成功或失败。它提供了一个引用参数 token,它返回稍后调用 SendDeferredResponse() 所需的延迟响应传递令牌。例如:
Set sc=..DeferResponse(.token)
// Send the token out somewhere...
Quit $$$O
挂起消息
如果希望业务操作将其当前正在进行的消息标记为具有暂停状态,请将业务操作属性 SuspendMessage
设置为整数值 1
(true
)。通常,业务操作会对由于某种原因被外部系统拒绝的消息执行此操作。
IRIS
将 Suspended
消息置于特殊队列中,以便系统管理员可以诊断问题、解决问题,然后重新发送消息。系统管理员可以执行简单的重新发送(到原始目标)或可以将其发送到新的目的地。有关信息,请参阅监控制作。文章来源:https://www.toymoban.com/news/detail-478120.html
以下示例方法来自将文档发送到外部系统的业务操作。如果从对即将发送的文档的 Validate()
调用返回错误,则该方法将 SuspendMessage
属性设置为 1
:文章来源地址https://www.toymoban.com/news/detail-478120.html
Method validateAndIndex(pDoc As MyX12.Document) As %Status
{
If ""=..Validation||'$method($this,"OnValidate",pDoc,..Validation,.tSC) {
Set tSC=##class(MyX12.Validator).Validate(pDoc,..Validation)
}
Set:'$D(tSC) tSC=$$$OK
If $$$ISERR(tSC) {
Set ..SuspendMessage=1
Do ..SendAlert(##class(Ens.AlertRequest).%New($LB(
..%ConfigName,"Suspended document "_pDoc.%Id()_
" because it failed validation using spec '"
_..Validation_"' with error "_
$$$StatusDisplayString(tSC))))
Quit tSC
}
If ""'=..SearchTableClass {
TRY {
Set tSCStore=$classmethod(..SearchTableClass,"IndexDoc",pDoc)
If $$$ISERR(tSCStore)
$$$LOGWARNING("Failed to create SearchTable entries")
}
CATCH errobj {
$$$LOGWARNING("Failed to invoke SearchTable class")
}
}
Quit $$$OK
}
到了这里,关于第三十章 开发Productions - ObjectScript Productions - 定义业务操作 - 调用适配器方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!