config-api로 환경 설정
응용 프로그램 배포를 위한 스크립트를 작성하는 것은 잊어버리지 않고 빠른 배포를 보장하기 위해 매우 흥미로울 수 있습니다.
config-api는 개발자가 JSON 문서를 기반으로 구성 스크립트를 작성할 수 있도록 도와주는 라이브러리입니다.
구현된 기능:
이 라이브러리는 응용 프로그램 배포를 돕기 위한 IRIS 구성에 중점을 둡니다. 따라서 config-api는 응용 프로그램 설치 프로그램 모듈 또는 클라이언트 레지스트리의 역할이어야 한다는 점을 고려하여 코드 기능을 가져오기\컴파일하지 않습니다. config-api를 ZPM 클라이언트와 함께 사용하여 모듈 배포 시 IRIS 설정을 구성할 수 있습니다. 다른 기사에서 이 라이브러리를 ZPM과 결합하는 방법을 배웁니다.
설치
zpm “install config-api”
ZPM 사용자가 아닌 경우 종속성이 있는 XML 형식의 최신 버전release page 가져오기 및 컴파일을 다운로드하십시오.
첫 번째 단계
몇 가지 시스템 설정을 지정하는 간단한 구성 JSON 문서를 작성해 보겠습니다.
이 첫 번째 문서에서 우리는:
locksiz
를 늘립니다. LockThreshold
를 늘립니다.Set config = {
"Journal": { /* Service class Api.Config.Journal */
"FreezeOnError":1,
"FileSizeLimit":256
},
"SQL": { /* Service class Api.Config.SQL */
"LockThreshold" : 2500
},
"config": { /* Service class Api.Config.config */
"locksiz" : 33554432
},
"Startup":{ /* Service class Api.Config.Startup */
"SystemMode" : "DEVELOPMENT"
}
}
Set sc = ##class(Api.Config.Services.Loader).Load(config)
구성 JSON 문서 구조
첫 번째 수준 키(
Journal
, SQL
, config
, Startup
)는 %SYS 네임스페이스의 클래스와 관련됩니다(Api.Config.Services 패키지의 중간 클래스 사용). 이는 Journal
가 Config.Journal , SQL
Config.SQL 의 모든 속성 등에서 사용 가능한 모든 속성을 지원함을 의미합니다.출력:
2021-03-31 18:31:54 Start load configuration
2021-03-31 18:31:54 {
"Journal":{
"FreezeOnError":1,
"FileSizeLimit":256
},
"SQL":{
"LockThreshold":2500
},
"config":{
"locksiz":33554432
},
"Startup":{
"SystemMode":"DEVELOPMENT"
}
}
2021-03-31 18:31:54 * Journal
2021-03-31 18:31:54 + Update Journal ... OK
2021-03-31 18:31:54 * SQL
2021-03-31 18:31:54 + Update SQL ... OK
2021-03-31 18:31:54 * config
2021-03-31 18:31:54 + Update config ... OK
2021-03-31 18:31:54 * Startup
2021-03-31 18:31:54 + Update Startup ... OK
트릭:
Load
메서드는 문자열 인수와 호환됩니다. 이 경우 문자열은 JSON 구성 문서의 파일 이름이어야 합니다(스트림 개체도 허용됨).애플리케이션 환경 만들기
이 섹션에서는 다음을 생성하기 위한 구성 문서를 작성합니다.
Set config = {
"Defaults":{
"DBDIR" : "${MGRDIR}",
"WEBAPPDIR" : "${CSPDIR}",
"DBDATA" : "${DBDIR}myappdata/",
"DBARCHIVE" : "${DBDIR}myapparchive/",
"DBCODE" : "${DBDIR}myappcode/",
"DBLOG" : "${DBDIR}myapplog/"
},
"SYS.Databases":{
"${DBDATA}" : {"ExpansionSize":128},
"${DBARCHIVE}" : {},
"${DBCODE}" : {},
"${DBLOG}" : {}
},
"Databases":{
"MYAPPDATA" : {
"Directory" : "${DBDATA}"
},
"MYAPPCODE" : {
"Directory" : "${DBCODE}"
},
"MYAPPARCHIVE" : {
"Directory" : "${DBARCHIVE}"
},
"MYAPPLOG" : {
"Directory" : "${DBLOG}"
}
},
"Namespaces":{
"MYAPP": {
"Globals":"MYAPPDATA",
"Routines":"MYAPPCODE"
}
},
"Security.Applications": {
"/csp/zrestapp": {
"DispatchClas" : "my.dispatch.class",
"Namespace" : "MYAPP",
"Enabled" : "1",
"AuthEnabled": "64",
"CookiePath" : "/csp/zrestapp/"
},
"/csp/zwebapp": {
"Path": "${WEBAPPDIR}zwebapp/",
"Namespace" : "MYAPP",
"Enabled" : "1",
"AuthEnabled": "64",
"CookiePath" : "/csp/zwebapp/"
}
},
"MapGlobals":{
"MYAPP": [{
"Name" : "Archive.Data",
"Database" : "MYAPPARCHIVE"
},{
"Name" : "App.Log",
"Database" : "MYAPPLOG"
}]
}
}
Set sc = ##class(Api.Config.Services.Loader).Load(config)
출력:
2021-03-31 20:20:07 Start load configuration
2021-03-31 20:20:07 {
"SYS.Databases":{
"/usr/irissys/mgr/myappdata/":{
"ExpansionSize":128
},
"/usr/irissys/mgr/myapparchive/":{
},
"/usr/irissys/mgr/myappcode/":{
},
"/usr/irissys/mgr/myapplog/":{
}
},
"Databases":{
"MYAPPDATA":{
"Directory":"/usr/irissys/mgr/myappdata/"
},
"MYAPPCODE":{
"Directory":"/usr/irissys/mgr/myappcode/"
},
"MYAPPARCHIVE":{
"Directory":"/usr/irissys/mgr/myapparchive/"
},
"MYAPPLOG":{
"Directory":"/usr/irissys/mgr/myapplog/"
}
},
"Namespaces":{
"MYAPP":{
"Globals":"MYAPPDATA",
"Routines":"MYAPPCODE"
}
},
"Security.Applications":{
"/csp/zrestapp":{
"DispatchClas":"my.dispatch.class",
"Namespace":"MYAPP",
"Enabled":"1",
"AuthEnabled":"64",
"CookiePath":"/csp/zrestapp/"
},
"/csp/zwebapp":{
"Path":"/usr/irissys/csp/zwebapp/",
"Namespace":"MYAPP",
"Enabled":"1",
"AuthEnabled":"64",
"CookiePath":"/csp/zwebapp/"
}
},
"MapGlobals":{
"MYAPP":[
{
"Name":"Archive.Data",
"Database":"MYAPPARCHIVE"
},
{
"Name":"App.Log",
"Database":"MYAPPLOG"
}
]
}
}
2021-03-31 20:20:07 * SYS.Databases
2021-03-31 20:20:07 + Create /usr/irissys/mgr/myappdata/ ... OK
2021-03-31 20:20:07 + Create /usr/irissys/mgr/myapparchive/ ... OK
2021-03-31 20:20:07 + Create /usr/irissys/mgr/myappcode/ ... OK
2021-03-31 20:20:07 + Create /usr/irissys/mgr/myapplog/ ... OK
2021-03-31 20:20:07 * Databases
2021-03-31 20:20:07 + Create MYAPPDATA ... OK
2021-03-31 20:20:07 + Create MYAPPCODE ... OK
2021-03-31 20:20:07 + Create MYAPPARCHIVE ... OK
2021-03-31 20:20:07 + Create MYAPPLOG ... OK
2021-03-31 20:20:07 * Namespaces
2021-03-31 20:20:07 + Create MYAPP ... OK
2021-03-31 20:20:07 * Security.Applications
2021-03-31 20:20:07 + Create /csp/zrestapp ... OK
2021-03-31 20:20:07 + Create /csp/zwebapp ... OK
2021-03-31 20:20:07 * MapGlobals
2021-03-31 20:20:07 + Create MYAPP Archive.Data ... OK
2021-03-31 20:20:07 + Create MYAPP App.Log ... OK
효과가있다! 구성이 성공적으로 로드되었습니다.
다음 기사에서는 ZPM과 함께 config-api를 사용하여 애플리케이션을 배포하는 방법을 배웁니다.
읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(config-api로 환경 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/intersystems/environment-setup-with-config-api-41df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)