IRIS 没有默认的删除备份文件的任务。

你可以通过命令$zf(-100)或者%File下面的Delete方法实现通过ObjectScript删除磁盘文件的操作,再将代码添加入定时任务中实现定时删除。

同时注意,不建议在生产环境将IRIS自带的在线备份工具作为灾备恢复使用,因为该工具仅仅备份 IRIS.Dat 中的内容,而这些内容对于灾难恢复是不够的。

推荐使用外部备份的方式进行备份,详细内容参见(https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...

可以通过Ens.Config.Production 的 %OpenId 方法打开现有的Production,

新建一个Ens.Config.Item的对象,该对象对应于Production界面中的各个组件(BusinessHost)

再使用production.Items.Insert方法将该Item对象插入到现有Production中,就可实现使用代码的方式创建Production 的 BusinessHost。

同时可以通过创建Ens.Config.Setting的实例以及设置相关属性的方式,对创建的BusinessHost中的配置在代码中进行设定,比如设定加载BO的URL、凭据等。

  #Dim businessHost as Ens.Config.Item = ##class(Ens.Config.Item).%New()
  #Dim setting as Ens.Config.Setting = ##class(Ens.Config.Setting).%New()
  #Dim production as Ens.Config.Production = ##class(Ens.Config.Production).%OpenId("MyPkg.DemoProduction")
  Set setting.Name="WebServiceURL"
  Set setting.Value="http://localhost:52773/MyWS/Demo.Test.cls"
  Set businessHost.ClassName="MyPkg.Operation.HISWSOperation"
  Set businessHost.Name ="HIS web 服务"
  Set businessHost.Production = production
  Do businessHost.Settings.Insert(setting)
  Do production.Items.Insert(businessHost)
  Set tsc = production.%Save()
USER>set file="box.xml"
USER>set sc=$system.OBJ.Export("box.GBL",.file) 

Exportieren in XML gestartet am 06/08/2021 11:46:58
Exportiere Global: ^box
Export erfolgreich abgeschlossen. 

USER>$type box.XML 

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25" zv="IRIS for Windows (x86-64) 2021.1 (Build 209U)" ts="2021-06-08 11:46:58">
<Global>
<Node><Sub>^box</Sub>
<Node><Sub>1</Sub>
<Node><Sub>1</Sub>
<Data> </Data>
<Node><Sub>0</Sub>
<DataBase64>G1syOzRI
</DataBase64>
</Node>
<Node><Sub>1</Sub>
<Data>1</Data>
</Node>
<Node><Sub>2</Sub>
<Data>...456..9</Data>
</Node>
</Node>
<Node><Sub>2</Sub>
<Data> </Data>
<Node><Sub>0</Sub>
<DataBase64>G1syOzEwSA==
</DataBase64>
- - - -   removed ------- 
</Node>
</Node>
<Data> </Data>
USER>

一般由 Ensemble 生成的Soap 服务的 URL 地址有下面几个部分组成:

http(s)://DomainName:port/web application name/bs类名.cls组成

前面域名端口由提供服务的服务器地址以及web server决定.

web application name可以在SMP的菜单:系统管理 -- 安全 -- 应用程序 --  web 应用程序中设置

bs类名为创建包含web method 的类的类名。在将类添加到Ensemble 的 BS中时,默认服务名为类名。如果你手动设置了服务名称,则需要在soap url中使用 CfgItem 参数来指明. 例如:http://Myserver/MyApplication/MyClass.cls?CfgItem=MyServiceName

不知你用的什么版本的产品,如果是2019.3.0之前的版本,需要手动在HTTP header中设定content-length

可以参考下面代码

ClassMethod GetGenericMessage(request As %String) As %Status
{
               set status = $$$OK, kb = "ENSEMBLE"
                set url = "rdr/interpreter/query?kbcode="_kb
                /// Get the message from Antrim
                set stream = request.StreamGet()
                set xStream = stream.Read(3500000)
                $$$TRACE("*****Stream String: "_xStream)
                set contentLength = $length(xStream)
                $$$TRACE("*****Length "_contentLength)
                /// Set the headers for posting orders/results to CDS.
                set tRequest=##class(EnsLib.HTTP.GenericMessage).%New()
                set headerA=##class(%ArrayOfDataTypes).%New()
                do headerA.SetAt("POST","httprequest")
                do headerA.SetAt(url,"url")
                do headerA.SetAt("gzip","accept-encoding")
                do headerA.SetAt("Mozilla/4.0 (compatible; Cache;)","user-agent")
                do headerA.SetAt(contentLength,"content-length")
                do headerA.SetAt("application/json","content-type")
                set tRequest.HTTPHeaders = headerA
                $$$TRACE("*****tRequest: "_tRequest)
                set tRequest.Stream = stream
               quit tRequest
}

如果是2019.3或者之后的版本,HTTP header会自动设定content-length的值。

你好, 如果这个问题发生在生产环境,请联系WRC:support@intersystems.com,将会提供补丁或者升级建议。

如果问题是在测试或者开发环境中出现,建议在产品的最新版本下进行。