InterSystems IRIS とソース・コントロール・システムの統合
このページでは、サードパーティのソース・コントロール・システムを接続することによって InterSystems IRIS® データ・プラットフォームのコードをソース・コントロールに配置する方法を簡単に説明します。ユース・ケースに適した戦略やツールを選択する方法は説明しません。
基本情報
ソース・コントロールの下に InterSystems IRIS コードを配置するプロセスは、以下の手順で構成されます。
-
必要に応じて、カスタム・ソース・コントロール・クラスを作成します。
-
選択したソース・コントロール・クラスを使用するようにネームスペースを構成します。
-
また、同じネームスペースを構成して、コード・データベースにロードするファイルの場所を指定します。この構成を実行する方法は、通常、使用されているソース・コントロール・クラスによって異なりますが、グローバルに関連する情報を含めるのが一般的な方法です。
InterSystems IRIS ドキュメント
このページでは、ドキュメントという用語は、ソース・コントロール・システム内に配置する個別のアイテムを指します。これには、クラス定義、ルーチン、データ変換が含まれます。InterSystems IRIS では、最後にコンパイルされてから変更があったかどうかなどの情報が記録されます。ソース・コントロール・システムは、各ドキュメントを個別のユニットとして扱います。
各ドキュメントには 2 つの名前があります。
-
内部名。
-
外部名。これは、ファイル・システム内でのファイルの完全修飾パスです。
ソース・コントロール・クラスの作成
ソース・コントロール・クラスを作成するには、以下を実行します。
-
%Studio.Extension.BaseOpens in a new tab または %Studio.SourceControl.BaseOpens in a new tab のサブクラスを作成します。
-
%Studio.Extension.BaseOpens in a new tab から開始する場合、サブクラスで Menu という名前の XDATA ブロックを作成します(これを開始するには、%Studio.SourceControl.BaseOpens in a new tab からコピーして貼り付けます)。
-
必要に応じて、このクラスにメソッド AddToSourceControl()、CheckIn()、CheckOut() などを実装します。これらのメソッドは、通常、少なくとも以下を実行します。
-
必要に応じて、InterSystems IRIS ドキュメントをファイルからインポート、またはファイルにエクスポートします。
-
ファイルで機能するように、ソース・コントロール・ソフトウェアの適切な関数またはメソッドを呼び出します。
-
指定したファイルの状態について InterSystems IRIS の内部情報を更新します。
-
InterSystems IRIS ドキュメントが編集可能であるかどうかを制御します。
詳細は、ソース・コントロール・システムにより異なります。
-
-
ソース・コントロール・クラスの GetStatus() メソッドを実装します。これは必須です。既定の実装が適切でない場合は、IsInSourceControl() メソッドの実装も必要な場合があります。
内部名と外部名をマップする方法の指定
内部名と外部名との間に双方向のマッピングを作成することは、ソース・コントロール・システムを実装するうえで最も難しい部分であると言えます。このマッピングは、コードで定義する必要があります。つまり、以下を行う必要があります。
-
内部アイテムの名前が指定されている場合は、対応するファイル名を決定します。
-
変更されたファイルが指定されている場合は、対応する内部アイテムを決定し、変更されたファイルをインポートして更新します。
例えば、次のようなディレクトリ構造を使用できます。
-
クラス・ファイルは、クラスのパッケージ階層に対応するサブディレクトリを含む cls サブディレクトリ内にあります。
-
.INT ルーチンは int サブディレクトリ内にあります。
-
.MAC ルーチンは mac サブディレクトリ内にあります。
異なる環境で複数の開発者がカスタム・ソース・コントロール・クラスを使用できるように、コードでファイルの基本的な場所を構成する方法も提供する必要があります (マッピングを完全にハードコーディングするのではなく)。
ドキュメントとファイルを管理するツール
InterSystems IRIS には、ドキュメントと外部ファイルを管理するために、以下のツールが用意されています。
-
InterSystems IRIS ドキュメントをエクスポートするには、使用するファイル形式に応じて、以下のいずれかを使用します。
-
UDL ファイルの場合は、$system.OBJ.ExportUDL() を使用します。
-
XML ファイルの場合は、$system.OBJ.Export() を使用します。
UDL ファイルは、IDE で見られるコードにより類似しています。
-
-
(いずれかの形式の) ファイルをインポートするには、$system.OBJ.Load() を使用します。
-
InterSystems IRIS ドキュメントのタイムスタンプやコンパイル日時を取得するには、%RoutineMgr.TS クラス・メソッドを使用します。
ソース・コントロール・システムへのアクセス
ソース・コントロール・システムの API には、ファイルのチェック・アウトなど、ソース・コントロールの機能を実行するためのメソッドまたは関数が用意されています。ソース・コントロール・クラスは、この API の適切な呼び出しを行う必要があります。また、InterSystems IRIS サーバは、API 自体を定義する共有ライブラリまたは他のファイルの場所を特定する必要があります。
また、InterSystems IRIS が InterSystems IRIS サーバ上でソース・コントロール・コマンドを実行することにも注意する必要があります。つまり、XML ファイルは InterSystems IRIS サーバ上にあり、ファイル・マッピングが、そのサーバ上で使用するオペレーティング・システムで機能する必要があります。
例 1
以下のフラグメントでは、VSS の API 用のラッパ・メソッドを生成しました。次に、ソース・コントロール・メソッド内に以下のようなコードを含めることができます。
do ..VSSFile.CheckIn(..VSSFile.LocalSpec,Description)
詳細は、ソース・コントロール・ソフトウェア、その API、および要件によって異なります。
例 2
以下のフラグメントでは、Windows コマンド行インタフェースを使用してファイルをチェック・アウトしています。この例では、ソース・コントロール・システムは Perforce です。
/// Check this routine/class out of source control.
Method CheckOut(IntName As %String, Description As %String) As %Status
{
Set file=..ExternalName(IntName)
If file="" Quit $$$OK
//...
Set cmd="p4 edit """_file_""""
#; execute the actual command
Set sc=..RunCmd(cmd)
If $$$ISERR(sc) Quit sc
#; If the file still does not exist or
#; if it is not writable then checkout failed
If '##class(%File).Exists(file)||(##class(%File).ReadOnly(file)) {
Quit $$$ERROR($$$GeneralError,
"Failure: '"_IntName_"' not writeable in file sys")
}
#; make sure we have latest version
Set sc=..OnBeforeLoad(IntName)
If $$$ISERR(sc) Quit sc
//...
Quit sc
}
この例では、RunCmd() は、指定したコマンドを実行して一部の汎用エラーのチェックを行う別のメソッドです。(RunCmd() は、コールアウト・インタフェースから OS コマンドを発行します。)
また、この CheckOut() メソッドは、InterSystems IRIS ドキュメントと外部 XML ドキュメントを同期させる OnBeforeLoad() メソッドを呼び出します。
ソース・コントロール・クラスの有効化
指定したネームスペースに対してソース・コントロール・クラスを有効にするには、管理ポータルで以下を実行します。
-
[システム管理]→[構成]→[追加設定]→[ソースコントロール] を選択します。
-
ページの左側で、この設定に適用するネームスペースを選択します。
-
使用する拡張クラスの名前を選択して、[OK] を選択します。
このリストには、選択されたネームスペースにある、%Studio.Extension.BaseOpens in a new tab のコンパイル済みサブクラスがすべて含まれます。
新しいメニュー・オプションを表示するために、IDE でワークスペースを再度開かなければならないことがあります。
管理ポータルの [プロダクション構成] ページでも、ソース・コントロールがサポートされます。"ソース・コントロール設定の構成 を参照してください。
関連項目
-
ソース・コントロール設定の構成 (相互運用プロダクションに関連するオプション)
-
Developer Community の Video: Visual Studio Code for ObjectScript: Choosing an IDE/Source Code CombinationOpens in a new tab