生成される出力のコードのブロックは、BEGIN で始まり END で終了する EGL コメントで区切られます。例えば、次のようになります。
/*
* この関数は、指定されたレコードが有効である場合に true を返します。
* 必要に応じてカスタマイズし、検査規則を指定します。
* isValid() は、データベースの行を更新または挿入する前に呼び出されます。
*/
//BEGIN IsValid
// @generated - 変更されたコードを保持するために generated タグを削除
Function IsValid(testRecord Employee) returns( boolean )
return( true );
end
//END IsValid
BEGIN と END タグ間のコードを変更できます。ただし、既存の関数をカスタマイズする場合は、慎重に行ってください。
UML モデルを再変換する場合に、変更内容を保持するには、@generated タグを含むコメント行を削除します。既存の BEGIN および END タグによって区切られた領域外に追加されたコードは、変換中に失われます。
変更したコードに BEGIN および END タグを追加するだけでは、確実な保持を行う上で十分ではありません。
既存の関数を変更すると、関数が適切に機能しなくなる場合があります。
変換による生成物を変更するようにライブラリー関数および UML モデルまたは変換パラメーターを変更する場合、更新後の変換出力を使用して、変更したコードを調整する必要もあります。
また、以下の変更の影響を考慮する必要があります。
- コードの削除
- キー
- ユーザー・インターフェース
- コミット点
- ページ付き検索結果
カスケード削除の考慮事項
生成される削除関数はカスケードを行いません。
関数がビジネス・ニーズを満たすようにするには、以下を行います。
- サンプル DDL を検査し、DBMS により強制されるカスケード指示を追加します。
- 生成される削除関数を検査し、必要に応じてカスケードを処理するコードを追加します。
- 生成されるカスケードは存在しないため、UI のユーザーは、外部キー制約に違反する方法で削除が実行されないようにする必要があります。
これらの制約に違反する方法で削除を実行しようとすると、失敗します。
- 行が削除される場合、多対多の関連により生成される関連表の行は削除されません。
作業基準に従って、この動作を行うコードを追加する必要があります。
データベース・キーの考慮事項
既存のデータベースと UML モデルでは、変換時のデータベー
ス・キーの処理方法が異なります。
- UML モデルから変換する場合、変換パラメーターをクラス属性に追加して、属性がキー列を表すかどうかを指定できます。
UML モデルの変換時、データベース接続は存在しないため、キー列の値は不明です。
キーを指定しない場合、INTEGER 型のキー列が、生成される表定義および対応する SqlRecord に挿入されます。キー列は必須です。
- データベース・スキーマから変換する場合、キー列は、データベース・スキーマの値を使用して作成されます。
キー列がデータベースに含まれない場合、デフォルトは作成されません。
表定義またはウィザードのいずれかにおいてキーを指定しないと、生成
されるライブラリーが正しく機能しません。
この場合、EGL データ・アクセス関数を正しく機能させるためのコードを追加する必要があります。
ユーザー・インターフェースの考慮事項
検索可能なデータベース要素、および検索の結果として表示される要素に関連するデータを、変換パラメーターの一部として指定できます。
検索および要約のフィールドを含むインターフェース・ページを作成する場合、以下を考慮する必要があります。
コミット点の考慮事項
EGL コミット点は、操作中のどの時点でデータがデータベースに保存されるかを識別します。
生成されるデータ・アクセス・ルーチンには、明示的なコミット点は含まれません。実行単位に基づいて、暗黙的コミットおよびロールバックの一般的な EGL 動作が使用されます。
ビジネス・ニーズがデフォルトの内容と異なる場合、ビジネス・ニーズを満たす明示的なコミット点を追加する必要があります。
ページ付き検索結果の考慮事項
ページ制御関数は、生成されるデータ・アクセス・ライブラリーに組み込まれます。
これにより、生成される JSP は、効率的な方法
で、検索結果にページ付けできます。
ターゲット・データベース管理システム (DBMS) が以下の EGL ステートメントをサポートしない場合、リスト・ページ JSP を使用する前にこの関数を変更する必要があります。
- OPEN <resultSet> SCROLL
- GET ABSOLUTE
- GET RELATIVE
また、一部の DBMS では、LONG VARCHAR または LOB 列を含む対象を選択する際にスクロール可能カーソルを使用できません。この場合、リスト・ページ JSP を使用する前に、ページング関数を変更する必要があります。