第五十四章 开发Productions - ObjectScript Productions - 不常见的任务 - 直接调用业务服务
有时,希望从由某些其他机制(例如语言绑定、CSP
页面、SOAP
或从操作系统级别调用的例程)创建的作业直接调用业务服务。仅当 ADAPTER
类参数的值为 null
时才可以这样做;这种类型的业务服务称为无适配器业务服务。
为了使业务服务正常工作,必须创建业务服务类的实例。无法通过调用 %New()
方法创建此实例。相反,必须在使用 Ens.Director
的 CreateBusinessService()
方法。例如:
Set tSC = ##class(Ens.Director).CreateBusinessService("MyService",.tService)
Productions
在Productions
启动时没有为该业务服务分配作业;它假定池大小设置为 0
。
CreateBusinessService()
方法执行以下操作:
- 它确保
Productions
正在运行并且该生产定义了给定的业务服务。 - 它确保当前启用给定的业务服务。
- 它解析业务服务的配置名称,并使用正确的配置值实例化正确的业务服务对象(一个产品可能使用相同的业务服务类定义许多业务服务,但具有不同的名称和设置)。
如果 CreateBusinessService()
方法成功,它将通过引用返回业务服务类的实例。然后可以直接调用其 ProcessInput()
方法。必须向 ProcessInput()
方法提供它所需的输入对象的实例。例如:
If ($IsObject(tService)) {
Set input = ##class(MyObject).%New()
Set input.Value = 22
Set tSC = tService.ProcessInput(input,.output)
}
创建入站适配器或子类化入站适配器
本节介绍如何创建入站适配器或将其子类化。
入站适配器简介
入站适配器负责接收和验证来自外部系统的请求。
入站适配器类与业务服务类一起工作。一般来说,入站适配器包含通用的、可重用的代码,而业务服务包含特定于生产的代码(例如特殊的验证逻辑)。通常,使用 IRIS 内置适配器类之一来实现入站适配器类。下图显示了Production
如何接受传入请求:
一般来说,当外部应用程序请求执行某个操作时,该请求会通过入站适配器进入 IRIS
,如上图所示。发出请求的应用程序称为客户端应用程序,因为它要求生产执行某些操作。此应用程序是产品的客户端。此步骤的特色元素是入站适配器。这是一段代码,它将客户端的本机请求格式调整为生产可以理解的格式。每个发出产品请求的应用程序都必须有自己的入站适配器。无需更改客户端应用程序代码,因为适配器处理客户端应用程序本身的调用。
网友评论