(※このトピックスは、Valence開発元(米CNX社)のブログ記事を翻訳・再編集したものとなります。原文記事は、コチラとなります。)
Nitro App Builder (NAB)で作成したデータソース、ウィジェット、およびアプリが多くなるにつれて、NAB オブジェクトをあるインスタンスから別のインスタンスに移動したり、NAB アプリ全体を別の IBM i システム、またはパーティションに展開することがあると思います。また、変更を「ロールバック」するために、データソース/ウィジェット/アプリの以前の状態を復元する場合もあります。
これらの処理はすべて、NABに組み込まれたインポート/エクスポート機能、およびバッチコールやスクリプトによって実現できます。バッチコールを社内の変更管理プロセスに追加すれば、バックエンドのRPGプログラムと連動してNAB要素を開発インスタンスから本番インスタンスに移動させることも可能です。
このTipsでは、これらの様々なインポート/エクスポート機能の使い方を探るとともに、Valence 6.1で導入された新しいインポート/エクスポート機能を確認することにします。
まず最初に、NABオブジェクト(データソース、ウィジェット、アプリ)をあるインスタンスから別のインスタンスに移動する3つの方法について説明します。
(1) 他のインスタンスへのダイレクトエクスポート
NAB オブジェクトをある Valence インスタンスから別のインスタンスにコピーする最も簡単な方法は、両方のインスタンスが同じシステム上にある場合、ダイレクトエクスポートオプションを使用する方法です。「インスタンス管理」アプリで定義されたインスタンスであれば、この方法を使用することができます。インスタンス間で機能が失われないように、両方のインスタンスが同じメジャーリリース(理想的には 6.1)であることが推奨されます。
この方法を利用するには、エクスポートする NAB オブジェクトに隣接する行メニューセレクタをクリックし、エクスポート > インスタンス を選択して、目的のエクスポート先インスタンスをクリックします(データソースとウィジェットの場合、エクスポートはその他のサブメニュー内にあります)。アプリをエクスポートする場合、基礎となるすべてのデータソースとウィジェットは、アプリの定義と一緒にエクスポートされます。
エクスポート先のインスタンスを選択すると、NAB は、エクスポートされるオブジェクトが既にそのインスタンスに存在し、初めてそのインスタンスにエクスポートされるオブジェクトを判断します。結果は確認ウィンドウに表示され、[確認]ボタンをクリックすると、NAB で置き換えまたは追加されるオブジェクトが表示されます。
一致するオブジェクトは、オブジェクトが最初に作成された日付と時間に基づいて決定されることに注意してください。NAB オブジェクトのメインリストで右上の歯車をクリックし、[作成] チェックボックスをオンにすると、これらの作成日時の値を確認することができます。
(2) SAVFファイルにエクスポートして、インポートする
NAB オブジェクトを別のシステムに送信する必要がある場合、または単にバックアップ目的で NAB オブジェクトの現在の状態を保持する場合、オブジェクトを保存ファイルにエクスポートすることができます。このSAVFファイルを使用して、エクスポートした NAB オブジェクトを任意のシステムの Valence インスタンス(やはり同じメジャーリリース(6.1)で動作していることが理想的)にインポートすることができます。
この方法を使用するには、エクスポートする NAB オブジェクトに隣接する行メニューセレクタをクリックし、[エクスポート] > [ファイルの保存] を選択します(データソースとウィジェットの場合、[エクスポート] は [その他] サブメニュー内にあります)。プロンプトウィンドウが表示され、”Name “フィールドに保存ファイルの説明を、”Note “フィールドに保存ファイルリポジトリの補足説明を指定することができます(オプション)。保存ファイルリポジトリはValence 6.1の新機能であり、以下で詳しく説明します。
OKをクリックすると、NABオブジェクトをカプセル化した保存ファイルが、VVEXPORTという特別なライブラリに作成されます。
NAB オブジェクトを別の IBM i システムで使用できるようにする場合は、お好きな方法を使用して、保存ファイルを元の VVEXPORT ライブラリから宛先システムの VVEXPORT ライブラリに転送します。次に、転送先システムの適切な Valence インスタンスにログインし、Nitro App Builder を起動して、右下のプラス・ボタンにカーソルを合わせると表示される[インポート]ボタンをクリックします。これにより、VVEXPORT ライブラリに存在するインポート可能な保存ファイルのリストが表示されます。
目的のファイルを選択し、右上の [Preview first] チェックボックスをオンにすると、他のインスタンスに直接エクスポートするときと同じ確認ウィンドウが表示されます。確認]ボタンをクリックして、インスタンスの NAB オブジェクトの追加または置換を続行します。
(3) バッチプログラム(RPG)コールによるエクスポートとインポート
NABオブジェクトのエクスポートの3つ目のオプションは、特定のプログラムを呼び出してエクスポートとインポート処理を行うもので、基本的に上記のオプション(1)または(2)で説明した手順を反映しています。
この方法の最初のステップは、VVEXPORTを呼び出してNABオブジェクトを特定のインスタンスにエクスポートするか(オプション1)、後で別の場所にインポートするために保存ファイルを作成すること(オプション2)です。
VVEXPORTに渡すパラメータは以下の通りです。
- タイプ(20A)。3 つの値のうちの 1 つ。DATA_SOURCE、WIDGET、APP の 3 つの値のいずれか。
- id(15P 5)。データソース、ウィジェット、またはアプリに関連付けられた数値の NAB オブジェクト ID (Id 列に表示される)
- description override(64A)。空白でない場合、保存ファイルの説明に使用されます。そうでなければ、保存ファイルの説明は、エクスポートされるデータソース、ウィジェットまたはアプリから取得されます。
- エラーフラグ(1A)。処理中にエラーが発生した場合、”1 “が返される
- メッセージ(256A)。このフィールドにリポジトリに対する任意のメモを渡します。処理中にエラーが発生した場合、このフィールドに例外状況の詳細を示すテキストが返されます。
- 宛先インスタンス(10A)。他のインスタンスに直接エクスポートする場合は、ここでインスタンス名を指定する必要があります。保存ファイルのみを作成する場合は空欄にします。
- モード(1A)です。ハードコードされた値 “3 “は、プログラムがValenceの外で呼び出されていることを示します。
VVEXPORT が別のマシンやパーティションにインポートするために保存ファイルにエクスポートするよう指示された場合、次のステップは、生成された保存ファイルを目的の場所にコピーするルーチンまたはスクリプトをプログラムで実行することです。作成された 10 文字の保存ファイルの名前は、「message」パラメータで 10 文字目の位置から渡されます。
次に、以下のパラメータを指定して、宛先のシステムまたはパーティションでVVIMPORTを呼び出す必要があります。
- タイプ(20A)。3 つの値のうちの 1 つ。DATA_SOURCE、WIDGET、APP の 3 つの値のいずれか。
- セーブファイル名(10A)。作成されたセーブファイル名(VVEXPORTからメッセージパラメータで返される、10文字の位置から始まる)。
- セーブファイルライブラリ(10A)。セーブファイルが置かれたライブラリ(通常はVVEXPORT)
- デスティネーションライブラリ (10A)。NABオブジェクトを配置するライブラリ名(Valenceインスタンス)
- モード(10A)になります。ハードコードされた値 “BATCH_EXEC “がここに渡され、プログラムにValenceの外側から呼び出されていることを伝える必要がある。
- リターンメッセージ(256A)。インポート処理中に何らかの例外が発生した場合、このパラメータを通じて問題の説明が返されます
これらのプログラムによるエクスポート/インポート手順を変更管理ソフトウェアに組み込むことで、バックエンドの RPG 終了プログラムおよびアプリが使用するその他の IBM i オブジェクトと連携して Valence NAB アプリを同時に展開することが可能になります。現在、Midrange Dynamics社のMDCMS製品にこのロジックを組み込むため、同社と協働しています。このコラボレーションの詳細については、今後のニュースレターで発表する予定です。
Valence 6.1 の新しい NAB SAVFファイルリポジトリと破棄ロジック
VVEXPORT ライブラリにある膨大な数の NABのSAVFファイルの管理を容易にするため、Valence 6.1 では新しいSAVFファイル「リポジトリ」概念が導入され、不要になったSAVFファイルを NAB が自動的に破棄するロジックも追加されました。
リポジトリは基本的に、VVEXPORTで作成されたすべてのSAVFファイルの追加情報を含む拡張ファイルです。詳細情報は VVEXPORTS というファイルに保存され、SAVFファイルが作成された特定の Valence インスタンスとバージョン、作成者、いつ、どこでインポートされたか、SAVFファイルの内容に関する追加メモなどの情報が含まれます(ただし、SAVFファイルが Valence 6.1 以上を実行しているインスタンスで作成された場合)。この拡張情報は、VVEXPORTのインポートリストの各SAVFファイルの横に表示されます。”View last imported “チェックボックスをクリックすると、リストされたSAVFファイルが最後、いつインポートされたかを確認することができます。
一度インポートしたSAVFファイルは、「ポータル管理」 > 「設定」 > 「Nitro App Builder」 > 「エクスポートしたSAVFファイルの存在期間(日単位)」で指定したインポート日からの日数(デフォルトは14日)を経過すると、自動消去の対象となります。この自動消去機能は、値を 9999 などの大きな数値に設定することで、無効にすることができます。
VVEXPORT に保存され、まだインポートされていないSAVFファイルは自動的に削除されないので、不要なSAVFファイルを削除してライブラリを手動で管理することがあります。SAVFファイルを削除すると、次にユーザーが NAB でインポートを実行したときに、リポジトリ内の対応するレコードが削除されます。