本页讨论了在为生产开发业务服务、流程和操作时的常见编程任务和主题。
当创建业务宿主类或适配器类时,通常会实现回调方法、根据需要定义其他方法以及添加或删除设置。
在业务主机或适配器中,方法通常执行以下部分或全部任务:
Helper 方法是一个非正式术语,指的是一种供其他方法使用的方法。在业务操作和业务流程中,方法通常会调用继承的方法来将消息发送到生产中的其他业务主机。
生成日志、警报或跟踪通知以响应可能出现的各种情况。 IRIS 使用以下术语:
IRIS 自动将这些写入事件日志。
警报旨在通过定义并添加到产品中的警报处理器来提醒用户。
跟踪项用于调试和诊断目的。例如,可以使用它们在部署产品之前定位程序错误。 IRIS 可以将这些写入事件日志、终端或两者。
并非所有类型的错误或活动都必须生成这些通知。由开发人员选择记录哪些事件以及如何记录它们。请注意,事件日志不应记录程序错误;这些应该在产品发布之前解决。
了解最适合制作的编程实践很重要。业务主机在单独的进程中执行,这意味着应该确保:
更具体地说,如果业务主机代码启动一个事务,例如通过 ObjectScript TSTART 或带有 %COMMITMODE = EXPLICIT 的 SQL 语句,则同一业务主机需要代码来完成或回滚该事务。嵌套事务时,请注意进程将持有所有锁,直到事务的所有部分都提交或回滚。
重要提示:不遵循这些准则可能会导致作品无法运行。
类似的考虑适用于业务规则和数据转换。
此外,必须经常处理从 IRIS 方法收到的错误代码。 IRIS 互操作性开发框架旨在让自定义代码在错误代码方面尽可能简单和线性。例如:
OnProcessInput() 方法和业务操作的 OnMessage() 和其他用户编写的 MessageMap 方法由生产框架包装,因此无需在代码中包含任何额外的错误捕获。SendAlert() 和 SendRequestSync()。此外,当发生错误情况时,适配器方法会自动为 Retry 和 Suspend 设置合适的值。考虑到生产框架中内置的这些预防措施, 建议在正常情况下,自定义代码应该简单地检查每次调用的错误代码,如果是错误值,则使用该值退出。以下是这种编码风格的示例:
Class Test.FTP.FileSaveOperation Extends Ens.BusinessOperation
{
Parameter ADAPTER = "EnsLib.File.OutboundAdapter";
Method OnMessage(pRequest As Test.FTP.TransferRequest,
Output pResponse As Ens.Response) As %Status
{
Set pResponse=$$$NULLOREF
Set tFilename=..Adapter.CreateTimestamp(pRequest.Filename,"%f_%Q")
; file with timestamp should not already exist
$$$ASSERT('..Adapter.Exists(tFilename))
Set tSC=..Adapter.PutStream(tFilename,pRequest.StreamIn) Quit:$$$ISERR(tSC) tSC
Quit $$$OK
}
}
更复杂的场景有时很有用,例如使用 SQL 适配器在业务操作中执行多个 SQL 语句,然后在其中任何一个失败时调用回滚,然后返回。但是,前面示例中的编码风格是简单情况下的最佳实践。