モデルのテストのガイドライン
多数のモデルを効率的にテストするには、コンフィギュレータ・ランタイム・モデル・テスト・サービスを使用して、ユーザー入力を必要とせずにモデル・テストを実行できます。
コンフィギュレータ・ランタイム・モデル・テスト・サービスは、リクエストおよびレスポンス・ペイロード構造に基づいてSOAP webサービスとして実装されます。 このサービス・モデルでは、コール側アプリケーションがコンフィギュレータ・ランタイム・モデル・テスト・サービスのtestModel
公開同期メソッドに入力テスト・モデルXMLペイロードを提供し、リクエストの実行後、サービスは対応する結果XMLペイロードを返します。このペイロードは、コール側アプリケーションがリクエストの結果についてイントロスペクトできます。
テスト・サービスの機能は次のとおりです:
-
アプリケーションをコールすると、任意のSOAPクライアントを使用してコンフィギュレータ・ランタイム・モデル・テスト・サービスを起動できます。 SSLポートは外部サービスであり、クラウド内のwebサービスと対話するためのデフォルト・トランスポートになるため、このWebサービスではデフォルトで有効になっています。
-
アプリケーションをコールすると、モデル・テスト・サービス・リクエストを、一度に1つのリクエストをシリアル化された方法で同期されたメソッド
testModel
に送信できます。 -
コンフィギュレータ・ランタイム・モデル・テスト・サービスは、他のサービスと組み合せて使用することも、他のアプリケーションやサービス内に埋め込むこともできます。
コンフィギュレータ・ランタイム・モデル・テスト・サービスの入出力ペイロードでは、SOAP XML構造が使用されます。
コンフィグレータ・ランタイム・モデル・テスト・サービスは、自律型サービスとして実装されており、他の外部データ・モデル・エンティティは必要ありません。 サービスWSDLは、次のURL形式を使用して取得できます:
https://<hostname>:<port>/fscmRestApi/ConfiguratorRuntimeService?wsdl
このサービスでは、特定のリクエストおよびレスポンス・ペイロード構造を持つ同期メソッドtestModel
が1つのみサポートされます。
testModel
メソッドには、次のために必要な情報を含むリクエスト入力ペイロードが必要です:
-
構成の起動またはリストア
-
その構成に対する操作の実行
-
属性の構成の問合せ
-
構成サマリーを保存してリクエスト
その後、testModel
メソッドは、次のものを含むレスポンス出力ペイロードを返します:
-
テスト全体の結果
-
個々の操作リクエスト
-
問合せリクエスト
-
構成サマリー・リクエスト
テスト・モデル・リクエスト構造
次のコード例は、SOAP XMLのテスト・モデル・リクエストを示しています:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:testModel xmlns:ns1="http://xmlns.oracle.com/apps/scm/configurator/runtimeService/types/">
<ns1:request xmlns:ns2="http://xmlns.oracle.com/apps/scm/configurator/runtimeService/">
<ns2:TestId>1</ns2:TestId>
<ns2:TestName>test</ns2:TestName>
<ns2:TestDescription>Test1</ns2:TestDescription>
<ns2:InitializationParameters>
<ns2:TestId>1</ns2:TestId>
<ns2:ParameterId>1</ns2:ParameterId>
<ns2:CallingApplicationCode>CZ</ns2:CallingApplicationCode>
<ns2:Header>
<![CDATA[
<header>
<HeaderId>1000</HeaderId>
</header>
]] >
</ns2:Header>
<ns2:Line>
<![CDATA[
<line>
<LineId>-22222</LineId>
<InventoryItemNumber>zCZ-CN82441</InventoryItemNumber>
<InventoryOrganizationCode>V1</InventoryOrganizationCode>
<UnitQuantity>1.0</UnitQuantity>
<UomCode>Ea</UomCode>
</line>
]] >
</ns2:Line>
<ns2:CustomParameters>
<![CDATA[
<param>
<WorkspaceName>My Workspace</WorkspaceName>
<SnapshotBasedModel>true</SnapshotBasedModel>
</param>
]] >
</ns2:CustomParameters>
</ns2:InitializationParameters>
<ns2:OperationRequest>
<ns2:OperationId>1</ns2:OperationId>
<ns2:NodePath>zCZ-OC12100.zCZ-CM12240</ns2:NodePath>
<ns2:Operation>Select</ns2:Operation>
<ns2:SequenceNumber>1</ns2:SequenceNumber>
<ns2:testId>1</ns2:testId>
<ns2:NodeValue>1</ns2:NodeValue>
</ns2:OperationRequest>
<ns2:QueryRequest>
<ns2:QueryId>1</ns2:QueryId>
<ns2:NodePath>zCZ-OC12100.zCZ-CM12240</ns2:NodePath>
<ns2:SequenceNumber>2</ns2:SequenceNumber>
<ns2:testId>1</ns2:testId>
<ns2:NodeProperty>
<ns2:PropertyId>1</ns2:PropertyId>
<ns2:PropertyName>Selected</ns2:PropertyName>
<ns2:QueryId>1</ns2:QueryId>
</ns2:NodeProperty>
</ns2:QueryRequest>
<ns2:ConfigSummaryRequest>
<ns2:SummaryId>1</ns2:SummaryId>
<ns2:TestId>1</ns2:TestId>
<ns2:OutputMode></ns2:OutputMode>
<ns2:SequenceNumber>3</ns2:SequenceNumber>
</ns2:ConfigSummaryRequest>
</ns1:request>
</ns1:testModel>
</soap:Body>
</soap:Envelope>
テスト・モデル・リクエストの基本構造には、次の表で説明する要素が含まれます:
testModelリクエストの要素 |
説明 |
---|---|
TestId |
現在のテストの一意の識別子。 同じテストIDが、テスト・リクエストの他の要素でも使用され、特定のテストと接続されます。 |
TestName |
このテストの短縮名 |
TestDescription |
このテストのオプションの説明 |
InitializationParameters |
構成セッションの開始に必要なすべての情報が含まれます |
OperationRequest |
このテスト中に実行する1つ以上の操作 |
QueryRequest |
操作リクエストの実行後に実行する1つ以上の問合せ |
ConfigSummaryRequest |
構成に含めることができるすべての項目を含む構成要約 |
InitializationParameters
InitializationParametersは、テスト・モデル・リクエストの属性をモデル化するXML要素です。
InitializationParametersは、構成セッションの開始またはリストアに必要な情報を含む必須属性です。 次の表に、構成を開始するために必要な初期化パラメータとオプション初期化パラメータを示します。
InitializationParametersのフィールド名 |
説明 |
---|---|
TestId |
現在のテストの一意の識別子。 |
ParameterId |
この初期化パラメータ・セットを参照するためにサービスによって提供される一意の識別子 |
CallingApplicationCode |
コンフィギュレータ・セッションを起動するコール側アプリケーションを示します。 これは、セッションに使用するユーザー・インタフェースを決定するために使用されます。 このコードは、Oracle以外の外部システムの場合、またはOracle ApplicationsのFNDアプリケーション短縮名(コード)の場合に、取引先コミュニティ・ソース・システムの管理に登録されます。 ノート: CPQには、アプリケーション・コードがORA_BM_CPQのシード済TCAデータがすでに存在 |
明細 |
構成する行を表すXMLドキュメント。 詳細は、次のセクションを参照してください |
ヘッダー |
(オプション)明細を含む見積またはオーダー・ヘッダーを表します。 このXML文書はオプションであり、存在する場合、コンフィギュレータは構成セッション内の価格設定統合のためにOracle Pricingなどの他のサービスにヘッダー情報を渡します |
CustomParameters |
(オプション)コンフィギュレータ機能拡張ルール内で使用するための、コンフィギュレータへの追加情報で構成されるXML文書 |
XMLドキュメントLine
は、構成する行を表します。 少なくとも次のリストの情報が含まれています。
-
LineId: 構成される明細の一意識別子
-
InventoryItemNumber: 構成する製品またはサービス・モデル品目の品目番号
-
InventoryOrganizationCode: 製品またはサービス・モデル品目の品目検証組織コード。 これは通常、外部アプリケーションから品目がインポートまたは参照される組織です。
-
UnitQuantity: 構成中の品目の数量
-
UomCode: 構成する品目の単位
-
ConfigHeaderId: 構成の識別子。再構成時にのみ渡されるか、リストアおよび検証のためのセッションに渡されます
-
ConfigRevisionId: 構成の識別子。再構成/リストアおよび検証セッション中にのみ渡されます
-
RequestOn (オプション): 構成セッションのモデル定義のロードに使用される日時
OperationRequest
OperationRequestは、テスト・モデル・リクエストの属性をモデル化するXML要素です。
構成の開始後、ランタイム・ユーザー・インタフェースを使用してモデルを構成する際にエンド・ユーザーが実行できる操作と同様に、テスト・サービスを使用して一連の操作を実行できます。 テスト・モデル・リクエストには、1つ以上の操作リクエストを含めることができます。 これらの操作は、ブール機能の切替えから標準品目の数量の設定、参照モデルのインスタンスの追加および構成まで多岐にわたります。
次の表に、OperationRequestの属性を示します。
OperationRequestのフィールド名 |
説明 |
---|---|
TestId |
現在のテストの一意の識別子。 |
OperationId |
操作リクエストの一意の識別子 |
NodePath |
操作が実行されるノードへの完全修飾パス |
操作 |
操作の名前。例:。 選択、切替え、SetValueまたはSetQuantity。 有効な操作については、次の表を参照してください。 |
SequenceNumber |
このリクエストに優先順位を付けるために実行中に使用される連番 |
NodeValue |
このテストのノードに適用される値。 |
次の表に、OperationRequest内で実行できる操作と、操作を実行できるノード・タイプを示します。
OperationRequestの有効な操作 |
ノード・タイプ |
---|---|
選択、切替え、SetQuantity |
オプション区分、オプション機能、Standard品目またはオプション |
切り替え |
ブール機能 |
SetValue |
テキスト機能、整数機能、小数機能またはトランザクション属性(すべてのタイプ) |
AddInstance, AddInstanceWithQuanity, AddInstanceWithQuanityAndName, RenameInstance, CopyInstance, DeleteInstance, SetQuanity, SetContextPath |
モデル・ノード参照 |
構成レベルで実行できる操作には、次のリストに示す操作が含まれます。
-
AutoComplete: 構成に対してオートコンプリート操作を実行し、構成を有効にするために必要なすべての調整を含めます。
-
UndoAutoComplete: オートコンプリート操作を元に戻します。
-
AdjustConfiguration: オートコンプリートの後に構成を調整モードにし、自動的に完了した選択に対する変更を許可します。
-
保存: 構成を保存し、ヘッダーおよびリビジョンIDを生成します。
-
終了: 構成を保存して閉じて、構成を終了します。
QueryRequest
QueryRequestは、テスト・モデル・リクエストの属性をモデル化するXML要素です。
操作リクエストの結果を判別するために、一連の問合せリクエストを実行して、操作リクエストが処理されたノード、または結果として変更されたモデル階層内の他のノードをイントロスペクトできます。 たとえば、操作リクエストを使用してブール機能を切り替え、その後ルールによって標準品目が選択された場合、その標準品目の状態を取得する問合せリクエストを追加できます。
次の表に、QueryRequestのフィールドを示します。
QueryRequestのフィールド名 |
説明 |
---|---|
TestId |
現在のテストの一意の識別子。 |
QueryRequestId |
テストの問合せリクエストの一意の識別子 |
NodePath |
問合せ操作が動作するノードへの完全修飾パス |
SequenceNumber |
このリクエストに優先順位を付けるために実行中に使用される連番 |
NodeProperty |
結果ペイロードに返されたノードのプロパティ。 詳細は、次の表を参照してください。 |
各問合せリクエストには、取得するノード・プロパティを1つ以上含めることができます。 これらのノード・プロパティには、文字列や数値などのスカラー・タイプ、または問合せリクエストの結果が値リストを返すコレクションまたはリスト・タイプのいずれかを指定できます。 たとえば、標準品目の選択状態を判断するには、次の例に示すように、Selected
という名前のノード・プロパティをNodePropertyを介してリクエストできます。
<ns2:NodeProperty>
<ns2:PropertyId>1</ns2:PropertyId>
<ns2:PropertyName>Selected</ns2:PropertyName>
<ns2:QueryId>1</ns2:QueryId>
</ns2:NodeProperty>
次の表に、NodePropertyリクエストのフィールドを示します。
NodePropertyのフィールド名 |
説明 |
---|---|
PropertyId |
リクエストのプロパティの一意の識別子 |
PropertyName |
評価するノード・プロパティの名前。 各ノード・タイプでサポートされているプロパティのノード・プロパティのリストを参照してください。 |
QueryId |
問合せリクエストの一意の識別子 |
CollectionProperty |
評価される名前付きプロパティが、リストまたはコレクション・タイプ(AvailableChildren、SelectedChildren、SelectableChildrenなど)の場合のプロパティ・リクエストのリスト。 詳細は、次のCollectionPropertyの説明を参照してください |
次の例に示すように、ノード・プロパティを選択する方法と同様に、CollectionProperty要素のプロパティ・リストにプロパティ名を追加して、リストまたはコレクション・ノードのプロパティ・タイプのスカラー・プロパティをリクエストします。
<ns2:NodeProperty>
<ns2:PropertyId>1</ns2:PropertyId>
<ns2:PropertyName>SelectedChildren</ns2:PropertyName>
<ns2:QueryId>1</ns2:QueryId>
<ns2:CollectionProperty>
<ns2:PropertyId>1</ns2:propertyId>
<ns2:CollectionPropertyId>1</ns2:CollectionPropertyId>
<ns2:PropertyName>Name</ns2:PropertyName>
</ns2:CollectionProperty>
<ns2:CollectionProperty>
<ns2:PropertyId>1</ns2:propertyId>
<ns2:CollectionPropertyId>2</ns2:CollectionPropertyId>
<ns2:PropertyName>Description</ns2:PropertyName>
</ns2:CollectionProperty>
</ns2:NodeProperty>
次の表に、CollectionPropertyを識別する要素を示します。
CollectionPropertyのフィールド名 |
説明 |
---|---|
PropertyId |
評価されるコレクション・ノード・プロパティのプロパティ名の一意の識別子。 |
PropertyName |
評価されるコレクション・ノード・プロパティのプロパティ名 |
CollectionPropertyId |
コレクション・ノード・プロパティの一意の識別子 |
ConfigSummaryRequest
ConfigSummaryRequestは、テスト・モデル・リクエストの属性をモデル化するXML要素です。
テスト・モデル・リクエストには、構成サマリーを取得するためのオプションのリクエストを含めることができます。 構成のサマリーは、出力モードによって制御される簡易または完全です。
次の表に、ConfigSummaryRequest要素のフィールドを示します。
ConfigSummaryRequestのフィールド名 |
説明 |
---|---|
TestId |
現在のテストの一意の識別子。 |
SummaryId |
サマリー・リクエストの一意の識別子 |
OutputMode |
構成サマリー出力モード。 使用可能な値は次のとおりです:
|
SequenceNumber |
このリクエストに優先順位を付けるために実行中に使用される連番 |
テスト・モデル・レスポンス構造
モデル・テスト・レスポンス・ペイロード構造は、テスト・モデル・リクエスト・ペイロードに直接対応します。 すべての操作または問合せリクエストに対応する操作または問合せ結果は、一意の操作または問合せIDを使用して、対応するリクエストと相関付けられます。
テスト・モデルのレスポンスには、全体的なテスト・ステータスなどのテスト・レベルの情報、および構成の開始を妨げた障害メッセージが含まれます。 このレベルの情報は、各操作または問合せ結果でも使用でき、より詳細なレベルで結果をイントロスペクションできます。
次のコード例は、SOAP XMLのテスト・モデル・レスポンスを示しています:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<env:Header>
...
</env:Header>
<env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="Body-WCk1o7Bv0d7m0fziDdW7lQ22">
<ns0:testModelResponse xmlns:ns0="http://xmlns.oracle.com/apps/scm/configurator/runtimeService/types/">
<ns1:result xmlns:ns0="http://xmlns.oracle.com/apps/scm/configurator/runtimeService/"
xmlns:ns1="http://xmlns.oracle.com/apps/scm/configurator/runtimeService/types/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns0:TestModelResponse">
<ns0:TestId>1</ns0:TestId>
<ns0:TestName>test</ns0:TestName>
<ns0:TestDescription>Test1</ns0:TestDescription>
<ns0:TestStatus>SUCCESS</ns0:TestStatus>
<ns0:TestFailureMessage xsi:nil="true"/>
<ns0:OperationResult>
<ns0:OperationId>1</ns0:OperationId>
<ns0:NodePath>zCZ-OC12100.zCZ-CM12240</ns0:NodePath>
<ns0:Operation>Select</ns0:Operation>
<ns0:SequenceNumber>1</ns0:SequenceNumber>
<ns0:NodeValue>1</ns0:NodeValue>
<ns0:OperationStatus>SUCCESS</ns0:OperationStatus>
<ns0:OperationFailureMessage xsi:nil="true"/>
<ns0:TestId>1</ns0:TestId>
<ns0:ContextPath xsi:nil="true"/>
</ns0:OperationResult>
<ns0:QueryResult>
<ns0:QueryId>1</ns0:QueryId>
<ns0:NodePath>zCZ-OC12100.zCZ-CM12240</ns0:NodePath>
<ns0:QueryResultStatus>SUCCESS</ns0:QueryResultStatus>
<ns0:QueryResultFailureMessage xsi:nil="true"/>
<ns0:TestId>1</ns0:TestId>
<ns0:SequenceNumber>2</ns0:SequenceNumber>
<ns0:ContextPath xsi:nil="true"/>
<ns0:NodeProperty>
<ns0:PropertyId>1</ns0:PropertyId>
<ns0:PropertyName>Selected</ns0:PropertyName>
<ns0:PropertyValue>true</ns0:PropertyValue>
<ns0:QueryId>1</ns0:QueryId>
<ns0:PropertyResultStatus>SUCCESS</ns0:PropertyResultStatus>
<ns0:PropertyResultFailureMessage xsi:nil="true"/>
</ns0:NodeProperty>
</ns0:QueryResult>
<ns0:ConfigSummaryResult xmlns:ns1="http://xmlns.oracle.com/adf/svc/types/">
<ns0:SummaryId>1</ns0:SummaryId>
<ns0:TestId>1</ns0:TestId>
<ns0:ConfigHeaderId xsi:nil="true"/>
<ns0:ConfigRevisionId xsi:nil="true"/>
<ns0:ValidConfigurationFlag>false</ns0:ValidConfigurationFlag>
<ns0:SequenceNumber>3</ns0:SequenceNumber>
<ns0:RequestOn>2016-12-30</ns0:RequestOn>
<ns0:ConfigLine>
<ns0:LineId>1</ns0:LineId>
<ns0:ParentLineId xsi:nil="true"/>
<ns0:InventoryItemId>300100017155319</ns0:InventoryItemId>
<ns0:InventoryOrganizationId>204</ns0:InventoryOrganizationId>
<ns0:InventoryItemType>1</ns0:InventoryItemType>
<ns0:LineQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:LineQuantity>
<ns0:UOMCode>Ea</ns0:UOMCode>
<ns0:ConfiguratorPath>300100017155319</ns0:ConfiguratorPath>
<ns0:SummaryId>1</ns0:SummaryId>
<ns0:InventoryItemNumber>zCZ-CN82441</ns0:InventoryItemNumber>
<ns0:InventoryOrganizationCode>V1</ns0:InventoryOrganizationCode>
<ns0:UnitQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:UnitQuantity>
</ns0:ConfigLine>
<ns0:ConfigLine>
<ns0:LineId>2</ns0:LineId>
<ns0:ParentLineId>1</ns0:ParentLineId>
<ns0:InventoryItemId>300100017233297</ns0:InventoryItemId>
<ns0:InventoryOrganizationId>204</ns0:InventoryOrganizationId>
<ns0:InventoryItemType>2</ns0:InventoryItemType>
<ns0:LineQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:LineQuantity>
<ns0:UOMCode>Ea</ns0:UOMCode>
<ns0:ConfiguratorPath>300100017155319.300100017233297</ns0:ConfiguratorPath>
<ns0:SummaryId>1</ns0:SummaryId>
<ns0:InventoryItemNumber>zCZ-OC12100</ns0:InventoryItemNumber>
<ns0:InventoryOrganizationCode>V1</ns0:InventoryOrganizationCode>
<ns0:UnitQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:UnitQuantity>
</ns0:ConfigLine>
<ns0:ConfigLine>
<ns0:LineId>3</ns0:LineId>
<ns0:ParentLineId>2</ns0:ParentLineId>
<ns0:InventoryItemId>300100017232813</ns0:InventoryItemId>
<ns0:InventoryOrganizationId>204</ns0:InventoryOrganizationId>
<ns0:InventoryItemType>4</ns0:InventoryItemType>
<ns0:LineQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:LineQuantity>
<ns0:UOMCode>Ea</ns0:UOMCode>
<ns0:ConfiguratorPath>300100017155319.300100017233297.300100017232813</ns0:ConfiguratorPath>
<ns0:SummaryId>1</ns0:SummaryId>
<ns0:InventoryItemNumber>zCZ-CM12240</ns0:InventoryItemNumber>
<ns0:InventoryOrganizationCode>V1</ns0:InventoryOrganizationCode>
<ns0:UnitQuantity xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/"
unitCode="Ea">1</ns0:UnitQuantity>
</ns0:ConfigLine>
</ns0:ConfigSummaryResult>
</ns1:result>
</ns0:testModelResponse>
</env:Body>
</env:Envelope>