スキーマ・ノードおよび属性
ビジネス・オブジェクト定義の場合、スキーマの目的はスキーマとメンテナンス・オブジェクトの間にリンクを作成することです。ビジネス・サービス定義の場合は、スキーマとサービス(一般的なサービス、検索サービスまたはメンテナンス・オブジェク・サービスのいずれか)の間にリンクを指定します。サービス・スクリプト定義の場合は、スクリプトとの間で情報を受け渡しするためのAPIを定義します。次のドキュメントは、スキーマの構成時に使用可能なXMLノードおよび属性の全リストです。
内容
4つの要素タイプ
スキーマ要素は4つの異なる構造タイプのいずれかです。要素タイプには2つのクラス(構造ノード・グループとリストおよびフィールドと未処理のノードが含まれたデータ)があることに注意してください。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
type= | "field" |
フィールド・タイプは、フィールド以外の何かに明示的にラベル付けされていない要素に対するデフォルトのタイプです。したがって、実際には、要素をフィールドとして明示的にラベル付けする必要はありません。フィールド要素には、グループやリストと異なり、他のノードではなくそのノード内に情報が含まれることに注意してください。 |
|
"group" |
グループ要素は通常、スキーマのみの構造要素で、この場合マッピングはありません。 ビジネス・オブジェクト・ドリブン・レコードのCLOB/XMLフィールドのXML構造のマップにすべて使用するいくつかの要素をグループ化する場合、そのマッピングはグループ・レベルで可能であることに注意してください。 |
構造の作成にグループが使用されている例
グループにマッピングが含まれている例:
|
|
"list" |
リスト・ノードはグループ・ノードのような構造ノードです。唯一の違いは、リスト構造には1つのXMLドキュメント内で複数回反復する機能があることです。 |
リストを使用したスキーマの例:
リストを使用したスキーマの例:
|
|
"raw" |
Rawデータ型は、関連する固有の構造がないRawテキストのチャンクを取得するために使用されます。 |
前述のスキーマに対するXMLインスタンスの例:
|
フィールド要素のデータ型
4つの異なる要素タイプで、データ型を指定できるのはフィールドのみです。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
dataType= | "string" |
デフォルトでは、フィールド要素は文字列です。したがって、文字列データ型の指定は不要です。 |
|
"number" |
数値の要素を定義します。 注意: UIヒントには、自動数値書式設定を非表示にするための設定が含まれています。
注意: 参照されている通貨コードと関連付けられた通貨記号の自動表示には、currencyRef属性を使用します。この書式設定によって通貨の小数点以下桁数は無視されるため、小数点以下の桁数が多い単位料金の通貨記号を表示できます。
|
例
|
|
"money"
オプションの追加属性 currencyRef="要素名" |
金額を示す要素を定義します。 この通貨参照はオプションで、空白のままにした場合は、インストール通貨が使用されます。自動書式設定および検証は通貨に基づいて適用されます。たとえば、自動レンダリングの際に通貨記号が表示されます。さらに、小数点以下桁数は、通貨に定義されている有効な桁数を超えることはできません。 注意: 他の要素を参照するためにサポートされている構文については、「他の要素の参照」を参照してください。
|
|
|
"lookup"
必須の追加属性 lookup="フィールド名" |
参照を使用して、有効な値が定義された要素を定義します。参照フィールドは必須です。 |
|
|
"lookupBO"
必須の追加属性 lookupBO="ビジネス・オブジェクト名" |
拡張可能参照を使用して、有効な値が定義された要素を定義します。拡張可能参照のビジネス・オブジェクトは必須です。 |
|
|
"boolean" |
「Y」および「N」の値がある要素を定義します。 |
|
|
"date" |
日付を示す要素を定義します。 |
|
|
"dateTime" |
日付と時刻を示す要素を定義します。 注意: 標準時を示す日時フィールドに対して使用可能な追加構成については、「標準時の考慮事項」を参照してください。
|
|
|
"time" |
時刻を示す要素を定義します。 |
|
|
"uri" |
URIを取得する要素を定義します。このタイプを使用して定義した要素を使用すると、「URIの参照」で説明されているように、URI許可リストおよび置換をサポートできます。 |
|
他の要素の参照
同じスキーマ内の他の要素を参照できる属性がいくつかあります。サポートされているXPath参照の構文は、すべての場合において同じです。この項では、デフォルトの参照属性(defaultRef)を使用した例を示します。
兄弟要素の参照:
<schema>
<id mapField="ACCT_ID" required="true"/>
<altId defaultRef="id" required="true"/>
</schema>
上位グループ内要素の参照:
<schema>
<id mapField="ACCT_ID" required="true"/>
<msgInfo type="group" mapXML="XML_FIELD">
<altId defaultRef="../id" required="true"/>
</msgInfo>
</schema>
下位グループ内要素の参照:
<schema>
<id mapField="ACCT_ID" defaultRef="msgInfo/altId" required="true"/>
<msgInfo type="group" mapXML="XML_FIELD">
<altId required="true"/>
</msgInfo>
</schema>
他のグループ内要素の参照:
<schema>
<acctInfo type="group">
<id mapField="ACCT_ID" required="true"/>
</acctInfo>
<msgInfo type="group" mapXML="XML_FIELD">
<altId defaultRef="../acctInfo/altId" required="true"/>
</msgInfo>
</schema>
標準時の考慮事項
ほとんどの日時フィールドは法定時間を示しており、タイム・ゾーンによって夏と冬の時間が変更された場合、日時フィールドでは現在の実測時間が取得されます。ただし、一部の日時フィールドは、混乱/不明確を回避するために標準時で取得する必要があります。典型的な例は、詳細なインターバル・データに関連する日時です。詳細は、「タイム・ゾーンの設計」を参照してください。
dataType="dateTime"を使用して要素を定義した場合は、オプションでstdTime="true"を構成し、要素内の取得データが常に基準タイム・ゾーンの標準時であることを示すことができます。基準タイム・ゾーンは、インストール・オプションで指定されます。
例:
<schema>
<startTime dataType="Time" stdTime="true"/>
</schema>
日時フィールドを示すタイム・ゾーンがインストール・タイム・ゾーンでない場合は、日時要素でオプション設定のstdTimeRef="タイム・ゾーン要素へのXPath"を使用して、その要素が標準時を示し、使用するタイム・ゾーンであることを示します。他の要素を参照するためにサポートされている構文については、「他の要素の参照」を参照してください。
例:
<schema>
<alternateTimeZone fkRef="F1-TZONE" suppress="true"/>
<startDateTime dataType="dateTime" stdTimeRef="alternateTimeZone"/>
</schema>
あるタイム・ゾーンで標準時として取得された日時を、別のタイム・ゾーンを使用して表示する必要がある場合があります。この場合は、データの取得タイム・ゾーンを識別する適切な属性に加えて、属性displayRef="XPath"を使用できます。サポートされている構文については、「他の要素の参照」を参照してください。
<schema>
<displayTimeZone fkRef="F1-TZONE" suppress="true"/>
<startDateTime dataType="dateTime" stdTime="true" displayRef="displayTimeZone"/>
</schema>
マッピング属性
スキーマを構成する場合は、次のマッピング属性のいずれかを選択できます。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
mapField= | "フィールド名" |
ビジネス・オブジェクトの場合は、要素が関連しているデータベース列を識別するためにmapField属性が使用されます。ビジネス・サービス・スキーマの場合は、スキーマ要素をサービス要素にリンクするためにmapField=属性が使用されます。 |
|
mapChild= | "表名" |
mapChild属性は、ビジネス・オブジェクト・マッピングに対してのみ使用されます。2つの方法で使用されます。
|
ビジネス・オブジェクトの子表内のリストの例:
|
mapList= | "リスト名" |
mapList属性は、ビジネス・サービス・マッピングに対してのみ使用されます。2つの方法で使用されます。
|
ビジネス・サービス内のリストの例:
|
mapXML= | "フィールド名" |
mapXML属性は通常、XML構造をサービスの大文字/XMLフィールドにマップするために使用されます。mapXMLを使用してリスト構造またはグループ構造(type="list"またはtype="group")をマップする場合は、構造内のすべての子要素のマップは不要であることに注意してください。リスト要素は、そのリストの子に関連付けられた大文字フィールドにマップすることもできます。 |
|
isPrimeKey= | "true" |
主キーは、マップされているXML要素(type="list" mapXML="CLOB")内に定義されているリストに対して指定する必要があります。主キーは、ビジネス・オブジェクトの更新時にリスト要素の追加、更新または削除が必要かどうかを判断するときに、フレームワークによって使用されます。 注意: メンテナンス・オブジェクト・リストにマップされているビジネス・オブジェクト・リストに対して主キーを指定する必要はありません。物理リストがマップされている場合、主キーは既存の物理メタデータから導出されます。
|
|
orderBy= | "XPath asc|desc, XPath asc|desc" |
デフォルトでは、マップされているXML要素(type="list" mapXML="CLOB")内に定義されているリストは、そのリストの最初の要素でソートされます。異なるソート順は、orderBy属性を使用して指定できます。属性値は、オプションのソート順(デフォルトは昇順)を使用したフィールドXPath (リスト要素に対して相対的に指定)のカンマ区切りリストです。 注意: これを使用できるのは、ビジネス・オブジェクト内にXMLとしてマップされているリストのみです。
|
|
摘要属性
次の属性は、スキーマ要素を説明し、その要素に関連する追加の構成を提供するために使用できます。通常、これらの属性が役立つのは、フィールド要素に対してのみです。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
<!-- comment --> |
これを使用し、特別なオープン文字およびクローズ文字: <!-- and -->を使用して、スキーマにコメントを追加します。 |
|
|
description= | "テキスト" |
要素の摘要を使用すると、要素の内部摘要を提供できるため、スキーマの読者が要素のビジネス理由を理解するために役立ちます。 |
|
label= | "テキスト" |
要素のラベルは短い語句を想定しており、通常、ユーザー・インタフェースでは要素の前にあります。 |
|
required= | "true" |
オブジェクト相互作用時に要素の存在を要求するために使用されます。 注意: 包含されるスキーマの場合、そのスキーマがサービス・スクリプト・スキーマ内に含まれていると、required="true"属性は、ビジネス・オブジェクトおよびビジネス・サービスのスキーマでは処理されません。これは、サービス・スクリプトの機能をサポートして、埋込みビジネス・オブジェクトまたはビジネス・サービスがサーバー・スクリプトから起動される前に必須要素を移入するためです。
|
|
mdField= | "フィールド・コード" |
メタデータ・フィールド属性は、要素をフィールドのメタデータに関連付けるために使用されます。このフィールドでは、データ型とそのラベルおよびヘルプ・テキストが定義されます。メタデータ・フィールドに要素をリンクする場合、これらの属性の指定は不要です。 注意: ビジネス・オブジェクト・スキーマの場合、mapField属性は、データ型とラベルを導出するために使用されます。mdField属性は、これらの属性を上書きするために必要に応じて提供できます。XML列に要素がマップされている場合は、適切なデータ型とラベルを提供するためにmdFieldが必要です。
|
|
fkRef= | "外部キー参照コード" |
要素が外部キーの場合は、その外部キー参照を定義することで、スキーマ相互作用時に要素のフレームワーク検証が有効となり、摘要とナビゲーション機能が自動的に提供されます。 |
|
private= | "true" |
要素をプライベートとしてマークすると、スキーマ相互作用で公開されることはありません。 注意: プライベート要素にはデフォルトが必要です。
|
|
suppress= | "true" |
この設定は、自動生成されたユーザー・インタフェースに要素が表示されることを防止します。 注意: この属性はグループで指定でき、その場合は、グループのすべての要素が非表示になります。
注意: 非表示要素のデフォルト値に関連するアドバイスは、「デフォルト設定およびシステム変数」を参照してください。
|
|
"blank" |
この設定は、値が空白の要素を表示モードの自動UIレンダリングで非表示にすることを意味します。この要素は、空白かどうかに関係なく、入力マップでは引き続き変更可能です。 |
|
|
"input" |
この設定は、自動UIレンダリングで入力の要素を非表示にすることを意味しますが、空白でない場合は表示されます。 注意: suppress="input"とマークされた要素は、suppress="blank"と同様に動作します。値が空白の場合は、表示マップまたは入力マップのいずれにも値が表示されることはありません。要素の値が存在する場合は、表示マップと入力マップの両方にその要素が表示されます。
注意: 非表示要素のデフォルト値に関連するアドバイスは、「デフォルト設定およびシステム変数」を参照してください。
|
|
|
noAudit= | "true" |
この設定は、要素が、ビジネス・オブジェクトの監査プラグイン・スポットに変更済の要素として表示されることを防止します。グループ・ノードまたはリスト・ノードに指定されている場合は、ノード全体に適用されます。スキーマ・ルート・ノードには指定できず、指定できるのはスキーマ要素のみです。 注意: この属性を適用できるのは、ビジネス・オブジェクト・スキーマのみです。
|
|
storeEmptyNodes= | "true" |
デフォルトでは、空のノードは、保存する際にビジネス・オブジェクト・インスタンスから削除されます。この設定により、グループまたはリスト要素がその空のノードを明示的に保持できます。 この属性は、ビジネス・オブジェクト・データが外部システムと交換され、同期に参加する要素の空の値と、参加しないためにメッセージから完全に除外される要素を区別することが必要な状況で役立つ場合があります。 注意: これはグループおよびリスト要素にのみ使用できます。
|
|
emitEmptyGroups= | "true" |
デフォルトでは、空のノードはビジネス・オブジェクトまたはビジネス・サービスのコールの出力に含まれません。この属性は最上位のスキーマ・ノードに設定され、すべてのグループおよびリスト要素の空のノードを出力に含めることができます。 この属性は、storeEmptyNodes=属性の使用が必要になる可能性があるのと同じ状況で役立つ場合があります。 注意: これは、ビジネス・オブジェクトおよびビジネス・サービス・スキーマについてのみ使用できます。
|
|
emitEmptyElements= | "true" |
この属性はemitEmptyGroups=属性と同様ですが、フィールド・レベルで指定することもできます。この属性は、すべてのスキーマ・タイプに適用できます。 |
|
adheresToDA= | "データ領域名のカンマ区切りリスト"。 |
この属性は、スキーマ、グループおよびリスト・ノードに適用できます。これは、このサブスキーマ・ノードが、通常はポリモフィズムのために、リストされているデータ領域のいずれかのスキーマに"似る"ように意図していることを示します。 注意: 共有データ領域の構造を強制するための推奨される方法は、スキーマにそれを含めることです。この属性は、データ領域を含めることが不可能なユース・ケースに限定する必要があります。
|
|
スキーマ定数
スキーマにデフォルト設定される値を設計で保証する製品所有のスキーマがいくつかありますが、値は実装固有であるため、製品別に定義することはできません。このような状況の場合、製品ではスキーマ定数という技法を使用できます。スキーマの設計には、宣言された定数が含まれます。実装時に、構成タスクには定数に対する適切な値の定義が含まれます。
たとえば、ある状態が発生したときにアウトバウンド・メッセージを作成するアルゴリズムが製品によって提供されるとします。使用するアウトバウンド・メッセージ・タイプは実装別に構成する必要があります。スキーマ定数を使用してアウトバウンド・メッセージ・タイプを定義するために、基本製品では次の内容が構成されます。
-
参照F1CN_OPT_TYP_FLGに対してオプション・タイプ参照値が定義されます。例: M202 - outmsgCompletionのJava値名がある活動完了アウトバウンド・メッセージ・タイプ
-
活動の完了アウトバウンド・メッセージの作成に使用される基本スキーマは、オプション・タイプの参照値のJava値名を使用してスキーマ定数を参照します
... <outboundMessageType mapField="OUTMSG_TYPE_CD" default="%Constant(outmsgCompletion)"/> ...
実装時に、管理ユーザーは活動完了に対して適切なアウトバウンド・メッセージ・タイプを構成する必要があります。次に、「機能構成」にナビゲートして「スキーマ定数」機能タイプを選択し、オプション・タイプ活動完了アウトバウンド・メッセージ・タイプを選択し、新しく作成されたアウトバウンド・メッセージ・タイプをオプション値に入力します。
スキーマ定数は、フラット化に必要な行要素を定義するためにフラット化構文で使用される場合もあります。
デフォルト設定およびシステム変数
デフォルト属性は、値をフィールド要素およびフラット化に必要な行要素にデフォルト設定するために使用できます。フィールドは定数または複数のシステム変数のいずれかにデフォルト設定できます。
要素が必須の場合は、この要素に値が指定されていないレコードを追加または変更するときに、デフォルト値がサーバー・レベルで適用されます。
要素がオプションの場合は、追加モードのユーザー・インタフェースでレコードを移入するときに、ユーザーに推奨値を提示するようにデフォルト値を構成できます。ユーザーは、このタイプの要素についてはデフォルト値を削除でき、システムは保存時にそれを移入しようとしません。
オラクルの'リスト'の保守に関する標準は、ユーザーが移入することを選択することも、移入しないことを選択することもできる新しいリストについては空の行を表示するというものです。そのため、リスト要素についてはUIのデフォルト値が表示されません。
追加モードのユーザー・インタフェースで編集可能または表示可能でないオプション要素(suppress="true"またはsuppress="input"が指定されている要素や、前述の説明に従ってデフォルト値が表示されないリスト要素など)については、デフォルト属性を構成することをお薦めしません。このタイプの要素についてもデフォルトは適用されますが、ユーザーは値をリセットできません。これにより、UI相互作用以外のユース・ケースによって追加されたオプション・フィールドについてはデフォルト設定が行われないため、不整合が発生する可能性があります。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
default= | "値" | この属性は、要素を特定の値にデフォルト設定するために使用します。有効な値は、dataTypeの設定によって決まります。 |
|
"%CurrentDate" | 要素を現在の日付にデフォルト設定するために使用されます。これは日付要素にのみ適用されます。 |
|
|
"%CurrentDateTime" | 要素を現在の日時にデフォルト設定するために使用されます。これは日時要素にのみ適用されます。 |
|
|
"%StandardDateTime" | 標準日時をデフォルト設定するために使用されます。基準タイム・ゾーンに対して夏時間/サマー・タイムが有効でないかぎり、標準日時は現在の日時と同じです。これは、stdTime属性で使用できます。 注意: 詳細は、「標準時の考慮事項」を参照してください。
|
|
|
"%ProcessDate" | 処理日をデフォルト設定できます。処理日は実行されているプロセスの期間全体で一定であるため、現在日とは異なります。現在日には、実際の処理日が反映されます。これは、標準のバッチ・パラメータであるバッチ営業日と同様です。 |
|
|
"%ProcessDateTime" | これは"%ProcessDate"と同じですが、対象が日時フィールドです。 |
|
|
"%CurrentUser" | 要素を現在のユーザーにデフォルト設定するために使用されます。 |
|
|
"%CurrentUserTimeZone" | 要素を現在のユーザーのタイム・ゾーンにデフォルト設定するために使用されます。現在のユーザーのタイム・ゾーンが見つからない場合は、インストール・タイム・ゾーンが使用されます。 |
|
|
"%CurrentUserLanguage" | 要素を現在のユーザーの言語にデフォルト設定するために使用されます。 |
|
|
"%InstallationCurrency" | インストール・レコードから通貨をデフォルト設定するために使用されます。 |
|
|
"%InstallationCountry" | 国はインストール・レコードからデフォルト設定できます。 |
|
|
"%InstallationLanguage" | 言語はインストール・レコードからデフォルト設定できます。 |
|
|
"%Constant( )" | 要素値はスキーマ定数を使用してデフォルト設定できます。 | 次はデフォルト値として使用されるスキーマ定数の例で、参照値のJava値名は'customerLanguage'です。
|
|
"%Context( )" | コンテキスト変数に含まれる値はデフォルト設定できます。 警告: スキーマ・コンテキストのデフォルトを適用するには、コンテキスト変数をサーバー・スクリプト内で初期化しておく必要があります。詳細は、「コンテキスト変数」を参照してください。
|
デフォルト値として使用されるコンテキスト変数の例:
注意: スクリプトでコンテキスト変数を定義するときは、プリフィクスの$$を付ける必要があります。%Context( )構文の変数を参照するとき、プリフィクスは含まれません。
|
|
defaultRef= | "XPath" |
この属性は、ある要素の値を他の要素の値にデフォルト設定するために使用します。 |
他の要素を参照するためにサポートされている構文については、「他の要素の参照」を参照してください。 |
フラット化ノードおよび属性
「フラット化」という用語は、スキーマに対して1つ以上の単一要素(実際にはメンテナンス・オブジェクト内にあるリストの一部)を定義する機能を説明するために使用されます。フラット化できるのは、要素または複数の要素を一意に説明するために定義できるリストの他の属性がある場合です。フラット化の一般的なユース・ケースは特性です。オブジェクトの特性は、ユーザーによる特性タイプの選択と値の定義が必要なコレクションを使用した定義ではなく、すでに適切なラベルが表示された実際の要素として定義されています。この技法を使用すると、スキーマとユーザー・インタフェースのデザイナは、すべてをまとめずに、ユーザー・インタフェース内の論理的な場所にそれぞれ個別の特性を表示できます。
リストまたは子表の識別
子表をフラット化する際は、要素の発生元のリスト/子表を識別するために行ノードが必要です。行ノード内には、要素がデータベース内の一意の行であることを確認するis=定義を使用して、少なくとも1つの要素が定義されている必要があります。行には、デフォルト値構成を使用して、非表示で移入された要素またはフィールドを定義することもできます。
-
ビジネス・オブジェクトの場合、行ノードでは、フラット・フィールドが属している子表が定義されます。
構文は<row mapChild="表名">です。この例は、カスタマ・ケアおよび請求製品にあるアカウントのパーソンのリストに対する例です。メイン・パーソンとしてマーク付けできるのは、1人のパーソンです。これは、メイン・パーソンIDに対して明示的な要素を定義し、そのフィールドへの参照を簡略化する方法を示しています。これは、CI_ACCT_PER子表の一部です。一意である理由は、MAIN_CUST_SWがtrueであるためです(値を設定できるのは1行のみ)
<custId mapField="PER_ID" mdField="CM-MainCust"> <row mapChild="CI_ACCT_PER"> <MAIN_CUST_SW is="true" /> <ACCT_REL_TYPE_CD default="MAIN" /> </row> </custId>
注意: 前述の例は、行ノードでは、非表示でデフォルト値が割り当てられている要素もリスト内に定義できることを示しています。この構文は、特定な行の識別には使用されません。デフォルト値はリテラル文字列またはシステム変数のいずれかであることに注意してください。 -
ビジネス・サービスの場合、行ノードでは、フラット・フィールドが属しているリスト名が識別されます。
構文は<row mapList="リスト名">です。この例は、フィールド値と摘要にフラット化されているリストの2つのエントリを示しています。
<selectList type="list" mapList="DE"> <value mapField="COL_VALUE"> <row mapList="DE_VAL"> <SEQNO is="2"/> </row> </value> <description mapField="COL_VALUE"> <row mapList="DE_VAL"> <SEQNO is="3"/> </row> </description> </selectList>
フラット・フィールドまたはリストの一意識別
rowまたはrowFilter要素内のis=構文は、行を一意に識別するために使用されます。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
is= | "値" | この属性は、値を直接参照するために使用します。 |
|
"%Constant( )" | フラット要素はスキーマ定数を使用して構成できます。サービス相互作用時に、スキーマ定数の値は、子行内のフラット要素を識別するために使用されます。 |
次はフラット化構文で使用されるスキーマ定数の例で、参照フィールド値のJava値名は'cmRate'です。
|
|
"%n" | %n置換値は、相対的なリスト・インスタンスを参照するために使用されます。相対的なリスト・インスタンスは通常、シーケンス番号をキーとする子表に対するフラット要素の構成のために使用されます。nの値は、プラスの整数値である必要があります。ビジネス・オブジェクト読取り相互作用時には、整数で指定された相対的なリスト・インスタンス(位置)が返されます。 | 次は相対的なリスト・インスタンスを使用した例で、行の最初のインスタンスが返されます。
|
事前定義済の特性タイプのフラット化
フラット・フィールドが特性コレクション内にあり、特性タイプが事前定義済の特性の場合、自動UIレンダリングでは、有効な値のリストに対してドロップダウンが生成されます。たとえば、次のスキーマでは、「ステータス事由使用」(F1-SRUSG)特性タイプの有効な値を示す使用要素に対してドロップダウンが生成されます。
<usage mdField="STATUS_RSN_USAGE" mapField="CHAR_VAL">
<row mapChild="F1_BUS_OBJ_STATUS_RSN_CHAR">
<CHAR_TYPE_CD is="F1-SRUSG"/>
<SEQ_NUM is="1"/>
</row>
</usage>
リストからの複数要素の定義
同じリストから複数の列を含めようとすると、他の要素で定義されているフラット化ルールをコピーするための簡略表記が提供されるため、フラット化ルールを繰り返す必要はありません。そのためには、行ノードにrowRef属性を含めて、マッピング情報を定義している他の要素名を示します。次の例は、「アカウント・リストのパーソン」(MAIN_CUST_SWはtrue)の同じリストからの「顧客ID」フィールドと「請求書のコピーを受領」フィールドのフラット化を示しています。
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<copyBill mapField="RECEIVE_COPY_SW" rowRef="custId"/>
前述の表記は、rowRefは要素の属性定義に直接定義できることも示していることに注意してください。
2レイヤーの深さのフラット化
メンテナンス・オブジェクトまたはサービスに、ネストされた2レイヤーの深さのリストがある場合、フラット化とフラット要素内の要素がサポートされます。この技法でもrowRef属性が使用されます。2番目のレベルのフラット化では、最初のレベルのフラット要素が参照されます。次の例は、主要顧客に対するlegalContactという要素への特性のフラット化を示しています。legalContact要素には2つの行ノード(1つはその親のフラット化情報を参照し、もう1つはその子表を定義します)があることに注意してください
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<legalContact mapField="CHAR_VAL_FK1">
<row rowRef="custId">
<row mapChild="CI_ACCT_PER_CHAR" >
<CHAR_TYPE_CD is="LEGAL" />
</row>
</row>
</legalContact>
前述の表記は、rowRefは要素の属性定義に直接ではなく、行ノードの属性として定義できることも示していることに注意してください。
フラット・リストの定義
リストまたは子表が同じタイプの複数値をサポートし、リストとして表示する必要がある場合があります。前述の例を続行するために、アカウントのパーソンのリストで1人のパーソンをメイン・パーソンとして識別できます。このパーソンは単一の要素(アカウント関係タイプがデフォルト設定され非表示の状態)にフラット化されています。アカウントに関連する他のパーソンを保守するには、各行にパーソンIDとアカウント関係タイプを取得するリストを定義できます。
フラット・リストは、行ノードではなくrowFilter要素を使用して構成されます。次のスキーマは、説明した例を示しています。リスト・ノードでは子表が定義されます。rowFilterには、含める表内の行を識別するための基準が含まれています。リストの要素は、rowFilter要素外のリスト・ノード内に定義されています。
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<miscPersons type="list" mapChild="CI_ACCT_PER">
<rowFilter>
<MAIN_CUST_SW is="false" />
</rowFilter>
<relType mapField="ACCT_REL_TYPE_CD"/>
<personId mapField="PER_ID"/>
</custId>
同じ子表からの単一のフラット要素とフラット・リストがスキーマに含まれているかどうかは検証され、これらを一意と定義する基準は類似的になることに注意してください。
発効日が指定されたリストのフラット化
アプリケーションのリストには、発効日が指定されていたり、発効日時がある場合があります。たとえば、発効日が指定された特性のコレクションがいくつかあります。これらのコレクションでの設計では、時間の経過とともに変化する特性タイプの単一値が取得されます。有効な複数の特性値を同時にサポートすることが目的ではありません。
発効日が指定された特性を持ち、シーケンス・ベースの特性を持たないメンテナンス・オブジェクトもあります。そうしたエンティティについては、実装で特性を使用して、発効日を必要としない追加フィールドを定義することをお薦めします。
発効日が指定されたコレクションの値を表す、スキーマの要素の設計を検討するときには、その値が請求の計算などのプロセスで使用されるものであり、時間の経過に伴う値の変更を取得することが重要であるかどうかを考慮してください。
- 値の変更を追跡することが重要でない場合は、スキーマで発効日を固定値に設定することをお薦めします。(下に例を示します)。
- 値の変更を追跡することが重要な場合は、スキーマの設計方法を検討する必要があります。
- 1つのオプションは、前述のようにフラット・リストを定義することです。値と発効日の両方がこのリストの要素です。このユース・ケースでは、すべてのリストと同様にリストを管理します。値を追加または削除できます。
- もう1つのオプションは、フラット化された単一値をスキーマで定義することです。このオプションを使用すると、レコードを取得するときに、最新の有効な値が返されます。この設計では、参照日をどのように定義するかが重要な問題となります。
変更が追跡されないフラット要素
次に、値に発効日を指定する必要がない場合に、発効日が指定されたコレクションの要素をフラット化する例を示します。この場合の推奨事項は、単にis=属性で日付をハードコードすることです。
<schema>
<externalReference mapField="ADHOC_CHAR_VAL" mdField="CM_EXT_REF" dataType="string">
<row mapChild="CI_SA_CHAR">
<CHAR_TYPE is="CM_EXT_REF"/>
<EFFDT is="2000-01-01"/>
</row>
</externalReference>
</schema>
変更に発効日が指定されているフラット要素
時間の経過に伴う変更を追跡する必要がある、発効日が指定された値をビジネス・オブジェクト・スキーマでフラット化する場合、フラット値は最新の有効なエントリを表します。この場合は、日付または日時フィールドを要素として明示的に定義することをお薦めします。その後、明示的な日付フィールドが値に使用する日付であることを示すis=属性の構文があります。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
is= | "%effectiveDate( )" | 使用する日付が別の要素の値であることを示すには、この構成を使用します。
注意: 他の要素を参照するためにサポートされている構文については、「他の要素の参照」を参照してください。
|
|
"%effectiveDateTime( )" | 使用する日時が別の要素の値であることを示すには、この構成を使用します。 注意: 他の要素を参照するためにサポートされている構文については、「他の要素の参照」を参照してください。
|
|
フラット・フィールドが表示されるときに明示的な日付または日時要素をユーザー・インタフェースに表示するか、またはそれを非表示にするかを検討する必要があります。デザイナは、値を更新するためのユーザー・ダイアログも検討する必要があります。フラット・フィールドを表示専用にし、発効日が指定された値を更新するための別個のダイアログを用意するするほうが直観的である場合があります。
このオプションについては、発効日が指定された値の履歴を経時的に表示する別個のゾーンをオブジェクトの保守ページに組み込むことをお薦めします。最新の値もそのゾーンに表示できます。
下位互換性のため、次のオプションもサポートされていることに注意してください。ただし、これらはお薦めしません。これらは、参照日を常に現在の日付として暗黙的に定義していました。これらのオプションでは、値が変更されたときに、発効日が指定された新しい行を追加することがサポートされていました。しかし、この手法により、同じスキーマの他の要素が更新されたときにも、発効日が指定された新しい行が表示されるようになりました。参照日または参照日時が現在の日付(変更)であるため、新しい行には同じ行値を持つ現在の日付または日時が含まれます。日付または日時を明示的な要素として定義せずに、発効日が指定された特性を管理することはお薦めしません。
ニーモニック | 有効値 | 摘要 | 例 |
---|---|---|---|
is= | "%effectiveDate" |
この構成はお薦めしません |
|
"%effectiveDateTime" |
この構成はお薦めしません |
|
検索ゾーン
保守UIマップ内にスキーマが含まれている場合は、UIマップ・スキーマ要素を構成して自動検索ダイアログを有効にできます。
search="検索ゾーン"
検索属性はUIマップ・スキーマ内で使用でき、oraSearch UIマップ属性の自動生成に使用されます。検索ゾーンは、検索として構成されたエクスプローラ・ゾーンです。
<person fkRef="PER" search="C1_PSRCH"/>
searchField="検索フィールド:要素|'リテラル';"
searchField属性は、検索属性と組み合せてのみ使用できます。searchField属性は、oraSearchField UIマップ属性を作成するために使用されます。searchFieldの値は、検索ゾーンの起動時に検索ゾーン・フィルタに初期値を移入するために使用されます。初期値もリテラルの場合があります。searchFieldの値は、同様にsearchFieldという名前のフィルタ・ニ-モニックと照合するために使用されます。
検索フィールド: 要素|'リテラル'。検索フィールドは、起動時に移入する検索ゾーン・フィルタを示します。要素は、フィルタの移入に使用するマップのスキーマ要素です。この要素はオプションで、空白のままにした場合は、この属性が指定されている要素にデフォルト設定されます。searchFieldでは、'リテラル'も入力値として取得されます
<person fkRef="PER" search="C1_PSRCH" searchField="PERSON; PER_TYPE:personType;"/>
searchOut="検索フィールド:要素;"
searchOut属性は、検索属性と組み合せてのみ使用できます。searchOut属性は、oraSearchOut UIマップ属性を作成するために使用されます。searchOutの値は、検索ゾーンから選択した値を取得してUIマップ要素に移動するために使用されます。指定したsearchOutの値は、検索結果ゾーン・パラメータ内のELEMENT_NAMEニーモニックと一致している必要があります。
検索フィールド: 要素。検索フィールドは、UIマップに戻された検索ゾーンの結果を示します。要素は、移入するマップのスキーマ要素です。この要素はオプションで、空白のままにした場合は、この属性が指定されている要素にデフォルト設定されます。
<person fkRef="PER" search="C1_PSRCH" searchField="PER_ID"
searchOut="PER_ID;PRIMARY_PHONE:personPhone;"/>
サービス・スクリプトのセキュリティ拡張
アプリケーション・サービス・セキュリティは、ビジネス・オブジェクトまたはサービス・スクリプトのいずれかが、ビジネス・プロセス・アシスタント・スクリプトまたはUIマップから起動されたときに実施されますが、サービス・スクリプトからは起動されたときには実施されません。ビジネス・オブジェクトまたはサービス・スクリプトがサービス・スクリプトから起動されたときにセキュリティを実施する場合は、次の属性をサービス・スクリプトのスキーマに追加する必要があります。
appSecurity="true"
appSecurity属性を使用できるのは、サービス・スクリプト・スキーマに対してのみです。指定した場合は、サービス・スクリプトによって直接起動されたすべてのビジネス・オブジェクトまたはサービス・スクリプトに、アクセス用に評価されたアプリケーション・サービスが設定されます。
<schema appSecurity="true">
...
</schema>
ビジネス・サービスの上書き処理
'read'以外の処理を使用してビジネス・サービスを起動する場合は、主ノード・ビジネス・サービス・スキーマに処理属性を指定する必要があります。
pageAction="add, change, delete"
処理属性は、ビジネス・サービス・スキーマのデフォルトの読取り処理を上書きするために使用されます。有効な値は次のとおりです。
-
add
-
update (メンテナンス・オブジェクト・サービスに対してのみ許可されます)
-
change (メンテナンス・オブジェクト・サービスには許可されていません)
-
delete
-
read (pageActionが指定されていない場合は、これがデフォルトの処理です)
例:
<schema pageAction="change">
<parm type="group">
<ele1/>
<ele2/>
</parm>
</schema>
検索サービスに対するsearchByの指定
検索サービスを起動する場合は、スキーマにマップされている要素に対して適切なsearchBy属性を明示的に指定する必要があります。
searchBy="MAIN"
searchBy属性の値は、ビジネス・サービスにリンクされているXMLスキーマを表示し、XMLの表示URLを使用して検出できます。通常の値は次のとおりです。
-
MAIN
-
ALT
-
ALT2
-
ALT3
- その他
<schema searchBy="MAIN">
<AccountID mapField="ACCT_ID"/>
<Results type="list">
<AccountID mapField="ACCT_ID"/>
</Results>
</schema>
他のスキーマの包含
他のスキーマにスキーマを含める機能に制限はなく、すべてのタイプを他のすべてのタイプに含めることができます。ネストされた包含も許可され、現在、ネスティングの深さに制限はありません。
スキーマの包含には、次の2つの部分が必要です。
- 包含ノード
- 名前属性
次の表に、サポートされているinclude文を示します。
ニーモニック | 摘要 | 例 |
---|---|---|
<includeBO name=" "/> |
ビジネス・オブジェクト・スキーマを他のスキーマに含めることができます。 ビジネス・オブジェクトまたはビジネス・サービスのマッピング・ルールは、親スキーマのコンテキスト内で意味がある場合とない場合があることに注意してください。他のスキーマは自分のリスクで含めてください。ただし、XML処理の非常に有用な側面は、関係のない属性はフレームワークで無視されることです。つまり、マッピング属性をスクリプト・スキーマに含めることに支障はありません。 |
|
<includeBS name=" "/> |
ビジネス・サービス・スキーマを含めるために使用されます。 |
|
<includeDA name=" "/> |
データ領域スキーマを含めるために使用されます。 |
|
<includeMP name=" "/> |
UIマップ・スキーマを含めるために使用されます。 |
|
<includeSS name=" "/> |
サービス・スクリプト・スキーマを含めるために使用されます。 |
|
互換性属性
これらの属性は、前のバージョンのフレームワークからのアップグレードの一環として追加されました。
fwRel="2"
この属性は、フレームワーク4アップグレードの一環として、フレームワーク2で作成されたスキーマに追加されています。この属性は、新しいスキーマには不要です。この属性の変更は、不適切な変更によるエラーの可能性があるため、次の動作の相違を理解しないまま実行することはお薦めしません。
<schema fwRel="2"
...
</schema>