RPC エンティティ
概要
RPC エンティティとは、メインフレームおよび AS400 RPC プログラム、SOAP サービス、ストアドプロシージャなどのモデルとして使用されるプレーン Java オブジェクトです。
構造
RPC エンティティは 、RPC フィールド、RPC パートおよび包含する RPC エンティティの 3 つの主要なパートで構成されます。
RPC フィールド - @RpcField
に注釈が付けられた普通の Java フィールド。バックエンドプログラムのフィールドを表わす必要があります。
RPC フィールドは、バックエンドのプログラム構造オブジェクトを表わす RPC パートで体系化できます。RPC パートは、@RpcPart
に注釈が付けられた Java クラス または 静的ネストクラス です。
右の コードスニペットは基本的な RPC エンティティ構造の例です。RPC フィールドは RPC パート(必須ではない)に包含され、次に RPC エンティティに別の RPC フィールドとともに包含されます。ネストパートの階層は、特定数のレイヤまたは Java 静的ネストクラスに制限されません。RPC パートも別のクラスとして定義できます。OpenLegacy の専門用語によると、この種類のクラスは外部 RPC パートと呼ばれます。RPC フィールドは、レガシータイプの慣行に従い、任意のJava タイプにできます。
内包 RPC エンティティは、SDK プロジェクトが実行する必要がある単一バックエンドプログラム(入力、出力およびメタデータ)を表わします。
RPC エンティティの定義および動作は、@RpcActions
、@Actions
、 @RpcNavigation
などのさまざまなプロパティで定義できます。
Rpc エンティティ
@RpcEntity(name="Books", language=Languages.COBOL)
@RpcActions(actions = {
@Action(action = EXECUTE.class, path = "BOOKS")})
public class Items {
@RpcField(originalName = "BOOK")
private Book bookPart;
@RpcPart(name = "InnerRecord", originalName = "INNER-RECORD", displayName = "INNERRECORD")
public static class Book {
@RpcField(length = 16, originalName = "TITLE" legacyType = "Char")
private String title;
@RpcField(length=20, originalName ="AUTHOR", legacyType = "Char")
private String author;
@RpcNumericField(minimumValue = -9999, maximumValue = 9999, decimalPlaces = 0)
@RpcField(length = 2, originalName = "ISBN", legacyType = "Binary Integer")
private Integer isbn;
@RpcField(length = 28, originalName = "DESCRIPTION", legacyType = "Char")
private String description;
}
} |
RPC プロパティ
@RpcEntity
、 @RpcField
および @RpcPart
などのプロパティは構造プロパティで、OpenLegacy コネクタによる Java コードのパートの取扱方法の定義に使用されます。Java クラスが、以下の @RpcEntity
、 @RpcPart
、@RpcEntitySuperClass
および @RpcPartSuperClasss
のいずれかで注釈が付けられている場合は、次の追加ロジックが Java クラスのコンパイル中に適用されます。
クラスの各フィールドの
getters
およびsetters
の生成List<RpcActionDefinition> アクション
フィールドおよびその getter/setter の生成補助注釈の生成 (
@JsonIgnore
、@XmlAccessorType
、@XmlTransient
)Json および Xml にシリアル化する際の
非表示アクションおよびその他の関連性のないフィールド
ランタイムにおける RpcEntity の動作は、以下のプロパティを使用してコントロールできます。
@RpcActions
および@Action
@Hidden
を除く、RPC フィールドのプロパティ方向列挙
以下の表は、RPC プロパティ(注釈)と OpenLegacy RPC モデルクラス間の関係を示しています。
RPC エンティティプロパティ | RPC フィールドプロパティ | RPC パートプロパティ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アクション
アクションはエンティティ上に @RpcActions
注釈付きで指定され、現在のエンティティで実行できるすべてのアクションが含まれます。
@RpcActions
には、アクションを指定する @Actions
のアレイが含まれます。@Actions
注釈はいくつかの属性で構成されます。
action 属性は必須で、どのアクションを実行( READ、EXECUTE、UPDATE、DELETE、GET、POST)するかを宣言します。
path 属性は、レガシーシステムの実行可能プログラムへのパスを定義します。このプロパティを定義して、正しいプログラム/プロシージャ/REST API をトリガーする必要があります。
alias 属性は、指定した別名でアクションを使用する別のオプションです。
displayName 属性はデモ専用です。
olCache および olCacheEvict 属性は、特定のアクションのキャッシュ構成を定義できます。キャッシング OpenLegacy エンティティについて参照
RpcActions
@RpcEntity(name="Items", language=Languages.COBOL) @RpcActions(actions = { @Action(action = SHOW.class, path = ""), @Action(action = EXECUTE.class, path = "ITEMS", displayName = "Execute", alias = "execute" ) }) public class Items { ... }
RPC フィールドプロパティ
Rpc Entity の各フィールドは @RpcField
で注釈する必要があります。
@RpcField
注釈には、現在のフィールドの定義をカスタマイズできる複数の属性があります。以下は、この注釈で使用される主な属性の一部です。
length 属性は、バッファでこのフィールドが占めるバイト数を定義します。
originalName 属性は、バックエンドシステムのフィールド名を説明します。
legacyType 属性は、バックエンドプラットフォームのフィールドのタイプを宣言します。注: この属性の使用はプラットフォームにより異なります。使用前に、この属性がお使いのプラットフォームに関連しているかどうかを確認してください。
order 属性は、エンティティのシリアライズ中に読まれるフィールドのデフォルト順序を変更する場合に使用します。
direction 属性は、フィールドを入力、出力、Input_Output またはエラーとして定義する場合に使用します。direction 属性は、以下の方向を定義する方向列挙のオブジェクトです。入力、出力、INPUT_OUTPUT、エラーおよび なし。デフォルト方向は INPUT_OUTPUT です。
@RpcBooleanField
、 @RpcNumericField
、@RpcList
などは、@RpcField
注釈と一緒に使用できます。
@RpcBooleanField
は、ブール値フィールドの定義、真/偽値を設定してバックエンド値プラットフォームと一致させる場合に使用します。
@RpcDateField
は、日時形式の定義およびバックエンドプラットフォームのロケールに使用します。
@RpcNumericField
を使用すると、最小および最大値、小数位および表示パターンを定義できます。
@FieldAttribute
注釈は、フィールドに関する追加メタデータの提供に使用します。
@RpcList
を使用すると、バックエンドプラットフォームのリスト構造を表すフィールドを定義できます。count 属性はリストの長さを定義します。カウントが 0 の場合は、リストは変数長の動的リストとみなされます。
追加
@RpcNavigation
注釈は、 category 属性があるカテゴリ名を定義します。このカテゴリは Web ソリューションのエンティティ表示に使用されます。@Hidden は、ビュー内の注釈付きフィールドを非表示にする場合に使用されます。