Caché での Web サービスおよび Web クライアントの作成
生成されたクラスの詳細
[Home] [Back] 
InterSystems: The power behind what matters   
Class Reference   
Search:    

この付録では、参考情報として、SOAP ウィザードによって生成されるクラスについて説明します。項目は以下のとおりです。

生成されるクラスの概要
SOAP ウィザードでは、以下のようなクラスが生成されます。
SOAP ウィザードでは、これらのクラスに、エンコードおよびバインディング・スタイルネームスペースの割り当て、およびその他の項目を指定するのに必要な、クラスおよびメソッドのキーワードとパラメータを指定します。
エンコードおよびバンディング・スタイルを制御するキーワード
SOAP ウィザードでは、生成された Web クライアント・クラスおよび Web サービス・クラスに、指定の WSDL との連携に必要なエンコードおよびメッセージ・スタイルを制御する以下のキーワードを指定します。
Web クライアントまたは Web サービスが WSDL に従わなくなるため、これらのキーワードは変更しないでください。詳細は、"Caché クラス定義リファレンス" を参照してください。
ネームスペースの割り当てを制御するパラメータとキーワード
SOAP ウィザードは、生成されたクラスに、ネームスペース割り当てを制御するためのパラメータとキーワードを使用します。以下のサブセクションでは、メッセージのネームスペースとタイプのネームスペースについて説明します。
Web クライアントまたは Web サービスが WSDL に従わなくなるため、これらの値は変更しないでください。SoapNameSpace および SoapTypeNameSpace の詳細は、"Caché クラス定義リファレンス" を参照してください。
メッセージのネームスペース
SOAP ウィザードでは、次の値を指定して、SOAP メッセージで使用されるネームスペースを制御します。
Web クライアントまたは Web サービスによって送信される SOAP メッセージのネームスペース
アイテム SOAP ウィザードで指定される値
NAMESPACE (クラス・パラメータ) すべての要求メッセージで同一のネームスペースが使用される場合の要求メッセージのネームスペース。
SoapNameSpace (メソッド・キーワード) 各要求メッセージで異なるネームスペースが使用される場合の各要求メッセージのネームスペース。
RESPONSENAMESPACE (クラス・パラメータ) 応答メッセージのネームスペース。これを指定しないと、応答メッセージは NAMESPACE パラメータで指定されるネームスペースに配置されます。SoapNameSpace キーワードは、応答メッセージのネームスペースに影響を及ぼすことはありません。
タイプのネームスペース
SOAP ウィザードでは、次に示すように、メッセージ・タイプがネームスペースに自動的に割り当てられます。
Web クライアントおよび Web サービスで使用されるタイプのネームスペース
アイテム SOAP ウィザードで指定される値
TYPENAMESPACE (クラス・パラメータ) すべてのメソッドが同一のネームスペースのタイプを参照する場合に、SOAP ウィザードによってこのパラメータが設定されます。
RESPONSETYPENAMESPACE (クラス・パラメータ) SOAP ウィザードでは、WSDL がドキュメントスタイルのバインディングを使用し、応答メッセージが要求メッセージとは異なるネームスペースのタイプを使用する場合に、このパラメータが設定されます。このパラメータは、クラスのすべてのメソッドに適用されます。応答タイプはすべて、相互に同一のネームスペースに属すると見なされます。
SoapTypeNameSpace (メソッド・キーワード) <s:schema> 要素の targetNamespace 属性の値。各メソッドが異なるネームスペースのタイプを使用している場合に、SOAP ウィザードによって、メソッドごとにこのキーワードが設定されます。
このキーワードは、RESPONSETYPENAMESPACE パラメータをオーバーライドしません。
配列プロパティの作成
既定では、特定のシナリオで、SOAP ウィザードによって配列型プロパティが作成されます。[配列プロパティ以外を作成] オプションを使用すると、別の構造を持つプロパティを必要に応じて作成できます。
具体的には、以下のタイプを含む WSDL を考えてみます。
<s:complexType name="Obj">
    <s:sequence>
        <s:element minOccurs="0" name="MyProp" type="test:Array"/>
    </s:sequence>
</s:complexType>
<s:complexType name="Array">
    <s:sequence>
        <s:element maxOccurs="unbounded" minOccurs="0" name="Item" nillable="true" type="test:Item"/>
    </s:sequence>
</s:complexType>
<s:complexType name="Item">
    <s:simpleContent>
        <s:extension base="s:string">
<s:attribute name="Key" type="s:string" use="required"/>
        </s:extension>
    </s:simpleContent>
</s:complexType>
既定では、SOAP ウィザードによって以下のクラスが生成されます。
Class testws.Obj Extends (%RegisteredObject, %XML.Adaptor)
{

Parameter ELEMENTQUALIFIED = 1;

Parameter NAMESPACE = "http://testws.org";

Parameter XMLNAME = "Obj";

Parameter XMLSEQUENCE = 1;

Property MyProp As array Of %String(MAXLEN = "", XMLITEMNAME = "Item", 
XMLKEYNAME = "Key", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");

}
SOAP ウィザードを使用する際に [配列プロパティ以外を作成] を選択すると、生成された Obj クラス内の MyProp プロパティが代わりに以下のように定義されます。
Property MyProp As list Of testws.Item(XMLITEMNAME = "Item", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");
このプロパティは、SOAP ウィザードによって同様に生成された以下のクラスを参照します。
Class testws.Item Extends (%SerialObject, %XML.Adaptor)
{

Parameter ELEMENTQUALIFIED = 1;

Parameter NAMESPACE = "http://testws.org";

Parameter XMLNAME = "Item";

Parameter XMLSEQUENCE = 1;

Property content As %String(MAXLEN = "", XMLNAME = "content", XMLPROJECTION = "CONTENT");

Property Key As %String(MAXLEN = "", XMLNAME = "Key", XMLPROJECTION = "ATTRIBUTE") 
[ Required, SqlFieldName = _Key ];

}
生成されたクラスの Web メソッドに関するその他の注意事項
このセクションでは、生成される Web クライアント・クラスの Web メソッドに関するその他の注意事項を示します。