InterSystemsCachéでのアプリケーションの展開

Kazuya Akimoto Ten Blue Eyes

はじめに


したがって、InterSystemsテクノロジでアプリケーションを開発しました。 ここで、クライアントにデプロイする必要があり、多くの場合、複数回デプロイする必要があります。 開発プロセス中に、インストール手順を取得しました。クラスをインポートするだけでは十分ではないため、ファイル使用てシステム変更し、ニーズに合わせて環境を微調整する必要もあります。

これらの問題を解決するために、 %インストーラーユーティリティがあります。 この記事は彼女についてです。

%インストーラー


このユーティリティを使用すると、Cachéのターゲット構成を説明するインストールマニフェストを、それを実現する手順ではなく定義できます。 何をすべきかを説明すると、Cachéはこのために必要なすべてのコードを既に生成します。 したがって、マニフェスト自体のみを配布し、特定のCachéサーバのフレームワーク内でコード生成がすでに行われています。

マニフェストを作成するには、目的の構成の説明とともにXDataブロックを作成し、XDataブロックに基づいてCOSコードを生成するメソッドを作成します(常に同じです)。 マニフェストを作成したら、Cachéのインストール中に、ターミナルまたはCOSコードからマニフェストを呼び出すことができます。 マニフェストは%SYS領域で実行する必要があります。 マニフェストは、システムパラメーター(スーパーポート、OS、mgrディレクトリなど)と、ユーザーから渡された任意のパラメーターの両方で使用できます。 したがって、インストーラークラスは次の要件を満たす必要があります。



使用する


準備完了インストールマニフェストは、いくつかの方法で起動できます


簡単な例を考えてみましょう。 ユーザーから渡された名前の領域を作成するApp.Installerクラスを作成します。

App.Installer
%occIncludeを 含める
クラスApp.Installer
{
///生成されたコードは、zsetup + 1 ^ App.Installer.1で表示できます。
XData インストール[ XMLNamespace = INSTALLER]
{
< マニフェスト >
< If Condition = '(## class(Config.Namespaces).Exists( "$ {Namespace}")= 0)' >
< ログ テキスト = "名前空間の作成$ {名前空間}" レベル = "0" />
< 名前空間 = "$ {名前空間}" 作成 = "はい" コード = "$ {名前空間}" アンサンブル = "0" データ = "$ {名前空間}" >
< 設定 >
< データベース = "$ {Namespace}" Dir = "$ {MGRDIR} / $ {Namespace}" Create = "yes" />
</ 設定 >
</ 名前空間 >
< ログ テキスト = "ネームスペースの作成を終了$ {ネームスペース}" レベル = "0" />
</ If >
</ マニフェスト >
}
///インストールを完了するために呼び出されるメソッド。
///クラスのコンパイル中に、COSコードが生成されます
///その後、インストーラーは次のパラメーターで開始します。
/// Set pVars( "Namespace")= "TempNamespace"
/// Do ##クラス(App.Installer).setup(.pVars)
ClassMethod setup( ByRef pVars pLogLevel As%Integer = 0 pInstaller As%Installer.Installer As%Status [ CodeMode = objectgenerator、 Internal ]
{
##クラス %Installer.Manifest )を 終了し ます。 %Generate %compileclass %code "Install"
}
}

この例では、次のことが起こります。


ターミナルから起動するには、次のコマンドを実行します。
Set pVars "Namespace" )= "NewNamespace"
##クラス App.Installer )を実行します。 セットアップ 。pVars

何がもたらす
2015-10-16 16:26:18 0 App.Installer:2015-10-16 16:26:18からインストール、LogLevel = 0
2015-10-16 16:26:18 0:名前空間NewNamespaceを作成しています
2015-10-16 16:26:19 0:名前空間NewNamespaceの作成を終了
2015-10-16 16:26:19 0 App.Installer:インストールは2015-10-16 16:26:19に成功しました
2015-10-16 16:26:19 0%インストーラー:経過時間.605257s

アイテム一覧


マニフェストは、次の要素から形成されます。
アイテム親要素属性(デフォルト値)説明
引き数呼び出し、エラー値-引数値InvokeまたはErrorを介して呼び出されたメソッドに引数を渡します
クラスマッピング構成パッケージ-表示するパッケージ
From-表示するデータベースの名前
データベースのクラスから斜めのクラスへのマッピングを作成します。
コンパイルする名前空間クラス-コンパイルするクラスの名前
フラグ-コンパイルフラグ(ck)
IgnoreErrors-エラーを無視(0)
クラスをコンパイルします。 $ System.OBJ.Compileを呼び出します(クラス、フラグ)
構成名前空間スコープとデータベースを作成する必要がありました。 終了タグはマッピングをアクティブにし、cpfファイルを更新します
コピークラス名前空間Src-ソースクラス
ターゲット-ターゲットクラス
置換-ソースクラスを削除(0)
ソースクラスをターゲットにコピーまたは移動する
CopydirマニフェストSrc-ソースディレクトリ
Targe-宛先ディレクトリ
IgnoreErrors-エラーを無視(0)
ディレクトリをコピー
コピーファイルマニフェストSrc-ソースファイル
ターゲット-ターゲットファイル
IgnoreErrors-エラーを無視(0)
ファイルをコピー
クレデンシャル生産名前-アクセス要件の名前
ユーザー名-ユーザー名
パスワード-パスワード
上書き-存在する場合は上書き
アクセスの詳細を作成または再定義します
Cspapplication名前空間AuthenticationMethods-利用可能な認証方法
自動コンパイル-自動コンパイル
CSPZENEnabled-CSP / ZENフラグ
ChangePasswordPage-パスワード変更ページ
CookiePath-Cookieセッションの方法
CustomErrorPage-カスタムエラーページ
DefaultSuperclass-デフォルトのスーパークラス
DefaultTimeout-セッションタイムアウト
説明-説明
ディレクトリ-CSPファイルへのパス
EventClass-イベントクラス
付与-ログイン時に発行されるロールのリスト
GroupById-IDによるグループ化
InboundWebServicesEnabled-インバウンドWebサービス
IsNamespaceDefault-デフォルトエリアアプリケーション
LockCSPName-CSP名のロック
LoginClass-ログインページ
PackageName-パッケージ名
PermittedClasses-許可されたクラス
再帰-サブディレクトリ(0)
リソース-必要なリソース
ServeFiles-サービスファイル
ServeFilesTimeout-サービスファイルのタイムアウト
TwoFactorEnabled-二要素認証
Url-Webアプリケーションの名前
UseSessionCookie-セッションにCookieを使用
Webアプリケーションを作成または変更します。 ドキュメントおよびSecurity.Applicationsクラスの設定の詳細な説明
データベース構成BlockSize-ブロックサイズ
ClusterMountMode-クラスターの一部としてデータベースをマウントします
照合-ソート
作成-データベースを作成-はい、いいえ、上書き(はい)
Dir-ディレクトリ
暗号化-暗号化
EncryptionKeyID-暗号化キーID
ExpansionSize-拡張機能
InitialSize-初期サイズ
MaximumSize-最小サイズ
MountAtStartup-起動時にマウント
MountRequired-マウントが必要
名前-名前
PublicPermissions-公的権利
リソース-リソース
StreamLocation-ストリームの場所
データベースを作成または変更します。 ドキュメントおよびクラスConfig.Databasesの設定の詳細な説明
デフォルトマニフェスト名前-変数名
値-変数の値
Dir-変数の値(これがフォルダー/ファイルへのパスの場合)
定義されていない場合、変数の値を定義します
その他マニフェスト、名前空間if条件チェックが否定的に終了した場合に実行されます。
エラーマニフェストステータス-エラーコード
ソース-エラーソース
例外をスローします。 $ {}および#{}構文は利用できません
Foreachマニフェストインデックス-変数名
値-変数値のリスト
共同ループ演算子
グローバルマッピング構成グローバル-グローバル名
From-表示するデータベースの名前Collat​​ion-sort(CachéStandard)
グローバル表示
もしマニフェスト、名前空間条件-条件条件付きジャンプ演算子
Ifdefマニフェスト、名前空間Var-変数名変数が定義されている場合、条件付きジャンプ演算子
IfNotDefマニフェスト、名前空間Var-変数名変数が定義されていない場合の条件付きジャンプ演算子
インポート名前空間ファイル-インポートするファイル/フォルダー
フラグ-コンパイルフラグ(ck)
IgnoreErrors-エラーを無視(0)
再帰-再帰的インポート(0)
ファイルをインポートします。 原因:
$ System.OBJ.ImportDir(ファイル、フラグ、再帰)および$ System.OBJ.Load(ファイル、フラグ)
呼び出す名前空間クラス-クラス
メソッド-メソッド
CheckStatus-返品ステータスを確認する
Return-結果を変数に書き込みます
クラスメソッドを呼び出し、引数を渡して実行結果を取得できます
ロードページ名前空間名前-CSPページへのパス
Dir-CSPページのあるフォルダー
フラグ-コンパイルフラグ(ck)
IgnoreErrors-エラーを無視(0)
$ System.CSP.LoadPage(名前、フラグ)および$ System.CSP.LoadPageDir(Dir、フラグ)を介してCSPファイルをロードします。
ログマニフェストレベル-0(最小)から3(詳細)のロギングレベル
テキスト-テキスト、最大32000文字
ロギングレベルがlevel属性以上の場合、ログにメッセージを追加します
マニフェストルート要素。 マニフェスト内の唯一のもの、他のすべての要素はその中にあります
名前空間マニフェスト名前-エリア名
作成-エリアの作成-はい、いいえ、上書き(はい)
コード-コード付きDB
データ-データを含むデータベース
アンサンブル-の分野にアンサンブルを含める
Ensemble Webアプリケーションに関連するその他の属性
インストーラーのスコープを定義します
生産名前空間名前-製品名
AutoStart-製品の自動起動
Ensemble製品を構成します
資源マニフェスト名前-リソース名
説明-説明
許可-公的権利
リソースを作成または変更します
役割マニフェスト名前-ロール名
説明-説明
リソース-「MyResource:RW、MyResource1:RWU」の形式のリソースRolesGranted-関連するロールを付与
ロールを作成します
ルーチンマッピング構成ルーチン-ルーチンの名前
タイプ-タイプ「MAC、INT、INC、OBJ、ALL」のいずれか
From-どのデータベースから
マッピングルーチンを作成します
セッティング生産アイテム-カスタムアイテム
ターゲット-設定タイプ:アイテム、ホスト、アダプター
設定-設定の名前
値-設定値
Ensemble製品アイテムを構成します。 Ens.Production:ApplySettingsメソッドを呼び出します
システム設定マニフェスト名前-クラスConfigパッケージのプロパティ
値-プロパティ値
Configパッケージのプロパティの値を設定します(Modifyメソッドを使用)
ユーザーマニフェストユーザー名-ユーザー名
PasswordVar-パスワードを含む変数
役割-ユーザー役割リスト
氏名-氏名
名前空間-開始エリア
ルーチン-開始ルーチン
ExpirationDate-ユーザーがアクティブ化されなくなる日
ChangePassword-次回ログイン時にパスワードを変更
有効-ユーザーがアクティブ化されているかどうか
ユーザーを作成または変更する
ヴァールマニフェスト名前-変数名
値-変数の値
変数の値を定義します

変数


変数は属性値として機能し、次の3つの方法のいずれかで定義されます。


パラメーター値はコンパイル段階で決定されるため、変数またはCOS式の一部にすることができます。 COSコードを解釈する前に変数の解釈が行われるため、変数をCOS式に含めることができます。例: #{$ZCVT("${NAMESPACE}","L")}.

環境変数


次の変数は常に使用可能です。
可変説明値の例
Sourcedir(キャッシュのインストール時のみ)インストーラーがあるディレクトリ(setup_cache.exeまたはcinstall)/インターシステムズ/ distr /
ISCUpgrade(キャッシュのインストール時のみ)インストールまたはアップグレードするかどうかを決定します0(インストール)
1(更新)
CFGDIRINSTALLDIRを参照してください。/インターシステムズ/キャッシュ/
CFGFILEcpfファイルへのパス/InterSystems/Cache/cache.cpf
CFGNAMEインスタンス名キャッシュ
CPUCOUNTCPUコア4
CspdirCSPディレクトリ/インターシステムズ/キャッシュ/ csp /
ホスト名Webサーバー名SCHOOL15
HTTPPORTWebサーバーのポート80
INSTALLDIRCachéがインストールされているディレクトリ/インターシステムズ/キャッシュ/
MGRDIR管理ディレクトリ(mgr)/インターシステムズ/キャッシュ/ mgr /
プラットフォームオペレーティングシステムUnix
Cachéスーパーサーバーポート1972
プロセッサープラットフォーム名x86-64
バージョンCachéバージョン2015.1.1

デバッグ


属性がどの値を取ることができるかは明確ではありません。 明確にするために、setupメソッドの生成されたintコードを見てください。 通常、メインコールはメソッドです。

tInstaller.ElementName()

つまり 既にシステムメソッドを直接呼び出すクラスメソッド%Installer.Installer 。 あるいは、クラス%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART /
TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


コードを見ることができます%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART /
TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


 %Installer.,      .     %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode. 

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


%Installer., . %OnBeforeGenerateCode, %OnGenerateCode, %OnAfterGenerateCode.

, . TSTART
/ TROLLBACK , Caché ( Caché , ).


MDX2JSON . installer.xml MDX2JSON.Installer. .

:

do ##class(MDX2JSON.Installer).setup()
GitHub-, « » MDX2JSON MDX2JSON, MDX2SJON %All, REST- /MDX2JSON , .


.
Sample.Installer Samples.
CacheGitHubCI .
SYSMON Dashboards .
DeepSee Audit .


%Installer InterSystems Caché Ensemble.


Source: https://habr.com/ru/post/J268767/


All Articles