記事
Hiroshi Sato · 2020年12月15日 3m read

クラス定義をスタジオ、Atelier以外を使用して作成する方法

これはInterSystems FAQ サイトの記事です。
 

InterSystems OpenExchangeのVS Code用のプラグインを利用することでVS Code上でクラス定義の編集が可能です。

(今後は、AtelierではなくVS Codeの使用を推奨しています。)


詳細は、以下ページをご参照ください。


vscode-objectscript

 

また、逆にテーブル定義からクラス定義を生成することも可能です。

方法①として、他社RDBMS用に作成したDDL文をインターシステムズ製品上で実行、またはインポートする方法があります。


詳細は、以下ドキュメントをご参照ください。


DDL文の実行について【IRIS】
DDL文の実行について

 

方法②として、クラス定義クラス・%Dictionary.ClassDefinitionで定義されているAPIを利用し、プログラミングにより操作する方法があります。

クラス定義クラスは、システムクラスであり、スタジオや他のエディターで作成されたクラスは全てこのシステムクラスを使いクラスディクショナリに定義情報が格納されています。

このクラス詳細については、以下ドキュメントをご参照ください。


%Dictionaryパッケージ(クラス定義クラス)について【IRIS】
%Dictionaryパッケージ(クラス定義クラス)について

方法②については、サンプルに処理の詳細をまとめています。

以下のGitHubリポジトリをご参照ください。

 

クラス定義ファイルを読んでクラスを生成する

 

サンプルの中では、プロパティやメソッドなど設定項目は、外部のファイルを読み込みながら作成しています。

サンプルプログラムは、クラスメソッドとして処理を記述していますが、ルーチンで作成しても動作します。

サンプルクラスメソッドの詳細は、

以下の通りです。

■ クラスメソッド=CreatePro (プロパティ追加用)
  引数1:パッケージ名.クラス名 → 作成されたい名前
  引数2:読込みファイル(フルパス指定)→設定したいプロパティ
  引数3:ファイルのデリミタ(省略時タブが使用されます)  <サンプルファイル>
  Customerクラス用=Customer-pro.txt
  Companyクラス用=Company-pro.txt ターミナルからの実行例は以下の通りです。

 Set file="C:\temp\Company-pro.txt"
 Do ##Class(ClassDef.Utility).CreateMethod("パッケージ名.クラス名",file)

■ クラスメソッド=CreateMethod (メソッド追加用)
  引数1:パッケージ名.クラス名 → 追加対象のクラスを指定
  引数2:読込みファイル(フルパス指定)→設定したいプロパティ
  引数3:ファイルのデリミタ(省略時タブが使用される)
 <サンプルファイル>
  Csutomerクラスへの追加用=Customer-method.txt ターミナルからの実行例は以下の通りです。

 Set file="C:\temp\Customer-method.txt"
 Do ##Class(ClassDef.Utility).CreateMethod("パッケージ名.クラス名",file)

<メモ>スタジオでのサンプルファイルインポート方法
 スタジオ: [ツール] > [ローカルからインポート] > [添付のXMLファイルを指定しインポート]

00
1 0 0 28