57.2.6. 6.KeyValuePairField
KeyValuePairField アノテーションは、キーと値のペアフィールドのプロパティーを定義します。各 KeyValuePairField は、タグ(= キー)とその値が関連付けられる、タイプ(文字列、int、date、…)によって識別され、オプションでパターンとフィールドが必要な場合に識別されます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| KeyValuePairField | 鍵値ペア - 修正 | プロパティー |
| パラメーター名 | タイプ | 必須/任意 | デフォルト値 | Info |
|---|---|---|---|---|
| tag | int | ✓ | メッセージのフィールドを識別するタグ(必須)は一意である必要があります。 | |
| impliedDecimalSeparator | boolean | false | <b>Camel 2.11:</b>: 指定した場所に 10 進数のポイントが暗示されるかどうかを示します。 | |
| name | 文字列 | フィールドの名前(オプション) | ||
| pattern | 文字列 | リンカーがデータの変換に使用するパターン(オプション) | ||
| position | int | 0 | メッセージのフィールドの位置:FIX メッセージ内のキー/タグの位置が異なる場合に使用する必要があります。 | |
| 精度 | int | 0 | 作成される BigDecimal 番号の精度 | |
| 必須 | boolean | false | フィールドが必須かどうかを示します。 | |
| timezone | 文字列 | 使用するタイムゾーン。 |
case 1 : tag
このパラメーターは、メッセージの フィールドのキーを表します。
FIX メッセージ - タグ
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String Account;
@KeyValuePairField(tag = 11) // Order reference
private String ClOrdId;
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String IDSource;
@KeyValuePairField(tag = 48) // Fund code
private String SecurityId;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String Side;
@KeyValuePairField(tag = 58) // Free text
private String Text;
}
ケース 2: 出力内の異なる位置
FIX メッセージに配置するタグ/キーが事前定義順序に従ってソートされる必要がある場合は、@KeyValuePairField アノテーションの属性の 位置 を使用します。
FIX message - Tag - sort
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
}